这次小编在这里给大家整理了PHP高级工程师面试问题(共含4篇),供大家阅读参考。同时,但愿您也能像本文投稿人“绒红武”一样,积极向本站投稿分享好文章。
PHP高级工程师面试问题
PHP面试问题推荐
1. 工作经历,工作职责,上一家公司的情况(女考官),
2. 使用PHP多长时间?精通哪一块?
答:一年了。
3. 使用MySQL多长时间?精通哪一块?
答:一年了。
4. 比较MySQL的两种常用引擎的区别(MyIsAm和InnoDB)。
5. 从各种角度优化以下SQL语句:SELECT * FROM tablename WHERE id IN (13, 15, 18, 19) and age=21
ORDER BY address DESC
6. 是否了解XML?讲一下格式规范。
7. 是否使用PHP解析过XML文件?使用的什么方法?该方法使用的是什么API?(没有听懂后面半句是什么意思)
8. 写一个正则表达式
9. 一个3k+1数组,k为非负整数,请问从1乘到7000,结果的末尾会包含多少个0?
PHP面试问题推荐
1. 如何用php的'环境变量得到一个网页地址的内容?ip地址又要怎样得到?
2. 求两个日期的差数,例如-2-5 ~ 2007-3-6 的日期差数
3. 请写一个函数,实现以下功能:
字符串“open_door” 转换成 “OpenDoor”、”make_by_id” 转换成 ”MakeById”。
4. 要求写一段程序,实现以下数组$arr1转换成数组$arr2:
$arr1 = array (
’0′ =>array (‘fid’ =>1, ‘tid’ =>1, ‘name’ =>’Name1′ ),
’1′ =>array (‘fid’ =>1, ‘tid’ =>2 , ‘name’ =>’Name2′ ),
’2′ =>array (‘fid’ =>1, ‘tid’ =>5 , ‘name’ =>’Name3′ ),
’3′ =>array (‘fid’ =>1, ‘tid’ =>7 , ‘name’ =>’Name4′ ),
’4′ =>array (‘fid’ =>3, ‘tid’ =>9, ‘name’ =>’Name5′ )
);
$arr2 = array (
’0′ =>array (
’0′ =>array ( ‘tid’ =>1, ‘name’ =>‘Name1′),
’1′ =>array ( ‘tid’ =>2, ‘name’ =>‘Name2′),
’2′ =>array ( ‘tid’ =>5, ‘name’ =>‘Name3′),
’3′ =>array ( ‘tid’ =>7, ‘name’ =>‘Name4′)
),
’1′ =>array (
’0′ =>array ( ‘tid’ =>9, ‘name’ =>‘Name5′ )
)
);
5. 请简述数据库设计的范式及应用,
一般第3范式就足以,用于表结构的优化,这样做既可以避免应用程序过于复杂同时也避免了SQL语句过于庞大所造成系统效率低下。
6.一个表中的Id有多个记录,把所有这个id的记录查出来,并显示共有多少条记录数,用SQL语句及视图、存储过程分别实现。
DELIMITER //
CREATE PROCEDURE ProcGet
(
IN ID_a INT(11)
)
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN END;
SELECT COUNT(*) AS Sum FROM News Where ID = ID_a;
END;//
CALL ProcGet(88)//
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(){
}
}
一、PHP开发部分
1.合并两个数组有几种方式,试比较它们的异同
2.请写一个函数来检查用户提交的数据是否为整数(不区分数据类型,可以为二进制、八进制、十进制、十六进制数字)
3.PHP的strtolower()和strtoupper()函数在安装非中文系统的服务器下可能会导致将汉字转换为乱码,请写两个替代的函数实现兼容Unicode文字的字符串大小写转换
4.PHP的is_writeable()函数存在Bug,无法准确判断一个目录/文件是否可写,请写一个函数来判断目录/文件是否绝对可写
5.PHP的chmod()函数存在Bug,无法保证设置成功,请写一个函数在指定路径下创建一个目录/文件并确保可以正确设置权限掩码
6.PHP处理上传文件信息数组中的文件类型$_FILES['type']由客户端浏览器提供,有可能是 伪造的信息,请写一个函数来确保用户上传的图像文件类型真实可靠
7.PHP通过对数据的URL编码来实现与Javascript的数据交互,但是对于部分特殊字符的编解码与Javascript的规则不尽相同,请具体说明这种差异,并针对UTF-8字符集的数据,写出PHP的编解码函数和Javascript的编解码函数,确保PHP编码数据可以被 Javascript正确解码 、Javascript编码的数据可以被PHP正确解码
8.试阐述Memcache的key多节点分布的算法?当任一节点出现故障时PHP的Memcache客户端将如何处置?如何确保Memcache数据读写操作的原子性?
9.如何实现PHP的安全最大化?怎样避免SQL注入漏洞和XSS跨站脚本攻击漏洞?
10.请设计一个数据结构可以实现无限级子菜单的树型菜单功能并提供菜单生成算法,用UML描述设计并写出相关PHP代码
二、系统相关部分
1.请简述Linux、FreeBSD、Soalaris、Mac OS、Windows几种系统下进程与线程的内核实现方式、管理机制的异同
2.请简述Linux/BSD系统下进程间通讯的方式有哪些,并具体说明在PHP下如何实现
3.请简述Linux/BSD系统下系统的消息/事件异步通知机制有几种,并加以比较
4.简单比较TCP/UDP协议的异同,对于PHP的'Socket扩展与Stream扩展,试比较两者基于TCP/UDP协议的SOCKET编程差异?
5.为什么会出现僵死进程(孤儿进程)?怎样查看僵死进程?如何解决僵死进程问题?
6.对于System-V消息队列,如何解决系统本身对于消息队列条数、总容量(字节数)的限制?如何设置消息的优先级别?请比较阻塞模式和非阻塞模式的异同,并说明如何避免非阻塞模式下的消息队列堵塞?
7.请描述Apache 2.x版本的MPM(Multi-Processing Module)机制,并具体说明在不同的MPM机制下如何支持PHP?
8.请简述PHP在Apache下的几种运行方式并加以比较?如何让PHP在Linux+Apache下以Fast CGI方式运行?
9. 请写出让PHP能够在命令行下以脚本方式执行时安装PHP所必须指定的configure参数,并说明如何在命令行下运行PHP脚本(写出两种方式)同时向PHP脚本传递参数?
10.请简述PHP 5.2的内存池及其内存管理机制、垃圾回收机制
1 . 请对 posix 风格和兼容 perl 风格两种正则表达式的主要函数进行类比说明
ereg preg_match
ereg_replace preg_replace
2 . 请说明在 php .ini 中 safe_mode 开启之后对于 php 系统 函数的影响
3 . php5 中魔术 方法 函数有哪几个,请举例说明各自的用法
__sleep
__wakeup
__tostring
__set_state
__construct,
__destruct
__call,
__get,
__set,
__isset,
__unset
__sleep,
__wakeup,
__tostring,
__set_state,
__clone
__autoload
4 . 请写出让,并说明如何在命令行下运行 php 脚本(写出两种方式)同时向 php 脚本传递参数?
1. php filename.php $agr1 $agr2
2. php –r “”
5 . php 的垃圾收集机制是怎样的
6 .使对象可以像数组一样进行 foreach 循环,要求属性必须是私有。
(iterator 模式的 php5 实现,写一类实现 iterator 接口 )
7 .请写一段 php 代码 ,确保多个进程同时写入同一个文件 成功
8 . 用 php 实现一个双向队列
9 . 使用正则表达式提取一段标识语言( html 或 xml )代码段中指定标签的指定属性值(需考虑属性值对不规则的情况,如大小写不敏感,属性名值与等号间有空格等)。此处假设需提取 test 标签的 attr 属性值,请自行构建包含该标签的串
★ 管理人员面试问题
★ 会计专业面试问题
★ 财务会计面试问题
★ 教师面试问题
★ 面试问题妙答
★ NBA面试问题
★ 组织部面试问题
★ 面试的问题
★ 面试礼节问题
★ 面试问题盘点