前不久刚刚面试了Facebook,面试的岗位是软件工程师。很有幸通过了facebook的电面,所以来分享一下电面的经验,也希望和大家交流一下。
讲真facebook的效率不愧是出了名的高,我在得到通过了简历筛选的邮件回复后就跟Recruiter商定了第一次电话面试的时间,从网申到第一次电面只用了不到一周的时间。
facebook好像不同的team面试程序也不太一样,我面试的时候是经过了两轮电面。很常规的面试流程,两次电面时间大约都在45—50分钟左右。
我电面时用的是skype,之前看到过有面经说Skype通话质量不太稳定,我当时用的时候感觉还不错,这个可能跟网络环境有很大关系。在这里我想跟大家分享一下我的小习惯,在电面前提前一小时准备好需要的设备,然后检查设备是否存在问题,并且确保周围环境的安静。后面再把简历过两遍,在头脑中理顺一下思路。
下面就来谈一下面试过程:
第一轮电面:
超级nice的面试官,能感觉的出水平很高。可能使为了缓解气氛,刚开始只是针对简历上的内容进行了一些询问,然后让我介绍了一下之前的经历,并根据我所说的问了几个他比较感兴趣的部分,聊了一会儿之后才开始问的技术方面的问题。
在这里特别建议大家针对职位要求上的每一条都尽力写上相关工作经验,并且在电面之前把简历再过几遍想想看面试官可能问的问题,做好准备,对之后面试时紧张程度的降低帮助很大。心态一定要好,因为紧张会导致出现一些本来可以避免的小bug。
下面说一下题目:
无序链表的重复项删除
LintCode原题链接:http://www.lintcode.com/zh-cn/problem/remove-duplicates-from-unsorted-list/
Solution链接:http://www.jiuzhang.com/solutions/remove-duplicates-from-unsorted-list/
树中按层次计算平均值 Average value by level in a tree
这个我还比较熟悉,答起来比较顺利,感觉面试官也比较满意。
后面面试官就问我还有什么问题,我就捡着之前自己准备好的问题提了两个。
真的不得不再一次夸赞一下facebook效率之高,一面面完一个多小时就收到邮件通知我参加第二次电面并约定了二面时间。
第二轮电面:
面试官是个国人小哥,也超级nice,给了我很多提示和帮助。先做了一下自我介绍之后问了我对过去的项目中最感兴趣的是什么,我回答了一下之后又根据我回答的问题聊了聊。然后进行技术面试。
给定一个由 n 个整数组成的数组和一个正整数 s ,请找出该数组中满足其和 ≥ s 的最小长度子数组。如果无解,则返回 -1。
LintCode原题链接:http://www.lintcode.com/zh-cn/problem/minimum-size-subarray-sum/
Solution链接:http://www.jiuzhang.com/solutions/minimum-size-subarray-sum/
中途有几个小问题面试小哥都帮忙提了出来,我再进行了修改,总体上这道题难度还可以。
BST vertical order sum。在我做的基础上国人小哥又给出了改进方案,整体回答还不错。
两轮面试之后不久就收到Recruiter邮件告知我通过了facebook的电面,可以做接下来的准备了,真的很开心。
最后建议大家一定要刷lintcode,并且尽可能的多刷几遍,真的非常有用。希望我也可以如愿拿到facebook的offer。