Facebook工程师Carlos Bueno在Facebook官方工程页面发了一篇文章, 详细阐述了如何准备Facebook的面试。文章指出,无论对于面试官还是应聘者,技术岗位面试都不是一件容易的事情。面试官会对应聘者简历上的内容一一 核查。如果你简历上有“精通某某方面”,那么Facebook就会安排一位该领域的专家与你会谈,所以一定要有所准备。如果你并不精通某一领域,就最好不 要往简历上写。相比好几页的应聘者的经历,Facebook面试官更倾向于应聘者能提供一份清单列出自己擅长或精通的领域。以下是Facebook技术岗 位内幕详情。
电话面试或线上面试
第一步通常是与应聘者进行45分钟的谈话。这个谈话的目的就是了解应聘者各自的专业领域。面试官会就应聘者的简历、技能、动机、兴趣等方面进行询问。但是这第一步的主要时间还是花在了编程测试。面试官会给应聘者一个链接,应聘者可以进入测试自己解决编程问题的能力。
提示:对于电话面试,请确保通话时你周围环境安静,并且网络通信良好。电话面试时耳机就显得很有帮助。在我第一次面试Facebook工作时就忘记了这一点,于是我就不得不一边敲写代码,一边将手机夹在肩膀和耳朵之间进行电话面试。
“循环”测试
Facebook的“循环”测试指的是在同一天对应聘者进行多次面试,通常中间有个午餐休息时间。除了在文本编辑器里写代码外,面试官还有可能要求应聘者在白板上写代码。在此期间,应聘者有时间可以向面试官询问任何感兴趣的事情。
下面这些就是Facebook对理想应聘者的期望…
在道出面试官期望或亲睐的一系列优点之前,Bueno就先指出了这样一条提醒:“这些优点并不是我们所寻求的全部,也不是我们关心的全部内容。但是它们确实会影响面试官们最终做出的决定。”
文化融合是关键
Facebook希望应聘者有理解和解释一些复杂观点的能力。同大多数公司一样,Facebook希望应聘者对工作充满热情、好奇心和动力。 Bueno指出,“Facebook有着一个很极端的用户工程师之间的比例,并且一周5天都要反馈代码。”Facebook希望接收那些能够带来巨大影 响,行动迅速、果断,并且清楚理解他们所做工作的人。
Facebook需要能够迅速适应多角色工作环境的人
Facebook需要各种各样的专家,但是同时它也需要在关键必要时能够承担其他角色任务的员工。Bueno说到:“这意味着应聘者应能够理解其专 业范围外其它一些知识。”Facebook更亲睐精通多个专业领域的应聘者。在Facebook,你会经常看到员工先在机器学习领域工作,然后就转到了网 页性能,搭建、维护一个新的后端工具,之后又在类似照片应用的产品特性方面工作一年。
高端软件设计中,“架构”至关重要
Bueno 这样问到,“面对不寻常的约束,你能否找到解决方案?”Facebook想考察应聘者想像整个问题以及解决方案余地的能力。同时Facebook也希望看 到你尤其对这家公司以及其面临的独特问题有多少思考。你会怎样构建一个全球视频分享系统?或者一个Facebook聊天网络?
提示:磨刀不误砍柴功。对于那些你并不是每天都用到的技术知识也要重温,因为当你需要的时候它们就显得十分有用了,比如递归、图论、树遍历、组合问题等等。
代码才是王道
Facebook并不喜欢提问一些难题,但是就这一点你要知道一些小技巧。你被问到的问题也许听起来很做作,而且这些问题实际上就是为了特定目的而 人为设计的。这些问题通常很简单,能够在几分钟内解释清楚,并在10到30分钟内能够得到解决。但是这些问题的解决也都需要一定的知识、技能和集中精神。
优秀的编程问题本质上是分形的。这些问题能够被任意地扩展以用来测试你的知识水平。比如,他们可能要求你用任何你喜欢的方式来解决一个问题。然后就 会要求你固定空间或者次线性时间内再次解决同一个问题。顺便说一下,无论一个问题起初听起来是多么的基础,全神贯注地关注这个问题才是Facebook密 切关注的。你对于一个问题如何下手至少与这个问题的答案一样重要。
在面试过程中,Facebook面试官会让应聘者写很多代码,因为这种编程能力往往与作为一个Facebook员工的表现如何直接相关。 Facebook甚至还有专门设计的一套问题供应聘者在家里研读。Facebook认为应聘者最好能够看一下这些问题,而且鼓励能够在提交简历前解决一 些。