← 面经 & 服务案例

Canva面经

OfferForge 导师 Dr. W. — 博士毕业,前 FAANG Senior MLE。研究方向为大规模分布式机器学习系统,曾在顶级国际学术会议发表多篇论文

OfferForge 导师 Dr. S. — 前大厂 Senior SDE,精通分布式系统与大规模数据处理。曾在顶级技术会议发表多篇技术报告,专注于系统可扩展性与可靠性。

前Amazon工程老兵,擅长大规模互联网应用的开发与优化,专注于提升应用的性能和平台安全性。在分布式系统、微服务架构和实时数据处理领域有深厚的技术积累。

Canva 的 Backend Software Engineer 面试整体有五轮左右,这里讲讲其中最重要的四轮:System Design、AI Assisted Programming、Java Fluency 和 Technical Review。整体风格比较偏实际工程场景,不只是看能不能把题做出来,也比较关注 scalability、代码质量、AI coding workflow 和 production engineering。

这一轮是设计一个 Canva 的多人实时协作编辑系统。需要支持多个用户同时编辑同一个 design,包括添加、移动、删除文字、图片和其他元素,并且让其他协作者快速看到变化。后面主要追问 concurrent edits、WebSocket、event ordering、版本管理和冲突解决。如果某个热门 design 同时有大量用户编辑,还需要考虑如何做 partition、horizontal scaling,以及用户断线重连之后如何恢复最新状态。

这一轮要求使用 AI coding assistant 实现一个 image thumbnail service。输入图片和目标尺寸,生成对应大小的 thumbnail,同时需要正确处理不同图片格式、宽高比和异常输入。过程中重点考察怎么给 AI 拆任务、review AI 生成的代码,以及发现潜在问题。完成基本功能后继续讨论 image caching、并发处理、memory limit、timeout 和 retry,最后设计 unit test、integration test,以及如何验证 resize 后的图片结果是否正确。

这一轮是实现一个简化版的 design version history。需要支持保存 design 的不同版本、根据 version ID 查询历史版本,以及恢复到指定版本。一开始可以用比较直接的数据结构实现,然后继续优化查询和存储效率。后面主要追问 object modeling、deep copy 和 immutable object,以及多个线程同时保存新版本时如何保证 version ID 和数据的一致性。还会讨论如果版本数量非常多,怎么避免内存无限增长。

这一轮是 review 一个 image upload and processing service 的 PR。用户上传图片后,服务会保存原图并生成不同尺寸的 thumbnail。需要从 senior engineer 的角度 review API、异常处理、并发、文件存储和代码结构。后面会进一步讨论大图片导致的 memory pressure、重复上传、异步 image processing、retry 和 idempotency,以及如何通过 metrics、feature flag、canary rollout 和 rollback 安全上线。

想要和我们的面试辅助团队进行一次免费的沟通?

我们会直击要点,回答你的所有疑问,并介绍我们的服务。还有顾虑?我们可以提供免费的面试实战展示。

预约免费咨询

客户怎么评价我们

毫无疑问是市面上最专业的 SDE 辅助机构。我接触过若干家机构,但是你们的专业能力以及细致服务给我留下了非常深刻的印象。感谢你们带给我的无比丝滑的跳槽体验。

A.H. · Amazon SDE L5

现在的市场对于转码选手可以说是非常不友好了。本来我已经不抱希望,准备收拾行李回国了,但是和导师聊完之后,我打算赌一把。结果团队果然不负所托,帮我成功上岸 Capital One。

C.Z. · UIUC 物理转码

本来觉得辅助是一件非常不靠谱的事情,我也只是抱着试探的心态和你们的团队聊了聊细节。但是一试便知能力的深浅,无论是分布式理论还是项目实战经验,都非常符合我的面试岗位需求。如果没有你们的协助,估计很难拿下这个 senior role。祝生意兴隆。

匿名客户 · Senior SDE