Amazon OA 面经|重复片段怎么选,才能把复制次数压到最低

Amazon OA 封面:最少复制次数与 AI Coding 调试练习

一位 Amazon OA 候选人提到一道字符串题:固定片段长度,复制若干次后覆盖所需的字符频次,还要处理字典序。难点在于两个目标有先后顺序,直接把字母排一遍不够。

另一篇 SDE-1 经历记录了 40 分钟算法题和 60 分钟 AI 仓库调试。下面第一题讲重复片段,第二题给出独立的调试练习,两者不代表同一次考试的完整题单。美国 2024 年的 OA 记录仍是两题共 70 分钟,限时以自己的邀请邮件为准。

第一题:最少复制次数的字符串片段

题目描述

给定小写字符串 missingData 和片段长度 k,构造一个长度为 k 的字符串。重复它若干次后,每个字母的出现次数都要达到 missingData 的需求。先最小化复制次数,再返回字典序最小的片段;无法覆盖时返回 -1。这里比较字符数量,不要求保留原串的顺序。

解题思路

用数组统计每个字母的需求 cnt。假设复制 t 次,片段里字母 c 至少要放 ceil(cnt[c] / t) 个。因此,只要这些最低数量之和不超过 k,t 就可行。t 越大越容易满足,可以在 1 到最大字符频次之间二分。不同字母的数量超过 k 时直接无解。

求出最小 t 后,先分配每个字母的最低数量。剩余位置全部放 a,再按字母顺序输出,就得到字典序最小答案;题意允许额外字符,不能把剩余位置随意填成最后一个字母。

自拟例子:missingData 为 bbbbbc,k 为 4。复制一次至少需要 6 个位置;复制两次需要 3 个 b 和 1 个 c,答案是 bbbc。若改成 bbbbbc、k 为 5,仍需复制两次,剩余一格放 a,答案变成 abbbc。

时间复杂度为 O(n + 26 log n + k),输出以外的辅助空间为 O(26)。二分判断用整数式 (cnt + t - 1) // t,避免浮点向上取整误差。

第二题:AI Coding 搜索接口调试练习

题目描述

仓库题需要在已有应用中修复缺陷。以下是自拟训练契约:电影搜索接口接收 q、page、pageSize,page 从 1 开始;q 忽略首尾空格和大小写,空查询返回空列表;结果按 id 排序,响应包含 items 和 total。现有页面搜索不到数据,需要把问题缩小到实际出错的一层。

解题思路

先直接请求接口,再看页面发出的参数和读取的字段。若接口返回正确而页面为空,检查 items 的字段映射;若接口也为空,再检查查询归一化和数据库条件。给定 page=1、pageSize=2,偏移量应为 0,写成 page × pageSize 会跳过前两条。

训练数据设为 id 1 的 Alien、id 2 的 Aliens、id 3 的 Arrival。查询带空格的 ALI,第一页应返回前两项,total 为 2。第二页 items 为空,但 total 仍为 2。这个回归用例能同时检查字符串处理、分页和计数。

在测评规则允许的范围内使用内置 AI 助手。把失败请求、期望响应和相关函数交给它,每次只改一个已定位的问题;修改后跑原有测试,再加上空查询和越界页码测试。

备考建议

给自己安排一次限时练习:先把二分的可行性条件推出来,再进一个陌生仓库查搜索请求。算法题要解释为什么答案单调;调试题要能指出修复前后哪条测试发生了变化。

FAQ

为什么不能只算总长度除以片段长度?

每个字母都要单独向上取整。总量够用时,某个字母的份额仍会不足。

剩余位置能放需求里没有的 a 吗?

按这道题的字符频次覆盖条件可以。额外字符不影响覆盖,还能让答案字典序更小。

AI 修完后测试全绿,还要检查什么?

确认它没有删除断言、改写期望值或吞掉异常,再检查修改是否符合接口契约。

参考来源

关于 CSINTERVIEWHELP

准备 Amazon 面试时,可以用模拟练习检查代码和讲题过程。无论是 OA 题型解析、算法练习、VO 模拟面试还是系统设计训练,都可以按薄弱环节安排:CSINTERVIEWHELP · 服务详情