这个月初我走完了 Allstate 的完整流程,面的是 Senior SWE(Northbrook, IL,支持 remote)。趁新鲜把 system design 那轮写一下,因为针对性的内容不多。
先说:Allstate 对外不公开 L-number,但内部会对应到一个 band。我面试的 level 大概相当于其他公司说的 L5 或 Senior IC。我问 recruiter 的时候对方确认是「senior contributor」。
system design 这一轮本身
一小时,两位面试官,一位来自我将加入的 team,另一位来自邻近的平台团队。大概 5 分钟后给题:设计一个实时 claims-status 通知系统。题目明显是保险领域,这也合理。你不需要懂保险,但要能在受监管、高吞吐的环境里讲清楚 event-driven architecture。
聊到的点: 10-15 million 活跃保单,每个都在风暴事件期间产生状态更新(想象 CAT loss 场景),怎么处理 Kafka vs 更简单的方案。他们会追问吞吐和延迟的权衡。 数据持久层:他们关心你会选 SQL 还是 NoSQL,以及原因。我选了 Postgres 做核心 claims ledger(审计链路、合规),Redis 做 status 的热读 read-through cache。反应不错。 通知 fanout:push vs poll,mobile vs email。他们明确问了 idempotency。
大概 40 分钟画图(我共享屏幕,他们没用白板工具,我在 Excalidraw 里画)然后 15-20 分钟 Q&A 和深挖。
这轮没有 Leetcode,纯 system design。
他们看重什么
合规被提了两次。Allstate 是强监管公司,他们想看你是否理解这对数据驻留、审计日志、回滚能力意味着什么。如果你做过 fintech 或 healthcare 会很熟。如果没有,至少花 5 分钟想想:设计一个每次状态变更都必须可审计的系统,意味着什么。
总体难度:不比一家靠谱科技公司 senior 轮更难。如果你能做 Google L4-L5 system design,这个是同档。保险语境是主要的「不同点」。
如果你在准备,欢迎问细节。