PHP面试知识梳理(建议收藏)

算法与数据结构

BTree和B+tree

  • BTree B树是为了磁盘或者其他存储设备而设计的一种多叉平衡查找树,相对于二叉树,B树的每个内节点有多个分支,即多叉。参考文章:https://www.jianshu.com/p/da5…

  • B+Tree B+树是B树的变体,也是一种多路搜索树。参考文章:https://www.jianshu.com/p/da5…

排序算法

  • 快速排序 快速排序是十分常用的高效率的算法,其思想是:先选一个标尺,用它把整个队列过一遍筛选,以保证其左边的元素都不大于它,其右边的元素都不小与它
function quickSort($arr){

  // 获取数组长度
  $length = count($arr);

  // 判断长度是否需要继续二分比较
  if($length <= 1){
    return $arr;
  }

  // 定义基准元素
  $base = $arr[0];

  // 定义两个空数组,用于存放和基准元素的比较后的结果
  $left = [];
  $right = [];

  // 遍历数组
  for ($i=1; $i < $length; $i++) { 

    // 和基准元素作比较
    if ($arr[$i] > $base) {
      $right[] = $arr[$i];
    }else {
      $left[] = $arr[$i];
    }

  }

  // 然后递归分别处理left和right
  $left = quickSort($left);
  $right = quickSort($right);

  // 合并
  return array_merge($left,[$base],$right);
  
}

工作十二年准备的PHP进阶架构资料,如果你觉得有用,俺分享给大家:

【1000粉丝福利】12年架构师分享PHP进阶架构资料,助力大家都能30K

点击进人暗号:知乎

  • 冒泡排序 思路:法如其名,就像冒泡一样,每次从数组中冒出一个最大的数 比如:2,4,1 第一次冒出4:2,1,4 第二次冒出2:1,2,4
function bubbleSort($arr){

  // 获取数组长度
  $length = count($arr);

  // 第一层循环控制冒泡轮次
  for ($i=0; $i < $length-1; $i++) { 
    
    // 内层循环控制从第0个键值和后一个键值比较,每次冒出一个最大的数
    for ($k=0; $k < $length-$i-1; $k++) { 
      if($arr[$k] > $arr[$k+1]){
        $tmp = $arr[$k+1];
        $arr[$k+1] = $arr[$k];
        $arr[$k] = $tmp;
      }
    }
  }

  return $arr;
}
  • 选择排序 思路:每次选择一个相应的元素,然后将其放到指定的位置
for ($i=0; $i < $length - 1; $i++) { 
        // 假设最小值的位置
        $p = $i;
  
        // 使用假设的最小值和其他值比较,找到当前的最小值
        for ($j=$i+1; $j < $length; $j++) { 
          // $arr[$p] 是已知的当前最小值
  
          // 判断当前循环值和已知最小值的比较,当发下更小的值时记录下键,并进行下一次比较
          if ($arr[$p] > $arr[$j]) {
            $p = $j; // 比假设的值更小
          }
        }
  
        // 通过内部for循环找到了当前最小值的key,并保存在$p中
        // 判断 日光当前$p 中的键和假设的最小值的键不一致增将其互换
        if ($p != $i) {
          $tmp = $arr[$p];
          $arr[$p] = $arr[$i];
          $arr[$i] = $tmp;
        }
      }
      // 返回最终结果
      return $arr;
    }

计算机网络

TCP/UDP区别

  • TCP TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议 TCP面向连接,提供可靠地数据服务 TCP首部开销20字节 TCP逻辑通信信道是全双工的可靠信道 TCP连接只能是点到点的

  • UDP UDP是参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠的信息传递服务 UDP无连接,不可靠 UDP首部开销8字节 UDP逻辑通信信道是不可靠信道 UDP没有拥塞机制,因此网络出现拥堵不会使源主机的发送效率降低 UDP支持一对一,多对一,多对多的交互通信

三次握手,四次挥手,为什么是三次握手四次挥手

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接,完成三次握手,客户端与服务器开始传送数据。 简单点说:A与B建立TCP连接时,首先A向B发送SYN(同步请求),然后B回复SYN+ACK(同步请求应答),最后A回复ACK确认,这样TCP的一次连接(三次握手)就完成了。

  • TCP三次握手 所谓三次握手,是指简历一个TCP连接时需要客户端和服务器总共发送三个包 三次握手的目的是连接服务器指定端口,简历TCP连接,并同步连接双方的序列号并交换TCP窗口大小信息。 TCP三次握手图解:

<

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值