上个月刚结束 Atlassian data engineer 的面试 loop,来汇报一下。
先说明:我没拿到 offer。但他们给了很细的反馈,意外地挺有用,所以我把流程和事后的反馈都分享出来。
DE 的 loop 结构(senior level,约 7 YOE): recruiter screen SQL 和 data modeling 轮 pipeline design 轮 behavioral 轮 cross-functional 轮(后期临时加的,有点把我打了个措手不及)
SQL 和 data modeling(60 分钟): 更偏建模,不是纯 SQL。他们给了一个场景:设计一个数据模型,用来跟踪 Confluence 和 Jira 的用户活动。我需要把它 normalize,找出关键实体关系,考虑 user account state 的 slowly changing dimensions。然后在这个模型上叠加 SQL 题:基于该模型,怎么写 query 来算每个产品的 weekly active users,带 30 天 trailing window。
面试官主要在校准我怎么思考 grain(row-per-event vs. 预聚合的 fact tables),以及我能不能讲清 normalization 和查询性能之间的 trade-off。
pipeline design 轮(60 分钟): 设计一个 pipeline:接 Jira 的 webhooks,处理并 enrich 事件,落到 data warehouse 做分析。本质是个 streaming ingestion 问题。他们关注:idempotency、schema evolution、处理 late-arriving events、monitoring。我给的方案是 Kafka 到 BigQuery,中间用 consumer service。最深入的是 idempotency 的讨论。
我被扣分的点: 他们的反馈是我对工具太有主见(比如「我会用 Kafka」),但在没先把约束条件问清楚之前就直接选型了。他们希望我先问 event volume 多大,要 real-time 还是 near-real-time,现有 infrastructure 是什么。我直接跳到解决方案了。这个批评挺公平,也适用于大多数 pipeline design 面试。
总体: 面试体验不错,组织得很清楚,反馈也是真的,不是模板话。DE 的 bar 感觉比一般 mid-market 公司高,按我看到的差不多能对标 Databricks 或 Snowflake。