四次Facebook/Meta面试经历
这些年,我一共面试了四次 Facebook/Meta。虽然都未成功,但收获颇多。Facebook 于 2021 年 10 月 28 日更名为 Meta,以下统一称为 Meta。
Facebook, Inc. has been renamed and rebranded as Meta as of October 28, 2021. The name change reflects the company’s growing ambitions beyond social media and its focus on building the metaverse, a virtual world where people work, play, learn and connect with their friends and family.
Facebook, Inc. 于 2021 年 10 月 28 日正式更名为 Meta,反映了公司在社交媒体之外日益扩展的抱负,以及对构建“元宇宙”的专注。元宇宙是一个虚拟世界,人们可以在其中工作、娱乐、学习,并与朋友和家人连接。
如果你是在2022年11月入职,那么到现在你的入职股票已经翻了6倍。疫情那两年,老扎因为全力推进元宇宙/Metaverse项目导致股价大幅下跌,不过他后来承认了这一战略的错误,并开始转向布局AI大模型,从而推动了股价的强势回升。

Meta这两年股票涨得好多
第一次:2010年
2010年3月初,我刚提交博士论文,正在等待答辩。这时收到来自美国Meta猎头的面试邀请。简单了解情况后,约定了第一轮Coding面试。当时我身处英国卢顿/Luton,住在一间简陋的出租房里,与四五个同学合租。
虽然Meta在2004年(我出国那一年:当年出国到英国的学习打工生活(大二大三) | 苦逼的学生时代)成立,并在2008年Facebook Beta改版后进入快速发展期,但2010年的Meta仍算是早期阶段。那时Meta在英国尚未设立办公室,职位是面向美国的。如果通过第一轮,将会被邀请赴美参加后续面试。
第一轮面试的时间是2010年4月1日上午11:30 PDT,通过手机语音和在线代码协作网站(collabedit.com)进行。
可惜,我因两点原因未能通过:
- 一是算法复杂度的问题回答错误;
- 二是我选择了Pascal语言,面试官不熟悉,略有劣势。

2010年第一次在出租屋里面试,用着Pascal写代码
这次面试的职位级别是E3。该面试详细记录于这里。
第二次:2019年
第二次是2019年找工作时进行的。当时,我在英国剑桥的美国通用电气/General Electric公司工作。第一轮通过Meta自研的在线协作工具(bluejeans.com)进行,内容是两道LeetCode原题(难度中等)。
这一年开始,我在面试中主要使用C++。我觉得选择这门语言对面试有加分作用,因为C++的STL提供了丰富的数据结构和常用算法,同时相比Python,它不至于过于“傻瓜化”。不过,要在面试中用好C++,仍需要多加练习,特别是熟练掌握STL的使用,并避免C++中常见的陷阱,比如整数溢出和指针操作等问题。
第一轮时间:2019年6月3日下午1:00 BST。第一轮通过后,猎头专门打电话给我提供反馈,并安排了终面,地点是Meta伦敦办公室。这是我唯一一次访问Meta伦敦办公室,还在公司的餐厅用餐。对Meta食堂真是印象深刻。
终面时间:2019年7月26日上午11:45 BST。我从Huntingdon火车站乘火车到伦敦国王十字Kings Cross火车站,Meta报销了往返火车票。这次面试的职位级别是E4。
反馈是我的系统设计(System Design)能力不足。当时的Coding面试直接在白板上写代码,这种方式较容易出错且耗时,需要提前练习。记得有一道题是:下一个排列/Next Permutation。很多人认为,如果没有事先见过这题,在面试时很难迅速想出解法。
在Behavior那一轮面试还给了一题力扣Easy题做热身。
以前写过博文详细分享了:
第三次:2020年
疫情期间,我加入了剑桥的Amazon AWS S3团队,但因On Call压力大,开始在下半年寻找新机会。Meta再次联系了我。
第一轮时间:2020年9月4日下午1:00 BST,两道中等难度的LeetCode原题。
终面时间:2020年11月5日上午10:00 GMT。疫情后,大厂终面基本转为线上。
我还专门买了白板,Meta为此报销费用。在系统设计面试那轮,我就直接在白板上画设计图。这白板在后来也是发挥了很大的作用:写在教娃编程700天, what’s next?
这次面试的职位级别是E5。反馈再次指出我的系统设计能力不足,但评价接近E5,处于E4和E5的边缘。也不知道是不是因为当时我在AWS S3团队,系统设计那一轮问了一个文件存储系统的设计。
第四次:2024年
今年,我在面试Google时也顺便投递了Meta。这次的职位级别是E6(Staff Enterprise Engineer),因此终面增加了一轮产品设计(Product Design)。
级别越高,期待你的Scope就越大,毕竟能力越大,责任越大嘛。初级别(Graduate/Entry)级别的只需要完成指定的任务即可,高级别的工程师得自己找活协调资源思考等。
遗憾的是,我对这一轮的题型完全不熟,未能通过。不过值得欣慰的是,这次系统设计(E6级别)已达标。
第一轮Coding部分依然是两道中等难度的力扣/Leetcode原题。
Coding对我来说相对轻松,我一般对这一轮都相对自信,也不需要特别的准备(因为平时每天都在刷题),面试过程中就能主导面试,关键点包括:
- 提问Clarifying Questions
- 考虑Edge Cases
- 写完代码自测
- 边写边解释
- 并尝试一题多解
在某轮Coding面试中,我因解题太快,还被面试官临时加了一道题(既然我们还有时间,再给你一题),在40分钟内完美解决了三道中等难度题目。
终面安排:分两天进行五轮面试,包括:
- 两轮Coding
- 一轮产品设计(Product Design)
- 一轮系统设计(System Design)
- 一轮文化匹配测试(类似亚马逊的行为面试)
一个技巧就是你一定要一直讲,千万不要让面试官来lead。这一次产品设计因为不熟悉,所以得到的反馈之一就是面试官说他大部分时间需要主导面试(lead the conversation)。
总结
虽然这些年尝试了四次都未成功,但每次面试都学到了很多。失败的主要原因之一是每次面试都尝试更高的级别,但实力尚未完全达标。换工作通常会有溢价Offer,但前提是水平不能差距太大。通过这些经历,我对自己的能力和不足有了更清晰的认识,为未来继续努力提供了方向。
Meta的面试冷冻期为12个月,所以你每年都可以尝试一次。我这四次面试的目标级别逐次提高,也说明了这些年我一直在不断学习和进步。通过面试,不仅可以挑战自我,还能清楚地了解自己的能力和不足之处。
第几次面试 |
时间 |
结果/反馈 |
级别 |
面试方式 |
一 |
2010年4月1日上午11:30 PDT |
第一轮未通过,算法复杂度回答错误,使用Pascal语言吃亏 |
E3 |
在线:电话,collabedit.com |
二 |
Coding:2019年6月3日下午1:00 BST
终面:2019年7月26日上午11:45 BST |
系统设计能力不足 |
E4 |
第一轮在线 Bluejeans,终面Onsite在Meta的伦敦办公室 |
三 |
Coding:2020年9月4日下午1:00 BST
终面:2020年11月5日上午10:00 GMT |
系统设计能力不足,接近E5级别 |
E5 |
在线 Bluejeans + Coderpad |
四 |
Coding:2024年9月24日下午12点 BST
Coding:2024年10月3日下午4:00
产品设计:2024年10月3日下午2:00
其它三轮:2024年10月8日下午12:15 |
产品设计未通过,系统设计达标(E6级别) |
E6 |
在线 Zoom + Coderpad |
我感觉这些年Meta的Coding面试基本上都是力扣原题,刷力扣Meta过去6个月出现的题就可以:面试刷题更像是一种服从性测试
Meta是所有大厂还专门为求职者搞了一个刷题网站的,非常佩服,感觉它家就怕你不刷题。

MetaCareers刷题网站
大厂的软件工程师级别比较:Meta/微软/亚马逊/谷歌 (levels.fyi)。

大厂的软件工程师级别比较:Meta/微软/亚马逊/谷歌
软件工程师的级别越上去, 编程能力的要求并不需要线性增长。最主要的还是系统设计。说说软件工程师的职位头衔(Title)和级别
英文:Four Facebook/Meta Interview Experiences
面试经历
面试题
面试技巧
面试其它
本文一共
2410 个汉字, 你数一下对不对.
.
.