刚结束一轮 oracle data engineer 面试 loop,趁记忆还新鲜分享下笔记。岗位在一个团队,做 oracle 的 SaaS analytics 产品的内部数据基础设施。不是 OCI 本身,但关系很近。
一共四轮,全远程。
第 1 轮:sql(live,45 分钟)。 不是基础 SQL。他们让我写一个做增量聚合的 query:给你一张 raw events 表,每小时会新增数据,写一个 query 去算 daily rollup,而且只处理上次运行之后的新数据。他们希望我能讲清 watermarks、如何处理 late-arriving data、以及幂等性。如果你做过 dbt 或 spark,会比较自然。如果你只写过报表查询,这会很陌生。
第 2 轮:数据 pipeline 设计(60 分钟)。 设计端到端 pipeline:source 是 oracle transactional databases,destination 是内部 BI 团队用的数据仓库。他们想听:摄取策略(CDC vs batch,我主张 CDC 并且解释了原因)、transformation layer 设计、schema evolution 怎么处理、以及如何做 SLA 监控。这算是 data engineer 的 system design 等价题。任何组件都有可能被深挖。
第 3 轮:coding / scripting(45 分钟)。 Python 题:写脚本检测一个流式指标里的异常(跨租户的 cpu utilization)。我写的是 rolling z-score。追问包括:分布随时间漂移怎么办、怎么调敏感度。这完全不是 leetcode,更像「写 data engineer 日常会写的代码」。
第 4 轮:behavioral。 跟 oracle 其他 loop 的信号一样:ownership、跨团队影响力、客户影响。他们特别问了我一次在一次 outage 之后如何提升 pipeline 可靠性。他们在意 postmortem 跟修复同样多。
整体感受:oracle 的 DE 面试是真的技术向。SQL 和 pipeline design 是最难的部分。如果你背景更多是工具配置(airflow DAGs、dbt models),但底层概念(exactly-once semantics、late data 处理、watermarks)比较薄,就得在面试前把这些补起来。