刚结束 Meta 的 frontend SWE loop,E4 级别,在 Reality Labs 的一个团队。趁还新鲜把它写下来。
先说结论:Meta 的 frontend 面试跟大多数公司不一样。没有什么「实现 debounce 函数」或「用 React 搭个 modal」。在 Meta,考的是核心 CS/算法,跟 backend loop 一样。coding 轮不考 JavaScript 特定技能。完全不考。
我这次的流程: 初次 recruiter 电话 两轮 coding screen(视频,45 分钟每轮,LeetCode 风格) Virtual onsite:再 2 轮 coding + 1 轮 Jedi behavioral + 1 轮 system design
Frontend 的 system design 轮跟 backend 的 SD 不一样。他们会让你设计一个 client-side 系统:比如「设计一个可扩展的实时评论组件」、「设计一套照片上传流程」、或「设计一个实时协作文档的架构」。他们想看的点包括:状态管理思路、API contract 设计、大数据量下的分页/虚拟化、无障碍考虑、以及逻辑放哪(client vs. server)。
我被问到的是:设计一个带已读/未读状态的通知 feed,并且要支持离线。挺有意思。他们在意本地状态、同步冲突、以及你回到线上后怎么跟 server 做 reconcile。
Coding 轮: Onsite 两轮 coding 我都遇到 graph 或 tree。另有一题 sliding window,一题带状态的 graph。完全不 React。如果你是 frontend dev,一直用「我不做 backend」来逃避 DSA,这次就是你的警钟。
对我帮助最大的: LeetCode Meta tag(最常考的 75 题) 看一些 Facebook.com 如何处理 feed 渲染的文章,不是为了复述,而是为了 SD 里能讲得更像样 专门练 client-side SD 的格式
时间线:从第一次 recruiter 联系到 verbal offer 一共 5 周。Debrief 花了 8 天,感觉漫长得离谱。