面试12家公司,收获9个offer,2020年PHP 面试问题(收藏)

出于一些原因近期做了一次工作变动,在职交接近一个半月时间大概面试了十家公司,并且得到了自己比较满意的offer,最后基本上无缝衔接了新工作。总体来说,虽然准备的很充分,但面试期间还是暴露了许多问题,所以做下总结,供大家和自己以后参考,主要分四部分讲述: 简历方面,格式内容包括七个板块,个人简介,求职意向,工作经历,项目经历,技能描述,学历背景,自我评价。如果自己或公司没有其他特殊要求,这些一般就够了,具体格式不再赘述。

(点击此处加入php高级交流群一起学习交流,10年架构师带你解读年薪50万面试通关秘籍。)

总结几个要素: 

  1. 个人简介名字大写,内容需要详实,一是可以给人留下映像,二是减少不必要的与面试官交换个人信息的时间。准备一份好的口头自我介绍是很有必要的,毕竟准备一次能用很久,时间花在上面很实用,面外企英文版的最好也提前准备下。
  2. 简历上不要写上期望薪资,能够根据面试情况变化是最好的,如果写上建议高于自身期望,详细参考锚定效应。
  3. 简历要简洁,最好不要超过两页。项目经历要突出重点(可以具体到某次解决线上问题,某次优化效率提升),两到三个为宜,不重要的可以放在工作经历中一笔带过。这样有个好处,即面试官根据项目问的问题就会很集中,在你的预料之中,如果你的项目夸夸    其谈写了很多,那面试官发挥起来,你就容易被带着走。
  4. 很多人不重视个人评价栏目,我的技巧是评价最后中带上自己的博客,个人项目,因为在尾部还是很容易被看到并当做加分项的。

面试流程,其实每个公司大同小异,电话面试,笔试,技术面(可能两面),Hr面,部门经理面,可能不同公司有稍微做调整。

这里需要强调两点:

  1.电话面试,很多大公司都会有电话面试,有些朋友接到面试不管当前情况如何,环境如何都会争取这个机会,而我想说的是,如果身边环境尚可接了也就接了,但是如果身处闹市,或者下班回家地铁上信号不好,或者自己完全没有准备,建议直接回复面试官目前不   合适,改约其他时间,这么做好处一是没有环境影响,二是自己有心理准备。

  2.抓住机会问问题,如果对技术有追求一定要向技术官问清楚项目所使用技术,问开发人员上下班时间。向HR问清楚公司的薪酬福利体系,决定自己开价。向管理层问清楚项目目前所处的阶段,以及规划方向。 面试题概览,基本上汇总了这次面试中遇到的所有问题,中间也有一些是自己当时没有答上来的,这里只做罗列:

1.get,post 的区别

1、GET在浏览器回退时是无害的,而POST会再次提交请求。
2、GET产生的URL地址可以被Bookmark,而POST不可以。
3、GET请求会被浏览器主动cache,而POST不会,除非手动设置。
4、GET请求只能进行url编码,而POST支持多种编码方式。
5、GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
6、GET请求在URL中传送的参数是有长度限制的,而POST没有。
7、对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
8、GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
9、GET参数通过URL传递,POST放在Request body中。
10、GET产生一个TCP数据包,POST产生两个TCP数据包

2.require,include 区别

require是无条件包含也就是如果一个流程里加入require,无论条件成立与否都会先执行require include有返回值,而require没有(可能因为如此require的速度比include快) 包含文件不存在或者语法错误的时候require是致命的错误终止执行,include不是

3.PHP 的垃圾回收机制

PHP 可以自动进行内存管理,清除不需要的对象。

PHP 使用了引用计数 (reference counting) GC 机制。

每个对象都内含一个引用计数器 refcount,每个 reference 连接到对象,计数器加 1。当 reference 离开生存空间或被设为 NULL,计数器减 1。当某个对象的引用计数器为零时,PHP 知道你将不再需要使用这个对象,释放其所占的内存空间。

4.常见的排序算法

1. 冒泡排序

思路分析:在要排序的一组数中,对当前还未排好的序列,从前往后对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即,每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。

代码实现:

$arr=array(1,43,54,62,21,66,32,78,36,76,39);  
function bubbleSort($arr)
{  
  $len=count($arr);
  //该层循环控制 需要冒泡的轮数
  for($i=0;$i<$len-1;$i++)
  { //该层循环用来控制每轮 冒出一个数 需要比较的次数
    for($k=0;$k<$len-$i-1;$k++)
    {
       if($arr[$k]>$arr[$k+1])
        {
            $tmp=$arr[$k+1];
            $arr[$k+1]=$arr[$k];
            $arr[$k]=$tmp;
        }
    }
  }
  return $arr;
}

2. 选择排序
思路分析:在要排序的一组数中,选出最小的一个数与第一个位置的数交换。然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。

代码实现:

function selectSort($arr) {
//双重循环完成,外层控制轮数,内层控制比较次数
 $len=count($arr);
    for($i=0; $i<$len-1; $i++) {
        //先假设最小的值的位置
        $p = $i;

        for($j=$i+1; $j<$len; $j++) {
            //$arr[$p] 是当前已知的最小值
            if($arr[$p] > $arr[$j]) {
            //比较,发现更小的,记录下最小值的位置;并且在下次比较时采用已知的最小值进行比较。
                $p = $j;
            }
        }
        //已经确定了当前的最小值的位置,保存到$p中。如果发现最小值的位置与当前假设的位置$i不同,则位置互换即可。
        if($p != $i) {
            $tmp = $arr[$p];
            $arr[$p] = $arr[$i];
            $arr[$i] = $tmp;
        }
    }
    //返回最终结果
    return $arr;
}

3.插入排序
思路分析:在要排序的一组数中,假设前面的数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。

代码实现:

function insertSort($arr) {
    $len=count($arr); 
    for($i=1, $i<$len; $i++) {
        $tmp = $arr[$i];
        //内层循环控制,比较并插入
        for($j=$i-1;$j>=0;$j--) {
            if($tmp < $arr[$j]) {
                //发现插入的元素要小,交换位置,将后边的元素与前面的元
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值