最近我們這邊剛帶一位學員走完 Uber OA 。和之前很多場次一樣,今年不少 Uber OA 已經從 CodeSignal 轉到了 HackerRank 平台。
這場考試的結構其實很典型:3 道 coding 題 + 限時完成。這次我們是遠端即時輔助的方式帶著學員一起做完整場 OA,整體節奏控制得比較穩,大概 30 分鐘左右三題全部完成並通過測試。下面把這場 Uber OA 的題型和核心思路複盤一下。

第一題:Python: Lambda Map
題意
題目給一個二維數組,需要將每個子數組處理:先篩選出所有正整數,再將這些正整數平方,最後再回傳新的二維數組。
解題思路
外層用 map 遍歷每一個子數組,並在子數組內部先用 filter 過濾出正整數,然後再用 map 對這些數字進行平方運算,最後把結果轉換成列表回傳。
這題的核心不是演算法複雜度,而是對 Python lambda、map、filter 這些函數式寫法是否熟悉。如果平常習慣用這種寫法,基本上可以用一行表達式完成整個邏輯。
第二題:Node Disconnection
題意
題目給一個字串,每次操作可以刪除一段連續相同的字符,需要計算最少多少次操作可以把整個字串刪掉。
解題思路
關鍵點在於理解操作規則。一段連續相同字元在一次操作中就可以全部刪除,所以問題本質就是統計字串中有多少個連續字元段。
實作時只需要從左到右掃描字串。如果目前字元和前一個字元不同,就表示進入了新的連續段,計數加一即可。整題就是一個線性遍歷,時間複雜度是 O(n)。
這題很多人第一反應會去模擬刪除過程,其實完全沒必要,只要抓住「連續段數量」這個核心就能很快寫出來。
第三題:Purchase Optimization
題意
比較典型的貪心題。題目給出商品價格數組 prices,一個起始位置 pos,以及總預算 amount。
規則是從 pos 開始往後購買商品,只要當前預算可以負擔得起,就繼續購買,累計花費不能超過 amount。當剩餘金額不夠買下一個商品時停止,最後返回一共買了多少件商品。
解題思路
解法就是順序遍歷。從 pos 開始檢查每個價格,如果 amount 大於等於當前商品價格,就進行購買,同時更新剩餘預算並增加計數;如果預算不夠,就直接結束循環。
整個過程就是一個簡單的順序貪心策略,複雜度也是 O(n)。
OA 不熟悉?不用慌
如果你也即將參加 Uber OA,但對這種線上筆試平台不太熟悉,或者對時間節奏、題型把握沒有太大信心,其實完全可以提前找有經驗的人一起準備。我們這邊長期在帶同學做各類公司 OA,例如在 HackerRank、CodeSignal 這類平台上的 coding assessment。覺得自己一個人把握不太穩,歡迎 聯絡我們 。