• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

3年PHP程序员的面试总结

php 搞代码 3年前 (2022-01-22) 23次浏览 已收录 0个评论

这篇文章介绍的内容是关于3年PHP程序员的面试总结,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

1.反转函数的实现#

/** * 反转数组 * @param  array $arr  * @return array */function reverse($arr){    $n = count($arr);    $left = 0;    $right = $n - 1;    while ($left < $right) {        $temp = $arr[$left];        $arr[$left++] = $arr[$right];        $arr[$right--] = $temp;    }    return $arr;}

2.两个有序int集合是否有相同元素的最优算法#

/** * 寻找两个有序数组里相同的元素 * @param  array $arr1  * @param  array $arr2  * @return array       */function find_common($arr1, $arr2){    $common = array();    $i = $j = 0;    $count1 = count($arr1);    $count2 = count($arr2);    while ($i < $count1 && $j < $count2) {        if ($arr1[$i] < $arr2[$j]) {            $i++;        } elseif ($arr1[$i] > $arr2[$j]) {            $j++;        } else {            $common[] = $arr[$i];            $i++;            $j++;        }    }    return array_unique($common);}

3.将一个数组中的元素随机(打乱)#

/** * 打乱数组 * @param  array $arr  * @return array       */function custom_shuffle($arr){    $n = count($arr);    for ($i = 0; $i < $n; $i++) {        $rand_pos = mt_rand(0, $n - 1);        if ($rand_pos != $i) {            $temp = $arr[$i];            $arr[$i] = $arr[$rand_pos];            $arr[$rand_pos] = $temp;        }    }    return <div style="color:transparent">本&文来源gaodai^.ma#com搞#代!码网</div><strong>搞gaodaima代码</strong>$arr;}

4.给一个有数字和字母的字符串,让连着的数字和字母对应#

function number_alphabet($str){    $number = preg_split('/[a-z]+/', $str, -1, PREG_SPLIT_NO_EMPTY);    $alphabet = preg_split('/\d+/', $str, -1, PREG_SPLIT_NO_EMPTY);    $n = count($number);    for ($i = 0; $i < $count; $i++) {         echo $number[$i] . ':' . $alphabet[$i] . '</br>';    }}$str = '1a3bb44a2ac';number_alphabet($str);//1:a 3:bb 44:a 2:ac

5.求n以内的质数(质数的定义:在大于1的自然数中,除了1和它本身意外,无法被其他自然数整除的数)#

思路:1.(质数筛选定理)n不能够被不大于根号n的任何质数整除,则n是一个质数
2.除了2的偶数都不是质数
代码如下:

/** * 求n内的质数 * @param int $n  * @return array */function get_prime($n){    $prime = array(2);//2为质数    for ($i = 3; $i <= $n; $i += 2) {//偶数不是质数,步长可以加大         $sqrt = intval(sqrt($i));//求根号n        for ($j = 3; $j <= $sqrt; $j += 2) {//i是奇数,当然不能被偶数整除,步长也可以加大。             if ($i % $j == 0) {                break;            }        }        if ($j > $sqrt) {            array_push($prime, $i);        }    }    return $prime;}print_r(getPrime(1000));

6.约瑟夫环问题#

相关题目:一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数, 再数到第m只,在把它踢出去…,如此不停的进行下去, 直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。

/** * 获取大王 * @param  int $n  * @param  int $m  * @return int   */function get_king_mokey($n, $m) {    $arr = range(1, $n);    $i = 0;    while (count($arr) > 1) {        $i++;        $survice = array_shift($arr);        if ($i % $m != 0) {            array_push($arr, $survice);        }    }    return $arr[0];}

7.如何快速寻找一个数组里最小的1000个数#


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:3年PHP程序员的面试总结
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址