Amazon OA 分享| Amazon Online Assessment 真题解析 + HackerRank 解法总结

14次閱讀
No Comments

带学员打完一场最新 Amazon Online Assessment ,想和大家分享一下经验。这次 OA 整体难度适中,题目设计很贴合亚马逊的业务场景,考察的是组合数学和贪心算法的应用。希望这篇分享能帮到正在准备的同学们!

Amazon OA 分享| Amazon Online Assessment 真题解析 + HackerRank 解法总结

时间线与考试形式

项目 详情
考试时长 105 分钟
题目数量 2 道编程题
考试平台 HackerRank
语言支持 主流编程语言(我使用 Python)

    重要提示

    • 题目有隐藏测试用例,不要只通过样例就提交
    • 建议先通读两道题,选择有把握的先做
    • 时间分配:第一题建议 50-60 分钟,第二题 30-40 分钟,留 10-15 分钟检查

    题目 1:仓库机器人配置计数

    题目描述

    在亚马逊仓库中,有 n 个机器人,每个机器人可以是运行(Operating)或待机(Standby)状态。每个机器人 i 有一个协调阈值 coordinationThreshold[i]

    故障条件(满足任一即故障):

    1. 机器人 i 正在运行,但其他运行中的机器人数量 < coordinationThreshold[i]
    2. 机器人 i 处于待机,但运行中的机器人总数 ≥ coordinationThreshold[i]

    目标:计算有多少种配置方案,使得没有任何机器人故障。

    题目 1 思路

    核心是:设运行的机器人总数为 k,我们可以通过枚举 k 的可能取值来计算方案数:

    1. 对于一个固定的 k,筛选出所有必须运行和必须待机的机器人:
      • 机器人 i 必须运行:coordinationThreshold[i] ≤ k-1
      • 机器人 i 必须待机:coordinationThreshold[i] > k
      • 机器人 i 可选:k-1 < coordinationThreshold[i] ≤ k
    2. 若可选机器人数量为 m,则当且仅当「必须运行的机器人数量 ≤ k ≤ 必须运行 + 可选机器人数量」时,有 C(m, k - 必须运行数量) 种方案
    3. 遍历所有可能的 k0 ≤ k ≤ n),累加所有有效方案数

    参考代码

    from math import comb

    def countValidConfigurations(n, coordinationThreshold):
    total_configs = 0

    # 枚举运行机器人总数 k
    for k in range(n + 1):
        must_operate = 0    # 必须运行
        must_standby = 0    # 必须待机
        flexible = 0        # 可选
    
        for i in range(n):
            threshold = coordinationThreshold[i]
    
            # 如果运行,需要至少 threshold 个其他机器人运行
            # 即总运行数 k 时,其他运行数 = k - 1
            if threshold <= k - 1:
                # 阈值 <= k-1,运行不会故障
                if threshold > k:
                    # 但待机也会故障(因为运行总数 k >= threshold)
                    must_operate += 1
                else:
                    # threshold <= k,运行和待机都可以
                    flexible += 1
            else:
                # threshold > k-1,运行会故障
                if threshold > k:
                    # 待机不会故障
                    must_standby += 1
                else:
                    # k-1 < threshold <= k,运行故障但待机也故障
                    # 这种情况无解,跳过这个 k
                    must_standby = float('inf')
                    break
    
        # 检查是否可行
        if must_operate <= k <= must_operate + flexible:
            # 从 flexible 个机器人中选 (k - must_operate) 个运行
            configs = comb(flexible, k - must_operate)
            total_configs += configs
    
    return total_configs

    n = 8
    coordinationThreshold = [6, 0, 3, 3, 6, 7, 2, 7]
    print(countValidConfigurations(n, coordinationThreshold)) # 输出: 3

    题目 2:服务器算力调整

    题目描述

    AWS 有 n 台服务器,初始算力为 power[n]。需要通过调整让算力数组变成非递减排列。

    调整规则

    • 可以选择任意连续子数组 [L, R],给这些服务器同时增加 x 点算力(x ≥ 0
    • 可以执行多次操作

    目标:找到最小的所有操作的 x 之和。

    题目 2 思路

    这是经典的「用区间加法让数组非递减,求最小增量和」问题,最优解法是差分 / 贪心:

    • 从左到右遍历数组,若 power[i] < power[i-1],则 power[i] 需要增加 delta = power[i-1] - power[i]
    • 为了让操作数最少,我们可以直接给 power[i] 增加 delta(等价于对 [i, n-1]delta
    • 累加所有 delta 就是答案(因为区间加法的效果等价于给单个元素加,不会影响后续的非递减判断)

    参考代码

    def findMinimumSum(power):
        n = len(power)
        total_increase = 0
        
        for i in range(1, n):
            if power[i] < power[i - 1]:
                # 需要增加的量
                delta = power[i - 1] - power[i]
                total_increase += delta
                # 更新当前值(相当于对 [i, n-1] 整体加 delta)
                power[i] = power[i - 1]
        
        return total_increase
    
    # 测试样例
    power = [3, 4, 1, 6, 2]
    print(findMinimumSum(power))  # 输出: 7
    
    # 过程演示:
    # [3, 4, 1, 6, 2]
    # i=1: 4 >= 3, 不变
    # i=2: 1 < 4, 加 3 → [3, 4, 4, 6, 2], total += 3
    # i=3: 6 >= 4, 不变
    # i=4: 2 < 6, 加 4 → [3, 4, 4, 6, 6], total += 4
    # 最终答案: 3 + 4 = 7

    备考资源推荐

    大厂笔试准备的一些额外建议

    Amazon OA 看起来通常只有 2 道题,但真正做的时候压力其实很大——不仅有隐藏 test cases,还需要在有限时间内快速想到最优解。尤其是像 Amazon 这种高频使用 HackerRank / CodeSignal 平台的公司,很多同学卡的不是基础语法,而是:

    • 题目理解速度慢
    • edge case 容易遗漏
    • debug 时间过长
    • 明明思路对了,但最终没法通过全部 test cases

    如果你正在准备 Amazon OA、VO,或者其他大厂技术面试,Programhelp 提供更完整的支持:

    • OA real-time assistance
    • HackerRank / CodeSignal support
    • Mock interviews
    • Technical interview guidance
    • System design preparation
    • Amazon Leadership Principles interview prep

    我们整理了大量 Amazon 高频 OA 题库和 VO 面试经验,帮助很多同学更高效准备并拿到 offer。

    如果你最近也在冲 Amazon、TikTok、Meta、Google 等大厂岗位,提前准备真的会轻松很多。

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