我走了 Accenture 的 loop,目标是他们的 Technology Senior Manager track。如果你纯工程背景过来,这大概相当于 senior/principal IC 的对应级别。这里分享下 system design 那一轮实际长什么样。
题目:为一个大型企业客户设计通知服务。每天数百万事件,多渠道(email、SMS、push、webhook)。他们明确说要把这当成真实的客户交付来设计。
这个 framing 很关键。这不是 FAANG 那种「design Twitter(设计 Twitter)」(设计 Twitter)靠分布式系统小聪明赢一轮的面试。在 Accenture,面试官更在意: 我如何把 trade-off 讲给非技术的客户方 stakeholder 听 架构如何融入既有的 enterprise 生态(SAP、Salesforce、老的 ESB 都提到了) 运维层面的关注点:监控、SLA、升级路径 成本。他们真的会问 AWS 上 SQS/SNS vs. 自建 Kafka 方案的云成本 trade-off。真金白银。
分布式系统的深度比我在 Google 或 Meta 的 loop 里预期的要浅。他们不需要我把 99.9 分位的 tail latency 优化到极致。他们想确认我能设计一个可维护、可解释的东西。
让我翻车的一点是我忘了考虑客户侧的限制。他们问:「What if the client's security team won't allow outbound webhooks?(如果客户的安全团队不允许 outbound webhooks 怎么办?)」(如果客户的安全团队不允许 outbound webhooks 怎么办?)我得在中途把设计改掉,那一刻挺尴尬的。重点是:要考虑企业采购和安全约束,不只是技术约束。
时长:45 分钟。面试官是一个 principal engineer,交付背景很强,不是纯 research 类型。
准备建议:优先练 system design 的沟通能力,而不是纯架构深度。知道怎么画清晰的图,用简单英语解释,并能处理 scope pushback。