IBM 编程 OA 指南 2026:真题、时间分配与备考
本文译自 PracHub 的英文原文阅读英文原文
内容概览
一份实用的 IBM 编程 OA 指南,依据 IBM 官方说明和 PracHub 题库中的四条真实面经整理。涵盖区间、字符串索引、回文字符预算、滑动窗口、计时规划、隐藏测试、监考、隐私,以及七天备考计划。
很多候选人准备“IBM 编程测试”时,默认每个申请人拿到的题目、计时和平台都一样。但 IBM 官方说明里写得很清楚,具体形式取决于岗位。邀请邮件就是你这场测试的说明书。
这篇指南把官方的基本信息,和 PracHub 题库里四道真实的 IBM 编程题放在一起讲。这四道题分别考区间、字符串索引、字符频次推理和滑动窗口。它们有参考价值,是因为能看出 IBM 的 OA 难度跨度有多大:有的题只是五行代码的准确性检查,下一题可能就是完整的中等难度算法题。
在开始刷通用题单之前,先打开 PracHub 的 IBM 编程与算法题目。结合下面这些面经里的真题,找出你真正需要补的题型。

按邀请邮件里的岗位要求准备 OA,再用 IBM 的真实面经把练习落到具体题目上。
先说结论: IBM 官方确认,测评可能包含选择题、编程题,或两者都有。官方没有公布统一的题目数量、时长、平台、支持的语言列表或及格分数。先看邀请邮件,再练限时编程基本功,以及职位描述里点名的岗位相关内容。
IBM 官方确认了什么
IBM 的申请流程说明,编程测评会根据岗位不同,出现选择题或编程题。测评 FAQ 要求收到邀请的候选人在七天内完成测评,并确认自己的测评是否计时。
| 项目 | 可以确定的信息 | 需要自己核实的信息 |
|---|---|---|
| 形式 | 选择题、编程题,或视岗位而定的组合 | 邀请邮件里列出的各个部分 |
| 完成期限 | IBM 要求受邀候选人在七天内完成 | 邮件里写明的具体截止时间和时区 |
| 计时 | 部分测评会计时 | 总时长,以及各部分是否单独计时 |
| 题目数量 | IBM 没有公布统一数字 | 开始前的测评介绍页面 |
| 编程语言 | 可用语言取决于岗位和环境 | 语言选择器和职位要求 |
| 监考 | 部分编程题中,IBM 可能会保存代码和摄像头照片 | 你的测评所显示的权限和提示 |
| 及格分数 | IBM 没有公布统一的分数线 | HR / recruiter 的说明(如果团队愿意告知) |

基本信息参考 IBM 的公开说明,每场测评的具体规则以你的邀请邮件为准。
IBM 会用 HackerRank 吗?
候选人的面经里,经常提到 IBM 的 OA 托管在 HackerRank 上,IBM 面向初级开发者的指南里,也把 HackerRank 列为推荐的练习资源。不过 IBM 的公开申请页面并没有承诺每个岗位、每个地区都用同一个平台。
要练的是在各平台上通用的能力:看懂函数签名、处理标准输入、写出能通过编译的代码、自己造测试用例、看懂报错信息。然后再去用邀请邮件里附的教程或练习环境。
应该准备哪些内容?
职位描述最能预测第二条备考主线。IBM 的开发者指南提到,技术考察内容可能包括数据结构、网络、技术知识和数据处理。软件工程、数据、AI、基础设施这几类岗位,侧重点各不相同。
| 岗位类别 | 重点练习 | 一份好的提交应体现什么 |
|---|---|---|
| 软件工程 | 数组、字符串、哈希、排序、区间、树、图 | 正确性、复杂度、边界情况、可读的实现 |
| 数据工程 | SQL、join、聚合、数据转换、基础算法 | 数据语义、null 处理、数据规模、输出顺序固定 |
| 数据科学与 AI | Python、SQL、数组、统计、数据处理 | 对 shape 的推理、前提假设、数值和数据的边界情况 |
| 云与基础设施 | 核心编程,加上网络、Linux、API 或自动化 | 运维层面的思考,以及考虑到故障的代码 |
有候选人的讨论里提到有两道编程题,但那只是一条面经,并不是统一的模板。下面的题库数据,更适合当作题型地图,而不是对你那场测试的预测。
PracHub 题库里的四道 IBM 编程真题
目前 PracHub 里,没有哪条 IBM 记录的标准化轮次字段直接写着“Online Assessment”。下面这四条记录存的轮次是 Technical Screen,但它们背后的候选人面经,明确说这是一场 OA。我们把这个区别如实写出来,而不是悄悄改题库的标签,也不暗示每场 IBM 测评都会重复同样的题目。
| 真题 | 面经中的任务 | 需要掌握的套路 | 为什么适合作为 OA 练习 |
|---|---|---|---|
| Compute minimum rooms for meeting schedule(计算会议安排所需的最少会议室) | 给定未排序的半开会议区间,返回所需的最少会议室数量 | 排序、双指针或最小堆、相等时间点的处理 | 考你能否把题目故事转成事件,以及结束时间等于开始时间时怎么处理 |
| Reverse last two characters with space(反转最后两个字符并加空格) | 对 "bat" 这样的字符串,返回 "t a" | 直接索引、输出格式、最小长度假设 | 一道简短的正确性检查,主要风险是想太多和 off-by-one 错误 |
| Maximize palindromic strings after character swaps(字符交换后最大化回文串数量) | 在字符串之间交换字符,使尽可能多的字符串变成回文 | 全局频次统计、配对预算、贪心分配 | 操作看起来是局部的,关键是想到所有字符其实是一个共享的池子,而每个字符串的长度不变 |
| Find minimum subarray length with k distinct integers(求恰好含 k 个不同整数的最短子数组) | 返回恰好包含 k 个不同值的最短连续子数组 | 滑动窗口、频次 map、小心地收缩窗口 | 能区分“恰好 k 个”和更简单的“至多 k 个”,也会暴露计数没清理干净的 bug |
第 1 题:会议安排所需的最少会议室
IBM 会议室这道题给一组 [start, end] 区间,问最少需要多少间会议室。区间是未排序的。如果一场会议在时间 t 结束,另一场在 t 开始,两场可以共用一间会议室。
两种标准解法都可以:
- 把开始时间和结束时间分别排序,然后用双指针扫一遍。
- 按开始时间给会议排序,用最小堆维护正在进行的会议的结束时间。
双指针写法里最关键的一行,是用 starts[i] < ends[j],而不是 <=。时间 t 结束的会议会先释放会议室,再轮到时间 t 开始的会议占用。运行时间主要花在排序上,所以目标是 O(n log n) 时间。
练习题: Compute shared free time intervals(计算共同空闲时间段) (IBM · Software Engineer)
| 测试 | 期望的会议室数 | 考察点 |
|---|---|---|
[] | 0 | 空输入的约定 |
[[1, 4]] | 1 | 单个区间 |
[[1, 2], [2, 3]] | 1 | 首尾相接的半开区间 |
[[1, 4], [2, 5], [3, 6]] | 3 | 重叠峰值 |
[[5, 7], [1, 10], [2, 3]] | 2 | 未排序的输入 |
第 2 题:反转最后两个字符
IBM 这道字符串题故意出得很小:给定 "bat",输出 "t a"。这道题的备考价值不在算法,而在细心。先确认字符串至少有两个字符,用直接索引,输出要完全一致。隐藏测试会因为输出成 "ta"、"t a" 或者索引反了而直接判错,和一个写坏的图算法被判错没有区别。
第 3 题:交换后最大化回文串数量
这道回文题允许你把一个字符串里的一个字符,和另一个字符串里的一个字符交换,次数不限。每个字符串保持原来的长度。
思路上的关键一步,是别再模拟交换。跨字符串的交换不限次数,意味着所有字符组成一个全局的库存。长度为 L 的回文串需要 floor(L / 2) 对字符,L 为奇数时再加一个任意的中心字符。统计所有字符的频次,换算成总的配对预算,再优先把预算分给需要配对数最少的字符串。面试官想看的是,你能不能把一个杂乱的操作,换成它所带来的不变量。
写代码之前,先问清楚是否允许空字符串,是否只会出现小写英文字母。这些细节决定了频次结构怎么设计,虽然不会改变核心的推理。
第 4 题:恰好含 k 个不同值的最短子数组
这道“恰好 k 个”的题要求返回恰好包含 k 个不同整数的连续子数组的最小长度,如果不存在这样的窗口,就返回 -1。
用滑动窗口加频次 map。窗口里不同值超过 k 个时,就右移左边界,直到窗口重新合法。刚好有 k 个时,只要最左边的值在窗口里还会保留,就从左边把重复的副本去掉,然后再计算长度。正是这条“收缩时不丢掉任何一个不同值”的规则,才能让一个合法窗口变成以当前右边界结尾的最短合法窗口。
要测试 k = 0、空数组、所有值都相等、k 大于不同值的总数、负整数,以及最左边的值出现多次的窗口。预期的复杂度是 O(n) 时间,因为每个指针最多向前移动 n 次。
练习题: Count Index Triplets Whose Max Minus Min Is at Most d(统计最大值减最小值不超过 d 的下标三元组) (IBM · Software Engineer)
时间分配、隐藏测试与提交策略
IBM 没有公布统一的时长,所以“每题 30 分钟”这种固定规则可能不适用。按邀请邮件里显示的计时,用百分比来分配时间。
| 时间占比 | 做什么 | 具体产出 |
|---|---|---|
| 最初 5% | 浏览每个部分和所有约束 | 题目顺序和风险清单 |
| 接下来 15% | 写样例、选方案、估算复杂度 | 一个你能讲清楚的方案 |
| 接下来 60% | 实现最简单的正确解法 | 覆盖完整题目约定、能跑通的代码 |
| 接下来 15% | 专攻边界情况和可能的隐藏测试 | 样例之外的验证依据 |
| 最后 5% | 重读约束,认真地提交 | 干净的最终答案 |
如果有多道题,先全部浏览一遍。上面四道真题就说明了原因。一道简短的字符串题,不该和回文题或滑动窗口题花一样多的规划时间。先把稳妥的题拿下,再把剩下的时间花在需要推理的地方。
隐藏测试通常会暴露什么
隐藏测试通常就是题面约定的正常推论,只是样例没有覆盖到。
| 出错类型 | 提交前要测的 | IBM 题库中的例子 |
|---|---|---|
| 边界错误 | 空输入、只有一个元素、允许的最小规模 | 反转两个字符的题需要明确最小长度 |
| 相等时的语义 | 时间戳相同、重复元素、首尾相接的区间 | 在 t 结束的会议与在 t 开始的会议 |
| 状态错误 | 重复调用、过期的全局变量、被修改的输入 | 频次 map 只能反映当前窗口 |
| 数值或计数错误 | 零、负数、奇数总数、溢出 | 回文串的中心字符和用不上的字符 |
| 复杂度问题 | 接近最大约束的构造输入 | 滑动窗口不该为每个下标重新开始 |
| 输出不一致 | 精确的返回类型、顺序、空白、大小写 | "t a" 不等于 "ta" |
样例通过了也别停。把你的算法维持的不变量说出来,推导时间和空间复杂度,再至少写三个针对性的对抗测试。
想要更多限时练习,就先留在 IBM 编程与算法题目里刷,直到上面这些套路练到随手就能写出来。然后再扩展到 Software Engineer 题库,为之后的技术面做准备。
七天 IBM OA 备考计划

把七天的完成期限,拆成诊断、补漏、模拟三个循环。
| 天数 | 重点 | 具体产出 |
|---|---|---|
| 1 | 阅读邀请邮件和职位描述 | 平台、计时、各部分、语言、截止时间、岗位技能清单 |
| 2 | 做一次限时诊断 | 做 IBM 的字符串题和区间题,并开始记录错题 |
| 3 | 补强带状态的题型 | 做“恰好 k 个”的滑动窗口题,再加两道相关题 |
| 4 | 练岗位相关内容 | 按职位描述练 SQL、数据、网络或云方面的内容 |
| 5 | 训练隐藏测试意识 | 提交前,用边界情况表检查两道题的解法 |
| 6 | 模拟完整的测评 | 用你选定的语言,不间断地完整做一次 |
| 7 | 轻量复习并完成 | 稳定的环境、状态良好的一次作答、认真地提交 |
错题要按原因记录,不要按题目名字记。“相等时忘了释放区间”和“在去掉重复值之前就量了窗口长度”,都是可以复用的教训。“第 3 题没做对”就不是。
考试当天的规则、监考与隐私
IBM 的申请人隐私声明写明,IBM 可能会记录并保存你在编程测评中写的代码,也可能在编程题中保存一张或多张摄像头照片。带视频的测评还可能产生录像。这段话描述的是可能收集的内容,并不能证明每场 IBM 编程测评都会持续录像。
开始前,先看同意页面和邀请邮件。检查摄像头权限,关掉无关的应用,如果被要求就准备好证件,如果需要特殊安排,请在截止时间前联系测评的支持渠道。
IBM 的申请指南还划了一条关于 AI 的界线:鼓励用 AI 来学习概念,但不允许在测评中用它改写技术方案。如果有用,可以事先用 AI 备考。测评过程中,请遵守页面显示的规则,提交你自己的作品。
| 开始计时之前 | 最终提交之前 |
|---|---|
| 确认截止时间和时区 | 重读每一条约束 |
| 测试浏览器、网络、摄像头和键盘 | 跑边界、相等和大规模测试 |
| 选一门允许使用且你很熟的语言 | 删掉调试输出和无用代码 |
| 留出足够的整块时间,一次做完 | 检查返回类型和输出格式 |
| 只打开规则允许的资料 | 在计时结束前提交 |
IBM 编程 OA 常见问题
IBM 编程 OA 有多少道题?
IBM 没有公布统一的题目数量。候选人的面经因岗位和地区而异。PracHub 题库里有些 IBM 面经是两道编程题,但这不能保证你的测评也是两道。具体结构请看邀请邮件和测评前的说明页面。
IBM 编程 OA 有多长时间?
计时因测评而异。IBM 的公开 FAQ 让候选人确认自己的测评是否计时,并留出足够的整块时间一次做完。另外那条“七天”的规则,是收到邀请后的完成期限,不一定是测试本身的时长。
上面这四道题一定会考吗?
不一定。它们是 PracHub 题库中来自候选人面经、带有 IBM 标签的真实题目,放在这里是为了展示已被报告过的难度水平和题型组合。请把它们当作练习参考,而不是泄露出来的或保证会考的题目。
难度大概是什么水平?
官方没有统一的难度标签。面经里的 IBM 题目,从直接的字符串索引,到中等难度的区间、贪心和滑动窗口题都有。要准备好快速做完简单的准确性检查题,并且能用干净的复杂度和边界情况推理,解出常见的中等套路题。
可以自己选编程语言吗?
可用的语言取决于测评环境和岗位。IBM 的开发者指南在多数情况下建议用你最擅长的语言,但以语言选择器和邀请邮件为准。开始计时之前先确认支持,并在这门语言里把输入、输出和测试流程练熟。
IBM 会录制编程 OA 吗?
IBM 的隐私声明说,编程题中可能会保存代码,也可能拍摄一张或多张摄像头照片,带视频的测评也可能被录制。这不能证明每场测试的监控方式都一样。请阅读你的测评所显示的权限和隐私声明。
IBM 编程 OA 可以重考吗?
IBM 没有公布适用于所有测评的统一重考政策。如果技术问题打断了作答,请立刻记录下来,并通过邀请邮件里的支持联系方式反馈。不要默认刷新页面、重新打开,或者另投一个职位,就能换来一次有效的重考。
接下来要做的事很简单:一次性做完上面链接的四道 IBM 题,记录最先出错的是哪个不变量或边界情况,然后在正式测评之前把这个弱点补上。
参考来源与延伸阅读
练习 IBM 面试题
练习 IBM 面试题相关文章(英文)
Roblox Robots Assessment: How to Practice Problem Solving and Iteration
Prepare for the Roblox Robots assessment with official practice links, controlled experiments, failure analysis, and clear limits on community scoring claims.
NVIDIA Ignite Internship 2027: Eligibility, Interview Process, and Preparation
NVIDIA Ignite Internship 2027 guide: eligibility, application timing, interview stages, resume tips, coding preparation, and current official updates.
Stripe SWE Intern OA 2027: One Long Coding Problem, Input Parsing, and Clean Code
Stripe SWE Intern OA 2027 guide to the reported 60-minute coding problem, parsing, hidden tests, clean code, practice questions, and next rounds.
Capgemini AI-Assisted Coding Assessment: Practice Debugging, Feature Changes, and Verification
Prepare for reported Capgemini AI-assisted coding variants with an original debugging task, owner-filter feature, bounded prompts, and regression checks.