第三节
Facebook工程师面试聊什么
Facebook招聘工程师很少针对特定职位进行,大部分都是招进来之后放进新兵训练营集训,六周之后再确定具体的工作职责。
Facebook面试工程师时都安排四位面试官,主要考察编程的能力,也就是技术性问题,还需要考察文化适应性问题和系统设计。
我在Facebook接受的第一次电话面试,是由我后来的老板(黄易山,一位很聪明的ABC ,现在是美国著名社交新闻网站Reddit 的CEO)进行的。时间在30~40分钟,会花10分钟左右谈之前都做过什么,对什么东西感兴趣,来Facebook有什么想法、有什么顾虑等。其余的时间都聚焦在技术性问题上,一般会有一个比较大的问题,需要你给他讲算法,甚至在电话里告诉他一行行代码怎么写(后来Facebook开发了这类工具,应聘者在这边的电脑上做,面试官那边就看得到你写的程序,像collabedit.com或sync.in)。还会有一些知识性的基础问题,看看你在技术积累方面怎么样。通过电话面试后,我就接到了去公司面试(一般电话面试要进行两轮,我是只做了一轮,不知道为什么)的通知,那次见了五个人(后来的标准程序改成只要四个人)。下面我要讲到的内容,基本都是后来的通行做法。
这几个人都是工程师(当时Facebook还没有专门的产品经理,都是工程师兼任。现在Facebook已经有了专门的产品经理,所以在招聘产品类型的工程师时,产品经理也有可能参与面试,后台型的工程师则无此必要),包括我的老板,同组里的三位工程师,还有其他组的一位工程师。当时Facebook的员工在150人左右,工程师有六七十人,客服人员也有六七十人,其余的是人力资源、行政等职能部门的。
在很多公司,招人是一个组的事,针对特定职位招过来的人员直接进某个业务部门开始边做事边熟悉情况。Facebook招聘工程师时,很少是针对特定职位进行具体招聘的(这个招聘概率应该小于10%),大部分都是招进来之后放进新兵训练营(编者注:后面会讲到相关内容),然后再确定具体的工作职责。所以,进行正式面试时,一般都是根据应聘者的大致背景和特点(比如侧重后台开发还是前台开发、熟悉哪些编程语言等),挑出与其情况比较吻合的几位工程师来参与,双方有共同语言,这样就会有比较良好的沟通,避免“驴唇不对马嘴”的现象。当然同样会避免这几位面试官的背景完全一致,因为这样也会有局限性,容易发生偏见。Facebook在招聘中最关心的是如何考察应聘者对一些通用问题的解决能力和交流能力。比如广告后台必然需要数据系统的支撑,所以在面试官中会找对数据存储和读取熟悉的人来提问。他们不大关心广告后台本身的细节,但关心要解决问题所需要的系统知识和应对方案,说不定双方对一个Facebook内部的老问题可以聊出新的火花。Facebook在挑选面试官方面已经形成了一定的机制,原则和目标比较明确,就是找出有甄选能力的人,能与应聘者进行顺畅、有效的沟通,可以验证他的长处和优势。
目前Facebook招聘工程师时都安排四位面试官,每人45分钟时间,其中有2.5人会集中考察编程的情况,也就是技术性问题,0.5人考察文化适应性问题,1个人专注于系统设计方面。