PHP开发工程师面试题2

来源:互联网 发布:mac rar 编辑:程序博客网 时间:2024/05/21 17:40
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, stringstring )
本函数在 string 中扫描与 pattern 匹配的部分,并将其替换为 replacement。
返回替换后的字符串。
“里面涉及正则捕捉和引用。”这句话不懂。

17. 写一个正则表达式,过滤所有的HTML代码。
如下:
$str ="<html><title>星空男孩</title><b>大家好</b><fontcolor='red'>一起学习。</font>共同进步。</html>";
echopreg_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.

考官现场提问:

1. 工作经历,工作职责,上一家公司的情况(女考官)。

2. 使用PHP多长时间?精通哪一块?
答:一年了。
3. 使用MySQL多长时间?精通哪一块?
答:一年了。
4. 比较MySQL的两种常用引擎的区别(MyIsAm和InnoDB)。
答:http://hi.baidu.com/woaidelphi/blog/item/5ce2748fcea433f2503d9257.html
5. 从各种角度优化以下SQL语句:SELECT * FROM tablename WHERE id IN (13, 15, 18,19) and age=21

ORDER BY address DESC

6. 是否了解XML?讲一下格式规范。
答:http://hi.baidu.com/woaidelphi/blog/item/191aa6167ee2d04221a4e9cf.html
7. 是否使用PHP解析过XML文件?使用的什么方法?该方法使用的是什么API?(没有听懂后面半句是什么意思)
答:http://hi.baidu.com/woaidelphi/blog/item/85926ed4317c8d09a08bb72f.html
8. 写一个正则表达式

9. 一个3k+1数组,k为非负整数,请问从1乘到7000,结果的末尾会包含多少个0?