本文作者是我认识的非常聪明有趣的朋友,曾经的学霸(学罢),之前曾经参与过大大小小的校园招聘战役,虽偶有败绩,不过算是常胜将军了。拿到的Offer估计连他自己都数不过来(至少我没有那么多手指头)。本期邀请他给我们总结下他宝贵的面试经验,希望对即将参加校招的应届生朋友,有借鉴作用。
认识平哥那天下着点小雨。不过当时并不知道他叫平哥也不了解平哥是一个怪人不论是在技术圈还是在艺术圈。只记得一个留着些许胡渣却衬衫笔挺,英俊又睿智的男子推开了名为“Mountain View”的面试间玻璃门锐利的目光简捷地扫描了我几秒开口是标准的福建普通话说说你对搜索引擎的理解吧。之后是我绞尽脑汁地一番表演试图回忆在完成某个课程项目时写过什么部分试图掩饰自己在细节方面的缺失却被各种无情戳穿。心情忐忑之际一道编程题目劈头盖脸而来。于是在各种理解不全、考虑不周、BUG不断的问题中败下阵来……
这就是我在校招求职季经历的各种互联网公司技术面试的典型缩影。不过好在这次面试似乎蒙混过关才能有机会近距离接触平哥。
平哥曾经说过互联网的圈子是一个江湖。在这个江湖中各门各派有如少林武当峨眉昆仑眼花缭乱各路高手大师也似东邪西毒南帝北丐各显神通。拜入何门何派坐上哪个老司机开的车,带着飞跟随哪家宗师修炼何种武功是初出茅庐的程序员必须面对、思考和选择的。我作为一个新人小白涉世不多见识不深。曾在迷茫之际得遇平哥学习搜索技术。今受其邀请,很高兴能够将自己在校招求职面试之路的经历在此记录分享。
江湖万事难料,三十年河东,三十年河西。互联网更是三年堪比三十年
2016年夏天从学校毕业因而我的校招求职面试从2015年夏天就陆陆续续开始了。从大环境看来这一年各个互联网公司的招聘是在紧缩的。除了阿里巴巴拥抱变化Facebook直接放鸽子这样完全明确表示减少校招之外各种其他大小互联网也暗暗地削减着校招名额。
但我们总不能坐以待毙人家招的少就要用投的多来平衡一部分的风险。于是各种各样的公司去了二十多个大大小小的面试也经历了几十场最忙的时候一周每天都有至少一个公司要去拜访。这其中有以各种神奇姿势搞事作死上来就挂了的也有侥幸蒙混过关几轮而在终面倒地的还有灵光一闪又状态奇佳拿到offer的。面了一些之后一些套路渐渐摸清有时候甚至在面试中会有如鱼得水的错觉。在这里主要分享一些互联网公司校园招聘技术面试的一些体会,HR面试或者leader面试的内容暂且不谈。
一、国内大厂
先从中国互联网的国内大厂开始说起。这里定义的国内大厂指的是以BAT为代表的,规模大、涉及领域多、业务线广泛的公司。
国内大厂的校招一般流程比较严谨完善包括网申、笔试、面试等阶段每个阶段都预定了清晰明确的起止时间。但是现在在这样普通的校招流程之外大厂往往还设置了称之为提前批或者内推批次的面试流程。提前批的面试一般早于普通校招开始大多数是由大公司的特定部门自行组织的面试资格一般通过参加特定的宣讲会或者找到认识的在职员工通过内推获得。提前批面试的结果一般不会对普通校招流程产生影响也就是说在提前批中面挂了依然可以继续参加普通网申校招。但是这并不意味着我们可以随意把提前批作为一种练手”,在面试过程中闷声作大死。因为大厂在提前批次招人的往往是比较的部门当这些部门招满了之后在普通校招中便不再继续招人。所以还是要精心准备好每一场面试。
从个人的感受看来大厂的普通校招和提前批面试的内容是有一定区别的。在普通校招中涉及的知识点包括计算机理论基础知识、编程语言基础知识、算法、编程实现、系统设计等等而在提前批面试中面试官会对简历中涉及的项目经历进行较多的提问一方面考察开发经验与本部门工作内容潜在的联系程度另一方面关注面试者的学习能力和对于项目细节的理解程度。不同面试流程套路的差异决定了进行针对性准备的必要性。
在国内大厂中百度是我面试的第一家公司因为在提前批过于作死直接挂掉而参加了普通校招
阿里是一家拥抱变化的公司直接打电话告诉我不招人了连传说中的8k offer都没见到
腾讯是我面试次数最多的公司在普通校招挂掉之后心有不甘又找了4次部门内推面试并先后挂掉通过屡次打脸证明自己确实搭不上腾讯的车。
我经历的大厂的面试涉及的算法和系统设计都比较经典一些代表性的面试题分享如下。
1.实现链表的快速排序。
2.一个链表可以通过多线程访问一个写线程多个读线程要求实现写线程对链表的增删改假定改指针操作为原子操作);如果将这个链表强化为一个跳表结构如何实现写线程的增删改操作。
3.n台机器每台机器都存有一些资源每台机器可以给别的机器发信息告诉目标机器自己有哪些资源或者自己已知某些其他机器有哪些资源。问设计一种通信方法
1)让通信的总数据量最少
2)或者让通信的总次数最少
3)或者让系统最可靠。
二、知名外企
外企的校招可以细分为境外职位招聘和国内职位招聘。近年的校招中,FacebookGoogleMicrosoft等是直接提供北美职位的公司另外还有Indeed等提供日本职位。除此之外更多外企招聘目标是国内的职位比如AmazonHuluFreewheelMicrosoft等等。
外企的校招流程同样严谨完善但是针对境外职位和国内职位有时会划分不同的流程并且关注侧重点存在差异。境外职位的面试很少涉及简历上的项目经验而是几乎以全程算法题或者系统设计为主同时非常关注是否可以快速进行正确的代码实现。由于现在大家对境外职位普遍很感兴趣因而如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.给定一个由01组成的序列找最长的连续子串使其中01的数量相等。
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.“说说你对搜索引擎的理解吧
招聘面试是进入互联网大江湖的必经之路。在各门各派筛选了解我们天资能力和实战经验的同时我们也是在筛选了解各门各派的修炼环境和武功套路。遇到有缘的一拍即合遇到不投机的也只能怪八字不合可择来日再战。
最后祝愿在这一年初入江湖的新人们都能找到自己心仪的、合适的门派走出成为武学宗师的第一步。

继续阅读
阅读原文