首页 > 就业 > 面试

php工程师面试问题

php工程师面试问题



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的职业规划,喜欢做什么,对工作环境有什么要求

相关内容

热门阅读
随机推荐