我在 1 月参加了 OpenAI onsite(线上)。两天共五场。下面是无滤镜版本。
Structure:
Day 1: Coding round 1(45 min,一个题,CoderPad 现场写) System design(60 min,一个设计题,Excalidraw) Cross-functional / PM-adjacent round(45 min)
Day 2: Coding round 2(45 min) Behavioral / values(45 min)
每场之间休息很短。到第 4 场时我脑子基本快烧干了。这点很现实:两天的线上 onsite 在精力管理上,和一天的线下 loop 完全不一样。
Coding rounds: 两场都是「medium 起步然后逐步加难」。第一场是个 tree 题,从遍历开始,最后要我给 priority queue 实现一个自定义 comparator。第二场是图上的最短路,但他们在 25 分钟时加了一个 dynamic edge-weight constraint。两次面试官都一开始就告诉我:'we're going to add complexity, that's expected, we want to see how you adapt.'(我们会加复杂度,这是预期内的,我们想看你怎么适应。)
System design: 我另写过一篇,这里简单说:设计一个分布式 rate limiter。会深挖 storage layer(Redis vs. 自己做 token bucket,为什么,tradeoffs),也会深挖在 API gateway layer 怎么处理 edge case。60 分钟过得很快。
Cross-functional round: 一个 PM 问我如何在需求不完整的情况下交付功能。'Here's a hypothetical: your team ships an experimental feature but usage data is ambiguous. How do you decide whether to invest further or cut scope?'(假设:你的团队发布了一个实验性功能,但使用数据很模糊。你如何决定继续投入还是砍掉范围?)这不是 coding 题。他们想看 engineering judgment + product thinking。没有标准答案,但如果你的框架不自洽,他们会看出来。
Behavioral round: 大概 4 个问题,STAR 格式,重点在 ambiguity 和 judgment calls。不是那种泛泛的「讲讲冲突」问题。细节看我其他帖子。
Debrief timing: 8 天后 recruiter 给我打电话。她说 debrief 进展不错,并问了 offer 偏好(equity vs. cash balance)。同一通电话给了 verbal offer。正式 written offer 在 4 个工作日后。
从开始到 offer:大概 7 周。当时感觉很漫长,回头看还算合理。