zoukankan      html  css  js  c++  java
  • PHP面试题整理

    1、使用foreach、for、while来循环遍历数组的时候,那个效率最高?为什么?

    2、php读取文件有哪些文件?有什么区别?

    3、函数empty、isset、is_null有什么区别?在使用的时候需要注意什么?

      关于empty和isset的介绍,可以看这篇博客:http://www.cnblogs.com/hoohack/p/5523007.html

      empty:查看官方手册http://php.net/manual/zh/function.empty.php

    bool empty ( mixed $var )

    判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于FALSE,那么它会被认为不存在。如果变量不存在的话,empty()并不会产生警告。

    <?php
        var_dump(empty(0));     //bool(true)
        var_dump(empty(0.0));   //bool(true)
        var_dump(empty('0'));   //bool(true)
        var_dump(empty(''));    //bool(true)
        var_dump(empty('    '));//bool(false)
        var_dump(empty(trim('    ')));//bool(true)
        var_dump(empty(null));  //bool(true)
        var_dump(empty(NULL));  //bool(true)
        var_dump(empty($undefine));//bool(true)
        var_dump(empty(false)); //bool(true)
        var_dump(empty(FALSE)); //bool(true)
        var_dump(empty(array()));//bool(true)
    ?>

      

      isset,查看官方手册http://php.net/manual/zh/function.isset.php

    bool isset ( mixed $var [, mixed $... ] )

    检测变量是否设置,并且不是 NULL

    如果已经使用 unset() 释放了一个变量之后,它将不再是 isset()。若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。同时要注意的是 null 字符("")并不等同于 PHP 的 NULL 常量。

    如果一次传入多个参数,那么 isset() 只有在全部参数都以被设置时返回 TRUE 计算过程从左至右,中途遇到没有设置的变量时就会立即停止。

      注意传入的参数不能使常量或者常量表达式,比如下面的做法是错误的:

    <?php
        var_dump(isset("123"));//wrong
        var_dump(isset(array()));//wrong
        var_dump(isset(__FILE__));//wrong
        var_dump(isset(null));//wrong
        var_dump(isset(false));//wrong
    ?>
    

       正确用法:传入isset的是一个变量,只要为该变量赋过值(null除外),那么判断结果都是true。使用unset对一个变量进行“销毁”操作后,再对该变量进行isset判断,返回的结果是false。

    <?php
        $a = '';
        var_dump(isset($a));//bool(true)
        unset($a);
        var_dump(isset($a));//bool(false)
    
        $b = null;
        var_dump(isset($b));//bool(false)
    
        $c = false;
        var_dump(isset($c));//bool(true)
    
        $d = 0;
        var_dump(isset($d));//bool(true)
    
        $arr = array();//空数组
        var_dump(isset($arr));//bool(true)
    
        $arr2 = array("one"=>"demo");
        var_dump(isset($arr2));//bool(true)
        unset($arr2['one']);
        var_dump(isset($arr2));//bool(true)
        var_dump(isset($arr2['one']));//bool(false)
    ?>
    

      

      is_null,查看官方手册:http://php.net/manual/zh/function.is-null.php

    bool is_null ( mixed $var )

    如果 var 是 null 则返回 TRUE,否则返回 FALSE

    查看 NULL 类型获知变量什么时候被认为是 NULL,而什么时候不是。

      有手册声明可知,只要赋给变量的值,并且赋的值不是null,那么is_null判断的结果都返回false,即都不认为是空。

    <?php
        var_dump(is_null($a=null));//bool(true)
        var_dump(is_null($a=0)); //bool(false)
        var_dump(is_null($a=''));//bool(false)
        var_dump(is_null($a=array()));//bool(false)
        var_dump(is_null($a=false));//bool(false)
    ?>
    

      

     

    5、一个多维数组,写一个递归输出所有内容,并返回元素的总数。

    6、删除数组中的元素有哪些方法?以及各个方法优缺点?

    7、php语法中,变量名和函数名区分大小写吗?

      变量区分大小写。

      函数名不区分大小写。

    8、php魔术方法

    9、@foo()与foo()的区别?

    10、Object和Array之间的转换

    11、php实现各种设计模式

    12、php类的知识。

    13、定义常量的方法?有什么区别?

    <?php
        //直接设置常量
        define("TEST","this is test");
        const DEMO = "this is demo";
        echo TEST; //this is test
        echo DEMO; //this is demo
    
        //使用define时,常量名称可以是变量,但是变量值是字符串
        $name = "AAA";
        define($name,"this is aaa");
        echo AAA; //this is aaa
        //const不能这样使用
        const $name = "this is other aaa";//wrong
    ?>
    

      1、使用define时,常量名可以保存在一个变量中,即常量名称就是变量的值,而const不行。

      2、使用define时,指定的值可以是任何形式,比如表达式、变量、以及字面值;而使用const时,指定的值只能是字面值,不能是表达式或者变量。

      3、在class内部声明常量只能用const,不能使用define。

      4、define可以出现在判断和循环中,而const不行。 

    <?php
        while($i<10){
            //define("N",$i);//没有问题,按预期运行
            const N = 1;//报错
            $i++;
        }
        if($i){
            define("N","de");//没有问题
        } else {
            const N = "zh"; //const不能再判断中
        }
    ?>
    

      有兴趣的话,可以参考C和C++中的define和const:http://blog.sina.com.cn/s/blog_79b01f6601018xdg.html

    14、lamp中各部分的作用?运行逻辑?

    15、include和require相关的区别?

    16、php的内存回收机制(GC)

    17、php底层运行机制

      可以参考麦子学院课程:http://www.maiziedu.com/course/760/ 

     

    1. 有一个日期,,输出data的上周末的日期。

    2. PHP数组随机打乱函数是? 过滤数组中空的元素的函数是?

    3. PHP中自动加载类是怎么实现的?

    4. 写一个正则,实现路由匹配 /live/index?roomid=1001 成 /1001

    5. 写一个函数, 实现在一个数组的任意位置插入一个值。要求尽量简洁高效。

    6. 一个勋章的名字是不超过4个字符的(1个汉字算2个字符)。请简单写出这个逻辑判断的关键代码。

    7. 有一个所有正在直播的房间的列表roomList,包括roomid, title, uid, online 字段信息,请把roomList按照online字段正序排列。

    8. unset($_COOKIE['bili_uid') 会删除本地的cookie吗?

    9. 请简单描述 session 的实现原理。如何实现session同步到服务器集群?

    10. 请简单描述redis和memcache的区别和各自的利弊。以及哪种场景用哪个更合适?

    11. 请用文字或者关键代码说明如何用redis实现一个7日礼物投喂榜。榜单循环7日变化,第8天会删掉第1天的数据(不是自然周的7天)

    12. 请写出 5 个mysql中你常用的函数或者常量,以及各自的作用。

    13. 分库分表的目的是什么? 一般如何数据表水平拆分数据表。

    14. 请简单描述单索引和聚合索引的区别。哪些场景各自适合?

    15. 有一张表 user(uid, uname, face, register_time, last_login_time) 里面有 几千万条记录,索引字段是uid。写出关键sql,要求使用索引,高效的取出50000000后的10条数据。

    16. php-fpm进程分配有哪几种方式?如何选择?

    17. Linux中,查看当前php的版本的系统命令是? 查看 php-fpm 的进程的命令是? 查看端口号 6379 的进程的命令是? 重启 nginx 的命令是?

    18. 查看内存占用的命令是? 能够实时显示系统中各个进程的资源占用状况的命令是?

    19. 写一个nginx简单的 rewrite 实现由 http://static.hdslb.com/live-static/js/jquery.min.js 跳转到 http://live.bilibili.com/js/jquery.js

    20. 简述TCP三次握手的过程?

    21. 写出 5 个你接触过的 http 的状态码,分别代表什么意思?

  • 相关阅读:
    张维迎:你必须知道的10个经济学原理
    艾德莱斯绸:“千年时尚”托起新产业
    Sending forms through JavaScript[form提交 form data]
    Sending form data
    Your first HTML form
    form submission
    <input type="file">
    web storm查看文件结构
    jQuery-File-Upload
    IHttpHandler
  • 原文地址:https://www.cnblogs.com/-beyond/p/9226410.html
Copyright © 2011-2022 走看看