今年早些时候走了 jane street 的 data engineer 面试 loop,NYC 岗。这个 track 的资料几乎没有,分享下我的经历。
recruiter screen 很轻,基本就是时间线和兴趣。然后他们发了一个 take-home SQL 作业,不是玩具题。他们给了一个类似交易事件日志的 schema,让我写 window functions、CTE,还要做一些带边界情况的 aggregation(null、延迟到达的行)。给了 72 小时窗口,但如果你想做得像样,真实工作量大概 4-5 小时。
technical rounds(2 轮,都是 live): 第一轮更偏 SQL / data modeling。他们让我设计一个用来跨市场追踪 order flow 的 schema,讲 partitioning 策略、indexes。真实问题是:「what happens to your query if this table has 10B rows and that join key isn't indexed?(如果这张表有 100 亿行、那个 join key 没有建索引,你的查询会怎样?)」 第二轮是 pipeline design。给一个场景,让你画 streaming vs batch 的取舍。他们点名提了 kafka 和 flink。我觉得不需要你真的用过 flink,但你必须理解 stateful stream processing 的概念。
另外还有一轮 coding,Python。不是 leetcode 那种很难的,但你在写真实逻辑:解析、转换、处理很恶心的输入格式。他们非常看重代码干净,会对走捷径的做法 push back。
传统意义上的 behavioral rounds 没有。会聊一些项目和我怎么处理 ambiguity,但不是 STAR-method 那种结构化问法,更像正常的技术对话。
看起来比较重要的点: 理解数据新鲜度 vs 延迟的取舍,不只是会背词 很精确地说明「at-least-once」和「exactly-once」在实践里分别意味着什么 在设计任何东西前先问澄清问题。他们会奖励「what's the acceptable staleness here(这里可接受的数据陈旧度是多少)」这种思路。
最后没拿到 offer。debrief 说 coding 很强,system design 还行,SQL 作业里我漏了一个很细的正确性问题。说实话反馈也挺公平。
如果有人也做过这里的 DE loop,很想对一下信息。