Goldman Sachs Intern OA 今天做完了,两题大约 30 分钟。现在北美各厂 OA 基本都带 AI Coding 了,高盛这场也是”一题算法 + 一题 AI Coding”的组合。算法那道是贪心思路,AI Coding 那道是修查询和缓存一致性——这两个方向最近出现频率都挺高的,练熟了会省不少时间。把思路记下来。

T1:二进制串最多能有多少个 1

题意
给一个只含 0 和 1 的字符串 s,以及最多 k 次操作。一次操作:选下标 i(0 ≤ i < len-1),令 s[i] = max(s[i], s[i+1])。操作结束后串里 1 的个数尽量多,返回最大值。
示例:s = “10110”,k = 1 → 在下标 1 操作后变成 “11110”,答案 4。s = “00011”,k = 2 → 答案 4。
思路
操作的本质是让右侧的 1 向左”传”一格——s[i] 取自己和右邻的最大值,等于把右边的 1 复制到左边一格。
想清楚这一点之后,不需要逐轮模拟:最右侧那个 1 右边的 0 永远变不成 1,它左边的 0 在操作次数够的前提下可以被依次点亮。所以先数原串里 1 的个数,再数”最右侧 1 左侧”有多少个 0,能多点亮的数量就是 min(这些 0 的个数, k)。
答案 = 原来 1 的数量 + min(最右侧 1 左侧 0 的个数, k)。
O(n) 扫一遍,找到最右侧的 1 并统计就行。边界记得检查:全 0 串、k = 0、1 在开头(左侧没有 0 可以点亮)这几种情况要单独处理。
T2:AI Coding——活动列表查询修复

题意
现有一个活动(Event)列表模块,有三块问题:筛选结果不对、分页数据不准、Redis 缓存与数据库数据不一致。要修到:查询结果和分页元信息(总数、总页数、当前页等)正确,数据变更后缓存及时失效,不长期脏读。
工程结构是 Spring + Mongo + Redis:Controller → Service,在 Service 里拼 Query、count / find、分页字段,再叠缓存。
修复思路
第一块:筛选与分页下推到 DB
把 category、venueId 等条件以及 skip / limit 直接放进 Mongo 查询,在数据库侧完成过滤和切片,不要先全量取出再在内存里过滤——那样分页会错位,因为内存过滤后剩余数量和预期的 total 对不上。
第二块:分页参数校验与字段补全
非法的页码和页大小自动纠正到合理范围;返回体里补全 page、limit、total、totalPages、hasNextPage 这些字段,保证结构完整。这块很容易漏,但测试用例会逐个检查。
第三块:缓存失效
新建或更新活动时,按查询维度清掉对应的 Redis key,下次请求回源再回写,从源头去掉脏数据。缓存失效逻辑放在写路径上,不要依赖 TTL 自然过期。
定位策略
按测试用例名对着改——filter、pagination、cache invalidation 这三类测试名直接告诉你哪块坏了,比从头读所有文件快得多。先跑一遍测试,看哪些 case 挂了,定位到 Service 层对应的方法,再针对性修复。
说点备考的思路
高盛这场 AI Coding 比部分亚麻的轻一点,但 T1 的边界和 T2 的分页缓存细节仍然要一次写对,不能靠”大体上差不多”蒙过去。
最近北美厂 OA 普遍是”一题算法加一题 AI Coding”的组合,算法偏实现/贪心,AI Coding 偏修查询与缓存一致性。高盛、亚马逊、Databricks 这几家都出现过类似的题型组合,提前把这两个方向练熟,进去会顺很多。
有在准备高盛或其他金融科技公司 intern OA 的同学,可以来找我们聊聊。我们是 InterviewShow,对这类”算法 + AI Coding 修 Bug”的 OA 组合有专门的题库覆盖,按目标公司给针对性刷题清单,一对一跟着走。有需要的来聊。