今天下午刚收到 Amazon OA ,晚上就顺手把它做完了。整体体验下来感觉难度中等偏简单,两道题都不是特别复杂的算法题,更偏向数据结构 + 规律观察。如果平时刷题比较稳定,基本可以在时间内完成。
这场 OA 平台还是常见的在线评测环境,Coding 部分做完之后还会有一段 情境判断题(类似工作场景选择)+ 性格测试类问题。整个流程大概 100 分钟左右,节奏不算特别紧张。

Coding 1:Bug Frequency 排序
题目简析
第一题整体非常经典,本质上就是一个frequency sort 类型的题。题目给一个 bugs 数组,每个数字代表一个 bug code,数组里可能会有重复的数字,需要根据 bug 的“重要程度”进行排序。
排序规则其实非常直观。首先是出现次数越少的 bug 越重要,也就是优先级越高;如果两个 bug 的出现次数相同,那么bug code 数值更小的排在前面。
比如示例数组:
[8,4,6,5,4,8]
统计每个数字出现次数之后会得到:
6 -> 1
5 -> 1
8 -> 2
4 -> 2
按照题目的排序规则,最终结果会变成:
[5,6,4,4,8,8]
解题思路
第一步先用 HashMap 统计每个 bug code 的出现次数,然后在排序的时候使用自定义排序规则:先按照 frequency 升序排序,如果 frequency 相同,再按照 bug code 本身升序排序。
代码实现上就是一个 频率统计 + 自定义 comparator 排序。这种题在很多 OA 里都比较常见,如果平时刷过类似题型,基本属于可以很快写完的类型。
Coding 2:Prefix 最大分段数
题目简析
题目给一个只包含大写字母 的字符串 packages。要求对于字符串的每一个前缀,计算这个前缀最多可以被切成多少段连续子串,并且需要满足一个条件:每一段里面每个字符出现的次数必须完全一样。
换句话说,就是所有分出来的子串,它们的字符频率分布必须一致。
举个简单的例子:
字符串:
ABAB
逐个 prefix 来看:
A -> 1
AB -> 1
ABA -> 1ABAB-> 2
最后一个 prefix 可以被分成:ABAB
AB | AB
因此这一位的答案是 2。
所以最终输出结果就是:
[1,1,1,2]
解题思路
这题的关键点在于:对于每一个 prefix,需要判断它 最多能被切成多少个相同结构的子串。
一般的思路是先维护 prefix 的字符频率统计。如果 prefix 长度是 n,假设它可以被分成 k 段,那么每一段的长度就是 n / k。只有当 n 能被 k 整除的时候,这种切分才是可能的。
接下来需要检查每一段的字符分布是否一致,也就是说每一段内部的字符频率是否相同。如果满足条件,那么这个 k 就是一个合法分段数,最终取最大的 k 即可。
实现时通常会用一个26 长度的频率数组 来记录字符统计,然后枚举可能的分段数量进行验证。整体属于 字符串处理 + 简单数学规律判断 的题型。
OA 其他部分
两道 Coding 写完之后,后面还有一部分Work Simulation,以及一些偏性格测试类型的题目。这部分主要是给一些工作场景,比如团队协作、任务优先级冲突、项目时间压力等,让你在几个选项中选择最符合自己行为方式的做法。有些题是单选,有些是让你在几个选项里选Most Likely / Least Likely。
Amazon 这部分题目基本都是围绕Leadership Principles来设计的,比如:Customer Obsession、Ownership、Bias for Action、Earn Trust 等等。所以做题的时候一般思路是偏向主动承担责任、优先解决客户问题、团队合作以及数据驱动决策 这些方向。这部分题数量不算特别多,但需要保持回答逻辑一致,不要前后矛盾。
了解更多
如果最近也在准备 Amazon / Google / Citadel / IMC 等公司的 OA,但对题型不太熟或者担心时间不够,其实可以提前多看看真实面经题库。我们这边长期整理各大厂最新 OA 题型,也有 实时OA助攻 和模拟训练,很多同学都是通过提前熟悉题型顺利通过 OA。