WeRide OA 给我留下了挺深的印象。90 分钟 3 道题,时间卡得非常紧,后来在 Programhelp 的帮助下,才在正式 OA 中比较从容地完成了前两题全 AC,第三题也拿到了大部分分数,最终顺利通过。下面是我这次 WeRide OA 面经 的完整分享,包括真实遇到的题目类型、解题思路和备战心得,希望能给正在准备 WeRide 2026 的同学一些参考和帮助。

WeRide OA 整体情况
- 平臺:HackerRank
- 時長:通常 90 分钟
- 題量:3 道 Coding 题(难度 Medium 为主,第三题偏难)
- 通过关键:至少 2 题 Full AC(所有测试用例通过),第 3 题尽量多拿分
- 特點:题目偏工程实用,考察字符串处理、数组操作、DP 和贪心较多,时间紧迫,对代码效率和边缘 case 处理要求较高
WeRide OA 整体难度中等偏难,尤其是时间压力大,很多同学反映第三题容易超时或边界处理出错。
题目一:幂数统计
題目描述
定义幂数为可表示为两个幂之和的整数,形式为: x = a^p + b^q 其中:
- a, b, p, q 均为整数;
- a, b ≥ 0;
- p, q > 1。
请计算区间 [l, r] 内(包含 l 和 r)的幂数个数。
示例 l = 20,r = 25 时,幂数为:
- 20 = 2² + 4²
- 24 = 2³ + 4²
- 25 = 3² + 4² 共 3 个幂数。
函式說明
int countPowerNumbers(int l, int r)
返回值:区间 [l, r] 内幂数的数量。
約束條件
- 0 ≤ l ≤ r ≤ 5×10⁶
自定义测试输入格式 第一行:l 第二行:r
样例输入 0
0
1
样例输出 0
2
解釋:0 和 1 均为幂数(0=0²+0²,1=0²+1²)。
解題思路
预先生成所有可能的完美幂(perfect power):指数从 2 到 ~40,基数 a 从 0 开始,直到 a^p 超过 r,存入集合去重。 然后双重循环枚举任意两个幂的和(包括相同幂),将所有和值放入另一个集合去重。最后统计该集合中落在 [l, r] 内的元素个数即可。 (生成法远优于逐数验证,适合 r≤5e6。)
题目二:字母差
題目描述
给定两个字符串数组 a 和 b,对于每一对 a[i] 和 b[i]:
- 如果长度不同,返回 -1;
- 如果长度相同,计算使两个字符串成为变位词(Anagram)所需修改的最少字符数。
示例 a = [“tea”, “tea”, “act”] b = [“ate”, “toe”, “acts”] 结果:[0, 1, -1]
函式說明
int[] getMinimumDifference(String[] a, String[] b)
返回值:长度为 n 的整数数组,对应每对字符串的修改次数(或 -1)。
約束條件
- 字符串仅包含小写字母 ‘a’~’z’;
- 1 ≤ n ≤ 100;
- 0 ≤ |a[i]|, |b[i]| ≤ 10⁴;
- 1 ≤ |a[i]| + |b[i]| ≤ 10⁴。
自定义测试输入格式
- 第一行:整数 n(数组长度)
- 接下来 n 行:数组 a 的每个字符串
- 接下来一行:整数 n(数组 B 长度)
- 接下来 n 行:数组 b 的每个字符串
樣例輸入
5
a
jk
abb
mn
abc
5
bb
kj
bbc
op
def
樣例輸出
text
-1
0
1
2
3
解題思路
对每一对字符串 a[i] 和 b[i]: 若长度不同,直接返回 -1; 若长度相同,统计两个字符串的 26 个字母频率,对每个字母取频率差的绝对值求和后除以 2,即为最少修改字符数。 (n≤100,字符串总长小,时间充裕。)
题目三:三元组
題目描述
给定整数数组 d 和整数阈值 t,统计满足以下两个条件的索引三元组 (a, b, c) 的数量:
- a < b < c(索引严格递增);
- d[a] < d[b] < d[c](值严格递增);
- d[a] + d[b] + d[c] ≤ t。
示例 d = [1,2,3,4,5], t = 8 满足条件的三元组共 4 组:(1,2,3)、(1,2,4)、(1,2,5)、(1,3,4)
函式說明
long triplets(int t, int[] d)
返回值:满足条件的三元组总数(long 类型)。
約束條件
- 1 ≤ n ≤ 10⁴;
- 0 ≤ d[i] < 10⁹;
- 0 < t < 3×10⁹。
自定义测试输入格式
- 第一行:阈值 t
- 第二行:整数 n(数组长度)
- 接下来 n 行:数组 d 的每个元素
样例输入 0
8
5
1
2
3
4
6
样例输出 0
3
样例输入 1
7
4
3
1
2
4
样例输出 1
2
解題思路
先对数组 d 排序(保证值严格递增)。 然后用三重循环或固定 i < j,双指针/二分在 j 右侧找最大 k 满足 d[i] < d[j] < d[k] 且 d[i]+d[j]+d[k] ≤ t。 整体时间控制在 O(n²) 或 O(n² log n),用 long 返回结果(n=1e4 时数量可能很大)。
寫在最後
WeRide OA 虽然有一定挑战,但题型可预测性较强,认真准备就能有不错的结果。如果你在准备 WeRide OA 时遇到具体题目卡住,或者想做针对性的模拟练习和实时思路指导,欢迎来 Programhelp 咨询。我们可以帮你梳理高频题、提供一对一实战助攻,让你更有把握通过 WeRide 的 OA。
祝所有冲刺 WeRide 2026 的同学早日通过 OA,顺利拿到 Offer!