Meta E4 面试你将会面对什么?
买它到底面啥?流程几轮?哪些地方容易挂?需要准备什么?要写代码?要系统设计?要讲故事?HR 到底在意啥?奋笔血书 6 小时写出来的全流程经验总结,从 Intro Call 一直到 VO 的每一轮 Coding、System Design、BQ 行为问题,全都拆开说。
Intro call
HR 一般会先 go through 你的简历,重点是确认一下你的工作经验,像我之前就被问到过在巨硬(Microsoft)的时候是 L60 还是 L61,这个问题他们就是在判断你该走 E4 还是 E5 的流程。
如果是小厂或者 startup,他们还会追问一下你在原来组里是干什么的,比如“你们组有多少人?”、“几个 senior,几个 junior?” 他们问这些就是在判断你的经历是不是“编”的。比如说你写了在 startup 干了两年 infra,但你连自己组有多少人都说不清楚、也讲不出你负责的模块,这个时候 intro call 的目的也就体现出来了。
但也有那种特别简单的 recruiter,上来就假关心一下给你吹一波彩虹屁的说什么在茫茫简历中找到了你,觉得你的背景很好很适合某某岗位的也有,然后让你简单介绍一下自己,接着就会问你什么时候能入职,有没有 timeline,然后就开始介绍面试流程了。
"噢对!在 intro call 的时候一定要和 HR 确认自己的身份,我了解到的情况是 OPT extension 小于 24 个月的他们是不招人的。所以一定要给 HR 说清楚自己的身份,避免 VO 走完拿不到 offer"
E4 的流程就是:
一轮 coding 的 phone screen,过了之后就会安排 virtual onsite,两轮 coding、一轮 sd、一轮 bq,可以分两天面完。如果遇到 Meta 内部培训 interviewer 这种会遇到加面或者一轮两个 interviewer 的情况,另外一个会全程 shadow 不会说话,不会影响评分。
整个 intro call 就 15-30 分钟吧,结束之后你就可以发邮件给 HR 确认时间,安排第一轮店面。
Phone Screen
店面这一轮才是真正意义上的第一关,不夸张地说,超过一半的人都会 G 在这轮。
这一轮的意义是什么?对于公司来说,程序员你写代码在这轮都搞不定,那后面的 vo 就没必要安排了。 换言之如果你这轮过了,他们就是认为你有超过 50% 的可能通过 vo 并拿到 offer 的。
这轮都考什么?
两道算法,不考 DP,45 分钟用 CoderPad 其他的大家都了解。
需要注意的是 Meta 是不要求跑代码的,所以你的 dry run 很重要,这点和其他公司不一样。他们给你的题里面有 test case,这时候你就得:
- 用你刚写的代码,把这个 test case 走一遍
- 一步步解释代码执行到了哪一行、变量的值是多少
- 最后输出对不对
面试官是怎么看你的?
肯定第一点代码要跑得通,你如果写个半成品、dry run 讲得含糊逻辑都没跑通,那肯定 1 年冷静期给到你了。一看原题,低头一顿操作输出,写完往后一靠,是绝对不行的。讲清楚 + 写清楚,远比“写得快”重要。
VO 2轮 Coding
这两轮其实和店面一样。之前店面怎么面,这里还是怎么面。题型差不多,难度差不多,环境也是 CoderPad。有些我在上面没说到地方结合下面的一起看。
一定主动和 interviewer 说明时间复杂度和空间复杂度
不要等着面试官提醒你说:“Can you talk about time complexity?” 你得 主动讲。真的,不讲就减分。
开写前,记得做这些:
- 先确认 input parameters 的类型
比如说,是 list of integers,还是 list of list?target 是 int 还是 float?
非常重要,你写着写着发现类型不明确就容易卡壳。 也推荐大家刷题的时候,自己尝试着用多种数据类型刷,有时候 double float 真不是几个小数点的问题。
不讲清楚的后果?
- 面试官心里会觉得你只是能写,但对算法没有全局掌控力
- 哪怕你答对了,也可能得不到“strong hire”
要知道只有 VO 4 个 strong hire 才能进 team match 啊。哪怕是一个 hire 都会挂。
SD 系统设计
这一轮是很多人最虚的一轮。尤其是面 E4 的时候,很多人其实工作中根本没真正做过什么系统设计,顶多参与过别人的设计讨论,但现在突然要你一个人从零设计一个系统,说实话,不紧张是不可能的。
谁tm会让一个 E4,E5 去做真实的系统设计?但是他要考,你怎么办?
准备建议:一定要看 Hello Interview
这一点我必须单独拎出来讲:System Design 的准备一定要看 Hello Interview。
你可以把它当成你的标准回答套路,一个系统就是:
- Functional/ Non-Functional Requirements
- Scale estimations
- Core Entities
- API or System Interface
- High-level design
- Deep dives(scale、shard、cache、queue、monitor)
一些常见的翻车场面及雷点
一上来就开始画图,没 clarify requirements
面试官还没来得及把功能讲完,你已经在那画 load balancer 了。
对面都不知道你在设计什么,你就在图上加 cache,加 Redis,加 sharding,场面真的非常尬。
开口第一句话不是“我来画一个架构图”,而应该是:
“Before we jump into design, let me clarify the core use cases and constraints…”
只讲 CRUD,不讲 scale 你说你要做个 Facebook Post Search 系统,结果从头到尾讲的都是:
- Post 存数据库
- PUT update
- DELETE 删除一条数据
那请问:有 100M 个request来的时候怎么办?搜索怎么做索引?DB 会不会爆?
这些你一句都不提,面试官真的会怀疑你是不是以为这是在做个人 side project。
System Design是做大规模系统的,不讲 scale = 没在想实际工程问题。
讲得全是 buzzword你说你要加 Kafka,加 Redis,加 CDN,加 Rate Limiter,加 shard。
但你从来没说清楚:
- Kafka 是解决哪个具体问题?
- Redis 是拿来做 cache 哪一段?TTL 怎么定?
- CDN 是 serve 什么?HTML 还是静态图?需要 purge 吗?
面试官一听你全堆这些词,就知道你不是在设计,是在堆概念。
他们脑子里的画面大概就是: “哦,这哥们是在背模板。”
没讲 Scale,像是在做 side project
这一点必须强调一遍:你不是在面试做 demo 项目,也不是给自己博客搭服务。 你不讲 scale,人家会觉得你没有意识到自己面的是大厂。E4 也不是实习生,这种工程常识必须表现出来。
总结一下:
- E4 的 SD 不难,但你要结构清晰,不跑题
- 开始前一定先 clarify requirements 再按照数据库、API 画图讨论 deep dive 来
- 准备材料首选:Hello Interview
- 千万别乱讲,不知道就说不知道,面试官会给你思路
别错上加错,完全偏离了他想听的,那就得不偿失了
BQ,请好好准备!不要现场编!
行为问题从来不是走过场,这一轮在 VO 重要性比 SD 还要大。
Positive 的按照 STAR 回答,Negative 按照 START 回答,一定准备 3 个故事以上。地里一篇 BQ 精华一定要看:link
以下是 Meta 常见的 BQ,我可以说一轮 BQ 里面百分百你会被问到至少 3 个问题来自这个里面。45 分钟也只够问你 3-4 个问题还有 follow-up,另外一个也可以套故事。
常见问题:
- Most proud/challenge of project 必问!
- Failed to meet up requirement / failed mistake
- Handle conflict
- Push back other’s approach
- Most unpopular opinion / take feedback
- Most difficult working relationship / difficult coworker
- Mentor others
Follow-up question 会按照你的故事来开展,主要目的是验证你的真实性,就是说你到底做没做过这个项目。
需要专门练 BQ,或者整套 VO Mock Interview 的,欢迎联系我,按 Meta 标准给你反馈。