一个菜鸟驿站!

PHP面试题二

PHP 2018-05-17 浏览(2068) 评论(0)
- N +

文章目录 [+]

直接上面试题。

  1. 1.字符串"\r","\n","\t","\x20"分别代表什么?

  2. 答案如下:

      1. \r”代表的含义是:在Linux、unix 中表示返回到当行的最开始位置,在Mac OS 中表示换行且返回到下一行的最开始位置,相当于Windows 里的 \n 的效果。

      2. “\n”代表的含义是:在Windows 中表示换行且回到下一行的最开始位置。相当于Mac OS 里的 \r 的效果,在Linux、unix 中只表示换行,但不会回到下一行的开始位置。

      3. “\t”所代表的含义是:键盘上的“TAB”键,跳格(移至下一列)。

      4. “\x20”所代表的含义是:是32在ASCII表中16进制的表示。

  3. 2.以下语句会输出什么?

  4. $a = 3;
    echo "$a",'$a',"\\\$a","${a}","$a" . "$a" ,"$a" + "$a";
    \\输出结果如下:3 $a \$a 3 33 6
  5. 3.以下语句输出结果是什么?

  6. setcookie('name', '猫巷');
    echo $_COOKIE['name'];
    \\输出结果如下:猫巷
  7. 4.php中怎么将当前页面重定向到另一个页面。

  8. header('location:http://www.lovyou.top');
  9. 5.什么是魔术引号(magic_quotes_gpc)

  10. 答案如下:魔术引号(Magic Quotes)是一个自动将进入 PHP 脚本的数据进行转义的过程。提示:最好在编码时不要转义而在运行时根据需要而转义。

    在一个项目中,魔术引号若是打开的话,所有的反斜线(\)、单引号(')、双引号(")、NULL 字符都会被自动加上一个反斜线进行转义,这和 addslashes() 作用完全相同。

     特别注意的是在PHP 5.4版本时,魔术引号被移除了,因此转义都需要加上addslashes函数。

  11. 6.在类的方法中,如何调用父类的同名方法。

  12. class father{
        public function index(){
            echo 'father.index';
        }
    }
    class child extends father {
        public function index()
        {
            echo 'child.index and ::::::::' ;
            //调用父类的同名方法
            parent::index();
        }
    }
    (new child())->index();
  13. 7.php中如何取得get,post,和上传文件的参数。

  14. 答案如下:$_GET、$_POST、$_FILES;

  15. 8.如何取得客户端的ip,(要求取得一个int)

  16. echo getenv('REMOTE_ADDR');    //获取客户端IP
    $ip = $_SERVER['REMOTE_ADDR']; //获取客户端IP
    $ip = ip2long($ip);            //转换为int类型
  17. 9.include和require的区别。

  18. 10.extends的作用是什么?

  19. 11.@test()和&test()的区别。

  20. 答案如下:@屏蔽test()函数在执行中的警告提示;&test()引用test()函数。

  21. 12.请列举最少3个php对象的魔术方法和他们的用途。

  22. 答案如下:

      1. __construct():构造方法
        对象创建时运行。

      2. __destruct():析构方法
        对象销毁时运行。

      3. __call():调用一个类的不可访问方法时使用。

      4. __callStatic():静态调用一个类的不可访问方法时使用。

      5. ...

  23. 13.array+array与array_merge()的区别。

      1. 当键值为数字时:

          1. $numArr1 = [
                0 => 0,
                3 => 3
            ];
            $numArr2 = [
                1 => 1,
                3 => 6,
            ];
            
            echo '<pre>';
            print_r($numArr1 + $numArr2);    
            print_r(array_merge($numArr1, $numArr2));
            //键值相同时,array+array只把最先出现的采用成最后的值,array_merge()
            则是默认不会。
      2. 当键值为字符时:

          1. $strArr1 = [
                'a' => 'a',
                'b' => 'b'
            ];
            $strArr2 = [
                'b' => 'BB',
                'c' => 'c'
            ];
            
            echo '<pre>';
            print_r($strArr1 + $strArr2);
            print_r(array_merge($strArr1, $strArr2));
            //键值相同时,array+array则还是将最先出现的采用成最后的值,array_merge()
            则是后边的覆盖前边的。
  24. 14.什么是fpm。

    1. 答案如下:

      1. PHP-FPM是一个PHP FastCGI管理器,是只用于PHP的,可以在 http://php-fpm.org/download 下载得到。

      2. PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置。

  25. 15.描述一下php开发中常见到的几种攻击方法以及解决方案。

    1. 答案如下:

      1. 请异步到PHP网站常见安全漏洞以及防御方法

  26. 16.echo intval(0.58 * 100) 输出的结果是57,试分析这是为什么?

  27. 答案如下:原因就是浮点数精度的问题。
    简单的十进制分数如同 0.1 或 0.7 不能在不丢失一点点精度的情况下转换为内部二进制的格式。这就会造成混乱的结果:例如,floor((0.1+0.7)*10) 通常会返回 7 而不是预期中的 8,因为该结果内部的表示其实是类似 7.9999999999…。这和一个事实有关,那就是不可能精确的用有限位数表达某些十进制分数。例如,十进制的 1/3 变成了 0.3333333…。所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数或者 gmp 函数。

  28. 17.PHP缓存技术有哪些?

    1. 1. 全页面静态化缓存:也就是将页面全部生成html静态页面,用户访问时直接访问的静态页面,而不会去走php服务器解析的流程

    2. 2. 页面部分缓存:将一个页面中不经常变的部分进行静态缓存,而经常变化的块不缓存,最后组装在一起显示

    3. 3. 数据缓存:通过一个id进行请求的数据,将数据缓存到一个php文件中,id和文件是对应的,下次通过这个id进行请求时直接读php文件

    4. 4. 查询缓存:和数据缓存差不多,根据查询语句进行缓存;

    5. 5. 内存式缓存:redis和memcache




标签:
作者:猫巷

,

评论列表 (0)条评论

发表评论

召唤伊斯特瓦尔