四月份最新的 Amazon OA 来了,相比去年,亚马逊明显在增加一些需要现场观察和推导的题型,纯靠背模板已经越来越难吃到满分。这次依然是标准配置: Amazon OA Hackerrank (平台), 2道coding题 + 70分钟左右(部分角色还会出现Work Simulation)。我把4月出现频率较高的真题整理出来,帮大家快速准备。

4月 Amazon OA 整体配置(最新)
平台:HackerRank
题量:2题
时间:70min(部分场次60min)
常见组合:
- 1 道中等(偏思维)
- 1 道中等偏上(偏实现 + 细节)
注意:几乎没有纯简单题
最少安全组数量
题目翻译
一家金融服务公司向 AWS 请求部署其私有云网络。考虑到公司业务的敏感性,AWS 还建议他们添加一种特定类型的安全系统。
网络中共有 n 台服务器,第 i 台服务器的安全需求由 security[i] 表示,其中每个元素代表该服务器的安全防护等级。
为了确保最高级别的防护,AWS 安全团队在设计安全系统时遵循以下规则:
- 同一个安全组内的所有服务器,安全等级必须完全相同;
- 任意两个安全组内的服务器数量,差值不能超过 1。
给定一个整数数组 security,请计算为保障网络安全所需的最少安全组数量。
示例
输入:n = 6,security = [2, 3, 3, 3, 2, 1]
分组方案如下:
- 等级 1:1 台服务器 → 1 个组
- 等级 2:2 台服务器 → 1 个组
- 等级 3:3 台服务器 → 2 个组(每组 1-2 台,差值≤1)最终需要 4 个组。
函数要求
完成函数 findMinimumGroups(security),输入为整数数组 security,返回最少需要的安全组数量(整数)。
思路
统计各等级频率,从最小频率向下枚举基础组大小S,若各频率均可由S和S+1组成则累加组数
最大安全库存总量
题目翻译
作为汽车制造公司的物流经理,你负责将货物存储在安全仓库中。
给定一个长度为 n 的数组 deliveryLogs,其中第 i 个元素代表第 i 批货物的零件数量;同时给定一个偶数 k,代表可用的安全仓库数量。
货物存储规则如下:
- 每个仓库只能存储来自同一批货物的零件,不同批次的货物不能混存;同一批货物的零件可以拆分到多个仓库。
- 存储完成后,货物数量最多的 k/2 个仓库会被入侵,无法计入安全库存。
- 剩余的 k/2 个仓库是安全的,只有这些仓库里的货物会被计入安全库存。
你的任务是:计算最大可实现的安全库存总量。
示例
输入:n = 4,deliveryLogs = [3, 5, 9, 6],k = 4
如果将每批货物单独存入一个仓库,仓库库存为 [3,5,9,6]。
此时货物最多的 2 个仓库(9、6)被入侵,剩余安全库存为 3+5=8。
(最优方案可得到更高的安全库存,需通过拆分批次实现)
函数要求
完成函数 secureMaximumDeliveries(deliveryLogs, k),输入为整数数组 deliveryLogs 和整数 k,返回最大安全库存总量(整数)。
思路
利用贪心策略,通过枚举可能的中位数水位X,计算每个记录能拆出多少个容量为X的块及余数,取前k大块求和S,最大化 S – (k/2)*X 的值
虚拟机租赁总收益
题目翻译
在 Amazon EC2 中,共有 n 种虚拟机(VM)类型,每种类型有一定数量的可用实例。
每次租赁一个 VM 实例时,客户需要支付的费用等于:
所有 VM 类型中最小的非零可用数量 + 所有 VM 类型中最大的可用数量
共有 m 个客户依次前来租赁。每个客户始终选择当前可用数量最多的 VM 类型进行租赁;租赁后,该 VM 类型的可用数量减 1。
请计算完成所有租赁请求后,累计获得的总收益。
示例
输入:n = 3,vmStock = [0, 2, 4],m = 4
模拟租赁过程:
表格
| 客户 | 选择的 VM 类型 | 费用(最小非零 + 最大) | 租赁后剩余库存 |
|---|---|---|---|
| 初始 | – | – | [0, 2, 4] |
| 1 | 3 号(4 个) | 2 + 4 = 5 | [0, 2, 3] |
| 2 | 3 号(3 个) | 2 + 3 = 4 | [0, 2, 2] |
| 3 | 2 号 / 3 号(2 个) | 2 + 2 = 3 | [0, 1, 2] |
| 4 | 3 号(2 个) | 1 + 2 = 3 | [0, 1, 1] |
总收益:5 + 4 + 3 + 3 = 15,因此答案为 15。
函数要求
完成对应函数,输入为 VM 库存数组 vmStock 和客户数 m,返回总收益(整数)。
思路
拿一个有序结构存库存和频次,每次取最小key和最大key,加起来,最大key的库存减一,减到0就删掉。循环m次完事。
包裹标签最大拆分份数
题目
亚马逊的一个团队需要确保所有包裹按标签正确排序。每个包裹的标签是一个大写英文字母,所有标签组成字符串 packages,其中第 i 个字符代表第 i 个包裹的标签。
为了优化排序流程,团队需要分析字符串的每个前缀(长度从 1 到 n),计算该前缀最多能被拆分为多少个相等的部分,拆分需满足:
- 每个部分中,每个字符的出现次数,必须与其他所有部分完全相同。
给定字符串 packages,请对每个前缀长度 t(1 ≤ t ≤ n),计算该前缀满足条件的最大拆分份数。
示例
输入:packages = "ABAB"
各前缀的计算结果如下:
表格
| 前缀长度 | 前缀字符串 | 说明 | 最大拆分份数 |
|---|---|---|---|
| 1 | A | 单字符无法拆分 | 1 |
| 2 | AB | A、B 各出现 1 次,无法拆分为多份 | 1 |
| 3 | ABA | A 出现 2 次、B 出现 1 次,无法拆分 | 1 |
| 4 | ABAB | A 出现 2 次、B 出现 2 次,可拆分为 2 份(”AB”+”AB”) | 2 |
函数要求
完成对应函数,输入为字符串 packages,返回一个长度为 n 的数组,其中第 i 个元素代表前缀长度为 i+1 时的最大拆分份数。
思路
枚举可能的分段长度(必须是总长的因数),检查每段字符频率是否相同。每个位置维护一个最大段数,最后输出列表。
Amazon OA Hackerrank 冲刺阶段建议
如果你正在准备亚马逊SDE1、SDE2或Intern 2026 OA,这些高频题吃透后,通过率会显著提升。4月题目整体思路清晰,但需要较强的临时分析能力。
需要这些题的详细思路、Python/Java完整代码、更多变体,或者其他大厂(Meta、Google、字节、微软等)最新OA真题,或者咨询Programhelp的 OA辅助服务 都欢迎留言或私信。我会根据你的具体情况给出针对性建议。
祝大家4月及后续的亚马逊OA顺利通过,早日拿到心仪的Amazon Offer!继续加油~