php工程师面试问题
PHP开发工程师面试题分享
1. 下列哪一句不能将'john'添加到数组$user? 答:BD
A. $user[] = 'john';
B. array_add($user, 'john');
C. array_push($user, 'john');
D. $user ||= 'john';
2. 比较sort(), asort(), ksort()三个函数的用法以及使用环境。
答:sort -- 将数组的值由a-z重排,并自动替换索引从0...结束
asort --- 此函数将数组的元素由a-z重新排列,且保持原先索引值和元素的对应关系,这个函数主要是用于
需要将数组的元素重新排列。这个函数比较常用。
ksort --- 此函数将数组依照索引值由a-z重新排列
例子:
对array('a'=>111, '9'=>"orange", 6=>2, "apple");排序。
sort则返回: Array ( [0] => apple [1] => orange [2] => 2 [3] => 111 )值由a-z重排,索引也变了。
asort则返回:Array ( [10] => apple [9] => orange [6] => 2 [a] => 111 )值由a-z重排,保持索引以应
ksort则返回: Array ( [a] => 111 [6] => 2 [9] => orange [10] => apple )索引值由a-z重新排列,保持索
引以应
3. 以下代码输出什么内容, 为何。
$num = 10;
function foo(){
$num = $num * 10;
}
foo();
echo $num;
答:
结果为10.因为foo()中的$num是访问不到函数外的变量的。要想访问加上global $num;结果就成100了。
4. 引用和普通变量的区别。
答:普通变量是开辟了一块新的存储空间,引用是直接指向其他的存储空间。
如:
$num = 10;
function foo($num){
$num = $num * 10;
}
foo($num);
echo $num;
调foo($num);函数时以变量传递,则返回10;
如果改成引用传递,返回100;
$num = 10;
function foo(&$num){
$num = $num * 10;
}
foo($num);
echo $num;
5. 加载类库的方法。
答:
function __autoload($class){
require_once("./lib/".$class.'.php');
}
6. foo()和@foo()的区别。
答:加上@符号会屏蔽报错提示。
如下:
$num = 10;
function foo(&$num){
$num = $num / 0;
}
foo($num);
echo $num;
大家都知道除数不能为0。如果加上@符号后就没有Warning: Division by zero
7. 你平时如何调试PHP代码。
答:用echo打出调试或用exit调试。再加上火狐浏览器调。
8. === 的作用是什么?举一个例子,使用 == 返回true,但是使用 === 返回false。
答:=== 的作用是比较变量的值还比较变量的类型。==只比较值。
如下:
$str = '111';
if($str==111){//如果改成===则返回"失败了";
echo "成功了";
}else{
echo "失败了";
}
9. 声明一个不含方法和属性的类。
答:class Db {}
10. 创建一个对象myclass的实例。
答:$db = new myclass();
11. 从类的内部访问或者设置属性。
答:
class DB{
private $username; //用户名
private $userpwd; //密码
public function test(){
$this->username='root';//给变量赋值
self::test2();//相当于$this->test2();//调用本类test2方法
//parent::test2();这样的话就调用了父类的test2方法
}
public function test2(){
}
}
12. include与include_once的区别和联系,以及include与require的区别和联系。
答:include与include_once区别是:用include_once如果该文件中的代码已经被包含了,则不会再次包含。如同此语句名字暗示的那样,只会包含一次。
include() 产生一个警告而 require() 则导致一个致命错误。换句话说,如果想在遇到丢失文件时停止处理页面就用 require()。include() 就不是这样,脚本会继续运行。
13. 使用什么函数重定向浏览器请求。
答:header("Location: http://hi.baidu.com/woaidelphi/blog");
14. 打开一个文件供读写。
答:fopen("d:/test.txt","r+");//r+读写方式打开,将文件指针指向文件头。'w+'读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 'a+'读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之
15. mysql_fetch_row和mysql_fetch_array的区别。
答:mysql_fetch_row -- 从结果集中取得一行作为枚举数组
mysql_fetch_array -- 从结果集中取得一行作为关联数组,或数字数组,或二者兼有 //MYSQL_ASSOC,MYSQL_NUM 和 MYSQL_BOTH
16. 一个ereg_replace的理解。里面涉及正则捕捉和引用。
答:ereg_replace -- 替换正则表达式
string ereg_replace ( string pattern, string replacement, string string )
本函数在 string 中扫描与 pattern 匹配的部分,并将其替换为 replacement。
返回替换后的字符串。
“里面涉及正则捕捉和引用。”这句话不懂。
17. 写一个正则表达式,过滤所有的HTML代码。
如下:
$str = "大家好< /b>一起学习。共同进步。";
echo preg_replace("/<[^>]+>/i",'',$str);
18. 比较PHP与Perl的array和hash
答:http://hi.baidu.com/sujun/blog/item/85a4c8131c06432bdd54010b.html上面写的很好。
19. How to get around stateless nature of HTTP using PHP ? (我理解错误)
答:呵呵,不知。
20. GD是用来做什么的。
答:GD库是用来做图的。比如可以做验证码。
21. 用PHP写出几个方法用来输出HTML代码块。
highlight_file('demo.html');
22. Is PHP better than Perl? Discuss.
如何面试PHP工程师?
问一些日常的正常的PHP问题,主要是考察应聘者的认知:
一个包含中英文的字符串如何获得它的自然长度(看看ta是否有encoding的知识和意识)
问一问什么是ORM,有时候会问这个词的英文全称是什么,问问ta对于ORM有什么个人的看法?(看看ta学习细不细,有没有技术判断,PHP开发人员应该知道什么时候使用ORM)
问一问假如ta要自己去实现一个framework,ta会怎么设计。(看看ta对代码架构的理解,对MVC的理解)
问一问framework设计里的url dispatcher他会怎么考虑。(HTTP知识)
问一问ta对框架本身的看法
了解一下ta对Design Pattern的认知,比如Singleton,Observer,Factory等常用的设计模式,问一问ta对设计模式本身的看法。
问两三个数据库设计的问题
问几个前端的问题,哪怕ta的职位是PHP开发人员,好的PHP人员不可能不了解前端,而且很可能很了解前端
问一问ta对noSQL的了解情况(对与noSQL的认识是和传统Relational DB的认知是分不开的)
问一问ta碰到问题时候会如何去寻找答案
问一问ta习惯使用哪一个搜索引擎
问一问ta最近看的书
问一问ta的职业规划,喜欢做什么,对工作环境有什么要求
版权声明:此文自动收集于网络,若有来源错误或者侵犯您的合法权益,您可通过邮箱与我们取得联系,我们将及时进行处理。
本文地址:https://www.gunzhua.com/jiuye/mianshi/867835.html