我在 2026 年初走完了 Canva machine learning engineer 的面试流程,投的是一个 senior ML 职位。最后没拿到 offer,但进了终面,所以基本把整个 loop 都体验了一遍。写下来是因为网上几乎找不到 Canva 的 ML 细节。
流程: recruiter screen(常规环节,他们问我的 ML 背景、做过什么上线的东西,不是那种考试式问答) ML fundamentals(60 分钟,理论 + 应用混合,比我预期更偏应用) ML system design(60 分钟,开放题,设计一个推荐系统或者一个在 Canva 规模下的图像分类 pipeline) coding(45 分钟,比起纯 ML 更像 SWE,他们想看真实能跑的 Python、干净的代码,不只是 notebook 里那种脚本) behavioral / values(45 分钟)
ML fundamentals 这轮:他们问了 bias-variance tradeoff、什么时候更偏 precision vs recall、怎么处理 class imbalance。都不算新。更有意思的是他们还问了 model serving、延迟约束,以及怎么思考一个离线表现很好但线上退化的模型。最后这个点会把不少人卡住。
ML system design:我拿到的是设计内容推荐系统。他们想让我按顺序讲:feature engineering、candidate generation、ranking、怎么处理新用户 cold start,以及怎么衡量成功。聊得很深的是 offline vs online 指标,以及为什么它们不一定对齐。这点挺 Canva 的,因为他们的产品很视觉化,所以还问了我会怎么把 image embeddings 当作信号。
coding 这轮是意外。题目基本是:从零实现一个简单的 k-means clustering。不能用 sklearn。他们要看干净的 Python,不是伪代码。如果你因为平时大部分时间都在 notebook 里导致编码能力生疏了,建议提前练一练怎么写真正干净的 Python。
我觉得我被刷主要是在 behavioral 那轮。我回答技术上没问题,但可能显得太偏个人贡献。Canva 的价值观真的很看重协作和跨团队影响力。STAR 的故事要按这个方向去调整。
我看到的 senior ML(Sydney)的薪酬区间:AUD 200-240k total。US remote 的对标更高,可能在 USD 200-230k TC 左右,但我没有直接数据点。