去年秋天我走了 P&G 的 senior SWE 流程,目标是他们大概会叫 senior/staff-adjacent 的职位,在 supply chain tech platform team。System design 是我需要重点准备的一块,网上资料也不多,所以把我看到的写下来。
形式: System design 这一轮 45 分钟,线上进行。一位面试官,是做 senior engineering 的人。他们用一个协作白板工具(我记得是 Miro)。没有提前发任何预读材料或题目说明。
给我的题: 设计一个面向全球分销网络的实时库存追踪系统。非常符合 P&G 的物流规模。他们希望我处理规模(会抛出类似「每小时 1M+ warehouse scans」这种数字)、eventual consistency vs. strong consistency 的取舍,以及区域性故障怎么处理。
他们在意什么: 我能在他们没问之前就主动讲清楚 tradeoff。别等提示。选一个方向,给出理由,也说清楚你牺牲了什么。 Event-driven architecture 会自然聊到。Kafka-like streaming vs. polling 是明确讨论点。 他们对故障场景的追问比我预期更深,尤其考虑到这不是一家 cloud-native 公司。
他们不太在意什么: 完美的 API 设计。精确的数据库 schema。他们更要大图景和推理过程,不要完整规格。
给 senior/staff level 候选人的建议: P&G 不是典型 tech 公司。他们没有纯 tech 组织那种工程文化。所以门槛不是「你是不是按 Google 的方式设计」,而更像是「你能不能清晰沟通、做出有理有据的决策,并理解在全球消费品规模下运营的现实约束」。说实话,这个标准挺公平,也挺落地。
我后来问了反馈,recruiter 说我的 trade-off 表达很强,但数据 durability 这块还可以更深入。记下来供参考。