上个月参加了 EY 的 system design 面试,岗位是他们 technology consulting practice 的 senior software engineer role。我之前在产品公司,所以想分享一下差异。
简单说:有 system design,但比你在 FAANG 或增长期科技公司那种真正的 L5/senior loop 看到的要轻一些。
我被问到的是:设计一个实时 dashboard,用来聚合来自多个 client 系统的数据。面试官更关心整体架构,而不是对某个组件做很深的取舍。他问了数据接入、怎么处理延迟要求、会考虑哪些数据库。我们也简单聊了 caching。全程没有让我算吞吐量,也没有让我深入推演故障场景。
我觉得这跟 EY 的背景很一致。他们做的系统很多是交付给客户的,不是内部超大规模基础设施。他们想知道你能设计出一套自洽的方案,并且能对非工程背景的 stakeholder 讲清楚。关于客户沟通这点他们还明确问了:「how would you explain this to a client's CTO who isn't deep in the tech?(如果对方是一个技术不太深的客户 CTO,你会怎么解释这个方案?)」
几个进去前值得知道的点。第一,他们更看重广度而不是深度。能把全栈画出来、在高层次讨论取舍,比起花十五分钟讲 consistent hashing 更有用。第二,cloud 熟悉度比两三年前更重要。我几次设计讨论都触到了 Azure(EY 跟 Microsoft 关系很深)。第三,behavioral 的框架会以一种纯科技公司不太会有的方式揉进技术面。他们可能在你画到一半时问:如果客户不同意你的架构选择,你会怎么处理。
如果你来自产品公司:把技术强度调低一档,但把沟通和咨询式表达打磨锋利。这两者结合,才是他们真正想招的。