上个月刚面完 capital one 的 senior SWE 流程。三个 onsite 轮次加一个 take-home。system design 是我最焦虑的一轮,所以这里写下实际发生了什么。
题目大概是:设计一个实时信用卡交易的欺诈检测 pipeline。不是多独特的题,但对一个处理数亿交易的公司来说非常贴合业务。面试官相当于 E6,看起来已经用这个题问过上百次了。
他们最在意的点: 你怎么处理规模。他们想要具体数字。别说“很多交易”,要说“峰值 5,000 TPS,节假日周末还要有 burst capacity” 数据一致性的取舍。你在 fintech 场景里,eventual consistency 需要理由。当我说 kafka at-least-once delivery,但没解释如何处理重复的 fraud alerts 时,他们反驳得很猛 延迟要求。欺诈检查必须在交易 approve 之前完成,所以 p99 sub-100ms 很关键。他们要我把 call stack 走一遍
他们比我预期更不在意的点: 任何东西的深度 leetcode 式优化 具体选什么基础设施(AWS vs GCP、kafka vs kinesis),只要你能讲清 trade-off 缓存层(我提了,但他们没追问)
45 分钟节奏:5 分钟自我介绍 / 澄清问题,30 分钟设计,10 分钟“哪里会坏掉”的场景题。最后这部分很多人会翻车。提前准备一个 failure story。
真正有用的准备:分布式系统入门资料、Designing Data-Intensive Applications(Kleppmann 那本书),以及跟一个懂 fintech 的朋友做了一次 mock。这个领域很重要。有 fintech 背景就用力讲。
还有一件事:他们确实在设计轮最后问了我的 comp 预期。时机很怪,但提醒一下。