今天下午剛收到 Amazon OA ,晚上就順手把它做完了。整體體驗下來感覺難度中等偏簡單,兩道題都不是特別複雜的演算法題,更偏向資料結構 + 規律觀察。如果平時刷題比較穩定,基本可以在時間內完成。
這場 OA 平臺還是常見的線上評測環境,Coding 部分做完之後還會有一段 情境判斷題(類似工作場景選擇)+ 性格測試類問題。整個流程大概 100 分鐘左右,節奏不算特別緊張。

Coding 1:Bug Frequency 排序
題目簡析
第一題整體非常經典,本質上就是一個frequency sort 型別的題。題目給一個 bugs 陣列,每個數字代表一個 bug code,陣列裡可能會有重複的數字,需要根據 bug 的“重要程度”進行排序。
排序規則其實非常直觀。首先是出現次數越少的 bug 越重要,也就是優先順序越高;如果兩個 bug 的出現次數相同,那麼bug code 數值更小的排在前面。
比如示例陣列:
[8,4,6,5,4,8]
統計每個數字出現次數之後會得到:
6 -> 1
5 -> 1
8 -> 2
4 -> 2
按照題目的排序規則,最終結果會變成:
[5,6,4,4,8,8]
解題思路
第一步先用 HashMap 統計每個 bug code 的出現次數,然後在排序的時候使用自定義排序規則:先按照 frequency 升序排序,如果 frequency 相同,再按照 bug code 本身升序排序。
程式碼實現上就是一個 頻率統計 + 自定義 comparator 排序。這種題在很多 OA 裡都比較常見,如果平時刷過類似題型,基本屬於可以很快寫完的型別。
Coding 2:Prefix 最大分段數
題目簡析
題目給一個只包含大寫字母 的字串 packages。要求對於字串的每一個字首,計算這個字首最多可以被切成多少段連續子串,並且需要滿足一個條件:每一段裡面每個字元出現的次數必須完全一樣。
換句話說,就是所有分出來的子串,它們的字元頻率分佈必須一致。
舉個簡單的例子:
字串:
ABAB
逐個 prefix 來看:
A -> 1
AB -> 1
ABA -> 1ABAB-> 2
最後一個 prefix 可以被分成:ABAB
AB | AB
因此這一位的答案是 2。
所以最終輸出結果就是:
[1,1,1,2]
解題思路
這題的關鍵點在於:對於每一個 prefix,需要判斷它 最多能被切成多少個相同結構的子串。
一般的思路是先維護 prefix 的字元頻率統計。如果 prefix 長度是 n,假設它可以被分成 k 段,那麼每一段的長度就是 n / k。只有當 n 能被 k 整除的時候,這種切分才是可能的。
接下來需要檢查每一段的字元分佈是否一致,也就是說每一段內部的字元頻率是否相同。如果滿足條件,那麼這個 k 就是一個合法分段數,最終取最大的 k 即可。
實現時通常會用一個26 長度的頻率陣列 來記錄字元統計,然後列舉可能的分段數量進行驗證。整體屬於 字串處理 + 簡單數學規律判斷 的題型。
OA 其他部分
兩道 Coding 寫完之後,後面還有一部分Work Simulation,以及一些偏性格測試型別的題目。這部分主要是給一些工作場景,比如團隊協作、任務優先順序衝突、專案時間壓力等,讓你在幾個選項中選擇最符合自己行為方式的做法。有些題是單選,有些是讓你在幾個選項裡選Most Likely / Least Likely。
Amazon 這部分題目基本都是圍繞Leadership Principles來設計的,比如:Customer Obsession、Ownership、Bias for Action、Earn Trust 等等。所以做題的時候一般思路是偏向主動承擔責任、優先解決客戶問題、團隊合作以及資料驅動決策 這些方向。這部分題數量不算特別多,但需要保持回答邏輯一致,不要前後矛盾。
瞭解更多
如果最近也在準備 Amazon / Google / Citadel / IMC 等公司的 OA,但對題型不太熟或者擔心時間不夠,其實可以提前多看看真實面經題庫。我們這邊長期整理各大廠最新 OA 題型,也有 實時OA助攻 和模擬訓練,很多同學都是透過提前熟悉題型順利透過 OA。