腾讯php面试题二 之 - 笔试

一、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的内存池及其内存管理机制、垃圾回收机制