今年早些时候走完了 Workday data engineer 的面试流程。岗位在内部 data platform team(不是面向客户的产品,而是支撑他们自家 analytics 的基础设施)。分享一下他们考了什么。
coding / OA: 标准 HackerRank。一道 SQL,一道 python。python 题是处理一份扁平的事件列表,重建 session 层级。中等难度。时间限制没问题。
technical phone screen: 30 分钟,一道 SQL + 一个概念题。SQL 是:给一张 employee 状态变更表(start、end、event type),写查询找出过去 90 天每天各部门的当前 headcount。典型 date-spine / SCD 问题。我用了 calendar table CTE。他们没让我优化,但对这个思路点头。
onsite:4 轮。
Pipeline design 轮: 设计一个数据 pipeline,从多个 Workday tenants 接入 HR 系统事件(入职、转岗、离职),去重后供给一个实时 analytics dashboard。他们在意:exactly-once vs at-least-once 的取舍、跨 tenants 的事件顺序、以及当 Workday 给 API 加字段时如何处理 schema drift。整体是 kafka + flink 这类对话,但他们不执着于具体技术,概念更重要。
SQL depth 轮: 偏高级。基于 partition 的计算、增量聚合、用 lag/lead 检测状态变化。有一题本质是:找出在一个自然年里换部门超过两次的员工。schema 是原始 event log,不是干净的状态表,你得从事件里还原状态。
data modeling 轮: 维度建模 vs 规范化,分别什么时候用;怎么给组织架构建 slowly changing dimensions。他们明确提到企业规模的组织层级很混乱,问我会怎么处理。我讲了 adjacency lists vs closure tables vs nested sets。最后一个引起了一些互动。
behavioral: 标准。
整体:SQL 比我做过的大多数 DE 面试都更难。pipeline design 那轮很扎实、很实用。没有太多奇怪陷阱,就是考真实深度。