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

1,473Times read

我最近辅助了几位同学完成了 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 of text
 0