
一位 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 修完后测试全绿,还要检查什么?
确认它没有删除断言、改写期望值或吞掉异常,再检查修改是否符合接口契约。
参考来源
- 候选人分享:重复片段与频次要求
- SDE-1 候选人记录:算法题和 AI 仓库调试
- 美国 SDE-I 候选人记录:2024 年 OA 限时与超时反馈
- Get Smallest Base Segment 题意与原题图片
关于 CSINTERVIEWHELP
准备 Amazon 面试时,可以用模拟练习检查代码和讲题过程。无论是 OA 题型解析、算法练习、VO 模拟面试还是系统设计训练,都可以按薄弱环节安排:CSINTERVIEWHELP · 服务详情
