Written by cenalulu (卢钧轶)
申明:本文为本人亲身经历,原创作品。如需转载,请在转载文章的最开头部分包含原文地址:http://cenalulu.github.io/mysql/how-i-become-a-facebook-dba/
写在前面
2014 年 10 月,我有幸通过了 Facebook 的电面,参加了在 Palo Alto 的 on-site 面试,并最终成功拿到了 offer。期间有很多经历的东西想要记录下来,以做备忘。同时在当时准备的时候,发现国内对于 Facebook 面试经历的资料和分享时少之又少。因此,也想以记录的方式和大家分享经验,让更多的华人成为 Facebook 的一员!整个记录会分为三个大部分:面试流程,面试题集锦,入职流程和生活准备。前两部分为了避免误人子弟,我尽可能的客观描述,如非特别需要减少主观的理解在其中。
由于我申请的职位是 MySQL Database Administrator,相对比较冷门。为了使得读者受众面更广,我尽可能的挑选面试中对于程序员和其他 IT 岗位能普遍试用的经验来作重点描述。如果你受不了博主的流水账叙述形式,可以直接跳到最后一节,获取简要通关秘籍。:)
基础要求
我们来看看要成为一个 Facebook 的潜在员工候选人,需要有哪些硬条件。要求的远比你想到的要简单很多:
看了那么多,是不是觉得自己也是个合格的 FB 准候选人呢? :) 火速进入网申阶段。
第 0 阶段:网申
其实因为我 cenalulu 本来就安排在 2014 年 9 月底的时候去一次旧金山。所以一开始是报着试试看想法,并带着万一要 on-site 面试,我还可以省个机票钱
的心态,通过 Linkedin 找了几家正在招募 MySQL DBA 职位的硅谷公司。从中挑选了几个巨头投了简历,包括:Google
,EA
,Apple
,Linkedin
,Twitter
,Facebook
(后简称:FB)。悲剧的是,只有 FB 通过了简历筛选,并得到了邮件回复。之后从已经在这些公司工作过的朋友那边了解到,海投简历确实是一个效率比较低下的方式。很有可能因为简历关键字匹配不成功就直接失去了后续面试机会。所以,如此悲催的首轮通过率也不足为奇了。他们强烈建议如果想从硅谷公司的简历筛选中脱颖而出,还是尽可能找公司员工做内推。{: style=”color: red”}
不过,相较于国内公司,硅谷巨头做的比较好的一点就是无论你简历通过与否,都会在两天内给到邮件结果。所以,网投时留得邮箱建议是能够每天查收一次的。下面是我众多悲剧(被拒)信中的一封:
Thank you for your interest in a role at Twitter. We have reviewed your experience in regards to this open position, and unfortunately do not see a strong match for you at this time. We will also keep your resume on file should a future match become available. We realize it is a time commitment to engage any company in the application process and we sincerely appreciate your efforts.
关于职位的具体信息,各个巨头都有自己的招聘主页。也可以通过 Linkedin 搜索。FB 家的职位具体信息可以通过:https://www.facebook.com/careers?_rdr 查找。什么?博主!这个链接打不开啊!好吧,FQ对于大陆应聘者是一道“面试题”。
此外,走整个申请面试流程前,确保自己已经准备好了。因为,FB 的效率非常高,从网申到第一次电面最短会只有两三天的时间。一旦闯关失败,距离下一次申请需要有至少半年的冷却时间。
第 1 阶段:电面
在和 HR 互通几封邮件后我们商定了电话面试时间。由于时差问题,面试定在了北京时间凌晨 1 点。
Facebook 的工作时间是当地时间早上 9 点到晚上 6 点,对应的北京时间是凌晨 1 点到第二天早上 10 点,如果是美国夏令时的话,那么时差从 16 个小时减少到 15 个小时。所以对于大陆应聘者来说面试时间有两个选择:一个是熬夜到凌晨,一个是早起面试。博主由于当时还是在前公司任职,早上 10 点在公司面试并不是一个很稳妥的选择。因此几次电面时间都是定的凌晨在家面试。
如果进行顺利的话总共会有3-4 次电面(我进行了 3 次,具体数量按照岗位要求和面试质量决定)。电面采用直接淘汰制。电面结果直接决定了你能够进入下一轮(不是多次面试成绩取平均)。所以,对于每一轮电面都要格外的重视。每次电面时间都控制在 45 钟内,技术电面无论题目是否完成,都会用足 45 分钟。电面方式可选电话(由面试官座机打过来)或者 skype。博主建议使用手机,Skype 通话质量不太稳定。我的电面过程中,两种都用过。相比之下电话的体验更好些,因为可以把电话内容录下来之后做回顾。每次电面前,我都会提前半小时呆在一个安静的房间,做一些简单的面经操练进行热身。然后确保电话畅通,耳机音量 OK,Skype 在线。一般来说面试官的来电时间非常准时,我的三次电面来电时间都和约定时间误差不超过 5 分钟!这也是 FB 严谨的招聘风格的一部分。电面全程使用英语。每次电面的一开始,面试官会有简短的自我介绍,并对本次电话面试的时间和内容安排做一个约有 5 分钟的详细介绍。这部分是你适应面试官口音的一个绝佳环节。我的运气较好所有电面都是英语的 native speaker。如果你对于印度口音承受力较差的话建议先在 youtube 上搜一些印度哥们的技术分享视频研究下。
以上就是每次电面共性的内容,下面按照电面轮次,逐一详细介绍:
注:本文只介绍流程,所有技术面的题目会在后续文章中分享
1. 1 第一次电面
第一次电面全程是 Recruiter(即国内常说的 HR)。整个招聘流程中从电面到入职,除了技术考官外,他是你唯一的联系接口人。所以给他留下一个好印象当然是成功的第一步。简单的流程介绍后,就要求我进行一个自我介绍。然后会根据几个和应聘职位相关的工作经历提几个具体的非技术问题。之后会进行客观基础题的问答。所谓客观基础题就是有唯一标准答案的问答题。例如:Linux 上 HTTP 上的端口是多少? MySQL 和 Linux 基础题各 20 题。答题期间,recruiter 不会告诉你正确与否。因此,在答题结束前是可以修正之前的答案的。我就这么修正过一次。所有 40 题答完之后,面试官会告知答错了几题。我当时是错了一题,面试官暗示成绩应该足以让我进入下一轮面试(具体的及格线我不清楚)。答完题以后就是,Q&A环节。问了两个事先准备的套路问题,一个关于职位本身,一个关于公司文化。最后,互相感谢,等待面试官先挂断电话。
1. 2 第二次电面
第二次电面是 coding 技术面,由将来的 team 内部的员工全程主持。coding 技术面的形式是,45 分钟内,面试官会给出 4 道技术题,让面试者在 Stypi 上进行答题。Stypi 是一个在线协同代码编辑网站,即你的实时代码编写和修改都会在面试官那边展现出来(可以理解是网页版的远程桌面)。每道题都会通过 Stypi 贴在编辑区域内,然后答题者在编辑区域内当场进行 coding。每次出完题后,如果觉得题目表述不清楚或者觉得模棱两可的地方可以即使询问面试官。每一题答完后,面试官如果决定有明显的 bug 或者效率比较低的地方会提出,让答题者进行修改,或者口述改进方案(具体根据时间进度而定)。
下面是一个 Stypi 界面的截图:
1. 3 第三次电面
由于应聘的是 MySQL Database Administrator,电面也必然免不了进行 MySQL 技术面试。第三面就是另一个来自将来同事的面试。该轮面试是问答形式,因此也就没有用到电脑。题目由浅入深,考察的都是 MySQL 的一些基础知识。同时也会根据简历上的自我介绍和项目经验进行深入的提问。
1. 4 第四次电面
本来在第一次电面中 Recruiter 提到会有一共会有四轮电面,且第四轮电面是故障排查演练。也许是进度原因(因为离我出发去旧金山只有一周了),又也许是之前的考察已经达到了目的。Recruiter 邮件告知我,接下来就直接去 Palo Alto 总部面试了。Bravo!
第 2 阶段 On-site 面试
2. 0 面试前夕
确认有 on-site 面试资格后,面试官会确认具体面试时间。同时,让候选人办理入境签证。由于我因为之前的出国计划,已经有了 B1/B2 的 visa 所以就略过了这一步。一般来说美国签证的周期在两周以上,包括材料准备,提交,大使馆面签,护照快递等。按照之后的经验,所有这些流程都会有 FB 指定的代理商 BAL 跟踪协助。所以,整个流程会非常的省心,非常的人性化!
由于我的个人安排,机票和住宿是自己搞定的。实际上根据 FB 的政策,所有面试的来回机票费用和住宿费用都是全包的。按照之后的经验,机票会由 FB 的指定代理 CWT 代为下单,商务舱标准。酒店是五星级,时间一般最长三天,即:面试前夜,面试当天和面试后的调整日。这两部分的钱都是 FB 支付。此外,FB 允许报销面试期间发生的生活费用,每天 150 美元。包括:来回酒店机场的出租票,伙食费和基本生活用品。这部分的费用在面试结束后一个月内,通过系统上传发票(Receipt),最后通过银行转账的方式打给面试者。所以最好能提前拥有一张支持国际汇款(有 SWIFT CODE)的银行的银行卡。
2. 1 面试当天
面试约定在 Hacker Way Site 早上9:45 进行。搭乘宾馆提供的直达车,早早的到了 FB 总部。在前台进行访客登记,等了约 10 分钟我的接口 Recruiter 就来接我了。由于来的较早,他先带我大致参观了下园区,当然免不了 show 一下 FB 引以为傲的十几个餐厅。随后,在某个休息室匆匆的抓了杯咖啡就到了面试室。所谓的面试室就是预先 book 了一天的会议室,候选人整个一天的面试都会在这里进行。
on-site 面试总共是 5 轮,每轮严格控制在 45 分钟(答不完就结束,有空余则继续聊),每轮一位面试官。按照我当时的情况和之前的面经来看 5 轮的分工都比较明确,分别是:coding、实战经验、未来的 manager、未来的 teamate、未来的兄弟 team 组员。由于今天我们主要讲流程,在这里我就大致过一下每个人的面试题倾向。具体的面试题内容会在后续博文中分享。
由于是从上午开始的面试,在前两面结束后就是一个一小时的午休时间。当然,这段时间就是好好享受 FB 奢华的饭菜调整状态的时候啦。Recruiter 当时和我说,每天最烦恼的时候就是午饭时刻,因为“去哪个食堂吃,吃什么”是最困难的问题。为此,他们内部还有一个 APP,用于展示每个食堂当天提供伙食菜单,ORZ。。。
全天面试完成后,没有特殊安排的话,Recruiter 会询问你是否想继续逛下。否则就陪同离开园区,完成一天的面试执行。
2. 2 面试后的结果
大约在面试当周的周五都会有个候选人 PK 会,每位面试官会表明自己的看法。在这个会上就会有一个候选人是否通过的结论。我当时在面试后 5 天左右就收到了录用结果。之后 Recruiter 就会起草 offer,谈工资(具体工资我就不说啦,如果想知道一个大概的业界标准可以上 Glassdoor),邮件确认,走流程。Offer 搞定后,就开始启动 relocation 项目了。所有的 relocation 相关你能够想到的问题,FB 都有指定的代理回来帮助你,实在是非常的周到!例如:签证,搬家海运,临时落脚点,机票等。关于华人 relocation 和国外生活的部分,我也会在日后的博文中陆续更新。
Tips
如果你将要或准备参加 FB 电面/面试的话,下面是一些我个人感觉比较需要注意的点
Q&A
这部分我将会持续更新大家感兴趣的问题。如果你对于来 FB 面试,工作有什么样的疑问,都可以来我的博客原文下留言
http://cenalulu.github.io/mysql/2015-03-02-how-i-become-a-facebook-dba/
或者给我发 Email: cenalulu@gmail.com 所有共性的问题我都会在文章下面作答或者邮件回复。
当然,如果你在看了本文以后有了来 FB 工作的念头的话,也可以把英语简历和想要应聘的职位及应聘所在地发到我的 Email,我会筛选后在平时空闲的时间帮忙走内推流程。
具体职位见:https://www.facebook.com/careers?_rdr