CanvaSDEinterviewprocessbackendjavamulti-threadingsystemdesign
Canva SDE 面经:设计工具大厂的后端面试
本文基于真实候选人面经整理Canva面试全流程。还原面试题目、解题思路与技术考察重点,覆盖Java、LeetCode、算法、系统设计,附详细准备策略助你高效备战。
Sam · · 9 分钟阅读
Canva 的面试给我最大的感受是:它不太追求 tricky 的算法题,而是重点考察代码的 robustness、思路清晰度以及对系统设计和多线程模型的理解。
他们后端主要用 Java,所以如果你能用 Java 写代码是加分项。
面试流程
投递/内推 → Recruiter 电话 → 三轮技术面试(每轮 45-60 分钟)→ Debrief → Offer
整体周期大概 2-3 周。
第一轮:纯 Coding
难度大概在 LeetCode 中等偏简单的范围。
我的题目:Summary Ranges 变种
跟 LeetCode 228(Summary Ranges)类似,但题干稍微变了一点。题目给一串整数,要求找出连续区间的表达形式。
比如 [0,1,2,4,5,7] 输出成 ["0->2","4->5","7"]。
public List<String> summaryRanges(int[] nums) {
List<String> result = new ArrayList<>();
if (nums.length == 0) return result;
int start = nums[0];
for (int i = 1; i <= nums.length; i++) {
if (i == nums.length || nums[i] != nums[i-1] + 1) {
if (start == nums[i-1]) {
result.add(String.valueOf(start));
} else {
result.add(start + "->" + nums[i-1]);
}
if (i < nums.length) start = nums[i];
}
}
return result;
}
复杂度:O(n) 时间,O(1) 额外空间。
这轮的考点
- 边界条件——空数组、单个元素、全部连续、全部不连续
- 代码清晰度——变量命名、注释、结构
- 测试用例——面试官会要求你写一些测试
第二轮:系统设计 + Coding
这轮我开始觉得 Canva 的风格了。
系统设计题目:设计一个图片上传服务
题目要求:
- 支持多种图片格式(JPG、PNG、SVG)
- 自动生成缩略图
- 支持 CDN 分发
- 处理大文件上传(100MB+)
我的方案:
- 上传接口——支持分片上传,避免大文件超时
- 图片处理——异步任务队列处理缩略图生成
- 存储——S3 存储原图和缩略图
- CDN——CloudFront 分发
- 元数据——数据库存储图片信息(尺寸、格式、URL)
Coding 题目:多线程图片处理
实现一个线程池,用于并发处理图片。要求支持动态调整线程数、任务优先级和失败重试。
这道题我用了 Java 的 ExecutorService + PriorityBlockingQueue:
class ImageProcessor {
private final PriorityBlockingQueue<Runnable> taskQueue;
private final ExecutorService executor;
private final int maxRetries;
public ImageProcessor(int threads, int maxRetries) {
this.maxRetries = maxRetries;
this.taskQueue = new PriorityBlockingQueue<>();
this.executor = Executors.newFixedThreadPool(threads);
}
public void submit(ImageTask task) {
for (int i = 0; i <= maxRetries; i++) {
try {
executor.submit(task).get();
break;
} catch (Exception e) {
if (i == maxRetries) throw e;
}
}
}
}
这轮的考点
- 多线程基础——线程池、并发集合、锁
- 系统设计能力——架构设计、组件拆分
- 工程思维——可扩展性、容错性
第三轮:Behavioral + 技术深度
比较轻松的一轮,聊了:
- 为什么选 Canva?
- 对设计工具的理解
- 遇到的最大技术挑战
- 团队协作经历
备考建议
算法
重点练习:
- 数组/字符串处理——Canva 的 coding 题偏这类
- 多线程——线程池、并发集合、锁
- 系统设计基础——服务拆分、API 设计
系统设计
重点准备:
- 图片/文件处理系统
- 异步任务队列
- CDN 架构
- 多线程编程
Java 基础
- 并发编程(ExecutorService、CompletableFuture)
- 集合框架(HashMap、ArrayList、Queue)
- IO 处理(File、Stream、NIO)
FAQ
Canva 面试难吗?
难度中等,不太追求 tricky 算法,但看重代码质量和系统设计能力。
Canva 的薪资怎么样?
2026 年 SDE NG 大概 $120-150K base + $40-80K RSU 总包(悉尼办公室)。在澳洲属于高水平。
面试周期多久?
一般 2-3 周。
💡 需要面试辅导?
如果你对准备技术面试感到迷茫,或者想要个性化的面试指导和简历优化,欢迎联系 Interview Coach Pro 获取一对一辅导服务。
👉 联系我们 获取专属面试准备方案