這次 Barclays OA 給我的整體感受是:時間非常長,資訊密度很高,如果沒有提前接觸過類似題型,很容易在中後段被消耗掉節奏。
OA 一共給了 240 分鐘,看起來時間充裕,但題目描述長、規則多、邊界複雜,真正做下來會發現時間其實非常緊張。這不是那種刷幾道演算法題就能結束的流程,而是更偏向“完整工程式思考”的測試。
Barclays OA 基本情況概覽
本次 Barclays OA 為純線上程式設計測試,整體偏演算法與模擬結合。
- 總時長:240 分鐘
- 題型:Coding + 規則模擬
- 可選語言:Java / C++ / Python
- 重點考察:複雜規則理解、狀態管理、邊界處理能力
整體難度不在於演算法本身有多難,而在於題目描述非常長,對細節和執行力要求高。
Barclays OA 真題分享與深度解析
題目一:Robot Cleaner
題目大意: 給你一個房間的地圖(Grid),# 是牆,. 是空地,* 是你的起點。 你要寫一個演算法,控制機器人上下左右移動,把房間裡所有能到達的空地都掃一遍。
注意: 输出的不是步数,而是一串完整的移动指令(比如 ">>v<^...")。


破題思路 (敲黑板): 這題千萬別想著用 BFS(廣度優先),因為機器人不能瞬移!它得實實在在地走過去再走回來。 最穩的解法就是 DFS (一條路走到黑):
- 悶頭走:選一個方向,只要沒撞牆且沒去過,就一直走,同時記錄指令(比如
>)。 - 撞牆了怎麼辦? 沒路走了就回溯(Backtrack)。
- 大坑點 :很多同學只記得遞迴進去,忘了記錄回來的路!
- 比如你剛才向右
>走到了死衚衕,遞迴返回的時候,一定要在路徑字串里加一個向左<的指令,讓機器人回到上一個路口,這樣它才能去探索別的路。
- 比如你剛才向右
題目二:Minimum Chairs
題目大意: 這個簡單很多。給你一串字元 S,代表一堆人進進出出:
'S'(Start) = 進來一個人'E'(End) = 走了一個人 問你房間裡最多同時也存在幾個人?(也就是最少需要準備幾把椅子)。
破題思路: 這就是一道簡單的模擬/貪心題。 你就在腦子裡想象有個計數器:
- 看到
S就+1,同時看一下現在的數是不是歷史最高的,如果是,就更新記錄。 - 看到
E就-1。 - 最後輸出那個“歷史最高值”就行了。
參考程式碼 (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 策略心得
說實話,Barclays 的 OA 更多考察的是你處理複雜規則和狀態的能力,而不僅僅是演算法本身。我的經驗是,遇到題目不要急著開寫程式碼,先把題意吃透再動手。像 Robot Cleaner 這種題,先在紙上標記起點、牆壁和空地,理清機器人每一步可能的動作,邊界條件先想明白,比直接寫 DFS 要穩得多。
做模擬題的時候,狀態管理很關鍵。每走一步、回溯一步,都要在腦子或者程式碼裡記錄清楚,不然容易漏掉路徑或者重複計算。就算時間緊,也要先保證邏輯正確,再去考慮最佳化——畢竟 OA 的考察重點是執行力和完整性,而不是一開始就追求極致效能。
時間管理建議
240 分鐘聽起來很多,但真做下來你會發現題目資訊量非常大,特別是規則模擬類題,很容易在中後段被節奏消耗掉。我的經驗是先易後難:先拿 Minimum Chairs 這種簡單題,快速拿到確定分,再把主要精力放在 Robot Cleaner 這種複雜題上。
做題時可以心裡給自己分塊計時,比如 Robot Cleaner 預留一到一小時半,Minimum Chairs 30 分鐘,剩下時間留給檢查和除錯。模擬題最好邊寫邊檢查,不要留到最後一口氣全域性檢查,否則出錯的地方會很難找。
常見坑點
這類 OA 最大的坑,其實都是細節問題。比如 Robot Cleaner,如果回溯路徑忘記把返回的動作加上,整條移動指令就會錯;Minimum Chairs,如果計數器更新不當,歷史峰值就不對。還有一些小細節,比如輸入可能為空、機器人起點被牆包圍、或者輸出要求是動作序列而不是步數,這些都是容易踩的點。
所以做題的時候,慢一點但仔細一點,保證每一步都在自己腦子裡或者程式碼裡完全成立,比盲目追速度更可靠。
遠端助攻體驗分享
其實很多同學在這種長時間、規則複雜的 OA 中,很容易節奏被打亂。如果你想在考試中保持思路清晰、抓住題目關鍵,Programhelp 提供的遠端助攻服務會很有幫助:
實時語音提醒:遇到邊界或規則容易忽略的地方,第一時間提示思路方向
程式碼輔助:提供模板和關鍵思路,讓你在限定時間內完成複雜模擬題
OA 代寫/輔導:全程親力親為,涵蓋從題目分析到程式碼實現的完整指導
VO & 面試助攻:不只是 OA,Behavioral / VO 面試也能獲得語音提示和答題策略
如果你也想在 Barclays 或其他長時間、規則複雜的 OA 中保持節奏,不被細節拖慢效率,不妨嘗試 Programhelp 的遠端助攻。無論是 OA 題目分析、程式碼實現,還是 VO / Behavioral 面試答題策略,都能得到實時指導和語音提醒,讓你在關鍵時刻不慌不亂,發揮出最強實力。