最近很多同學在討論今年亞麻暑期實習 OA 的題目,大多數還是那幾道反覆出現的老題,變化不大。這裡整理了兩道遇到的新題,希望幫到準備 OA 的同學。
流程還是老樣子:在 HackerRank 上做題,開始時需要拍照身份認證,之後整個過程不需要再開攝影機或共享螢幕。Test case 有 hidden,按通過用例數計分。編程題之後是 Work Simulation。
Amazon 實習 OA 速查表
| 維度 | 詳情 |
|---|---|
| 平台 | HackerRank |
| 身份認證 | 開始時拍照,之後無需攝影機 |
| 題量 | 2 道編程題 + Work Simulation |
| 時長 | 編程約 60-90 分鐘 |
| 評分 | 按通過的 hidden 用例數計分 |
題一:倉庫機器人最短路徑(BFS)
題目描述
模擬 Amazon 物流倉儲中心最典型的規劃問題。給定一個由 0 和 1 組成的二維網格:0 表示可通行道路,1 表示障礙物。給出機器人起點和目標包裹位置,返回從起點到目標的最短路徑長度;若到不了返回 -1。
解題思路
網格上的最短路徑(每步代價相同)首選 BFS:從起點逐層擴展,第一次到達目標時的層數就是最短距離。用佇列記錄 (列, 行, 距離),visited 防止重複入佇列。
Python 解法
from collections import deque
def shortest_path(grid, start, target):
rows, cols = len(grid), len(grid[0])
sr, sc = start
tr, tc = target
if grid[sr][sc] == 1 or grid[tr][tc] == 1:
return -1
queue = deque([(sr, sc, 0)])
visited = {(sr, sc)}
while queue:
r, c, dist = queue.popleft()
if (r, c) == (tr, tc):
return dist
for dr, dc in ((1, 0), (-1, 0), (0, 1), (0, -1)):
nr, nc = r + dr, c + dc
if 0 <= nr < rows and 0 <= nc < cols \
and grid[nr][nc] == 0 and (nr, nc) not in visited:
visited.add((nr, nc))
queue.append((nr, nc, dist + 1))
return -1
為什麼不用 DFS:DFS 找到的不一定是最短路徑,還要回溯所有路徑才能確認最短;BFS 按層擴展,第一次到達即最短,複雜度更優。
時間複雜度:O(rows × cols) 空間複雜度:O(rows × cols)
題二:伺服器負載分配模擬(貪心 + 堆積)
題目描述
更偏向 Amazon Prime Video 背後的內容分發邏輯。給定 N 台伺服器的當前負載,系統一次新增 K 個請求,模擬分配過程:每次把新請求派給當前負載最低的伺服器,分配後更新其負載,再繼續下一輪。做完 M 次分配後,返回最終負載狀態。
解題思路
每次都要取「負載最低」,這是最小堆積的經典場景。把 (負載, 伺服器編號) 入堆,每次彈出最小、加上請求量、再壓回堆。
Python 解法
import heapq
def distribute_load(loads, requests):
# loads: 初始負載列表; requests: 每次新增的請求量列表
heap = [(load, i) for i, load in enumerate(loads)]
heapq.heapify(heap)
for req in requests:
cur_load, idx = heapq.heappop(heap) # 取負載最低
heapq.heappush(heap, (cur_load + req, idx))
result = [0] * len(loads)
for load, idx in heap:
result[idx] = load
return result
為什麼用堆積而非每次掃描:每次線性掃描找最小是 O(N),總共 O(M·N);堆積把單次取最小降到 O(log N),總複雜度 O(M log N),在 N、M 較大時差距明顯——這正是 hidden case 卡 TLE 的地方。
時間複雜度:O((N + M) log N) 空間複雜度:O(N)
Work Simulation 應對
編程題之後的 Work Simulation 簡單得多,可以理解成選擇題版的情境判斷測驗(SJT),不限時,邏輯相對固定。答題時圍繞 Amazon Leadership Principles(Customer Obsession、Ownership、Bias for Action 等)選擇,基本能穩過。
備考策略
| 能力 | 重點 | 推薦 LeetCode |
|---|---|---|
| 網格 BFS | 最短路徑、層序擴展 | 1091, 994, 542 |
| 堆積 / 貪心 | 動態取極值 | 1167, 215, 1834 |
| IO 範本 | HackerRank stdin 讀入 | — |
| 複雜度意識 | N 大時排除 O(M·N) | — |
FAQ
Q1:Amazon 實習 OA 在哪個平台做?需要全程開攝影機嗎? 在 HackerRank 上做。開始時需要拍照做身份認證,之後整個過程不需要再開攝影機或共享螢幕。編程題結束後還有一個 Work Simulation。
Q2:Amazon 實習 OA 有幾道題?難度如何? 通常 2 道編程題 + 1 個 Work Simulation。編程題以 LeetCode 中等為主,常見網格 BFS、負載分配模擬這類貼業務場景的題,難點多在複雜度優化而非思路。
Q3:倉庫最短路徑題為什麼要用 BFS 而不是 DFS? 每步代價相同的網格最短路徑,BFS 按層擴展,第一次到達目標即最短,複雜度 O(列×行)。DFS 不保證最短,需回溯所有路徑,效率更差。
Q4:伺服器負載分配題怎麼避免 TLE? 用最小堆積動態取負載最低的伺服器,單次 O(log N),總 O(M log N)。若每次線性掃描找最小是 O(M·N),在大資料 hidden case 上會超時。
Q5:Work Simulation 怎麼準備? 它是不限時的情境判斷選擇題,圍繞 Amazon Leadership Principles 作答即可,優先體現 Customer Obsession 和 Ownership,邏輯固定,認真讀題基本不會出錯。
正在準備 Amazon 實習 OA?
如果你 HackerRank IO 還不熟、網格 BFS 或堆積優化反覆 TLE,或希望有人幫你做平台流程檢查與題型陪練,可以聊聊完整的 OA代面 / OA輔助 方案——從真題拆解到複雜度優化,全程支援。
聯絡方式
需要面試真題與客製備戰計畫?立刻聯絡微信 Coding0201,獲取真題。
Email: [email protected] Telegram: @OAVOProxy