php中级面试题汇总

1、MySQL 索引设计原则:
(1)对于经常查询的字段,建议创建索引。

(2)索引不是越多越好,一个表如果有大量索引,不仅占用磁盘空间,而且会影响INSERT,DELETE,UPDATE等语句的性能。

(3)避免对经常更新的表进行过多的索引,因为当表中数据更改的同时,索引也会进行调整和更新,十分消耗系统资源。

(4)数据量小的表建议不要创建索引,数据量小时索引不仅起不到明显的优化效果,对于索引结构的维护反而消耗系统资源。

(5)不要在区分度低的字段建立索引。比如性别字段,只有 “男” 和 “女” ,建索引完全起不到优化效果。

(6)当唯一性是某字段本身的特征时,指定唯一索引能提高查询速度。

(7)在频繁进行跑排列分组(即进行 group by 或 order by操作)的列上建立索引,如果待排序有多个,可以在这些列上建立组合索引。
2、一次完整的HTTP请求所经历的步骤

       1.对www.baidu.com这个网址进行DNS域名解析,得到对应的IP地址

  2.根据这个IP,找到对应的服务器,发起TCP的三次握手

  3.建立TCP连接后发起HTTP请求

  4.服务器响应HTTP请求,浏览器得到html代码

  5.浏览器解析html代码,并请求html代码中的资源(如js、css图片等)(先得到html代码,才能去找这些资源)

  6.浏览器对页面进行渲染呈现给用户

3、数据结构

        数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成 。
常用的数据结构有:数组,栈,链表,队列,树,图,堆,散列表(哈希表)

参考地址:https://blog.csdn.net/yeyazhishang/article/details/82353846

4、服务注册与发现

参考:https://blog.csdn.net/u011537073/article/details/69663858

5、HTTP协议钟状态码含义

 201 已创建  301 永久移动  400  错误请求  500 服务器内部错误
 202 已接受 302 临时移动  401 未授权  501 不支持的请求
203  非授权信息 303 查看其它地址 403 禁止   502 错误网关
204 无内容 304未修改 404未找到      503服务器不可用
205 重置类容    305 使用代理    405 方法禁用 504 网关超时
 206 部分处理 306临时重定向 406  不接受  505 HTTP不支持


 

 

 

 

 

 

6、php排序算法

参考:https://www.cnblogs.com/aiweixiao/p/8202360.html

7、二分法查找

方法一:

// 递归调用实现二分法查找
//$search 函数 $array为数组,$K为要找的值,$low为查找范围的最小键值,$high为查找范围的最大键值
//intval返回整数值*/

function search($array,$k,$low=0,$high=0){
    //判断数组元素的数量
    if(count($array)!=0 and $high==0){      //判断是否为第一次调用
        //数组的元素个数
        $high = count($array);
    }
    if($low <= $high){      //如果还存在剩余的数组元素
        $mid = intval(($low+$high)/2);      //取$low 与$high的中间值
        if($array[$mid] == $k){
            return $mid;    //如果找到则返回
        }elseif($k < $array[$mid]){
            //如果上面没有找到,则继续查找
            return search($array,$k,$low,$mid-1);
        }else{
            return search($array,$k,$mid+1,$high);
        }
    }
    return "没有要查找的值";
}
$array = array(3,4,5,7,8,9,10);
echo search($array,4);

方法二:

/*
    //while循环实现二分法查找
*/
$arr = array(2,4,5,6,7,8,9,10);
$low = 0;   //要查找范围的最小键值
$search = 6;
//计算出数组的长度
$high = count($arr)-1;
while($low <= $high){
    //取得数组的中间键值
    $mid = intval(($low+$high)/2);
    if($arr[$mid]==$search){
        //如果取出中间的下标值跟你要搜索的值相等的话,直接去除值得下标就行
        echo "你要查找的值在数组内的下标为".$mid; break;
    }elseif($arr[$mid] > $search){
        $high = $mid -1;
    }else{
        $high = $mid+1;
    }
}

 

8、php钟self合static的区别

        关键字“self”的工作原理是:它会调用当前类(current class)的方法。因为model方法只在class Car中定义的,所以对它来说当前类就是class Car。model中的self::getModel(),调用的自然也就是class Car中的getModel方法。

在PHP5.3中,加入了一个新的特性,叫做延迟静态绑定。它可以帮我们实现多态,解决上面的问题。简单来说,延迟静态绑定意味着,当我们用static关键字调用一个继承方法时,它将在运行时绑定调用类(calling class)。在上面的例子中,如果我们使用延迟静态绑定(static),意味当我们调用“Mercedes::model();”时,class Mercedes中的getModel方法将会被调用。因为Mercedes是我们的调用类

参考:https://blog.csdn.net/qmhball/article/details/77369457

 

你可能感兴趣的:(面试)