这次 Barclays OA 给我的整体感受是:时间非常长,信息密度很高,如果没有提前接触过类似题型,很容易在中后段被消耗掉节奏。OA 一共给了 240 分钟,看起来时间充裕,但题目描述长、规则多、边界复杂,真正做下来会发现时间其实非常紧张。这不是那种刷几道算法题就能结束的流程,而是更偏向“完整工程式思考”的测试。
Barclays OA 基本情况概览
- 总时长:240 分钟
- 题型:Coding + 规则模拟
- 可选语言:Java / C++ / Python
- 重点考察:复杂规则理解、状态管理、边界处理能力
Barclays OA 真题分享与深度解析
题目一:Robot Cleaner
题目大意: 给你一个房间的地图(Grid),# 是墙,. 是空地,* 是你的起点。 你要写一个算法,控制机器人上下左右移动,把房间里所有能到达的空地都扫一遍。
注意: 输出的不是步数,而是一串完整的移动指令(比如 ">>v<^...")。


破题思路: 这道题不适合用 BFS,因为机器人无法在状态之间直接跳转,所有移动都必须真实执行。更合理的方式是使用 DFS,对路径进行完整探索:在当前位置选择一个未访问且未撞墙的方向前进,并记录对应指令;当无法继续时,通过回溯返回上一个位置,再尝试其他方向。
题目二:Minimum Chairs
题目大意: 这个简单很多。给你一串字符 S,代表一堆人进进出出:
'S'(Start) = 进来一个人'E'(End) = 走了一个人 问你房间里最多同时也存在几个人?(也就是最少需要准备几把椅子)。
破题思路: 这是一道典型的模拟题,可以用一个计数器来完成。顺序遍历字符串,遇到 S 时将计数器加一,并在每次增加后更新当前的历史最大值;遇到 E 时将计数器减一。遍历结束后,记录过的最大值即为答案。
参考代码 (Java):
class Solution {
public int solution(String S) {
int maxChairs = 0; // 历史峰值
int currentPeople = 0; // 当前人数
for (char event : S.toCharArray()) {
if (event == 'S') {
currentPeople++;
// 只有人变多的时候才需要检查椅子够不够
maxChairs = Math.max(maxChairs, currentPeople);
} else if (event == 'E') {
currentPeople--;
}
}
return maxChairs;
}
}
远程助攻体验分享
其实很多同学在这种长时间、规则复杂的 OA 中,很容易节奏被打乱。如果你想在考试中保持思路清晰、抓住题目关键,Programhelp 提供的远程助攻服务会很有帮助:
实时语音提醒:遇到边界或规则容易忽略的地方,第一时间提示思路方向
代码辅助:提供模板和关键思路,让你在限定时间内完成复杂模拟题
OA 代写/辅导:全程亲力亲为,涵盖从题目分析到代码实现的完整指导
VO & 面试助攻:不只是 OA,Behavioral / VO 面试也能获得语音提示和答题策略
如果你也想在 Barclays 或其他长时间、规则复杂的 OA 中保持节奏,不被细节拖慢效率,不妨尝试 Programhelp 的远程助攻。无论是 OA 题目分析、代码实现,还是 VO / Behavioral 面试答题策略,都能得到实时指导和语音提醒,让你在关键时刻不慌不乱,发挥出最强实力。