OfferForge 导师 Dr. W. — 博士毕业,前 FAANG Senior MLE。研究方向为大规模分布式机器学习系统,曾在顶级国际学术会议发表多篇论文。负责团队学术方向把控与 MLE 面试辅导。
OfferForge 导师 Dr. S. — 前大厂 Senior SDE,精通分布式系统与大规模数据处理。曾在顶级技术会议发表多篇技术报告,专注于系统可扩展性与可靠性。负责课程体系设计与 System Design 面试辅导。
OfferForge 导师 Dr. L. — 前大厂 Senior SDE,深耕分布式系统与微服务架构。在服务治理、事件驱动架构方面有丰富实战经验。负责求职策略制定与 SDE 面试辅导,已帮助多位候选人斩获 Senior 级别 Offer。
Meta 26ng 的岗位重新开放,我帮客户投了一份简历,没想到很快收到了面试邀请。整个流程里最关键的就是 coding round。这一轮面试在 Zoom 上进行,写代码用 CoderPad。和其他公司不同,这里的代码题不要求真正运行,而是必须在写完之后自己做一次 dry run,把逻辑和执行步骤完整地向面试官讲清楚。整个环节 45 分钟,两道题,看似时间充裕,实际上每一步都很考验思路的清晰度和沟通能力。
第一道题是字符串解码,输入是类似 "3[a2[bc]]" 这样的字符串,要求输出展开后的结果 "abcbcabcbcabcbc"。这类题目初看上去比较绕,但核心是利用栈来保存中间状态。我的思路是维护两个栈,一个用来存放重复次数,一个用来存放已经构造好的部分字符串。每次遇到数字时解析成重复次数,遇到 [ 时把当前字符串压栈并清空,遇到 ] 时则从栈里弹出上一个字符串和重复次数,把当前部分展开并拼接到前面。在 dry run 的过程中,我用输入 "3[a2[bc]]" 现场演示:先读到 3 压次数,再进入 a2[bc],遇到 ] 展开成 "abc bc",再重复三次得到最终结果。面试官非常关注 dry run 的细节,比如你是否能准确描述栈在每一步的变化,而不是只写出一段代码。
第二道题是最小覆盖子串。给定一个字符串 s 和一个目标字符串 t,要求找出 s 中最短的子串,使得它包含 t 中所有的字符。例如输入 s = "ADOBECODEBANC", t = "ABC",输出结果是 "BANC"。这题我选择 sliding window 解法,先用一个哈希表统计目标字符串中每个字符的需求量,然后用两个指针扩展和收缩窗口。当窗口右边界不断向右移动时更新计数,一旦窗口满足条件,就移动左指针收缩长度,同时记录最优解。在 dry run 演示时,我用 "ADOBECODEBANC" 来讲解,解释窗口如何从 "ADOBEC" 扩展到第一次覆盖 A,B,C,再如何不断收缩到 "DOBEC", "OBEC" 直至找到 "BANC"。面试官会追问复杂度分析,我强调了这种方法的时间复杂度是 O(n),空间复杂度取决于字符集大小。最后面试官还问了如果字符集变得非常大或者字符串规模扩展到百万级该如何优化,我回答可以通过 rolling hash 或者双指针结合 bitmap 来降低空间开销。
这一轮让我感受到 Meta 在应对 AI 广泛使用上的策略。现在很多候选人会依赖 ChatGPT 或 Copilot 来生成代码,但 Meta 的考察方式让人无法单纯靠复制答案过关。dry run 要求你一步一步演示执行过程,清楚说明数据结构的变化,这种能力无法由 AI 替代。而且面试官还会提出followup问题,比如“如果嵌套层数很深会不会栈溢出?”、“如果目标字符串包含上千个字符应该如何优化?”,这些都必须现场思考,才能证明你真正理解了算法的核心。
最终的体会是,Meta 26ng 的 coding round 不在于题目本身有多难,而在于候选人能否快速识别标签题,写出高效解法,并且在 dry run 和追问环节保持逻辑清晰。这 45 分钟的两道题设计得很巧妙,既能筛掉只依赖 AI 的人,又能凸显真正有能力的候选人。如果要准备这样的面试,不仅要刷题,还要反复练习讲解过程,才能在关键时刻展现出真正的竞争力。