您现在的位置是:首页 > 技术教程 正文

2023年PHP面试题30道详细整理(附带答案)

admin 阅读: 2024-03-14
后台-插件-广告管理-内容页头部广告(手机)

1.请问一下你使用过swoole吗,使用过,怎么设置心跳?

$this->serv->set([ 'heartbeat_check_interval' => 5, 'heartbeat_idle_time' => 10 ]); //上面的设置就是每5秒侦测一次心跳,一个TCP连接如果在10秒内未向服务器端发送数据,将会被切断。 

2.如果一个访问量达到100万,选择缓存,你会选择redis还memchache?

我会选择memchache,因为它只有一种类型,key-value,而redis的类型比memchache多,导致它的并发没有memchache好。

3.psr2和psr4的区别?

意思:psr指的是php standards recommendatiion,意思PHP标准建议。

psr2:编码风格向导

psr4:自动加载。

psr4:#完整的类名为\a\b\c\Log#命名空间前缀前缀为:a\b#前缀对应的基础目录为:./vendor#文件实际目录为:./vendor/c/Log.php#注:即把去掉最前面的命名空间分隔符后的a\b\c\Log中的命名空间前缀替换成基础目录,然后把命名空间分隔符替换成目录分隔符,并把文件名补上后缀 .php 。 

4.mb_strlen和str_len的区别?

  1. <?php $a = '中国';
  2. echo strlen($a)."\n";//6
  3. echo mb_strlen($a);//2

5.下面会输出什么?

<?php $str = 'abc'; $res = strpos($str,'a'); if ($res){ echo '找到了'; } else { echo '未找到'; } //答案是:未找到未找到,因为strpos是查找首字母出现的位置,并且索引是从0开始的,并且PHPs是弱类型的,所以会输出:未找到 

6.使用二分法查找50出现的位置?

//第一种方法 $arr = [1,3,5,12,34,45,50]; function binary(array &$arr,int $low,int $top,int $target){ while($low<=$top){ $mid = floor(($low+$top)/2); if($arr[$mid] === $target){ return $mid; } elseif($arr[$mid]>$target){ $top= $mid-1; } else if($arr[$mid]<$target){ $low= $mid+1; } } return -1; } $arr = [1,3,5,12,34,45,50]; echo binary($arr,0,count($arr),50);//6 //第二种方法 function binaryRecursive(array &$arr,int $low,int $top,int $target){ $mid = floor(($low+$top)/2); if ($arr[$mid]>$target){ return binaryRecursive($arr,$low,$mid-1,$target); } elseif ($arr[$mid]<$target){ return binaryRecursive($arr,$mid+1,$top,$target); } else if ($arr[$mid]===$target){ return $mid; } else { return -1; } } $arr = [1,3,5,12,34,45,50]; echo binaryRecursive($arr,0,count($arr),50);//6 

7.将上面的数组进行翻转,不使用内置函数?

$arr = [1,3,5,12,34,45,50];

function overturn(array &$arr){ $temp = []; for ($i = count($arr)-1;$i>=0;$i--){ $temp[] = $arr[$i]; } // print_r($temp); return $temp; } $arr = [1,3,5,12,34,45,50]; //Array ( [0] => 50 [1] => 45 [2] => 34 [3] => 12 [4] => 5 [5] => 3 [6] => 1 ) 

8.请写出nginx负载均衡的算法?怎么检查配置用没有问题,如果有问题,怎么查看出现是问题,修改了配置文件,怎么生效?

1.round robin(默认)

​ 解释:轮询方式,依次将请求分配到各个后台服务器中,默认的负载均衡方式,是否机器性能一致的情况下。

2.weight(权重)

  1. upstream bakend {
    标签:
    声明

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    在线投稿:投稿 站长QQ:1888636

    后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索