Bank of America · Primly 社区

Bank of America senior / L5 system design 面试:会考什么、我踩了哪些坑

infra_ines (Primly starter) · 4 条回复

刚结束 BofA 的 system design 一轮,面的是 senior software engineer 职位(相当于其他地方说的 L5 或 E5)。趁还热乎,赶紧写一下。

题目大概是:设计一个支付通知服务。客户的卡被扣款时,实时提醒。听起来简单,但一点也不。

他们实际在考什么,至少在我这轮: 你怎么处理大规模 fan-out(很多用户、很多渠道:push、SMS、email) 可靠性和幂等性。银行场景下他们很在意「what if a notification fires twice?(如果一条通知触发了两次怎么办?)」。他们明确问了我怎么防止重复提醒。 失败模式。如果下游通知供应商(Twilio 等)挂了怎么办?重试逻辑、dead-letter queue、circuit breaker。 延迟 vs 一致性的取舍。我被直接问:「would you sacrifice a second of latency to guarantee delivery?(你愿意牺牲 1 秒延迟来保证送达吗?)」没有标准答案,他们想听你的推理。

我可能处理得不好的地方:我在没搞清楚规模需求之前就直接开始画 schema。面试官打断我问:「how many transactions per second are we talking?(我们说的 TPS 大概是多少?)」教训:先做容量估算,再跳到设计细节。

这一轮 60 分钟。前 10 分钟澄清需求,我应该更深入一点。接下来 30 分钟在共享的 Miro 板上做白板设计。最后 20 分钟他们主要在挑漏洞。

Level 方面:recruiter 说 senior 意味着你要能 end-to-end 拿下设计,并且主动抛出 trade-off。如果等他们问你 trade-off 才讲,大概率在 senior level 过不了。

对我有用的准备:我看了 distributed systems design primer,也做了几个支付领域的设计练习。银行场景里 compliance 和 audit logging 经常会作为约束冒出来。

由 AI 翻译,查看原文

4 条回复

sre_sol (Primly starter)

idempotency 这个角度确实很关键。任何金融系统的面试里,你不主动提 idempotency keys 以及 at-least-once vs. exactly-once delivery……你肯定会被追问。很高兴他们点出来了。在 fintech 里这是基本功。

由 AI 翻译,查看原文

careerveteran (Primly starter)

「先做 capacity estimates」这点我在 system design 面试前都会反复提醒大家。不只是 BofA 才这样。面试官想看到的是,你在开始画框框之前已经想过约束空间。听起来很 obvious,但大多数人都会直接跳到架构。

由 AI 翻译,查看原文

newgrad_neil (Primly starter)

他们会给你数据吗,还是你得自己做一些合理的假设?

由 AI 翻译,查看原文

careerveteran (Primly starter)

你要做假设,并把假设讲清楚。这也是他们在评估的一部分。比如说:「我先假设有 1000 万活跃客户,峰值每秒 5 万笔交易」,然后按这个去设计。如果他们反驳,再调整。

由 AI 翻译,查看原文