最近帮忙做的一场 IBM OA,两道题整体难度中等,但细节处理要求比较高。第一题是预算限制下的服务扩容优化,第二题是网格盘子的连锁收集。两道题都不是偏题,只要把二分和并查集的思路想清楚,基本能稳稳拿下。
最近每天的 OA 辅助约得很满,很多同学卡在时间分配和边界处理上。搞不定的都可以找我们帮忙,OA 和 VO 都有 assist。
下面把题目和完整思路整理出来,给正在准备的同学参考。

IBM OA 整体情况
- 平台:HackerRank / 类似在线评测
- 题量:2 道 Coding
- 难度:Medium
- 建议用时:每题 20-30 分钟,留时间检查边界
IBM 的 OA 风格偏工程落地,不太出纯算法偏题,更看重你能不能把问题抽象成标准模型(二分答案、并查集等)。
IBM Online Assessment 时间线参考
| 阶段 | 时间 | 说明 |
|---|---|---|
| 收到 OA 邮件 | Day 0 | 通常给 5-7 天完成期限 |
| 开始做题 | Day 1-2 | 建议先通读两题,再决定顺序 |
| 提交 | Day 2-3 | 提前交有利于后续流程 |
| 结果通知 | 提交后 3-7 天 | 通过后进入下一轮(电面 / VO) |
不同批次会有差异,以邮件通知为准。
第一题:Efficient Scaling(预算下最大化吞吐量)
一条数据处理流水线有 n 个服务串联,第 i 个服务的输出是第 i+1 个的输入。每个服务有基础吞吐量 throughput[i],扩容一次花费 scalingCost[i],扩容 x 次后吞吐量变成 throughput[i] * (1 + x)。
给定 budget,求在预算内能达到的最大最终吞吐量(最终吞吐量由整条链路中最慢的那个服务决定)。

思路 最终吞吐量受限于所有服务中最小的那个。可以二分最终目标吞吐量 target:
- 对每个服务,计算要达到至少 target 需要扩容多少次:x = ceil(target / throughput[i]) – 1(如果已经 ≥ target 则 x=0)
- 累加所有服务的扩容成本,判断是否 ≤ budget
- 取最大的可行 target
时间复杂度 O(N log MAX),完全够用。
示例里 throughput = [4,2,7],scalingCost = [3,5,6],budget = 32,最优能到 10。
第二题:Minimum Time(盘子连锁收集)
网格上有 n 个盘子,坐标 (x[i], y[i])。收集一个盘子时,同一行或同一列且距离 ≤ d 的盘子会被连锁吸引并一起收集。连锁具有传递性。
每次主动选择一个还没被收集的盘子需要 1 秒,求收集完所有盘子的最少时间。

思路 本质是求「连通块」数量。同一行或同一列且距离 ≤ d 的盘子属于同一个连通块,一个连通块一次操作就能全部收完。
具体做法:
- 按行排序,把同一行且相邻距离 ≤ d 的盘子用并查集合并
- 按列排序,把同一列且相邻距离 ≤ d 的盘子合并
- 统计并查集中独立连通块的数量,就是答案
示例中 4 个盘子、d=1,前三个形成一个连通块,第四个单独一块,所以最少需要 2 秒。
FAQ
Q:两道题必须全对才能过吗?
A:不是绝对,但建议尽量拿满分。IBM 更看重代码正确性和边界处理。
Q:第一题二分的上界怎么定?
A:可以取 max(throughput) * (1 + budget / min(scalingCost)) 作为宽松上界,或者直接用一个足够大的数。
Q:第二题一定要用并查集吗?
A:推荐用。也可以 DFS/BFS 建图,但并查集在按行/列排序后合并更干净。
Q:最近 IBM OA 难度稳定吗?
A:整体中等,题型以二分、并查集、模拟、字符串为主,变化不大。
备考建议
- 二分答案类题目一定要练熟「check 函数」的写法
- 并查集提前写好模板,面试/OA 时直接套
- 注意整数溢出和边界(空数组、只有一个盘子、d=0 等)
- 写完后自己造几组极端数据验证
写在最后
IBM 的 OA 不算难,但细节容易丢分。把二分和并查集这两类题练扎实,通过率会高很多。
最近 IBM、Google、Meta、TikTok 等公司的 OA 和 VO 都在持续进行。Interview Show 专注北美技术岗位的面试辅助,团队成员均来自一线大厂,提供 OA 辅助、VO mock 以及针对性题型辅导。很多同学卡在时间紧、边界处理或思路卡住时,都会来找我们一起过。
搞不定的随时可以聊,我们根据你的情况给具体建议。
祝大家顺利通过 OA,拿到心仪 offer!