最近帮学员辅导 Canva OA,才发现这家设计软件巨头的技术岗笔试也越来越“卷”了。不仅考察算法,还融合了逻辑推理、实际开发理解,完全不是简单刷几道 LeetCode 就能搞定的。这篇就来给大家全方位拆解 Canva OA 流程、出题风格、真题例子 + 助攻经验。

Canva OA 流程概览
Canva 的技术岗 OA(Online Assessment)流程在我们辅导的众多学员中被普遍评价为“重视逻辑+代码质量”的类型,整体偏向中等偏上难度,不是那种刷题刷熟就能轻松过的风格。
整个测试一般会控制在 75 到 90 分钟之间,题目形式较为多样,通常包括算法编程题、逻辑推理题、Debug 或代码理解题,有时还会附带一道系统建模或简易系统设计题。平台方面多用 Codility 或 HackerRank,支持主流语言如 Python、Java、C++,也有部分岗位提供 JavaScript 环境。
算法题部分占据 OA 的核心位置,题量为 2~3 道,主要考查字符串处理、数组操作、矩阵遍历、滑动窗口等典型题型,但题目通常会包装成偏业务场景的形式,例如“用户行为统计”、“推荐逻辑模拟”等。Canva 比较重视工程风格,代码结构清晰、变量命名合理是加分项。
逻辑推理题一般为选择题或判断题,偏认知类,形式可能是图表、规则组合、流程分析等,有点像简化版 GMAT 或 IQ 测试,但不需要太深的数学背景,重在细心读题 + 条件拆解能力。
Debug 题或者代码理解题也经常出现,会给出一段存在问题的代码,要求找出错误或预测输出。这部分更像是在模拟你入职后维护他人代码的能力,能快速理清逻辑、分析边界情况是关键。
部分岗位(特别是后端和数据岗)可能还会考你一个小型建模或系统设计题目,比如给你一个业务场景,让你设计数据结构或写伪代码实现逻辑,不需要完整实现,但考的是你的架构思路和逻辑条理。
整体来看,Canva 的 OA 更偏实际开发场景而不是纯算法堆砌,答题时建议注重代码可读性、输出格式规范,以及测试覆盖率。也有不少同学反馈时间分配比较紧凑,建议提前做好模拟训练,确保能稳定输出。
真题回忆 + 解题思路
我们一位上岸 Canva 的学员回忆了自己的 OA 真题,供大家参考:
1. Women in STEM Charity
Stacey is coordinating a beach clean-up event with her university’s Women in STEM Charity branch. The beach is covered with tin cans of varying weights arranged in a single line, indexed from 0 to n-1。
Stacey uses a scooper that can pick up three adjacent cans at a time. For each selection:
- She identifies the lightest remaining can, with weight w
- She uses the scooper to pick up that can along with its two adjacent cans (or fewer if at the edge)
- She continues this process until there are no cans left on the beach
If multiple cans have the lightest weight, Stacey selects the one with the smallest index. If a can has fewer than two adjacent cans, she removes the available adjacent cans。
Determine the sum of the weights of the lightest cans she picks in each selection。
Example
Let there be n = 5 cans on the beach with weights represented by cans = [5, 4, 1, 3, 2]。
First, choose the minimum weight, i.e., 1, and add that weight to the total. The cans with weights 4, 1, and 3 are removed. The array of cans is now [5, 2]。
Then, choose the minimum weight, i.e., 2, and add that weight to the total. The cans with weights 2 and 5 are removed, and there are no more cans on the beach。
Hence, the total is 1 + 2 = 3。
Function Description
Complete the function findTotalWeight
in the editor with the following parameters:
int cans[n]
: the weights of the cans on the beach
Returnsint
: the sum of the minimum-weight cans at each selection
Constraints
3 ≤ length of cans ≤ 2000
1 ≤ cans[i] ≤ 10⁵
Input Format For Custom Testing
(Section shown but content cut off, likely for sample inputs)
2. Social Media Suggestions
Implement a prototype of a friend recommendation system for a social media application。
There are n users indexed from 0 to n-1, and m friendships are represented as a 2d array, friendships
, where the i-th friendship is a connection between users friendships[i][0]
and friendships[i][1]
.
A user x is suggested as a friend to user y if:
- x and y are not already friends
- x and y have the maximum number of common friends (friends that both x and y are connected to)
- If multiple users satisfy conditions 1 and 2, the user with the minimum index is recommended
Given n and friendships
, for each of the n users, find the index of the friend that should be recommended to them. If there is no recommendation available, report -1。
Example
Suppose n = 5, m = 5, and connections = [[0, 1], [0, 2], [1, 3], [2, 3], [3, 4]]
User | Max Common Friends With | Recommendation |
---|---|---|
0 | 3 (1, 2) | 3 |
1 | 2 (0, 3) | 2 |
2 | 1 (0, 3) | 1 |
3 | 0 (1, 2) | 0 |
4 | 2 (3), 1 (3) | 1 (minimum index) |
Hence the answer returned is [3, 2, 1, 0, 1]
.
3. Element Swapping
A software development firm is hiring engineers and used the following challenge in its online test。
Given an array arr
that contains integers, the following operation can be performed on it any number of times (possibly zero):
Choose any index i (0 ≤ i < n – 1) and swap arr[i]
and arr[i + 1]
.
Each element of the array can be swapped at most once during the whole process。
The strength of an index i is defined as (arr[i] * (i + 1))
, using 0-based indexing. Find the maximum possible sum of the strength of all indices after optimal swaps. Mathematically, maximize the following:
∑i=0n−1 arr[i]×(i+1)
Example
Consider n = 4, arr = [2, 1, 4, 3]。
It is optimal to swap (arr[2], arr[3]) and (arr[0], arr[1]). The final array is [1, 2, 3, 4]. The sum of strengths = (1 * 1 + 2 * 2 + 3 * 3 + 4 * 4) = 30, which is maximum possible. Thus, the answer is 30。
Function Description
Complete the function getMaximumSumOfStrengths
in the editor below。
getMaximumSumOfStrengths
has the following parameter:
int arr[n]
: the initial array
Returnslong_int
: the maximum possible sum of strengths of all indices after the operations are applied optimally
Constraints
1 ≤ n ≤ 10⁵
1 ≤ arr[i] ≤ 10⁵
Input Format For Custom Testing
The first line contains an integer, n, that denotes the number of elements in arr.
Each line i of the n subsequent lines (where 0 ≤ i < n) contains an integer that describes arr[i]。
5
1
9
7
3
2
FAQ:Canva OA 常见问题
Q1:Canva OA 有几道题?难度如何?
通常有 2~3 道编程题 + 少量选择题。编程题的难度在 LeetCode Medium 偏上,重视代码质量和工程风格,个别岗位可能出现难题。
Q2:支持哪些编程语言?能在本地写吗?
Canva 一般使用 HackerRank 或 Codility,支持常见语言如 Python、Java、C++ 等。考试必须在平台上完成,支持基本的测试和 debug 功能,不建议复制粘贴本地代码。
Q3:时间够用吗?会卡住怎么办?
整体时间偏紧,特别是遇到设计题或逻辑题时建议先跳过难题,确保能拿下基础分数。如果担心现场发挥不稳,也可以提前安排 Programhelp 的模拟训练或实时辅助服务。
Q4:非算法岗也要做 OA 吗?
需要。Canva 不同岗位(前端、后端、数据、SWE)都有 OA 环节,题目类型会略有不同,比如前端更偏实现,数据岗可能会考 SQL 或统计推理。
Q5:什么时候能知道结果?多久后安排下一轮?
通过 OA 后,一般 3~5 个工作日内会收到下一轮通知,主要看 HR 跟进节奏。没有通过通常不发通知,但也不代表你表现差,Canva 有时筛人比较谨慎。
Programhelp 助你无痕搞定 Canva OA
Canva OA 高频题库整理 + 模拟演练:帮你熟悉题型和出题逻辑,打好提前量
OA 远程实时协助 / 无痕代写服务:专业工程师团队远程协作,确保代码高质量提交,风格统一、通过率高
平台适配 + 风险规避方案:熟悉 Codility / HackerRank 环境,确保过程自然、不留痕迹
技术面试 & 简历优化辅导:通过 OA 后可继续安排 VO 辅导,覆盖项目包装 + 行为面试话术
我们已协助多位同学顺利通过 Canva、Atlassian、Airbnb 等澳洲独角兽的 OA 和面试流程,服务流程严谨可靠,全程保密。如果你也在准备 Canva OA,担心时间紧、难度高、没把握 —— 随时欢迎私信我们了解详情!