Canva 的 Backend Software Engineer 面试整体流程是三轮技术面,走下来感觉整体偏实战型,不太追求特别 tricky 的算法,重点是你写得是否健壮、思路是否清晰,以及你对系统设计和多线程模型的理解有没有落地经验。他们主要用 Java,所以用 Java 来写代码是加分项。
第一轮是纯 coding,难度大概在 Leetcode 中等偏简单的范围。我那轮碰到的题是类似 Leetcode 228 Summary Ranges 的题目,不过题干稍微变了一点点,不是直接照搬。题目会给你一串整数,要求你找出连续区间的表达形式,比如 [0,1,2,4,5,7] 输出成 ["0->2","4->5","7"] 这种格式。虽然题不难,但 test case 有不少隐藏的 corner case,比如空数组、重复元素、负数、数组没排序等等。重点是你写完之后,能不能自己意识到这些 case,然后在面试中主动补上。面试官不会帮你测,只会看你跑完了哪些 case。你可以在自己本地 IDE 里写,然后屏幕共享给他们看,整个过程还是比较轻松的。