您现在的位置是:首页 > 技术分享

PHP常见的面试题(一)
wangzhen2018-03-04340人围观

    1、PHP魔术方法及其作用?

    答:__autoload() 在实例化一个尚未被定义的类时会自动调用此方法来加载类文件

        __set() 当给未定义的变量赋值时会自动调用的方法

        __get() 当获取未定义变量的值时会自动调用的方法

        __construct() 构造方法,实例化类时自动调用的方法

        __destruct() 销毁对象时自动调用的方法

        __unset() 当对未定义的变量调用unset()时自动调用的方法

        __clone() 克隆一个对象

        __call() 当调用不存在的方法时会自动调用的方法

    2、常见的排序算法

    (冒泡和快速)

    答:a)冒泡算法:对待排序记录关键字从后往前(逆序)进行多遍扫描,当发现相邻      的两个关键字的次序和排序要求的规则不符时,就将这两个记录进         行交换;

    Function mysort($arr){

    $count = count($arr);

    For($i = 0; $i<$count; $i++){

    For($j = 0; $j<$count-1; $j++){

    If($arr[$j] > $arr[$j+1]){

    $tmp = $arr[$j];

    $arr[$j] = $arr[$j+1];

    $arr[$j+1] = $tmp;

    }

    }

    }

      Return $arr;

    }



      b)快速排序:从数组中挑出一个数,作为 基准,扫描一遍数组,将所有比基准小的元素排在基准前边,所有比基准大的元素排在基准后边,通过递归,将各子序列划分为更小的序列,直到把小于基准值元素的子数列和大于基准值元素的子序列排序;

      Function quite($arr){

    $left = array();

    $right = array();

    If(count($arr) <=1){

    Return $arr;

    }

    For($i = 0;$i<count($arr);$i++){

    If($arr[$i] <$arr[0]){

    $left[] = $arr[$i];

    } else {

    $right[] = $arr[$i];

    }

    quite($left);

    quite($right);

    }

    Return array_merge($left, array($arr[0]), $right);

    }

    3、遍历文件夹及其子文件?

    答: function myscandir($dir){

    $files = array();

    If($handle = opendir($dir)){

    While( ($file = readdir($handle)) != false ){

    If($file !=.. && $file !=.){

    If( is_dir($dir . /. $file)){

    $files[$file] = myscandir($dir./.$file);

    } else {

    $files[] = $file;

    }

    }

    }

    Closedir($handle);

     

    Return $files;

    }

    }

    4、Mysql存储引擎myisaminnodb的区别?

    答:myisam: 优点:成熟、稳定、易于管理;表格锁定机制;比innodb快;

      缺点:optimize清理空间;

      适合:读取需求、节约空间时间、响应速度快;

    Innodb: 优点:支持外键和事务;

      缺点:速度比myisam慢,占用空间大;

      适合:用到事务、外键和更高安全性的需求,多用户同时修改表;

    5、数据库索引类型及区别?

    答:主键索引:主要作用是确定数据表里一条特定的数据记录的位置,数据表会根据主      键的唯一索引性来唯一标示每条记录;

    唯一索引:主要是为了避免数据出现重复;

    区别:每个表只能有一个主键索引,但可以有多个唯一索引;

    索引优点:a.保证数据库表中每一行唯一性;

      b.加快检索速度;

      c.加速表与表之间的连接;

      d.查询使用优化隐藏器,提高系统性能;

            索引缺点:a.创建和维护索引要耗费时间,随着数据量的增加而增加;

      b.占物理空间,除了数据表占数据空间之外,索引还要占一定的物理    空间;

      c.当对表数据进行增删改是,索引也要动态维护,降低数据维护速度;

            在什么地方建索引?

      a.经常需要搜索的列,加快检索速度;

      b.主键列,强制该列唯一性和组织表中数据排列结构;

      c.经常连接的列(外键)加快连接速度;

      d.范围搜索列;

      e.排序列,因索引已排序,可利用索引排序加快时间;

      f.where子句列,加快条件判断;

    6、Sessioncookie的区别?

    答:sessiom服务器端,给每个客户分配一个唯一的数字,作为每个客户的标识,cookie  是一种由服务器发送给客户端的片段信息,存储在客户端浏览器的内存或者是硬盘              上,每次发出页面请求时,都会把里面的数据发送给服务器端。


文章评论