Amazon HackerRank OA 真題分享 | 2026 年 5 月最新版

2,004Views

我最近輔助了幾位同學完成了 Amazon HackerRank OA(包括 SDE Intern 和 New Grad)。Amazon OA 主流是 2 道 Coding 題(90 分鐘),偶爾會出現 3 道,但整體題型風格穩定。為了幫助大家高效備考,我把近期多場 OA 中出現頻率最高、重複率較高的 5 道高頻真題 整理出來,附上詳細解題思路和程式碼模板,供大家參考。

Amazon HackerRank OA 真題分享 | 2026 年 5 月最新版

Amazon HackerRank OA 整體情況

  • 平臺:HackerRank
  • 題量:主流 2 道 Coding 題(少數 3 道)
  • 時長:90 分鐘
  • 難度:第一題 Easy-Medium,第二題 Medium-Hard
  • 特點:第二題描述較長,邊界條件多,時間壓力較大

下面是 2026 年 5 月近期高頻的 5 道代表性真題:

Amazon HackerRank OA 高頻真題詳解

1. 庫存分配演算法(Medium-Hard)

題目:在限時搶購活動中,顧客提交請求 [customerId, quantity, bidAmount, timestamp]。按出價優先、相同出價按時間戳輪詢分配,每次每人最多分配 1 件,直到庫存耗盡。返回沒有獲得任何商品的顧客 ID 列表(升序)。

解題思路:

  • 先按 bidAmount 降序、timestamp 升序排序
  • 使用優先佇列或排序後模擬輪詢分配
  • 記錄每位顧客已獲得的商品數量

核心程式碼框架(Python):

def getUnfulfilledCustomers(requests, totalInventory):
    # requests = [customerId, quantity, bidAmount, timestamp]
    customers = sorted(requests, key=lambda x: (-x[2], x[3]))
    from collections import defaultdict
    allocated = defaultdict(int)
    
    for cust in customers:
        cid, qty, bid, ts = cust
        while qty > 0 and totalInventory > 0 and allocated[cid] < qty:
            allocated[cid] += 1
            totalInventory -= 1
    unfulfilled = [cid for cid, req in requests if allocated[cid[0]] == 0]
    return sorted(set(unfulfilled))

2. 電影搜尋(Django 程式碼片段修復)

題目:給出了一個 search_movies 的 Django 檢視程式碼片段(見下方),需要實現或完善電影搜尋介面。介面支援:

  • 按年份精確篩選 year,或範圍 min_year / max_year;
  • 按導演 director、编剧 writer 模糊搜索(大小写不敏感);
  • 按評分 rating 降序,平分時按人氣 popularity 降序;
  • 返回 JSON 列表,包含電影的詳細欄位。

參考程式碼

def search_movies(request):
year = request.GET.get(‘year’)
min_year = request.GET.get(‘min_year’)
max_year = request.GET.get(‘max_year’)
director = request.GET.get(‘director’)
writer = request.GET.get(‘writer’)

movies_qe = Movie.objects.all()

if year:
    movies_qe = movies_qe.filter(year=int(year))
else:
    if min_year:
        movies_qe = movies_qe.filter(year__gte=int(min_year))
    if max_year:
        movies_qe = movies_qe.filter(year__lte=int(max_year))
if director:
    movies_qe = movies_qe.filter(director__icontains=director.strip())
if writer:
    movies_qe = movies_qe.filter(writers__icontains=writer.strip())

movies_qe = movies_qe.order_by('-rating', '-popularity')

movies = []
for movie in movies_qe:
    movies.append({
        '_id': str(movie.id),
        'title': movie.title,
        'year': movie.year,
        'duration': movie.duration,
        'rating': movie.rating,
        'popularity': movie.popularity,
        'genre': movie.genre,
        'description': movie.description,
        'director': movie.director,
        'writers': movie.writers,
        'stars': movie.stars,
    })
return JsonResponse(movies, safe=False)

3. SQL:拍卖网站中标者查询(高频)

題目:網站採用“加價競拍”,買家可無限次加價,每次加價幅度由賣家預設。出價最高(即最後一次出價)的買家中標。請編寫 SQL 查詢返回所有拍品的資訊:

字段 說明
name 拍品名稱
starting_price 起拍價
bid_step 每次加價幅度
bids 总出价次数
current_price 当前价格 = 起拍价 + 加价幅度 × 出价次数
current_winner 最后一次出价的买家用户名

結果按 name 升序排列。

假設表結構

  • items 表:id, name, starting_price, bid_step
  • bids 表:id, item_id, bidder_name, bid_time(每次出價記錄)

解題思路

  1. 在 bids 表中按 item_id 分組,獲取出價次數和最後出價的買家;
  2. 最後出價者可透過視窗函式 ROW_NUMBER() OVER (PARTITION BY item_id ORDER BY bid_time DESC) 或聚合時利用 LAST_VALUE / 相關子查詢獲得;
  3. 與 items 表 JOIN,計算 current_price。

參考 SQL:

SELECT 
    i.name,
    i.starting_price,
    i.bid_step,
    COUNT(b.id) AS bids,
    i.starting_price + i.bid_step * COUNT(b.id) AS current_price,
    (SELECT buyer_username FROM bids 
     WHERE item_id = i.id 
     ORDER BY bid_time DESC LIMIT 1) AS current_winner
FROM items i
LEFT JOIN bids b ON i.id = b.item_id
GROUP BY i.id
ORDER BY i.name ASC;

4. REST API:國家電話程式碼格式化

題目:根据国家名称调用 API 获取区号,格式化电话号码为 +区号 电话号码,未找到国家返回 -1。

解題思路:

  • 呼叫 https://jsonmock.hackerrank.com/api/countries?name={country}
  • 取 callingCodes 数组中最后一个区号
  • 格式化返回

5. 密碼強度驗證

題目:根據規則判斷密碼是“弱密碼”還是“強密碼”。

弱密码条件:

  • 包含常用詞
  • 僅數字
  • 僅大寫或僅小寫
  • 長度 < 6

解題思路:逐条检查规则,返回对应结果。

從刷題低效到順利透過 Amazon OA

這次很高興能幫助這批同學順利透過 Amazon HackerRank OA。我發現很多同學在準備 OA 時,光靠自己刷題效率其實不高,特別容易在時間分配和複雜題型的邊界處理上吃虧。

如果你也在準備 Amazon SDE Intern、New Grad 或其他大廠的 HackerRank OA,感覺一個人複習效率低、方向模糊,歡迎聯絡 Programhelp。

我們會根據你的具體水平和弱點,提供專業的 OA 實戰輔助服務和一對一指導。

author avatar
Jory Wang Amazon資深軟體開發工程師
Amazon 資深工程師,專注 基礎設施核心系統研發,在系統可擴充套件性、可靠性及成本最佳化方面具備豐富實戰經驗。 目前聚焦 FAANG SDE 面試輔導,一年內助力 30+ 位候選人成功斬獲 L5 / L6 Offer。
END
 0