Amazon ng 一亩三分地 | Amazon OA 新鲜面经分享 | 13 分钟过两道题

214次閱讀

Amazon 的 New Grad (NG) 岗位竞争在 2025 年达到了白热化阶段。根据 Amazon ng 一亩三分地 相关帖子反馈,今年的 OA 呈现出一个显著趋势:不再追求极端的 LeetCode Hard 难度,而是极度看重代码的鲁棒性(Robustness)和对边界条件(Edge Cases)的处理。

近期,我们的一位学员在 13 分钟内完美通过了 HackerRank 平台的两道编程题。这并非运气,而是对 Amazon 考察模式(Pattern Recognition)的精准降维打击。本文将深度复盘这套题目,并分享高效解题的底层逻辑。

Amazon ng 一亩三分地 | Amazon OA 新鲜面经分享 | 13 分钟过两道题

Amazon OA 考察形式与评分标准

Amazon 的 OA 流程通常包含三个部分,其中 coding 是第一关,也是最硬的门槛。

  1. Coding Assessment (70 mins): 2 道编程题。
    • Expert Insight: 仅仅 Pass Test Cases 是不够的。Amazon 的后台评分系统会检测你的代码复杂度、变量命名规范以及是否存在多余的逻辑。
  2. Work Simulation (SJT): 模拟真实工作场景的选择题。
  3. 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)。求最少需要多少个连通块(即合并后独立的区间段)。

核心思路

  1. 先将所有区间按 start 排序并合并重叠/相邻区间(经典 Merge Intervals)。
  2. 合并后得到若干独立段,计算相邻段之间的 gap。
  3. 对所有 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!」邮件。

author avatar
Jory Wang Amazon资深软件开发工程师
Amazon 资深工程师,专注 基础设施核心系统研发,在系统可扩展性、可靠性及成本优化方面具备丰富实战经验。 目前聚焦 FAANG SDE 面试辅导,一年内助力 30+ 位候选人成功斩获 L5 / L6 Offer。
正文完