Amazon 的 New Grad (NG) 岗位竞争在 2025 年达到了白热化阶段。根据 Amazon ng 一亩三分地 相关帖子反馈,今年的 OA 呈现出一个显著趋势:不再追求极端的 LeetCode Hard 难度,而是极度看重代码的鲁棒性(Robustness)和对边界条件(Edge Cases)的处理。
近期,我们的一位学员在 13 分钟内完美通过了 HackerRank 平台的两道编程题。这并非运气,而是对 Amazon 考察模式(Pattern Recognition)的精准降维打击。本文将深度复盘这套题目,并分享高效解题的底层逻辑。

Amazon OA 考察形式与评分标准
Amazon 的 OA 流程通常包含三个部分,其中 coding 是第一关,也是最硬的门槛。
- Coding Assessment (70 mins): 2 道编程题。
- Expert Insight: 仅仅 Pass Test Cases 是不够的。Amazon 的后台评分系统会检测你的代码复杂度、变量命名规范以及是否存在多余的逻辑。
- Work Simulation (SJT): 模拟真实工作场景的选择题。
- Work Style Assessment: 性格测试,核心考点是 Leadership Principles (LP)。
Amazon OA 整体难度 & 心得
- 平台:HackerRank
- 题量:2 编程题
- 总时长:70 分钟
- 我的用时:13 分钟(T1 8 分钟 + T2 5 分钟)
- 难度判断:Easy-Medium,比一亩三分地上大家传的旧版 OA 简单很多
- 考点方向:Interval merge、greedy、sliding window、modulo 分配
Amazon 现在 NG OA 的风格更偏 “你能不能写对基础代码、处理好边界”,不是那种卡你心态的 tricky 高频题。
T1 — Interval Connectivity Reduction
问题描述: 给定 n 个区间 [start_i, end_i],你可以最多添加 k 个新区间(每个新区间长度不超过 limit)。求最少需要多少个连通块(即合并后独立的区间段)。
核心思路:
- 先将所有区间按 start 排序并合并重叠/相邻区间(经典 Merge Intervals)。
- 合并后得到若干独立段,计算相邻段之间的 gap。
- 对所有 gap 排序,用 sliding window 或贪心方式用最多 k 个长度 ≤ limit 的区间去覆盖最大的 gaps,直到无法再减少连通块。
示例代码(Python):
def minimize_components(intervals, k, limit):
intervals.sort(key=lambda x: x[0])
merged = []
for interval in intervals:
if not merged or merged[-1][1] < interval[0]:
merged.append(interval)
else:
merged[-1][1] = max(merged[-1][1], interval[1])
gaps = []
for i in range(1, len(merged)):
gaps.append(merged[i][0] - merged[i-1][1])
gaps.sort()
i = 0
while k > 0 and i < len(gaps):
if gaps[i] <= limit * k:
k -= (gaps[i] + limit - 1) // limit # 需要多少个区间覆盖这个 gap
i += 1
else:
break
return len(merged) - i
常见容易出错的地方:一是合并区间前忘了按左端点排序,导致合并出错;二是算空隙的时候把 start [i+1] 和 end [i] 写反了;三是滑动窗口的左指针没正确推进,搞出死循环;四是判断覆盖长度的时候,漏了 “等于 k” 的情况。
T2 — Maximizing Distinct Hash Values
问题描述: 给定数组 params(每个位置的权重),你需要构造一个当前值 current,通过 current = (current + i * params[i]) % MOD 累加。求最多能得到多少个不同的哈希值。
核心思路:
- 最终哈希值集合大小取决于每次累加后取模的结果差异。
- 为了最大化不同值数量,需要让累加过程尽可能产生新值。
- 贪心策略:将 params 从大到小排序,优先加权大的项,能更快“跳出”已有的模值范围。
示例代码(Python):
def max_distinct_hashes(params):
params.sort(reverse=True)
seen = set([0])
current = 0
for p in params:
current = (current + p) % (10**9 + 7) # MOD 通常很大
seen.add(current)
return len(seen)
常见容易出错的地方:一是没给 param 数组排序,贪心逻辑就没法生效;二是没考虑到 param [i] 等于 1 的时候,取模只能得到 0,没法生成其他值;三是 current_val 的增长逻辑写错了;四是把 “最大不同哈希值个数” 误解成了 param 数组去重后的元素个数。
这套题虽然不难,但对于没刷过类似 Interval 或 Constructive Greedy 题目的同学,要在 70 分钟内写完且 Debug 成功,压力还是不小的。如果你对 OA 还是没底,或者马上要接 HackerRank 的链接了不敢点,看下面
Amazon Leadership Principles (LP) – 被忽视的“隐形杀手”
很多技术过硬的同学挂在了 Coding 后的 Work Simulation 上。Amazon 的 OA 不仅仅是考代码,更是考你是否符合 Amazon 的价值观。
备考重点:
- Customer Obsession: 在做选择题时,永远把客户利益放在 KPI 之上。
- Bias for Action: 在信息不全时,你是选择等待完美数据,还是根据现有数据先行动?Amazon 偏好后者(但在风险可控的前提下)。
- Ownership: 不要说“那不是我的工作”,要展示出对整个项目的责任感。
Final 季救命稻草!CS 作业/Project 搞不定?找 Programhelp
想要在激烈的求职季中弯道超车?Programhelp 为你提供从OA到 Offer 的全流程硬核助攻。
针对 OA ,我们采用 ToDesk 远程无痕操作,支持 HackerRank、Codesignal 等全平台,承诺 100% 通过率,安全且隐蔽,不过不收费。
在 VO环节,我们提供灵活的解决方案:既有北美 CS 专家通过自研无痕文档提供实时思路提示(涵盖 Code、BQ、System Design),助你对答如流;也有基于摄像头与变声技术的代面试服务,支持“对口型”或“全替”模式,完美解决怯场难题。
更有 全套包 Offer 套餐,承包从 OA、面试到薪资谈判的所有环节,一站式服务直到你拿到满意的 Offer。把专业的事交给我们,你只需准备入职!
NG 的求职真的很残酷,大家都在抢同一批机会。
但这一届的竞争不是比谁会更难的题,而是比谁 更稳、更快、更少出错。
所以如果你现在压力很大、很焦虑——别急,我们都经历过。
一步一步来,把 OA 稳住,就是最好的开始。
祝你早日拿到「Congratulations!」邮件。