北大学罢的校招面试之路
本文作者是我认识的非常聪明有趣的朋友,曾经的学霸(学罢),之前曾经参与过大大小小的校园招聘战役,虽偶有败绩,不过算是常胜将军了。拿到的Offer估计连他自己都数不过来(至少我没有那么多手指头)。本期邀请他给我们总结下他宝贵的面试经验,希望对即将参加校招的应届生朋友,有借鉴作用。
认识平哥那天,下着点小雨。不过当时并不知道他叫平哥,也不了解平哥是一个怪人,不论是在技术圈还是在艺术圈。只记得一个留着些许胡渣却衬衫笔挺,英俊又睿智的男子,推开了名为“Mountain View”的面试间玻璃门,锐利的目光简捷地扫描了我几秒,开口是标准的福建普通话“说说你对搜索引擎的理解吧”。之后是我绞尽脑汁地一番表演,试图回忆在完成某个课程项目时写过什么部分,试图掩饰自己在细节方面的缺失却被各种无情戳穿。心情忐忑之际,一道编程题目劈头盖脸而来。于是在各种理解不全、考虑不周、BUG不断的问题中败下阵来……
这就是我在校招求职季经历的各种互联网公司技术面试的典型缩影。不过好在这次面试似乎蒙混过关,才能有机会近距离接触平哥。
平哥曾经说过,互联网的圈子是一个江湖。在这个江湖中,各门各派有如少林武当峨眉昆仑眼花缭乱,各路高手大师也似东邪西毒南帝北丐各显神通。拜入何门何派,坐上哪个老司机开的车,带着飞,跟随哪家宗师修炼何种武功,是初出茅庐的程序员必须面对、思考和选择的。我作为一个新人小白,涉世不多,见识不深。曾在迷茫之际得遇平哥学习搜索技术。今受其邀请,很高兴能够将自己在校招求职面试之路的经历在此记录分享。
江湖万事难料,三十年河东,三十年河西。互联网更是三年堪比三十年。
我2016年夏天从学校毕业,因而我的校招求职面试从2015年夏天就陆陆续续开始了。从大环境看来,这一年各个互联网公司的招聘是在紧缩的。除了阿里巴巴“拥抱变化”和Facebook直接放鸽子这样完全明确表示减少校招之外,各种其他大小互联网也暗暗地削减着校招名额。
但我们总不能坐以待毙,人家招的少,就要用投的多来平衡一部分的风险。于是各种各样的公司去了二十多个,大大小小的面试也经历了几十场,最忙的时候一周每天都有至少一个公司要去拜访。这其中,有以各种神奇姿势搞事作死上来就挂了的,也有侥幸蒙混过关几轮而在终面倒地的,还有灵光一闪又状态奇佳拿到offer的。面了一些之后,一些套路渐渐摸清,有时候甚至在面试中会有如鱼得水的错觉。在这里主要分享一些互联网公司校园招聘技术面试的一些体会,HR面试或者leader面试的内容暂且不谈。
一、国内大厂
先从中国互联网的国内大厂开始说起。这里定义的国内大厂指的是以BAT为代表的,规模大、涉及领域多、业务线广泛的公司。
国内大厂的校招,一般流程比较严谨完善,包括网申、笔试、面试等阶段,每个阶段都预定了清晰明确的起止时间。但是现在,在这样普通的校招流程之外,大厂往往还设置了称之为“提前批”或者“内推批次”的面试流程。“提前批”的面试一般早于普通校招开始,大多数是由大公司的特定部门自行组织的,面试资格一般通过参加特定的宣讲会或者找到认识的在职员工通过“内推”获得。“提前批”面试的结果一般不会对普通校招流程产生影响,也就是说在“提前批”中面挂了依然可以继续参加普通网申校招。但是,这并不意味着我们可以随意把“提前批”作为一种“练手”,在面试过程中闷声作大死。因为,大厂在提前批次招人的往往是比较“好”的部门,当这些部门招满了之后,在普通校招中便不再继续招人。所以还是要精心准备好每一场面试。
从个人的感受看来,大厂的普通校招和“提前批”面试的内容是有一定区别的。在普通校招中,涉及的知识点包括计算机理论基础知识、编程语言基础知识、算法、编程实现、系统设计等等;而在“提前批”面试中,面试官会对简历中涉及的项目经历进行较多的提问,一方面考察开发经验与本部门工作内容潜在的联系程度,另一方面关注面试者的学习能力和对于项目细节的理解程度。不同面试流程套路的差异,决定了进行针对性准备的必要性。
在国内大厂中,百度是我面试的第一家公司,因为在“提前批”过于作死直接挂掉而参加了普通校招;
阿里是一家“拥抱变化”的公司,直接打电话告诉我不招人了,连传说中的8k offer都没见到;
腾讯是我面试次数最多的公司,在普通校招挂掉之后心有不甘,又找了4次部门“内推”面试并先后挂掉,通过屡次打脸证明自己确实搭不上腾讯的车。
我经历的大厂的面试,涉及的算法和系统设计都比较经典,一些代表性的面试题分享如下。
1.实现链表的快速排序。
2.一个链表,可以通过多线程访问,一个写线程,多个读线程,要求实现写线程,对链表的增删改(假定改指针操作为原子操作);如果将这个链表强化为一个跳表结构,如何实现写线程的增删改操作。
3.有n台机器,每台机器都存有一些资源;每台机器可以给别的机器发信息,告诉目标机器自己有哪些资源或者自己已知某些其他机器有哪些资源。问设计一种通信方法,
1)让通信的总数据量最少,
2)或者让通信的总次数最少,
3)或者让系统最可靠。
二、知名外企
外企的校招可以细分为境外职位招聘和国内职位招聘。近年的校招中,Facebook、Google和Microsoft等是直接提供北美职位的公司,另外还有Indeed等提供日本职位。除此之外,更多外企招聘目标是国内的职位,比如Amazon、Hulu、Freewheel、Microsoft等等。
外企的校招流程同样严谨完善,但是针对境外职位和国内职位有时会划分不同的流程,并且关注侧重点存在差异。境外职位的面试很少涉及简历上的项目经验,而是几乎以全程算法题或者系统设计为主,同时非常关注是否可以快速进行正确的代码实现。由于现在大家对境外职位普遍很感兴趣,因而如Google等热门公司投递者中大神云集,面试时对求职者的要求也是水涨船高。相对于境外职位而言,一些外企国内职位招聘的要求就显得稍低一些,当然刚才提到的那家热门公司除外。国内职位招聘面试会提及一些简历的项目,其余部分依然是算法设计实现和系统设计。
此外,无论是外企境外职位还是国内职位的招聘,需要在面试使用英语都是可能遇到的,因为许多外企会设置最后一面为“Leader面”,在这一面中很有可能遇到歪果仁。因而,一些自我介绍、专业词汇或者算法描述方式的英语版本,可能需要稍加准备一下。
那家热门公司当然是一个好地方,没有什么其他可说的了。
Facebook在我之前一年因为H1b工作签证问题,放了一些拿到offer的人的鸽子,这个行为非常的不做好;而在我这一年,直接群发邮件告诉大家不招人了,也算是为大家去掉一个错误答案。
Microsoft同时进行境外职位招聘和国内职位招聘,并且这二者冲突只能选择其一,不过如果没有抽中H1b签证去不了美国,目前我所知并没有不良的直接放鸽子记录,而是都被relocation到了Vancouver,等待来年再次抽签或者改用L1b签证。
Hulu提供北京研发中心的职位,并且面试水平很高,题目非常有特点有挑战。
Freewheel北京的办公室非常的高大上,位于北京各国使馆集中区域。
Indeed提供东京职位招聘,给的薪酬也是比较诱人,我那年需要参加一个叫做“启程日本”的宣讲会投递简历参加电面,通过电面之后,会各种全程报销去日本东京面试,非常适合想旅游和代购的同学。
此外,还有一家叫做WorksApplications的日企提供上海职位,日本HR非常的亲切友好,并且不论最后是否接offer,每次来宣讲都会招呼通过面试的同学一起吃饭,值得花一天去试一试。
另外听说今年AirBnb也开始了在华招聘,感觉也是一个不错的选择。
一些外企的代表性面试题分享如下。
1.有一个BST,给定其中一个节点,让找到这个BST中存储值比这个节点大的最小的那个节点。
2.如何把一个不平衡的BST变成平衡的。
3.如何实现一棵树的序列化和反序列化。
4.非递归遍历二叉树。
5.设计一个系统,能够比较两个不同版本的文件的diff。
6.判断一棵二叉树是否是完全二叉树
三、后起之秀
还有一些非常好的公司,虽然不像互联网大厂那样涉及领域广泛,但是它们在自己所专注的行业领域中数一数二,比如今日头条、宜信、京东、网易游戏、网易有道、爱奇艺、美团、360、搜狗、小米等等。此外,还有一些朝气蓬勃的创业公司比如出门问问、猿题库等等,一方面前景好潜力大,另一方面发展快上升快,是非常不错的选择。
在这一系列中,有些公司校园招聘的流程比较灵活,比如虽然它们也学习大厂那样设置招聘的时间线,但是简历默拒不通知、笔试默挂不通知、面试要求带着三方通过了直接签等等“骚操作”比比皆是,不过这些不失为一种高效而务实的做法。面试水平并不会因为公司规模小而降低,反而在有些时候高过众多的互联网大厂。面试套路往往会更接近大厂的“提前批”,面试官会对简历中涉及的项目经历进行较多的了解和提问,而算法题更像是用来作为面试收尾的形式。
网易游戏的面试很高大上,薪酬水平非常有竞争力。今日头条、宜信、京东等因为工程师团队大量来自于知名大厂,除了工作经验非常丰富之外在特定领域建树深刻,面试水准非常高。出门问问的面试过程如本文开头第一段所述。
虽然简历项目经历被关注的更多,但是依然可以有一些代表性面试题分享如下:
1.在一个数组中找出所有这样的数。它大于等于它左边所有的数,小于等于它右边所有的数。
2.修改经典map的实现,要求插入、删除、获取value、等概率获得一个随机key的时间复杂度均为o(1)。
3.给定一个由0或1组成的序列,找最长的连续子串,使其中0和1的数量相等。
4.把自然数0,1,2…10,11…20…99,100,101…111…所有含0的都去掉得到1,2,…9,11…,19,21,…99,111…,给定一个属于这串数的a,求a是第几个。
5.给定一个地图,上面有一些障碍物,设计一个自动寻路系统,当给定起始终止点时,这个系统能够找到一条两点间的通路,并尽可能优化(算法复杂度低/尽可能找到更短的路径)。
6.设计一个分布式的日志存储系统。
7.“说说你对搜索引擎的理解吧”。
招聘面试是进入互联网大江湖的必经之路。在各门各派筛选了解我们天资能力和实战经验的同时,我们也是在筛选了解各门各派的修炼环境和武功套路。遇到有缘的,一拍即合;遇到不投机的,也只能怪八字不合,可择来日再战。
最后祝愿在这一年初入江湖的新人们,都能找到自己心仪的、合适的门派,走出成为武学宗师的第一步。