前段時間做了 Dropbox OA,大概是 75 分鐘 3 道題,平臺用的是 HackerRank。 題目風格比較貼近實際工作場景,不是純演算法競賽那種,代碼要考慮邊界情況和可讀性
我這次是全程有 Programhelp 輔助,即時配合節奏很穩,不會出現那種寫到一半卡住的情況。 整體下來,時間上挺寬裕,最後還多幾分鐘用來跑額外測試

考試流程
開始前我提前 10 分鐘進平台測試環境。 Programhelp 那邊也準備好了,我們約好由我先掃題,他們在後台同步看題目。 這樣我一讀完題就能直接跟他們確認思路
做題順序是先易後難,第一題很快就過了,第二題用個數學公式直接搞定,最後一題是 BFS+狀態記錄,寫的時候要小心別漏掉狀態去重。 每做完一題就跑平臺自帶的隱藏測試,確保一次性 AC
真題回顧
Problem 1: Compress String
Given a string s, compress it by replacing consecutive identical characters with the character followed by its frequency. If compression doesn’t shortenthe string, return the original.
Example:
Input: "aaabbc"
Output: "a3b2c1"
Input: "abc"
Output: "abc"
Problem 2: Minimum Moves to Equal Array
You can increment n - 1 elements of an integer array by 1 in one move. Return the minimum number of moves to make all elements equal.
Example:
Input: [1,2,3]
Output: 3
Problem 3: Shortest Path in a Grid with Obstacles
Given a grid with 0 (empty) and 1 (obstacle), find the shortest path from top-left to bottom-right. You may remove at most k obstacles. Return -1 if impossible.
Example:
Input: [[0,0,0],[1,1,0],[0,0,0]], k = 1
Output: 4
解題策略
- 第一題:直接遍曆字串,用一個計數器統計連續字元數量。 最後判斷壓縮后的長度是不是更短,不是就返回原字串
- 第二題:其實就是數學題,最終結果是
sum(nums) - min(nums) * len(nums)。 - 第三題:用 BFS 搜索,把當前位置 + 已移除障礙數當成狀態,放到佇列里。 這樣能避免走回頭路,也能保證時間複雜度不爆炸
常見坑點
- 第一題很多人會忘記長度判斷,直接返回壓縮版會導致輸出不符合題意
- 第二題如果陣列有負數,求最小值時要注意
- 第三題 BFS 如果狀態沒記錄「移除了多少障礙」,會導致重複訪問,性能直接炸掉
FAQ
Q: OA 難度怎麼樣?
A: 比純演算法題友好一些,但最後一題還是需要比較熟練的搜索技巧
Q: 需要提前準備哪些知識?
A: 基礎字串處理、陣列數學運算、BFS/DFS 搜索、狀態壓縮
Q: 時間夠用嗎?
A: 按我這個節奏是夠的,關鍵是先拿下簡單題
讓下一場 OA 成為穩贏之局
這次 Dropbox OA,我不僅全程無卡頓地完成了所有題目,還在最後 5 分鐘多做了幾組測試,確保邊界條件無一遺漏Programhelp 的支援,不是單純代寫,而是用最快的思路、最穩的節奏、最貼合你個人風格的方式,幫你在緊張的線上考試中發揮到極致
如果你的 OA 或技術面試就在眼前,與其獨自硬扛,不如讓一個經驗豐富的夥伴在背後為你保駕護航