我今年早些时候走完了 Netflix data engineer 的 loop,面的是 senior 的 DE 岗。分享一下,因为网上关于这个 loop 的信息比他们 SWE 流程少太多。
总轮次: phone screen + 4 轮技术面 + culture contribution
核心技术方向:
SQL: 有两轮 SQL 很重,而且是真的重。Netflix 用 Presto/Trino 和 Spark SQL。我被问到的题需要 window function、lateral join、以及在聚合里处理 NULL 传播。有一题是写一个 query 找出用户在一次 session 过程中 streaming 质量变差的情况,这题同一个 query 里既要 self-join 又要 window function。我做 DE 7 年了,这轮也挺难。
pipeline 设计 / 架构: 让我设计一个 batch pipeline,每天 ingest 10TB+ 的事件数据,转成 analytics 可用的形式,并且处理 late-arriving record 和 schema evolution。他们在 late-arriving 那块问得很深:一个事件晚到 48 小时你怎么处理?你的 pipeline 会重跑吗?成本是什么?你怎么做这个决策?这非常贴近 Netflix 的真实问题场景,他们要处理全球设备上报的数据,网络状况差异很大。
数据建模: 有一轮专门聊维度建模和 slowly changing dimension。我被要求设计一个数据模型,用来跟踪用户内容偏好随时间的变化,同时要处理 plan tier、地理位置、设备类型的变化。面试官想知道每个维度我会用哪种 SCD type,以及原因。
工具熟练度: Spark、Airflow、dbt 在讨论里自然会出现。我没被要求写 Spark 代码,但会问 partition 策略、shuffle 优化、以及你怎么调一个 Spark job 的 OOM。
给准备的人一句话: SQL 比你想的更难。练一下真正兼容 Presto 的 window function。pipeline design 需要体现运营成熟度,不只是画架构图。data modeling 看起来老派,但 Netflix 的 analytics infra 很深,他们很在意。