作为大厂面试官,原来这种学生最吃香!

大家好,我是楼仔!

想必大家看过很多文章,都是教大家如何面试,比如之前很火的《吊打面试官 xxx》系列,你以为掌握了某个知识点,就真的能吊打面试官么?你来吊打我一个试试?

我之前也面过很多大厂,不限于阿里、腾讯、滴滴、百度、字节、新浪,遇到过形形色色的面试官,然后近几年也一直在大厂当面试官。

这篇文章就以面试官的角度,给大家讲述我这些年的面试心得和感悟,希望能对大家有所帮助。

给我的第一感受就是,今年的就业形势更严峻了,主要体现在各大公司的招聘名额缩减,然后也感觉今年的学生更卷了!

下面的面试经验仅限于大厂,如果是小厂的话,就不需要这么高要求,但是如果你都能过,那小厂真的随便进。

1. 代码考察

如果你想进大厂,这个是一道无法跨越的坎。

对于一面,算法必须是我们重点考察的内容,面试官一般会出 1-2 道中等难点系数的算法题,时间不超过 35 分钟,比如重排链表。

一般要求直接写进阶版的代码,即空间复杂度 O(1)。

先是考察算法思路。

在写代码前,面试官会让你先思考 5 分钟,然后再讲一下思路,如果牛头不对马嘴,大概率就要 Pass,如果给的方案不太好,面试官会稍微进行引导,也有很多能直接给出最佳方案的。

下面就开始撸代码,时间控制在 15-25 分钟。

线上编程一般用牛客网,代码是需要能正常运行的,如果代码写完了,运行不出来,印象会大打折扣。

不过线上编程,有个问题就是不能 debug,遇到问题就只能凭眼力排查了。

如果是纸上手写代码,个人感觉难点稍微小一些,因为只需要撸出来,不用考虑能否运行。

好的代码质量也可以加分,下面是我之前面试的一位武大的学生写的,方法封装得好,运行直接一遍过。

public class Solution {
    public void reorderList(ListNode head) {
        if(head==null){
            return ;
        }
        ListNode mid = middleNode(head);
        ListNode l1 = head;
        ListNode l2 = mid.next;
        mid.next = null;
        l2 = reverseList(l2);
        mergeList(l1,l2);
    }
    public ListNode middleNode(ListNode head){
        ListNode slow = head;
        ListNode fast = head;
        while(fast.next!=null&&fast.next.next!=null){
            slow = slow.next;
            fast= fast.next.next;
        }
        return slow;
    }
    public ListNode reverseList(ListNode head){
        ListNode pre = null;
        ListNode cur = head;
        while(cur!=null){
            ListNode temp = cur.next;
            cur.next=pre;
            pre = cur;
            cur = temp;
        }
        return pre;
    }
    public void mergeList(ListNode l1,ListNode l2){
        ListNode temp1;
        ListNode temp2;
        while(l1!=null&&l2!=null){
            temp1 = l1.next;
            temp2 = l2.next;
            l1.next = l2;
            l1 = temp1;
            l2.next = l1;
            l2 = temp2;
        }      
    }
}
复制代码

可能有粉丝会说,这道题有点难,其实我前 2 年面试,基本只考察链表的反转,但是今年僧多粥少,我们不加点难度,那咋区分呢?

2. 面试环节

如果两道算法题都过了,或者过了一道,另外一道因为时间原因没有写出来,但是思路没问题,就会进入面试环节。

可能又有粉丝会跳出来问,“那如果第一道算法题都没有过,那是不是就结束了呢?” 其实为了不让面试者难堪,面试官一般都会凑够 30 分钟,后面也会象征性地问一下基础知识,不过也有的面试官会直接 Pass。

由于大部分时间都用来写代码,只有不到 30 分钟的时间来考察知识点,所以面试的问题不会太多,但考察可能会更有重点。

比如 MySQL,我们会问 4 种事务的隔离级别?然后问什么是幻读?幻读产生的原因?如何避免幻读?避免幻读需要用到什么锁?如何手动去加这个锁?

这些问题基本都是由浅入深,能回答到最后一个问题的同学,遇到的不多。

如果你连 MySQL 几种事务隔离级别都不知道,基本就不会问你 MySQL,直接下一个知识领域。

再比如 Spring,我们会问是否知道循环依赖?Spring 如何解决循环依赖?为什么要用三级缓存,不是两级?能否直接去掉第二级缓存?如果不能去掉,为什么?第三级缓存存的是什么?如果你回答对象工厂,这个工厂里面存的又是什么?

大部分同学只能回答前几问,能全部回答出来的,也是凤毛麟角。

对于 Java 并发编程,我们会问线程池的工作原理,然后详细考察拒绝策略、任务队列,如果这块考察通过,会再问几个关键字的内存屏障、重排序、内存模型等相关知识。

有的面试官会比较好,会先问一下面试者,哪块知识掌握得比较好,有的面试官就直接问你对某个知识掌握如何,然后再依次深入,不经过基本都是围绕设计模式、MySQL、Redis、操作系统、计算机网络、Java、JVM、Spring、消息队列等知识展开。

3. 个人意愿

个人意愿也是面试官非常看重的内容。

下面以杭州阿里举例,如果你直接问他,你想来阿里么?这不废话嘛,我来面试,肯定是想通过,即使不想来,我嘴上也会说想,拿着 Offer 找 Offer,不香么?

面试官会看面试者的籍贯,如果简历上没有写,我们就会问一下,如果你籍贯是浙江,或者老家就在杭州,是非常加分的,因为这种同学留杭州的概率很大。

不过我也遇到籍贯不是浙江,但非常想来杭州阿里的同学,他给我两点理由,第一是他本硕都是杭州读的,在这里呆了 7 年,最关键是她女朋友是杭州本地人,你说这种情况,留杭州意愿能不大么?

写到这里,大家是不是又学到一招,如果你籍贯不是本地,你谈了 N 年的女朋友在本地,是不是很加分? 那没有女朋友呢?你就 New 一个呗,都说到这个份了,要是还不懂,那我。。。喷你一口老血。。。

4. 注意事项

大家面试时,不要紧张,其实我之前遇到的面试官,性格都非常不错,不仅不会刁难你,还会对你慢慢引导,不过不排除那种极少个别恶心的,面个试都吊炸天的那种,这种我遇到过,当时直接去 TMD!

面试过程中,要实事求是,如果不会的,可以直接说不会,这样面试官就会换个问题去考察你,如果你说比较了解,结果连稍微深入的问题都答不上来,面试官可能会觉得你掌握好的知识也就这个程度,其它的估计更不行。

学会引导,并不是所有的面试官都会先问你哪块知识掌握得比较好,然后再去深挖,因为这要求面试官的水平比较高。很多面试官上来会问你对某块是否了解,比如 MySQL,然后再去问,如果刚好触发到你的知识盲区,可以适当引导一下面试官,让他能问你熟悉的领域。

注意个人形象,比如之前面了一个学生,他一直在那清嗓子,然后倒吸嗓子吐痰,声音还特别大,然后思考时,一直在那一个劲嘀咕,也会减些印象分。

985/211 的学校,确实会优先考虑,专业和计算机相关的双 985、211 会非常吃香,如果你是非计算机专业,但是学校确实很好,有自己的技术广度和深度,也会考虑。

5. 写到最后

面试其实是一个双方博弈的过程,前提是自己肚子足够有货,我记得我当年校招,虽然谈不上 Offer 收割机,但也是非常不错的。

然后今年的就业形势更严峻,大家一定要提前做好充分的准备,如果有任何问题,也可以加我微信进行沟通。

最后祝愿大家都能拿到心仪的 Offer,加油!


硬核推荐:

猜你喜欢

转载自juejin.im/post/7143018441299984420