
Meta 的 SWE VO 里,Coding 不是只写出答案就结束。两轮代码题要在白板或共享编辑器上讲清推导、边界和复杂度;产品设计接着会把问题从数据结构拉到用户路径,BQ 则会追到“你在里面具体做了什么”。四轮放在同一天,最容易丢的是表达节奏。
第一面:树上的距离节点
题目:给一棵二叉树、一个目标节点和距离 k,返回所有与目标相距 k 条边的节点。追问要求处理父节点方向,且结果不能重复。
解答思路:先 DFS 建立 parent 映射,再从目标节点做分层 BFS。队列里的元素是节点和当前距离,访问相邻节点时同时考虑 left、right、parent 三个方向,用 visited 防止绕回去。弹出距离等于 k 的节点后收集本层,不再向下扩展。讲代码时把空树、目标不在树中、k=0 和叶子节点四个边界点说出来。时间是 O(n),额外空间也是 O(n)。
第二面:社群活动报名工具的产品设计
题目:设计一个面向校园社群的活动报名工具。组织者能创建活动、设置容量和候补队列;参与者可以报名、取消,并在名额释放时收到结果。追问包括多人同时抢最后一个名额,以及同一用户重复点提交。
解答思路:先确认活动是否允许多场次、取消截止时间和通知时效。核心表拆成 event、registration、waitlist 和 notification,报名接口携带幂等键;数据库事务里锁定活动容量并写入报名记录。容量满后写入候补队列,取消操作发布事件,由异步 worker 按排队顺序补位。读多写少的活动页可走缓存,报名和取消仍直接写主库。Roundz 的 Meta E5 VO 轮次记录也把 Coding、系统设计和行为面放在同一个 loop 里,准备时要把接口语义讲完整。
第三面:跨团队延后上线的 BQ
题目:说一次你不同意既定上线日期的经历。面试官继续追问:你拿了哪些数据、谁支持你的判断、最后怎样处理分歧?
解答思路:不要从“大家意见不同”讲起,直接给背景和自己负责的部分。例如,发布前发现关键路径的错误率在灰度流量上升,先复现并量化影响,再列出两个方案:按原日期上线但移除高风险功能,或延后一周补齐监控和回滚。说明自己如何把结论写成短文档、找产品和依赖团队对齐,并承担后续的回归与复盘。答案里保留一个不完美之处,例如早期没有把容量压测排进计划,可信度会更高。
四轮连在一起时怎么准备
- Coding 题先复述输入、输出和限制,再落代码;每写完一个循环就说清不变量。
- 产品设计不要急着画组件图,先锁定用户动作和异常路径。
- BQ 准备两段自己主导过的项目:一次把风险顶住,一次把协作关系修好。
FAQ
Meta SWE VO 的 Coding 轮要手写到什么程度?
要把核心逻辑写完整,并能用一两个小输入做 dry run。变量命名、判空、去重和复杂度解释会直接影响面试官是否容易跟上。
产品设计轮只讲高层架构够吗?
不够。至少明确一个写接口的幂等方式、一条异步链路和一处容量或一致性的取舍。Meta 的 Software Engineer 候选问题记录里也能看到产品与系统讨论会落到具体实现。
参考来源
- Meta E4 Software Engineer Onsite 轮次记录
- Meta Software Engineer E5 Virtual Onsite 记录
- Meta Software Engineer 候选面试问题
关于 CSOFFERPREP
进 VO 之前,可以找 CSOFFERPREP 做实时面试助攻和备考辅导。导师来自一线工程团队,能陪你把 Coding 讲解、产品设计和项目故事练到更顺。无论是 OA辅助、OA 辅导、VO 辅助、VO 模拟面试、VO 辅助还是系统设计辅助,都可以获得更有针对性的准备方案:CSOFFERPREP · 服务详情


