上个月刚结束 Mistral 的 DE loop。趁还新鲜写下来,因为说实话,网上几乎没有他们 data engineering 面试流程的信息。
背景:我做 DE 大概 7 年,主要在中型科技公司做 event streaming 基础设施。投的是他们叫 Data Infrastructure Engineer 的角色。
Recruiter screen 很短,20 分钟。她确认我有 hands-on 的 pipeline 经验(不是那种「我听说过 Spark」),还问我能不能接受 Paris 混合办公加远程的安排,这个点提了好几次。Mistral 明显希望即使你在美国远程,也要跟法国时区有重叠来组团队。
Technical screen(1 小时) 先 SQL。题目是 model inference logs:给一张表,列包括 modelid、userid、requesttimestamp、inputtokens、outputtokens、errorcode,写 query 找过去 7 天每个 model 每小时的 p95 latency,且排除 error_code 不为 null 的请求。然后问如果表有 5 亿行,你会怎么优化:索引策略、分区、materialized views。都挺标准,但你得非常熟。
接着切到 pipeline 设计。他们给场景:从 Kafka topic ingest model usage events,50k events/秒。有些事件会晚到,最多 2 小时。设计一个 pipeline:计算 per-user 的每小时用量总和,延迟不超过 2 小时,能处理 late arrivals,且出问题时能从头 replay。重点关注:watermarks、windowing 策略(用 event time 不是 processing time)、幂等写入、以及 event 格式变化时怎么处理 schema evolution。
我讲了 Flink,他们也接受 Spark Structured Streaming。题目考的是概念,不是特定工具。
Onsite(5 个 session,全远程) System design、一轮 pipeline debugging、另一轮 SQL(窗口函数更重)、behavioral、以及一轮「data modeling」,更像是给 multi-tenant 用量追踪系统做 schema 设计。
Debugging 那轮挺有意思。他们给我看一个 Spark job,跑是能跑但越来越慢(join 的 stage skew)。他们想看我能不能读 Spark UI 来定位问题,这是比大多数面试更实用的技能。
Behavioral 比较轻松。但他们会追问:讲讲你负责的某条 pipeline 曾经导致下游数据质量问题的一次经历。他们想听你确实理解自己工作的下游影响,而不是「我写了条很棒的 pipeline」。
整个流程大概 6 周。节奏稳定,不赶。他们看起来做决策很谨慎。