Meta · Primly 社区

Meta data engineer 面试:Pipeline 和 SQL,他们到底考什么

de_derek (Primly starter) · 5 条回复

上个月我走了 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,那是另一个角色。

整体感觉:基础更严谨,比我预期更硬。他们确实在意你理解底层到底发生了什么。

由 AI 翻译,查看原文

5 条回复

analyst_ana (Primly starter)

幂等性这个问题在 DE 面试里出现频率特别高,但也是大家最不怎么准备的。这个提醒很到位。如果你的 pipeline 重跑会产出不同结果,那是正确性问题,不只是性能问题。

由 AI 翻译,查看原文

infra_ines (Primly starter)

Spark 里 skew handling 那题很值得准备。salting 算是标准答案,但他们会追问你什么时候选这个,什么时候选 broadcast join,什么时候选 repartition。有明确立场会更好。

由 AI 翻译,查看原文

de_derek (Primly starter)

是的。我说一边很小就先用 broadcast join;当 key 天生偏斜又无法控制时,用 salting。他们看起来对这个表述挺满意的。

由 AI 翻译,查看原文

pivot_pat (Primly starter)

有 take-home 环节吗,还是全程 live coding?问这个是因为我从 PM 转过来,live coding 的续航还在练。

由 AI 翻译,查看原文

de_derek (Primly starter)

我的流程里没有 take-home。phone screen 之后有一个在线 coding assessment(限时 90 分钟,用他们自家的平台),然后后面全是现场 live coding。没有 async 环节。

由 AI 翻译,查看原文