刚结束 Workday 的 onsite,对应 senior 的 SWE 职位(他们大概映射到其他公司 L5)。专门分享 system design 那轮,因为我之前几乎找不到细节。
题目大概是:设计一个 payroll processing system,支持 100k 员工,夜间跑 batch jobs,并且能把错误近实时地展示给 HR admins。典型 Workday 领域,毫不意外。他们是 HCM / ERP 公司,所以凡是涉及 workforce data、benefits 或财务报表的题都可能出现。
面试官在意的点: 先做 data modeling。 我还没开始讲服务怎么拆,他们就让我先过一遍核心实体:Employee、pay period、earning code、deduction。他们对这个领域很熟,如果我的 schema 没覆盖 mid-period termination 或 retroactive pay adjustment 这种情况,会直接 push back。 可靠性优先于吞吐。 我一直在讲吞吐优化,他们一直把我拉回 durability:如果 batch job 部分失败怎么办,怎么避免给同一个人重复发薪,payments API 里的 idempotency keys。 运维和可观测性。 他们会明确问:HR admin 怎么知道哪里失败了,怎么触发 rerun。只说监控不够,他们要具体方案:error queue、一个 UI 显示受影响的员工记录、重试逻辑。
我觉得你不需要知道他们的具体技术栈(他们混用自研云平台、AWS,还有一些 legacy on-prem,取决于客户层级)。你需要的是扎实的分布式系统基本功,以及对金融完整性和 idempotency 的真实熟悉。
senior 会有两轮 system design。一轮是上面这个,第二轮更像情景题:你已经设计好了系统,现在客户报 Q4 payroll 有差异,带我走一遍你会怎么 debug。更偏运维 / incident-response。
整个 onsite 共 5 轮。我是去 Pleasanton 线下面的。onsite 的拆分我在另一个帖子里写了,如果你需要的话。