刚在两周前结束 loop,趁记忆还新鲜先写下来。L5 / senior SWE,投的是偏 infra 的团队。
Meta 的 system design 轮是 45 分钟。他们叫它「system design」但其实是一轮里塞了两部分。前 15 分钟左右基本都是热身,确认你会做问题范围界定。就算你很焦虑想直接跳到方案,也别跳过 scope。
他们真正看重的: 规模。就是 Meta 级别的规模,不是「我们有 1 万用户」那种规模,是「design the newsfeed for 3 billion users(为 30 亿用户设计 newsfeed)」那种规模。你需要聊 sharding、fanout、cache invalidation、CDN 放哪。 取舍。他们想看你做决定并把理由讲清楚,而不是一直骑墙。「我这里会用 eventual consistency,因为……」比「这要看情况」强。 数据模型。尽早把 schema 画出来,能体现你会用数据结构把设计钉住。
我的题大概是「design a notification system.(设计一个通知系统。)」,很经典。但很多人失败在没够快切到有意思的部分。尽快讲到:写路径、读路径、存储选型、怎么处理投递保证、以及针对粉丝数很高的发送方的 fan-out 策略。
他们实际用的形式:白板(远程的话就是虚拟白板,miro 或 figma,有时甚至就用 google doc)。他们希望你主导。沉默很糟,保持输出。
级别说明:L5 他们期待你能提出整体架构,主动点出 failure modes,并且对存储(SQL vs. NoSQL vs. cache layer)有明确观点。L6 他们要跨系统思考。如果你投 L6,开场就默认其他系统都已经存在,你的东西要能接进去。
一个意外点:我面试官在我画到一半时打断说:「ok PM 刚改需求了,现在你得要 real-time。」这个 pivot 是故意的。展示你能适应,而不是当场崩。
我没来得及讲完三个「future optimizations」,但他们似乎不在意。我讲到的那几个很扎实。
整套 loop:2 coding + 1 system design + 1 behavioral(在 Meta JEDI 轮是单独的,不会塞进 behavioral 里)。