刚面完 Snowflake 的 MLE loop。发出来是因为网上几乎没有关于他们 ML engineering 面试到底长什么样的具体信息。剧透:更偏 systems,不偏模型。
背景:这个岗位在他们的 Cortex team(Snowflake 的 ML platform 产品)。不是 research role,也不是纯 ML science role。他们在做让客户能在 Snowflake 里跑 ML workload 的基础设施。
loop(总共 6 轮): recruiter + hiring manager screen ML system design coding 第 1 轮:distributed systems/concurrency coding 第 2 轮:ML 相关 coding(Python) ML depth 轮 behavioral + values
ML system design:不是「design an image classifier.(设计一个图像分类器。)」。他们让我设计一个 feature store,要求能处理 streaming 更新,并支持低延迟的 inference 读取。他们想聊一致性取舍、cache invalidation、你怎么处理 schema evolution。完全是 infrastructure 视角,不是模型视角。
coding:distributed systems 那轮是实现一个带依赖的简单 task scheduler(基于 DAG)。ML coding 那轮让我实现一个自定义的 batched prediction 函数,要正确做内存管理,并解释不同 batching 策略之间的取舍。
ML depth:这里会深挖我的简历。问我做过的具体模型、怎么处理 class imbalance、怎么评估一个线上生产模型和离线 eval 的区别。他们也问了 Snowpark(他们的 Python runtime),我没用过,但他们接受我说我会去学。
最重要的点:对系统取舍有强观点。他们不想要只在意 model metrics 的 ML engineer。如果你聊不了 ML serving 里的 latency、throughput、fault tolerance,这个 loop 会很难。
没那么重要的点:前沿 research。没人问我 transformers 或 diffusion models。这不是 applied scientist role。
还在 debrief 阶段,还没 offer。之后再更新。