上个月刚走完 Canva frontend engineer 的面试流程。分享一下,因为我准备时几乎找不到什么最新的信息,希望能帮到别人。
背景:我投的是 senior frontend 岗,当时 4 YOE,在美国(这个岗可以 remote,但团队主要在 Sydney,所以需要有一些时区重叠)。
全流程 5 轮: recruiter screen(30 分钟,很标准,主要是「自我介绍」和流程/时间安排) technical phone screen(45 分钟,共享编辑器 live coding。他们给了一个 React component 题,不算夸张,但希望我边写边讲 performance 和 accessibility) front-end systems design(60 分钟,设计一个 rich text editor 或协作 canvas 类的界面。是的,非常对味,这一轮很多人会被打个措手不及) behavioral / values panel(45 分钟,两位面试官,重点是 Canva 的价值观:「be a force for good」「make complex things simple」之类) team fit / hiring manager chat(30 分钟)
对我来说,frontend 的 systems design 最难。他们不是让你设计一个 backend service,而是想看你怎么考虑 DOM performance、rendering pipelines、规模化的 state management、用 WebSockets 做实时协作、冲突解决(比如 operational transforms 或 CRDTs 的高层思路)。你不用实现 CRDTs,但你得知道它们是什么,以及为什么 Canva 会在意。
Coding 轮是 TypeScript-first。我一用偏普通 JS 的写法,他们立刻就看出来了。确保你 TS generics 很熟,不只是基础。
Behavioral 更偏:讲一次你作为工程师做了产品决策的经历(他们会把 eng 和产品思维混在一起),你怎么处理跨职能分歧,以及你做过哪些真正提升 performance 或 DX 的事情。
Comp:我的 offer 大概是 $195k base + equity,senior level,US remote。我看到的 range 会因定级差很多,所以就当一个数据点。
从 recruiter 第一次联系到 offer 总共大概 6 周。debrief 很快,最后一轮结束 4 天内就回了。
如果有人想问 systems design 这一轮我也愿意答,这轮网上信息最少。