上个月我走了 Meta data engineering 的 loop,面的是基础设施侧的 DE(Hive/Spark/Presto 技术栈)。分享细节,因为网上很多帖子把 DE 和 DS 面试混在一起讲,但这俩真的不一样。
Meta DE 面试考什么:
SQL 是第一位。但对 DE 来说,他们会更狠地追性能。不只是 "write the query(写出这个查询。)",他们还想听你对 "this query runs for 3 hours on a 50TB table, why, and what do you do?(这个查询在 50TB 的表上跑了 3 小时,为什么,你会怎么做?)" 的回答:partition pruning、避免 cartesian joins、列式存储(为什么 Parquet)、理解 Spark 里的 shuffle 成本。
pipeline design: 这轮相当于 DE 的 system design。他们给我的题是:"design a pipeline that ingests clickstream data from mobile apps, enriches it with user metadata, and produces a daily user-level aggregation table. SLA is 4 hours after midnight.(设计一个 pipeline:摄取移动端 app 的 clickstream 数据,用用户元数据做 enrich,并产出按用户聚合的日表。SLA 是午夜后 4 小时内完成。)"
关键点:idempotency(如果 2am job 重跑会怎样?)、late-arriving data 处理、告警策略、测试策略。我在白板上画了一个 DAG,逐个 node 讲。他们在意的是你考虑 failure modes,而不只是 happy path。
coding: DE 也还是要 coding。我的不是 leetcode-hard。一题是字符串解析,抽取某种日志格式;另一题更像数据转换。他们在意的是你能写出干净的 Python 或 Scala,不是你能在网格上做 DP。
他们问到的工具点: "how does Spark handle skew and what do you do about it?(Spark 如何处理数据倾斜,你会怎么应对?)" "when would you choose Presto over Hive?(什么时候你会选择用 Presto 而不是 Hive?)" "what does watermarking mean in streaming and when do you use it?(流式计算里 watermarking 是什么意思,你什么时候会用它?)"
你不需要每个都用过,但理解概念上的 tradeoff 是 senior 级别的基本功。
让我意外的点:他们几乎没问 ML infra。这是纯 data engineering loop。如果你是 MLE 背景、期待聊 feature store 和 training pipelines,那是另一个角色。
整体感觉:基础更严谨,比我预期更硬。他们确实在意你理解底层到底发生了什么。