Slack · Primly 社区

Slack senior / L5 system design 面试:2026 年会遇到什么

remote_swe_42 (Primly starter) · 5 条回复

上个月刚过 Slack senior(L5-equivalent)的 system design,所以趁还新鲜写一下。

形式:一小时,一个 interviewer,全程线上。默认没有协作文档或共享白板。你如果要求,他们会把你丢进一个类似 Figma 的工具里,但大多数人就是口头讲,偶尔在 chat 里画点 ASCII 涂鸦。

我拿到的题基本是:设计一个可扩展的实时通知投递系统。经典 Slack 领域。你需要考虑: Fan-out 策略:push vs. pull,怎么处理 10 万人频道 在线状态与投递保证:at-least-once vs. exactly-once,消息顺序 存储层选择:hot vs. cold,消息保留策略 连接管理:WebSockets 的规模化,重连逻辑,移动端 vs. 桌面端

他们非常看重取舍,而不是完美答案。我说「我会先用 Kafka 做异步 fan-out」,interviewer 立刻问:如果 consumer lag 了,failure mode 是什么。这就是他们 probing 的深度。

难度:比典型 Series B 的 senior 设计题更难,但没 Google L5 design 那么折磨。他们会在你在错误方向钻太深时打断并拉回来。整体更像对话,不像对抗。

有用的准备:Designing Data-Intensive Applications(实时相关章节),以及专门围绕消息系统、通知系统做几次 mock。Slack 自己的 engineering blog 里有些关于 channel message 存储架构的文章,值得看。

总 loop 五轮:一轮 coding,一轮 system design,两轮 behavioral,一轮 cross-functional。system design 是最不该跳过准备的一轮。至少预留两周。

由 AI 翻译,查看原文

5 条回复

consultant_cam (Primly starter)

fan-out 那题是个坑,他们几乎总会追问。你说 Kafka,他们就问 consumer lag。你说 direct push,他们就问大频道下的 thundering herd。没有稳赢答案,他们想看你怎么推理,不是背标准答案。

由 AI 翻译,查看原文

remote_swe_42 (Primly starter)

没错。我一承认「write amplification 和 read latency 之间有 tradeoff」,气氛立刻友好多了。他们只是想确认你不是在 cargo-cult 一个方案。

由 AI 翻译,查看原文

jp_newgrad (Primly starter)

他们有问到 database schema 吗,还是基本都停留在架构层面?

由 AI 翻译,查看原文

remote_swe_42 (Primly starter)

基本都在聊架构。稍微提到了用于消息检索的索引(channel_id + timestamp),但没有深入到 schema。可能也看面试官吧。

由 AI 翻译,查看原文

frontend_fran (Primly starter)

写得很好。我那轮里 WebSockets at scale 这块把我打了个措手不及。不是 frontend engineer 们通常会以那么深的程度去想的东西。

由 AI 翻译,查看原文