科技公司面试经:我是如何获得Facebook工作机会的?


全文共2753字,预计学习时长9分钟

图源:pixabay

我在三星电子做了两年的软件工程师,一直在计划跳槽。最初开始找工作时,我根本没敢想自己可以有机会在Facebook工作,然而仅仅五个月后后我收到了录取通知书。

 

7月时我进行了一次全面的求职,除了申请Facebook之外,还开始准备申请热门的科技巨头。我想在和Facebook碰碰运气之前,先在其他公司的面试中表现出色,这样就足够自信了。

这是一个充满期待和意外的旅程。本文中我将分享所有的经验和途中获得的见解。

暗中出击

 

利用缝隙时间,我开始在LinkedIn上建立关系网。我搜索了想申请的公司的招聘人员,并给他们发了电子邮件。我没指望会有什么实质性的结果,但这个接触招聘人员的过程给了我某种刺激和信心,帮助我度过了准备阶段。

LinkedIn是一个很好的平台,你可以给招聘人员打电话,但确实需要坚持不懈。不要胆怯,去接触陌生人。我收到了亚马逊、微软、Snapchat、Bloomberg和苹果等公司的招聘人员的回信,他们只是简短地回复了一条消息。

 

经过锲而不舍的努力,幸运之神终于降临在我身上,8月份发的一封邮件让我接到了一个来自Facebook的招聘电话。

 

在求职过程中,接到第一个招聘人员的电话是最耗时的。就算感觉没有准备好,还是要开始申请空缺职位。在安排第一次面试之前,可以向招聘人员申请几个月的准备时间。

 

希望之光

       

怀着最好的期望,做着最坏的打算,我参加了电话会议,招聘人员来自Facebook的AR/VR部门。

信息:Facebook分为不同部门且每个部门单独进行招聘,即Facebook工程、FacebookAR/VR和Facebook人工智能。

 

她问了一些关于目前职位和工作经验的问题。我一直是一个C/C++开发人员,在XR中没有经验,我很害怕自己不适合招聘人员心目中的角色。有人说,只有当在电话回合中表现出色时才会被考虑,因为技能与团队并不完全一致。

 

洞察:Facebook工程有一个招聘限制,他们只考虑有超过7年经验的候选人。8月可能是Facebook招聘周期的尾声,今年的员工人数已经达到上限,空缺也减少了。我认为在10月份之后,在新的招聘周期开始时,申请会更容易一些。

 

一定要搞定

 

两周后我安排了技术屏幕面试。面试形式是在45分钟内解决两个问题。这些问题是基础的,易于编码(数组和字符串问题),我想讲讲关于测试运行。

 

图源:unsplash

测试运行:代码没有在面试中编译和执行。为了验证,面试官要求接受测试输入,并展示它将如何在代码中运行。

 

提示:测试运行是在面试期间调试代码的好方法。一定要在面试准备中包括测试。对于面试官的第二个问题,我想到了两个解决方案,并向面试官解释了这两个问题。他要求比较这些解决方案,并分析它们各自的优点。最后保留五分钟向面试官提问。我不认为这五分钟有助于候选人的绩效评估,无需担心。

 

众所周知,Leetcode是一个非常好的准备面试的网站,Leetcode上一个鲜为人知的宝藏是Leetcode discus。人们在这一页分享他们的面试经历和问题,请相信,面试问题是会重复的。

 

第一轮面试

 

FacebookAR/VR部门办公室

 

Facebook的面试过程相当迅速。我在两天内收到招聘人员的回信,然后飞往伦敦进行现场考察,一共安排了四次面试。

 

编码面试

 

有两个问题需要在45-50分钟内解决,涉及二叉树、字符串、堆栈和列表。你需要先和面试官讨论解决方案,然后在白板上写下代码。

 

提示:代码中总是有一些边缘情况需要处理,在压力下编写代码时很难处理它们,测试运行就显得很重要了。编写解决方案后,我立即告诉面试官,将在一个通用示例上测试运行解决方案,并首先自己调试。

 

代码中明显的错误是由第一次测试本身带来的——与其让面试官指出错误,不如自己找到它们。通过这些测试运行,我可以有时间考虑可以合并到代码中的边缘情况。

 

系统设计面试

对于入门级的软件工程师来说,这是一个有趣的全新回合,目的是从头开始设计一个系统。问题陈述通常如下所示:

 

1.设计现有产品,如WhatsApp(瓦次普)、Facebook、谷歌搜索等。

2.设计其中一个应用程序的特定功能;例如,在Facebook应用程序中实现时间线。

3.设计一个完全假设的场景;比如,创建一个系统来存储相隔很远的三台服务器的日志。

 

行为面试

这部分是最简单的,但不要掉以轻心,因为在这次面试中出现的问题都会使你失去选择的机会。这些问题围绕着非技术性的经验展开,比如领导技能、团队精神、如何处理分歧等。这组问题几乎是固定的,我们可以提前准备好答案。

 

提示:在面试的前一天,浏览一下受欢迎的行为问题清单,想想职业生活中的趣闻轶事。在一系列技术面试之间,利用这次面试放松一下。这一轮的信心增强有助于提高士气。

 

第一次失望

 

一周后我收到了面试反馈,我本以为自己做得很好,但结果并不及所料。我在两次面试中都得到了很强的正面评价,其中一次是编码轮的正面评价,另一次是系统设计的负面评价。这些是我从经验和反馈中获得的见解:

·        系统设计回合是决定因素。以一种结构化的方式来表达自己的想法是非常重要的,不要错过诸如数据库模式、协议定义等设计细节等要点。最好从收集需求到高层次设计,再到讨论利弊,主动并以合乎逻辑的方式推动讨论。

 

·        Facebook希望应聘者在算法方面表现出色。他们寻找小错误,甚至最优解,例如遍历数组两次而不是一次。尽力做到最好,不要自满。做测试运行,讨论边缘案例,尝试优化,并快速写在白板上。从积极的方面来说,我觉得所有的问题都有一个非常简单的解决方案,既不难提出,也不难编码。

图源:Facebook London

 

第二次机会

 

我和招聘人员表达了自己的困惑。几乎可以肯定自己会得到一份工作,但反馈却出人意料。我从未想过系统设计会有这么大的价值。

 

幸运的是,我又被安排了两次面试,一次是系统设计,一次是编码。再次飞往伦敦接受另一家公司的面试,同时安排了Facebook的面试。老实说,在过去的五个月里,接受了这么多的面试,我已经筋疲力尽了。

 

这两次面试是我求职阶段的最后一次机会,我只是希望这一阶段结束。这一次,我对系统设计有了新的认识,对流程有了更清晰的了解。先进行了编码面试,面试进行得很顺利。关于系统设计,问题陈述与流行的移动应用程序的功能相关。

 

这次更详细地讨论了设计,进行了定量分析,比如服务器所需的系统数量、数据库大小等。这次我付出了100%的努力,我们进行了很好的讨论。

 

提示:系统设计面试的重要实践部分是:收集需求、定义协议、高级设计、数据库模式、数据大小估计、组件设计和权衡。

 

两周后得到反馈,这次是正面的。我得到了一个Facebook工程的E4职位。或许系统设计之所以如此重要,是因为E4工程师除了编程之外,还应该了解设计。

 

图源:unsplash

我从来没想到换工作这么难,那些正在挣扎的人的沮丧我完全能够感同身受。事情并不总是按计划进行,面试过程中有机会或运气的作用。祝你好运!


推荐阅读专题

留言点赞发个朋友圈

我们一起分享AI学习与发展的干货

编译组:苏韫琦、元艺博

相关链接:

https://medium.com/better-programming/facebook-interview-experience-and-insights-51e383f3c70d

如转载,请后台留言,遵守转载规范

推荐文章阅读

ACL2018论文集50篇解读

EMNLP2017论文集28篇论文解读

2018年AI三大顶会中国学术成果全链接

ACL2017论文集:34篇解读干货全在这里

10篇AAAI2017经典论文回顾

长按识别二维码可添加关注

读芯君爱你

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值