最近很多同学在讨论今年亚麻暑期实习 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