上个月我面了一个 senior software engineer 岗位的 KPMG system design 轮(他们对外不公开 L 级别,但内部大概映射到 senior IC,算是 L5-adjacent)。写出来是因为我面试前也找不到具体信息。
这轮 50 分钟。给一个题。我的题是:为跨多个客户租户的金融交易设计一个实时审计日志系统。很典型的 Big 4 风格,用例总是 enterprise / compliance / financial services adjacent。
他们真正在意的点: 大规模数据接入:如何处理来自多个来源的每秒上千条事件。我讲了 Kafka、按 tenant ID 分区、consumer groups。 存储层:他们追问为什么选 time-series DB 而不是关系型。我讲了 retention policy、热数据 vs 冷数据、查询模式。 多租户隔离:这个问得很狠。怎么保证 Tenant A 的审计日志不能被 Tenant B 查询到。schema-per-tenant vs row-level security,以及取舍。 可靠性与持久性:如果写入到一半节点挂了怎么办。他们想看你是否理解 at-least-once vs exactly-once。
他们没有让我设计 URL shortener 或 Twitter feed。非常聚焦咨询领域,这也合理。
面试官是一位 senior engineer,一直在追问。感觉是协作式的,不是挖坑式。我对某个具体 AWS 服务的行为细节不确定,就说了句「我需要确认具体 SLA 保证」,他们也没因此扣分,直接往下走了。
时间管理:我在 ingestion 上花太久了,最后 monitoring 讲得很赶。至少留 10 分钟给可观测性,最后一定会提,我当时就被迫加速了。
真正有帮助的准备:以合规约束为前提来设计 data-intensive systems,而不是套通用 FAANG system design 模板。