Tech Interview Handbook Facebook(Meta) 职业 Q&A:SWE 实习申请、面试轮次、实习体验与新加坡 vs 美国办公室差异完全笔记
本文整理自 Tech Interview Handbook 博客中 Facebook(现 Meta)工程负责人 Yangshun Tay 撰写的《Facebook Career Q&A》。原文以问答形式回答了实习生群体提出的几十个真实问题,涵盖实习申请与内推、简历筛选、面试轮次与 DSA 备考重点、实习项目与导师制、SWE/EE/FE 角色差异、新加坡办公室与美国总部的对比,以及职业成长建议。读完后,你将掌握一套以 Facebook 实习生/应届生视角组织起来的完整求职决策框架,并能将其与本手册仓库中的行为面、算法速查表和简历指南等文档配套使用。
文档来源、渲染方式与适用范围
在展开内容前,先说明该文档在当前仓库中的技术定位,便于你评估信息的时效边界:
- 该文档是 Tech Interview Handbook 网站(基于 Docusaurus 构建)的一篇博客文章,位于 apps/website/blog/2021-08-19-facebook-career-questions-and-answers.md。frontmatter 中
tags: [career, facebook, meta]表明作者随公司更名将其归入 meta 标签;hide_table_of_contents: true表示该页隐藏侧边目录。 - 从 Docusaurus 配置 的源码结构看,这篇博客被明确列入 sitemap 的
ignorePatterns(第 204 行/blog/facebook-career-questions-and-answers/),同时blog预设设置了blogSidebarCount: 15(docusaurus.config.js)。这意味着作者主动让这篇文章不进入站点地图、不占据博客侧边栏的显著位置——与其"个人观点、仅供参考"的定位一致。 - 文档开头的原始背景:作者所在的 Project Intern 群组学生不断询问 Facebook 实习、在 Facebook 工作以及他个人职业旅程的问题,作者决定把答案写成博客,以便日后被反复询问时直接指向这篇文章。
免责声明(原文原样保留):作者不是招聘官(recruiter),招聘与实习相关问题的回答可能有误,请"take them with a grain of salt"(有所保留地看待)。文中观点仅代表其个人,不代表雇主的观点。
适用范围(原文 Caveats):
- 这些回答是针对 Facebook 的实习生与应届生面试流程的,可能不适用于其他公司,尤其是规模较小的公司;
- 大部分答案对所有工程师岗位通用,但安全工程(Security Engineering)、前端工程(Front End Engineering)等专门化岗位存在例外。
术语表(Glossary)
原文提供了完整的缩略语表,理解全文问答前建议先熟悉:
| 缩写 | 含义 |
|---|---|
| APAC | Asia Pacific Region,亚太区 |
| CVWO | Computing for Voluntary Welfare Organizations(公益组织计算机项目) |
| DSA | Data Structures and Algorithms,数据结构与算法 |
| EE | Enterprise Engineer/ing,企业工程师/工程 |
| FRL | Facebook Reality Labs(现 Meta Reality Labs) |
| FTE | Full-time Employee,全职员工 |
| IANACP | I am not a career portal,我不是职业门户网站 |
| IANAR | I am not a recruiter,我不是招聘官 |
| IANAL | I am not a lawyer,我不是律师 |
| IINW | If I'm not wrong,如果我记得没错的话 |
| RA | Residential Assistant,宿舍管理员 |
| SWE | Software Engineer/ing,软件工程师/工程 |
| TPM | Technical Program Manager,技术项目经理 |
申请与内推(Application/Referral)
实习申请流程是什么样的?
在 Facebook Careers Portal 上投递申请。如果有兴趣,招聘官会主动联系你并进行电话沟通;如果进展顺利,接下来是两轮编码面试。
Facebook 看简历时看重哪些素质与经历?
作者声明自己不是招聘官、不参与简历筛选,因此以下来自个人经验:写出让自己与众不同的内容。成绩好?写上去。奖学金/奖项?写下来。丰富的实习经历?用有条理的格式呈现。做过酷的黑客项目/副业项目?加上 GitHub 链接和演示。赢得过黑客松/竞赛?写进去。有一条是确定的——很少有公司愿意只招"只有学术背景、没有任何行业经历"的候选人。
这一点与本仓库的 简历实战指南(FAANG-ready 简历的 ATS 模板、标准章节顺序、关键词优化)以及 简历改进案例研究(对一份 SWE 实习简历的逐条批评与改写)互为补充:Q&A 给出"筛选逻辑",后者给出"可执行的操作步骤"。
GPA 对简历筛选影响很大吗?
GPA/CAP/成绩只是从简历中可提取的信号之一。作者的个人判断是:如果有自己的公司,他宁可选"成绩为 high second upper(次优等级)但拥有出色开源作品集和多段大厂实习经历"的候选人,而不是"CAP 5.00 但除此之外一无所有"的学生。这不是说前者一定更强,而是前者可能是"更保险的选择"(safer choice)。
大厂的分数门槛:Second Lower(3.5–3.9)能过简历筛选吗?
毕业时间越久,成绩权重越低。对学生而言,由于缺乏工作经验,成绩在简历筛选中可能占比更大,但绝不止这一项因素。
简历筛选是 AI 还是人工?学业平平能否纯靠经历竞争?
作者再次声明不是招聘官。他的观察是:多数人学业不佳,往往是因为把时间花在了别处——如果这些时间花在了副业项目、实习等相关事情上,通常可以弥补偏弱的学业成绩;但如果"挂科式划水"还去泡夜店,那很遗憾大概率过不了筛选。另外,计算机科学如今是热门专业,能考入的本身都是好学生,相当一部分学生既有好成绩也有课外成就,竞争很激烈。
申请前需要掌握特定语言/框架吗?
针对 SWE 岗位,Facebook 不要求入职前掌握特定语言/框架,面试也没有此类限制——你可以用自选编程语言完成面试。唯一例外是申请 Front End Engineer 或 Mobile Engineer 岗位:会问领域特化问题,相应地需要你用 JavaScript/Java/Kotlin/Objective-C/Swift 来作答。
实习申请是"先到先得"吗?
不是招聘官,无法确认规则,但所有工作都有名额限制,招满即止。原文以 2022 届为例:实习申请 9 月开放,如果你拖到很晚才投,"几乎可以肯定已经太晚了";你当然可以晚一点(比如 10 月)投递,但剩余名额可能更少。教训:尽早准备(prepare early)。
内推流程是怎样的?
作者会发起一个表单,你在其中填写姓名、邮箱、上传简历并选择想申请的岗位。此后从应聘者角度看,与自己在 Facebook Careers Portal 直接申请没有任何区别。
内推何时过期?能不能晚点再找作者推?
只要作者还在 Facebook 任职、且他认为你有较大概率通过面试,就愿意内推。但作者提醒两头风险:准备不充分就申请,会浪费一次机会;拖太久申请,则风险是名额被抢光。作者不知道"被内推的最后期限",但建议不晚于 9 月底。
一份能打动 Facebook 的简历有什么技巧?
作者在文中给出核心态度:大多数学生不必过分担心简历筛选环节,应该把精力放在面试上。使用整洁、标准的模板即可。若申请美国岗位,原文额外给出了三条可操作清单:
- 写明预期毕业年份(知道月份更好);
- 写明美国工作资格(新加坡公民可注明具备 H-1B1 签证资格);
- 使用 GPA 而非 CAP 表述成绩。
自研项目必须上线(production)才能写进简历吗?
最好能上线,但作者也不确定招聘官是否真的会点开项目链接。建议:如果项目链接根本不能用,干脆不要放这个链接。
申请应届生(fresh grad)SWE 岗位有什么建议?
两点:把算法(DSA)练到"倒背如流"的程度;应届生 SWE 面试还包含一轮行为面试(behavioral round),要准备好讲述过往经历——本手册仓库中有专门的 行为面准备指南 覆盖这一轮。
除 DSA 外还要准备什么?
对于 SWE 实习/应届岗位,DSA 最重要,笔试面试的主体是 DSA——"Grind your LeetCode"(去刷 LeetCode)。
新加坡候选人能同时申请本地与美国岗位吗?
通常你只会被安排一个地点的面试流程。但身处新加坡的候选人可以自由申请新加坡以外的岗位并去当地实习。
面试官在找什么:面试轮次、考察重点与"冷却期"
面试官通常关注候选人的什么?
原文的回答极其凝练:"DSA. DSA. DSA."(连说三遍),加上沟通能力——你必须能在整个面试过程中清晰表达你的思考过程。
面试流程具体是什么?
- 所有岗位:与招聘官的初次接触(例如电话沟通);
- 实习生:2 轮在线编码面试,聚焦 DSA;
- 应届生:2 轮在线编码面试 + 1 轮行为面试;
- 实习和应届面试都不考系统设计(system design)。仓库中的 系统设计文档 面向更资深的候选人,实习生无需投入时间。
Facebook 有线上编码测试(在线笔试)吗?
作者表示他并不认为 Facebook 有"线上编码测试"这一环节,因此无法回答"笔试没拿满分还有没有机会进下一轮"这类问题。
刷 LeetCode 之外,应该怎么练?
原文强调:研究 DSA、刷 LeetCode、与同伴做模拟面试(mock interview),习惯"边写代码边出声表达"。本仓库对备考方法有系统展开:coding-interview-prep 指出"只刷 LeetCode 并不够"——它建议按话题组织学习、结合速查表同步练习,并用 Grind 75 工具(本仓库 apps/website/functions/grind75 目录下实现了该工具的服务端函数)按备考周期生成练习题清单;编码面试行为速查表 则给出了面试前中后的完整行为清单。
听说 Facebook 不问动态规划,对吗?该侧重哪些专题?
作者表示"既不能确认也不能否认"。并给出一条通用建议:聚焦最常见、最高频的数据结构与算法。某个专题如果过于偏门,通常不会考,因为考偏门题反而会让面试官难以提取有效信号——这其实是对面试官的"反向激励"。原文建议直接去看本手册的推荐练习题,即 algorithms 学习速查表。该文档为每个专题标注了优先级,例如 Array、String、Sorting and searching、Matrix、Tree、Graph 为 High,Hash Table、Recursion、Linked List、Queue、Stack、Heap、Trie、Interval 为 Mid,而 Dynamic programming、Binary、Math、Geometry 为 Low——恰好与"高频率优先"的 Q&A 建议相互印证。
会考察特定技术栈/真实项目经验吗?
申请 SWE 岗位:不会考察特定技术栈/语言,算法题可以用绝大多数编程语言实现(但原文开了个玩笑:最好别用文言(wenyan))。申请专门化岗位:可能会被要求使用领域语言,且招聘官通常会提前告知。
如何提升通过 recruiter screen 的机会?
原文只给了两条:1. 拿到内推;2. 一份整洁、能展示你能力的扎实简历。
内推对拿到面试机会帮助有多大?
内推相比直接在 Careers Portal 申请"可见度更高"(higher visibility),除此之外没有魔法加成。
如果你是内推人,如何判断候选人值不值得推?
作者的做法:看成绩单和简历,寻找"会成为好员工"的迹象——相关课程成绩优异、值得一提的实习、有趣的副业项目、ICPC/IOI 获奖。加分项:开源经验。原文原话:"如果做出了真正酷的开源项目,哪怕成绩很差我也愿意内推你。"
Info Systems(信息系)背景有机会吗?
有机会。"很多 IS 出身的人也是好工程师",只要能证明你精通编程与 DSA,背景不是问题。
Facebook 偏好单页简历吗?
作者作为 Facebook 资深候选人的面试官,见过"极其冗长的恐怖简历"。结论:单页不是硬性规则,更像是一种建议——如果你超出一页,多半是塞了太多东西。作者本人在 2017 年求职时用的简历是双栏、字号偏小的双页设计,依然拿到了招聘官回复(且那时他尚未入职 Facebook)。
国际学生的工作签问题?
作者声明不是律师(IANAL)。他表示 Facebook 之前有国际学生实习,且目前就有国际学生在 Facebook 工作,具体请与招聘官确认。
课程排期很乱,该申请实习还是全职?
如果还有可用的暑假,"可以去、也应该去"实习。作者观点:通过实习面试通常比全职面试容易,而且实习表现好大概率带来更好的转正(conversion)包。
想去美国/伦敦/加拿大工作,有资格吗?
不是招聘官。新加坡公民去任何地方工作都没有问题;外国留学生可以请教学长学姐,或等到有招聘官联系时直接问。
想在新加坡实习、之后去美国全职,可行吗?
对实习生而言,转正 offer 对应的是你实习所在地点。因此要把"想全职工作的地点"纳入规划,尽量去那个地点实习。
被拒后要等多久?
原文给出了明确的冷却期规则:每个岗位(per role)有 6 个月到 1 年的冷却期。例如在美国面了 SWE 被拒,之后再面新加坡(或任何地点)的 SWE 都需要等待一段时间;但冷却是"按岗位"计算的,你立刻可以重新申请其他岗位(例如 Front End Engineer),前提是简历能被选中。另注:截至成文时,FB 新加坡的实习每年只有一轮,今年失败就要等下一年(见 Q&A 原文第 154–158 行)。
实习体验:项目、导师制与岗位形态
转正(conversion offer)看实习生的哪三点(其实不止三点)?
原文回答是"长篇回答,超过 3 点",但总结起来,实习生要拿到转正 offer 需要同时做到:展示生产力并在实习期内完成分配的项目、产出高质量代码/工作、展现快速学习能力、主动沟通与协作、展现主动性与独立性。作者评价:这些"基本是常识"。
FB 有哪些类型的实习岗位?
不是职业门户(IANACP)。FB 新加坡比较有限,主要招 SWE 和 EE 实习,作者见过 TPM 实习;海外几乎每个岗位都有。
Facebook 新加坡有机器学习/数据科学实习吗?
作者所知的范围内没有。海外应该有,但你要和全球候选人竞争。
SWE 岗位具体做什么?技术栈是什么?
"当然是软件工程。"认真回答是:完全取决于团队和业务。Facebook 足够大,几乎每种语言都有团队在用。原文给出了一份简化概览(这是本 Q&A 中少有的"配置清单"式内容,建议收藏):
| 领域 | 技术栈 |
|---|---|
| Web 产品 | JavaScript / React / CSS / GraphQL / Relay / Hack(PHP 的带类型版本) |
| 移动端 | Objective-C / Java / React Native / 自研框架 |
| 后端服务 | Java / C++ / Python |
实习的运作形式:嵌入团队做 issue,还是领一个项目?
正常情况下,实习生会拿到一个贯穿整个实习期的项目(12 周实习中约 10 周用于完成项目),并配备一名 Intern Manager 作为导师。该导师通常就是项目的提出者,会把项目拆分成多个里程碑。Intern Manager 的职责包括:带实习生 onboarding、定期给出表现反馈、评审代码(通常与团队其他成员一起)、评估实习生是否拿到转正 offer。
导师制是怎样的?导师和实习生共事吗?随机分配吗?
Intern Manager 可能与实习生做同一项目,也可能不做,但必须对其项目有上下文,能够评审(或至少能找到合适的人来评审)实习生的工作。员工可以为某个实习季"报名"担任 Intern Manager——不是随机指派。原文的比喻很直白:如果随机把某个员工指派成 manager,对双方都是灾难性且不愉快的体验。
新加坡的实习生会做什么产品项目?
实习项目通常自成一体、且能在实习期内完成。FB SG 的实习项目例子:用现代 React 设计系统重构 Oculus Accounts Portal、为 Oculus Accounts Portal 构建自助退货(order return)流程。FB SG 之外:构建 facebook.com 的设置页、构建一个内部调试工具(类似 Redux Devtools)。
内部工具还是对外产品?
两者都有可能,取决于团队。新加坡以产品团队为主,项目大概率是"给产品加功能"。
实习后有机会转到海外办公室吗?
有先例(部分前实习生确实发生了转岗),但可能源于疫情期间的特殊情况,未必延续到后续年份,需与招聘官确认。
下一季招多少实习生?
作者表示不知道,且即使知道也不能说。他透露的量级参考:2019 年 4 名实习生,2020 年约 10 名,FB 新加坡办公室当时增长迅速(见 Q&A 原文第 238–240 行)。
想做移动端开发,新加坡有相关实习吗?
FB SG 有一些做移动的团队。实习开始前实习生可以提交技术栈偏好,随后会与匹配偏好的团队/项目对接。
实习生/Junior SWE 能轮岗尝试不同方向吗(比如后端想转前端)?
简短回答:实习生基本不能,FTE 则自主权大得多。展开说:实习生项目通常有预定义的技术栈,做什么工程、用什么栈高度依赖分配的团队和项目。如果提前做完,可以向 manager 要更多工作、尝试别的东西;如果实习期恰逢内部黑客松,实习生可以参加并做任何想做的东西。对 SWE 而言,入职后有一个叫 bootcamp 的流程,员工在 bootcamp 中自主选择加入的团队,这给了更多决定工作内容的灵活性。FB 内部流动(internal mobility)非常好——作者本人在 Facebook 同时做过前端和后端。
Facebook 文化与"新加坡 vs 美国"办公室对比
SWE、EE、Front End Engineer 到底有什么区别?
原文给出了三定义:
- SWE——通才(generalists),预期能处理交给你的软件类问题,并应能跨技术栈工作;
- EE——原文引用 Facebook Careers Portal 的定义:"Facebook's Enterprise Products team is responsible for building integrated, scalable, and robust Enterprise Applications. As a member of Enterprise Products team, you will play a key role in re-imagining productivity by shipping transformative products that serve diverse aspects of the enterprise"(Enterprise Products 团队负责构建集成、可扩展、健壮的企业管理应用,成员将在"重新想象生产力"中扮演关键角色);
- Front End Engineer——有前端特长的 SWE。面试以 HTML/CSS/JavaScript 进行,领域题占比更高。这并不意味着 FE 只能做前端——只要团队需要且与 manager 对齐,FE 也能做任何工作。作者经验:FB 的前端工程师前端功底很深,但也完全能做后端工作。(附注:作者本人就是 Front End Engineer。)
FB 新加坡办公室目前有哪些方向?找什么样的人?
FB SG 有两个主要组织(org):Commerce Engineering(商务工程) 和 Ads & Business Products(广告与商业产品)。新加坡的 Commerce Engineering 团队为 Facebook 的硬件设备(Quest、Portal)构建电商网站,并覆盖购买生命周期的其余环节——支持中心、退货、保修。作者所在 Commerce Engineering 的团队负责 oculus.com 与 portal.facebook.com 两个站点。关于 Ads 侧,作者表示了解不多。
招聘画像方面,原文引用其 manager 的公开文章,强调同理心(empathy) 是关键特质之一。
Facebook 新加坡与"硅谷总部"有什么不同?
原文先纠了一个错:Hacker Way 总部在 Menlo Park,不在旧金山。随后列出了 FB SG 与 FB US 最显著的区别(逐条继承):
| 维度 | 原文观点 |
|---|---|
| 职业晋升 | 美国是总部、团队最多、各层级人员齐全,长期职业晋升上 SG 必然吃亏;但"不用想太远",FB SG 目前规模也足以让你做到 senior engineer 并赚得舒适 |
| 项目类型 | SG 以产品团队为主、主要招 SWE/EE;美国团队类型均衡,含基础设施团队、招所有岗位。想做内部日志框架、GraphQL、内部 ORM 这类 infra 活,得看非 SG 办公室 |
| 换团队 | SG 团队少,想留在新加坡内换团队,选择有限 |
| 公司文化 | SG 无法到场参加仅总部举办的事件(Zuck Q&A、公司 town hall、夏季/假日派对),但有本地版本 |
| 餐饮 | SG 的咖啡馆选择少一些,但免费食物依然很好 |
| 办公环境 | SG 办公室更小,但仍是新加坡最酷的之一;Menlo Park 总部有游戏机房、桌游室、理发店、冰淇淋店、小物件贩卖机……"晚上看起来像环球影城" |
| 薪酬 | 两地都是顶级水平;但 SG 税低、生活成本便宜,"我赚得少,却存得多" |
| 税收 | SG 税率相对美国极低;美国对股票资本利得、银行存款利息也征税,SG 不征 |
| 工程文化 | 相似(SG 不少工程师是从 FB US 调来的,包括作者本人),但小办公室缺少"极其资深"的工程师 |
| 安全感 | 作者认为 SG 更安全,"至少走在街上不会收到种族歧视言论" |
| 个人幸福感 | 在美国朋友和家人更少,如果你很在意这一点,生活会更难 |
| 社交/恋爱 | 单身的话在美国找长期伴侣很难(原文的自嘲式吐槽) |
作者的个人定位总结:"我在 FB US 时是'大池塘里的小鱼',现在在 FB SG 是'小池塘里的大鱼',我享受现在的工作和团队,并预计至少还会在这个角色上待几年。"
内部黑客松是按办公室划分的吗?
某种程度上是全球性的:时间线是全球统一的,但各地区由不同的人牵头;参赛团队参加区域选拔,区域优胜者再向全球负责人做展示。
前端经验为主,是不是只该申请 FE 岗位?
如果你 HTML/CSS/JS 功底扎实、而 DSA 一塌糊涂,走 Front End 面试流程的机会可能更大。但注意:截至成文,FB SG 不招 Front End Engineer,此类岗位需要看海外(仓库中的 前端面试观察 补充了前端面试的具体形态)。
Reality Labs(FRL)怎么样?
作者本人做的是 FRL 硬件的"售卖",而非 FRL 硬件/软件本身。他对 FRL 未来没有太多判断,但提供了一条数据锚点:Quest 2 是当时 VR 头显市场的领导者,并是 Facebook 2020 Q4 非广告收入的重要驱动因素。
Facebook 招应届生,要"通用型"还是"专家型"?
原文这段是全文技术观最浓的部分,值得完整理解:
- FB 使用 Flow(JavaScript 类型检查)和 Hack(带类型的 PHP),这两个东西 FB 之外几乎没人用。如果只招有 Flow/Hack 经验的人,head count 根本填不满;
- 科技公司招 SWE 通常是通才岗位,预期员工能自己学任何新语言/工具来完成工作。只要基本功扎实,这并不难。所以大多数公司想招"学得快、适应力强"的人;
- 例外是极资深的人(principal 级别及以上),公司可能为某个专业领域的专家而招人——但这不适用于还在读本科的多数人;
- 语言与工具之间是相似的,新技术从已有技术学习并改进,学新技术没有想象中那么陌生;
- 但要成为好的 SWE,作者建议透过抽象层去看:理解这项技术要解决什么问题、底层如何工作、与同类技术相比优劣如何。这也是他热爱开源的原因——代码是公开的,可以读项目结构、甚至直接贡献;也爱读技术对比文章,以了解各项目做的 tradeoff;
- 结论:"不要做无脑执行者(mindless drone)——不知道为什么要用它而不是替代品,很快就会被淘汰,尤其考虑到技术迭代的速度。"
"新加坡办公室只是辅助角色、核心工程机会少"这个说法成立吗?
作者指向本文的 US vs SG 对比小节(Career Progression 与 Projects 两条),不再重复展开。
个人经历:为什么选前端、为什么选 Facebook
作者在 FB 做什么项目?
成文时他在做一个"明年才能公开细节"的多年期项目。上一份工作是为 Facebook 电商网站(oculus.com、portal.facebook.com)构建 React 设计系统和一套 CMS 框架,让非工程师可以随时更改 oculus.com 的营销内容。其团队解决的核心问题是:把营销发布与工程工作解耦,让业务团队能在电商网站上自主发布新产品与活动。
为什么选前端?工作强度对比 Google 如何?
作者学生时代喜欢设计,能把自己的设计在 web 上实现出来很酷,所以选了客户端工程。选 web 的原因是"快速迭代与发布周期":他的第一个硬核 CS 课程是 CS3217(之前只修过 CS1010E/CS1020E),第一段正经软件是写在 iOS 上的——移动开发对他而言太麻烦:需要真机、编译慢、还得遵守平台规则(应用随时可能被下架)。而 web 更开放,任何人都能在几小时内上线一个网站,"把 URL 发给别人展示成果"这种体验永不腻。
关于强度:他没在 Google 工作过,不便评论 Google 的强度;但"Google 以适合 rest and vest(稳定 vesting)著称,Facebook 的晋升周期更快、且对顶尖绩效员工给出不成比例(disproportionate)的回报"。
毕业后去了 Grab,大学时做过什么实习?
是的,毕业后在 Grab 工作了两年。大学期间的实习:大二做 CVWO,大三在硅谷 EasilyDo(现 Edison)NOC 实习,大四在 SUTD Game Lab 做 Game Producer(非程序员角色,前 MIT Gambit 项目)。作者感慨当年海外实习并不常见,Google 和 FB 每年的实习生各少于 10 人。
前端工程师的日常与"为什么是 Facebook"?
作为 FB 的前端工程师,作者主要写 JavaScript 和少量 Hack(带类型的 PHP)。在 FB 的乐趣在于可以做"非产品"的前端工作:React 设计系统、前端工具链、lint 规则、CSS 框架(Infima)、静态站点生成器(Docusaurus)。
作者认为 Facebook 是前端 web 技术的领导者:你做 web 开发,多半在用 Facebook 的开源成果——React、Flux、Jest、GraphQL、React Native、Docusaurus、Draft.js、Relay、Flow 等。入职后他参与了 Docusaurus 开发,并连续两年领导 Docusaurus v2,"是职业生涯中最自豪的项目之一"。他还贡献了大量 FB 高知名度开源前端项目,并与 React 作者 Jordan Walke 一起改进过 Facebook Ads 界面的前端;FB 员工会第一批 dogfood React 的新 API、参与设计讨论并影响 React 的未来路线图。
文化上,作者表示自己与 Facebook 的 hacker 文化"更合拍",所以即使两边 offer 相当、且有机会参与 Google 搜索结果页开发,也选择了 Facebook。原文总结:"Facebook 是前端工程师成长、向最优秀的人学习的地方,是当时最明显(obvious)的选择,也是他工作过最棒的地方(当时已近 4 年),财务上也是很棒的选择。"
学习机会如何?
学习机会取决于个人偏好、团队、项目、运气。Facebook 大到覆盖几乎所有技术领域,加上良好的内部流动机制,总能看到让你有热情的项目。大公司的红利与代价一体两面:你的工作经常要考虑可扩展性——你的库可能被数万工程师使用,你的产品可能被数十亿用户使用。
此外,Facebook 把员工成长当大事:清晰的工程师层级与期望、真正关心团队成长的 manager(培养团队是其核心职责,且会因此被考核)、面向任何想成长的人的导师项目、每周与 manager 和 lead 的 1:1。作者本人当时在带 3–4 名 junior 工程师,帮助他们在技术与组织技能上成长为 senior。
NUSMods / NUSWhispers 的来龙去脉?
NUSMods 不是作者起的头(作者引用团队页说明这一点),他负责构建功能(最喜欢 theming 与 dark mode)、招募团队成员、并发起了你现在正在使用的 v3 重写;当前版本的大部分功劳属于其他几位核心成员。NUSMods 代码库不算大,但重写用了超过一年(现代技术栈)。作者自评:"加入 NUSMods 是我人生中最棒的决定之一——它影响了大量学生(他估计超过 10 万),让我学到了很多东西,也帮我建立了同好网络。我们需要更多人贡献才能让项目活下去。" NUSWhispers 则是他提出的点子(他 2015 年担任 web 开发课程 CP3101B 的 tutor 时向学生提出"匿名校园互助平台"的想法),但他自己没写多少代码。作者的价值观一句话概括:"我喜欢做人们真的在用的东西,毕业后我会把这些东西开源。"(本 Q&A 所在的网站本身也是他规模最大的开源工作之一。)
Facebook 与其他科技公司有什么不同?入职工程师如何贡献?
作者只在两家公司工作过,不敢说见得多,但三点突出:
- 薪酬处于市场顶格("crazy a lot")。也许不如量化交易公司,但算上有意思的工作、社会影响,FB 综合起来仍是他心里的头部;
- Bottom-up 文化。有些公司把工程师当无脑执行者,FB 不是。在 FB,工程师被预期承担相当的产品与项目管理职责、提出想法并为团队 roadmap 领路——尤其当团队的产品是高度技术性的。工作如何安排、时间如何分配,灵活性很大;
- 责任很大。FB 信任你做出正确的选择:"如果你有技术能力,入职第一天操作不当(或心怀恶意)就能把 facebook.com 搞挂。"
作者如何管理团队?
"我们的流程很少。"团队很优秀,作者信任他们做正确的事。在多年的项目里,他把大项目拆成小块,按兴趣和专长分给队友;设定准则与通用工程原则,确保团队知晓并在开发中遵守;设定半年目标后,项目基本由每个人自主推进。日常时间分配:约一半写代码,一半 code review 与开会;同时 mentor 几名工程师,对较新的工程师给更多指导,持续反馈技术工作与行为层面的成长点。
Facebook 对作者职业的影响?USP(独特卖点)是什么?
在 Facebook,他得以观察大型工程团队如何在规模化下运转、产品如何被开发并推向百万用户、向全球最优秀工程师学习。对他个人而言 FB 的 USP 是:前端与开源(详见上文)。
FB 的项目是内部工具还是面向公众?
"两者混合,且取决于地点。"大多数 infra 团队在更大的工程办公室(美国、伦敦);新加坡尚新、增长迅速,以产品团队为主。
职业建议:毕业前两年该优先做什么?
优先序是什么?
"成为基本功精通的好工程师。" 好成绩、亮眼实习、副业项目对"拿到面试"重要,但归根到底,"如果你的 CAP 再高却答不出面试题,也没用"——面试归结为你对 SWE 所需技能的掌握程度。最后一句原文原则:"做你感兴趣的、并且对你有益的事。"
个人项目、成绩、LeetCode、黑客松、工作经验、CCA 该如何加权?
原文认为这是"难以一概而论"的问题,并给出四条个人方法论:
- 认清并利用比较优势(comparative advantage)。有人天生聪明、不用怎么学成绩也好;有人不擅长读书但很会做有影响力的项目。作者承认"尽力也能做后端",但不享受,于是利用对设计的热爱与对细节的执着去做 UI 与相关工具链;
- 广度与深度之间取得平衡。本科阶段探索空间大、试错成本低,应该大量尝试,再选择真正喜欢且擅长的方向去深耕。作者尝试过后端、移动端、游戏开发,最终最喜欢前端开发;
- 不同投入的回报不同。与 CS 无关的 CCA 可以有趣、扩宽社交圈、提升软技能,如果你在乎就去做;但"如果你代码写得差,又把所有空闲时间花在无益于技艺的随机 CCA 上,大概率会变成平庸的程序员"。作者自己在大学没有正式 CCA——他选择做 tutor、做 NUSMods 这类开源、以及在新加坡高中附近当 boarding councillor(类似 RA),喜欢这种活动的平衡与多样性;
- 成绩观。作者 CAP 不算高——一等(first class)但离 5.00 有距离;他承认把时间全砸在学习上可以全 A+,但学习不是他最喜欢的活动,他的 A 通常来自项目重的课程。"我重视并享受动手经验多于刷题经验。"
结尾原文(职业观的注脚):"我很幸运软件工程存在——它是有意义的、我喜欢的、还能付账单的东西。"
明年毕业,最需要学什么?
原文的收尾回答只有三个字级别的力度:"DSA. 没有 DSA Mastery,就没有面试通过,就没有 Facebook offer。" 这句与全文反复出现的"DSA. DSA. DSA."形成呼应,是本 Q&A 的核心结论。
配套阅读:把这篇 Q&A 放进手册体系中
原文多处"Look at the handbook"(去看手册)的指引,在当前仓库中有明确落点,可作为执行清单:
| Q&A 中的指引 | 仓库中的对应文档 |
|---|---|
| "There's a section in this handbook which covers those"(行为面) | behavioral-interview.md |
| "Look at the recommended practice questions in the handbook"(推荐练习题/专题优先级) | algorithms/study-cheatsheet.md |
| 刷 LeetCode 的正确姿势与结构化备考 | coding-interview-prep.md |
| 面试中如何展示 hire signal(前中后行为清单) | coding-interview-cheatsheet.md |
| 简历模板与 ATS 可解析性 | resume.md、简历改进案例研究 |
| 30–90 天学习计划 | coding-interview-study-plan.md |
| 面试形式(对照各公司轮次结构) | interview-formats-top-companies.md |
结语与免责重申
这篇 Q&A 的价值在于"第一人称样本":它不是抽象的流程说明,而是一位在 Facebook(新加坡/美国两地任职、做过前端与后端、带过团队、做过 Docusaurus 等开源项目)的工程师,对实习申请、面试、实习体验、两地办公室差异与职业规划的完整口述。文中所有涉及招聘规则(名额、冷却期、签证、内推时效)的内容,作者均标注了 IANAR/IANAL 边界——它们反映的是作者成文时(2021–2022 年前后)的个人认知与观察,用于建立认知框架,而不是官方政策。
原文首尾两处的免责声明(原样保留):"I am not a recruiter and I might have answered some of the recruiting or internship-related questions wrongly, so take them with a grain of salt. Opinions expressed are my own and do not represent the views of my employer."(我不是招聘官,可能对招聘/实习类问题回答有误,请有所保留地看待。文中观点仅代表我个人,不代表我雇主的观点。)
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0624
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00