刚过 senior SWE 职位的 onsite,属于他们 technology group。system design 是最有意思的一轮,所以写个总结。
题目:设计一个实时交易监控系统。在大规模支付流里检测异常,保存审计轨迹,把告警展示给分析师。
这是个挺好的 system design 题,逼着你思考: 高写入吞吐(他们明确说「每天数百万笔交易」) 欺诈检测的延迟要求(亚秒级 vs batch) hot/warm/cold 分层存储的取舍 你怎么让 audit trail 具备防篡改特性
我先从需求澄清开始,他们看起来挺认可。面试官会不断追问,不是只听你讲,我挺喜欢这种。ta 追问了 anomaly detection 服务挂了怎么办、怎么处理 backpressure、在这个规模下你会选 Kafka 还是更简单的队列。
我画的是比较标准的事件驱动架构:producers -> Kafka -> 带检测逻辑的 consumers -> alerts -> PostgreSQL 做持久化存储,再加一个 read replica 给分析师 dashboard。他们大体满意,但追问 Postgres 在这个写入量下是否撑得住。这个点问得很好,我就转向 time-series DB 的选项并讨论取舍。
准备方面:常规的 Grokking / Designing Data-Intensive Applications 这类材料是对的基础。但 BNY 的题通常有金融服务的味道:幂等性重要、审计轨迹重要、合规会作为约束出现。面之前值得先按这些角度想一遍。
面试官是一个 principal 工程师,在那边 8 年了。问题很有深度,不是故意刁难。整体氛围挺协作。
有一点:他们用的白板工具不是 Excalidraw 或 Miro,是内部的一个东西。用起来没问题,但你画图尽量简单,别指望花哨的图形。