在硅谷, 最容易获得招人的机会是熟人推荐。就是目标公司的某某人是你的朋友, 你让她给你做一个内部推荐。Facebook大概60-70%的员工是通过这种方式雇佣的。Facebook最早期的一大拨中国籍工程师都是我做内部推荐面试进来的。熟人推荐对于求职的朋友还是公司相对成本都要低。对于求职的人, 可以通过熟人了解公司内部的真实情况; 对于公司, 熟人的推荐让求职人的质量得到一个背书。也是介于此, 我收到过不下200多个推荐的请求, 但我决定做的推荐不到100, 其中有12个朋友成功了, 每个成功的推荐公司给5000刀的奖金。做内部推荐的员工应该对自己的推荐有所筛选, 不能一味为了推荐奖金来一个推一个; 否则, 很快你的名声要烂掉。
这里讲一个我自己的故事。我找到的第一份工作是通过2005年在Chicago的KDD大会上和Yahoo 数据挖掘部门的一个技术总监陶瓷获得的面试机会。开会的闲暇时间, 我在展厅里面瞎晃荡, 和各个booth的人聊天, 聊几句后提提我正在找工作, 问他们有没有合适的机会; 到了Yahoo的展厅之后, 和该技术总监聊了一会之后我们就去到酒店的大厅中找了块干净的地板坐下来, 开始面试。对几个大的问题探讨了算法上的设计, 貌似他比较满意。之后他让他的一个工程师在第二天做了一个电话面试就把我飞过去了。这里想说的是你如果想找工作, 试试在你”未来同事未来老板”出没的活动, 场所之中, 认识他们, 让他们对你感兴趣, 然后通过他们做内部推荐。
另外的几种方式就比较常规, 如集中性的校园面试, 通过网站完成Puzzle提交简历 (成功率极低), 在各种编程大赛中出类拔萃被发现。
还有的就是公司主动出去挖的人, 这属于高端人才, 我挖过一些资深的工程师; 这些人往往不容易动, 如果你是这种人的话, 恭喜你, 你不需要读这篇文章。
流程:
绝大公司的流程都是因为上述的途径(内部推荐, 学校面试, 网站申请等等)开始对一个简历产生兴趣, 然后让Recruiter联系, 做一个摸底性质的电话面试, 然后是2-3个电话面试, 最后就是到场面试4-6个人,大多数公司是一轮。
Recruiter的电话面试
这个了解是双向的。聊聊应聘者的一些经验和背景, 他们感兴趣的方面, 为什么换工作, 对这份工作有什么特别的要求等等; 聊聊公司的一些基本情况, 尤其是公司文化等等, 现在空缺的职位, 还有对面试人希望有的基本要求。
电话面试
一般是30-45分钟。我通常是花40分钟让对方做两道题, 然后花5分钟让她问问题。一般做完第一道题, 我会问自己, 要不要做第二道; 不管如何, 我一定腾出这5分钟让对方问一些关于Facebook的问题。这是对对方一个起码的尊重。由于是40分钟两道题, 不能太复杂, 一般是编程集中但设计没有太多挑战性的问题, 比如翻转单向链表 (reverse a singly linked list), 可以换itereative或recursive的要求来写, 中间问很多问题。通过像sync.in 这样的网站, 我们双方打的字都可以里面看到。
第一个电话面试后我需要在一个内部工具写上我的反馈, 可以建议后面的一个电话面试可以更加关注哪些方面。
现场
一般见4个人 (2005年我在Oracle见了10个人…), 每人45分钟. 其中有2.5人会集中在coding上面进行考察, 0.5个人考察culturual fit, 1个人专注design。典型的coding问题应该网上都能查得到, 这里就不提了。但要注意的是不是所有人都能适应white board coding(在白板上写程序), 最好事先练习练习。Cultural fit是通过问问对方以前的经历, 解决过的问题, 来发觉她的做事风格。最后我们想得到的一个判断是她能不能get shit done。Design主要是某个大系统的设计, 比如如果让你来做Facebook News Feed, 你会怎么实现, 需要哪些构建, 数据如何传输; 你的设计会有什么样的优点和缺点, 等等。每个人都有不同的实践, 这是OK的, 但这中间的交流可以体现一些设计思想的厚度, 这才是面试的目的。Design能力考察的权重对于不同职位不同, 比如backend要多一些, frontend要少一些; 刚从学校出炉的要轻一些, 做过很多年的要重一些。
每个参与面试的人都要对应聘者打个评价: strong hire, hire, weak hire, weak no hire, no hire. strong no hire. 我一般无视所有带weak的选项, 我的理念的是不需要平庸的同事; weak选项我是在被错误的放到一个其实我不该来的interview loop中时才用, 所以很少很少用。
特别注意的方面:
英文
直接从大陆招的人当中, 最大的问题还在于英语。我面试过最早的几位。电话面试到一半, 我实在搞不懂他在讲什么, 最后只好让他开始讲中文, 哇塞, 顺溜了很多。建议对去美国工作感兴趣的朋友先多练练口语.
编程
对于工程师, 最多的工作是编程。所以, 练习好编程。由于面试题都有时间限制(20-25分钟), 特定工具(sync.in或者白板), 不关心细微的语法错误, 和实际的编程还是有些区别, 所以练习还是很有必要的。
事先了解好公司的情况
了解一些基本情况, 让你知道为什么你对该公司感兴趣。对公司已有的产品有什么建议, 等等。
准备好自己的故事
真实的故事, 能够让面试的人迅速认识你的故事。比如你做过的最让你骄傲的项目, 你在里面的具体的贡献, 你碰到的最大的阻力, 你是如何解决的, 等等。中高级营销人才这里的问题很多网上有列表, 但我提的是能够和你自己的故事溶在一起, 适当的时候讲出来, 有血有肉有说服力。