刚结束 Adobe data engineer 的面试全套 loop,岗位在 Digital Experience platform team。分享一下,因为我准备的时候几乎找不到最新信息。
recruiter screen 很标准,大概 20 分钟,主要确认我投的是哪个 team,以及我是否做过 Spark/Airflow 这类工作。没什么技术内容。
第一轮技术:SQL。我是说真的,纯 SQL,不是那种「write a basic GROUP BY(写一个基础的 GROUP BY)」(写一个基础的 GROUP BY)级别。他们给了一个很真实的 schema(有点像 web analytics 产品的 event 数据),让我做多步骤聚合、window functions(LAG、RANK、DENSE_RANK),还有一道必须用 self-join 的查询。大概 60 分钟。我是在共享文档里写,不是真 IDE,压力更大。window function 一定要很熟。
第二轮技术:pipeline design。这轮是 system design,但范围锁在数据 pipeline。他们描述了一个 ingestion 问题(高吞吐 clickstream events,还有一些 late-arriving data),让我讲架构选择。我讲了 Kafka ingest、Spark Structured Streaming 和 batch 的取舍、partitioning 策略、以及怎么处理 schema evolution。面试官在 late data 上追问很凶。watermarking 的故事要讲清楚。
第三轮:过去项目深挖。他们从我简历里挑了一个项目,连续追三层。怎么定义成功指标、最先坏的是什么、你会怎么做不一样。偏 behavioral,但更像工程视角。
第四轮:hiring manager。更像 fit/vision 的聊天。她介绍了团队现在的技术栈(Databricks,一些正在迁移掉的 legacy Hadoop,transform 侧用 dbt),然后问我对这些什么地方最兴奋。
从 recruiter screen 到 offer 总共大概 5 周。对我来说最难的是 pipeline design 那轮。建议针对性准备。