PHP基础面试题 – 第五天

2020年3月13日 飞飞 阅读(550)

1、列出五种以上你使用过的PHP 的扩展的名称 (提示:常用的PHP扩展 , 如 GD 扩展)

PDO、mysql、sybase、oracle、memcache、zlib

2、写一个函数,用冒泡法实现排序,输入参数为一个数组

function mysort($arr){
for($i=0;$i<strlen($arr);$i++)
{
  for($j=$i;$j<strlen($arr);$j++)
  {
    if($arr[i]>$arr[j])
    {
      $temp = $arr[i];
      $arr[i] = $arr[j];
      $arr[j] = $temp;
    }
  }
}
}

3、请说明 在php.ini 中safe_mode 开启之后对于PHP系统函数的影响

chmod() mkdir() touch() chown() chgrp() chdir() fopen() rmdir() copy() link()
exec() 

chmod() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 另外,不能设置 SUID、SGID 和 sticky bits
mkdir() 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。
touch() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。
chown() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。
chgrp() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。
chdir() 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。
fopen() 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。
rmdir() 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。
copy() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。 (on source and target )
link() 检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。 (注意:仅测试 target)
exec() 只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因,目前不能在可执行对象的路径中使用 ..。escapeshellcmd() 将被作用于此函数的参数上。

4、你用什么方法检查PHP脚本的执行效率(通常是脚本执行时间)和数据库SQL的效率(通常是数据库Query时间),并定位和分析脚本执行和数据库查询的瓶颈所在?

1.脚本执行时间,启用xdebug,使用WinCacheGrind分析。
2.数据库查询,mysql使用EXPLAIN分析查询,启用slow query log记录慢查询。
3, xdebug统计函数执行次数和具体时间进行分析。
4, 在线系统用strace跟踪相关进程的具体系统调用。

5、试简述php5 中 autoload 机制是如何自动加载类的

当PHP引擎试图实例化一个未知类的操作时,会调用__autoload()方法,在PHP出错失败前有了最后一个机会加载所需的类。
因此,上面的这段代 码执行时,PHP引擎实际上替我们自动执行了一次__autoload方法,将User.class.php这个文件包含进来。 
在__autoload函数中抛出的异常不能被catch语句块捕获并导致致命错误。
未经允许不得转载:PHP学习网 » PHP基础面试题 – 第五天
分享到:

评论抢沙发

要发表评论,您必须先

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

扫码关注微信公众号

扫描关注微信公众号