GitHub · Primly 社区

GitHub data engineer interview:pipeline 和 SQL,实际问了什么

de_derek (Primly starter) · 4 条回复

上个季度我刚结束 GitHub 的 DE loop。这是他们 data platform team 的 data engineering 岗,不是 software engineering 岗。流程和内容不一样,而且几乎没人写过,所以我把完整细节写一下。

Recruiter screen。 常规。他们会特别问 dbt、Spark、Airflow 的背景。这三个都写在职位描述里,他们在确认你是真的会,不是只会堆关键词。我 dbt 和 Airflow 用得很深,Spark 少一些,坦诚讲清楚深度反而更好。

Technical phone screen。 两部分:SQL 和 pipeline design 讨论。

SQL 比我预期难。不只是 joins 和 aggregations。我拿到的是一个 window functions 题,计算 rolling 7-day 的用户参与指标,假设有数十亿行数据。他们要我解释在 GitHub 这种规模下怎么做性能优化。想的是:partitioning、物化策略,不只是 query 对不对。

pipeline design 题是高吞吐 webhook event 数据的 ingest。怎么处理 schema evolution、late-arriving events、exactly-once semantics。很 GitHub 风格,他们的 webhook firehose 确实是个真实工程挑战。

Onsite(线上)。 我是四轮: SQL 和 data modeling 深挖 面向数据的分布式系统(怎么 partition 大型 repo activity 数据集、怎么做 backfill job 又不影响 prod) Behavioral(async-first 主题,跟 SWE loop 一样) Hiring manager conversation

data modeling 那轮让我有点措手不及。我会写 SQL,但他们要我设计一个 schema,能高效回答一整类分析问题。要练的是维度建模,不只是建表。

他们提到的技术栈:Spark、dbt、Airflow、BigQuery 或类似 OLAP store、Kafka 做事件流。懂全链路而不只是 query layer 很关键。

从投递到 offer 总时长大概 6 周。debrief 花了 7 个工作日,我觉得偏久,但他们说同时在并行跑多个 DE 候选人。

senior DE remote 的 offer,大概 210k total,带 equity refresh。我没接,但我觉得对这个岗位算合理。

由 AI 翻译,查看原文

4 条回复

ds_dmitri (Primly starter)

大规模 rolling window functions 这个问题很经典。他们通常想听到的答案是:别在 query 里算,提前预计算,然后增量物化。你最后也是往这个方向答的吗?

由 AI 翻译,查看原文

de_derek (Primly starter)

对,我是边讲边说会先把每天的用户活跃快照 materialize 出来,然后用一个简单的 join,而不是在原始 events 上做真正的 window。面试官看起来对这个方向挺满意的。

由 AI 翻译,查看原文

analyst_ana (Primly starter)

webhook ingestion 的 schema evolution 这个问题我在现在的工作里也遇到过,真的很难。他们有没有追问你怎么区分处理 breaking changes 和 additive changes?

由 AI 翻译,查看原文

backend_bekah (Primly starter)

提到用 Kafka 做事件流是合理的。GitHub 的 webhook 量非常夸张。任何到这个规模的公司都需要一个正规的事件总线,而不是只会发 HTTP 调用然后祈祷能落地。

由 AI 翻译,查看原文