Amazon OA 分享| Amazon Online Assessment 真題解析 + HackerRank 解法總結

帶學員打完一場最新 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:
                    # 但待機也會故障(因為執行總數 k >= threshold)
                    must_operate += 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] = 3, 不變
    # i=2: 1 = 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。
    END
     0