← 返回博客列表 IBM 软件工程师 OA 真题:HackerRank 三类高频题
IBM

IBM 软件工程师 OA 真题:HackerRank 三类高频题

2026-06-14

IBM 的 US General Software 岗位走 HackerRank 在线测评,题目工程味浓、难度中等,更看代码正确性和边界处理,而不是炫技。这篇按 oavoservice 学员的 IBM OA 面经整理,把流程和三类高频编码题讲清楚,给求职刷题、准备 IBM 在线测评一份实战参考。


一、IBM OA 流程

阶段 形式 时长 重点
在线测评 OA HackerRank 60–90 min 2–3 道编码题,部分含选择题
技术面试 编码 + 项目 45–60 min 中等算法 + 简历深挖
经理 / 行为轮 行为题 30–45 min 团队协作、动机

IBM OA 难度中等,重点考通过测试用例的正确性。题目常是字符串、矩阵、图这类基础但需要细心处理边界的题型。

二、高频题一:字符串规整(计数 + 重建)

题目

给一个字符串,统计每个字符出现次数,按出现次数降序、次数相同按字典序,重排输出。

思路

哈希计数后排序。Python 里用 Countersorted 的复合 key 一步到位。

from collections import Counter

def reorder_by_frequency(s):
    counts = Counter(s)
    # 先按次数降序,次数相同按字符升序
    chars = sorted(counts, key=lambda c: (-counts[c], c))
    return "".join(c * counts[c] for c in chars)

时间复杂度:O(n + k log k),k 为不同字符数。空间复杂度:O(k)。考点是复合排序 key 和稳定输出。

三、高频题二:矩阵区域遍历(DFS / 计数)

题目

给一个 0/1 矩阵,1 表示陆地,求由相邻 1(上下左右)组成的最大连通区域面积(经典「岛屿最大面积」变体)。

思路

对每个未访问的 1DFS 染色,统计该连通块大小,取最大值。

def max_area(grid):
    if not grid:
        return 0
    m, n = len(grid), len(grid[0])

    def dfs(r, c):
        if r < 0 or r >= m or c < 0 or c >= n or grid[r][c] != 1:
            return 0
        grid[r][c] = 0                      # 标记已访问
        return 1 + dfs(r+1, c) + dfs(r-1, c) + dfs(r, c+1) + dfs(r, c-1)

    best = 0
    for i in range(m):
        for j in range(n):
            if grid[i][j] == 1:
                best = max(best, dfs(i, j))
    return best

时间复杂度:O(m·n),每格只访问一次。空间复杂度:O(m·n) 递归栈最坏情况。注意越界和已访问标记,避免重复计数。

四、高频题三:账户 / 网络合并(并查集)

题目

给若干 (a, b) 表示 a 和 b 直接连通,求最终有多少个连通分量。IBM 这题常包装成「服务器集群」「账户合并」场景。

思路

并查集(Union-Find)带路径压缩,合并所有边后统计不同根的数量。

def count_components(n, edges):
    parent = list(range(n))

    def find(x):
        while parent[x] != x:
            parent[x] = parent[parent[x]]   # 路径压缩
            x = parent[x]
        return x

    for a, b in edges:
        ra, rb = find(a), find(b)
        if ra != rb:
            parent[ra] = rb
    return len({find(i) for i in range(n)})

时间复杂度:近似 O((n + e)·α(n)),α 为反阿克曼函数,实际接近线性。空间复杂度:O(n)。考点是并查集模板和连通分量计数。

五、备考建议


FAQ

Q1:IBM OA 用什么平台、几道题?

HackerRank,60–90 分钟 2–3 道编码题,部分含选择题。难度中等,重点考代码正确性和边界处理,常见字符串、矩阵、图论题型。

Q2:IBM OA 难吗?

整体中等,不太考很难的算法,但很看细节——边界、空输入、测试用例覆盖。把字符串 / 矩阵 / 并查集模板写熟,通过率会很高。

Q3:IBM 面试看重什么?

OA 之后是技术面 + 行为轮。技术面中等算法加简历深挖,行为轮看团队协作和动机。整体节奏比顶级大厂温和。

Q4:怎么高效准备 IBM OA?

按字符串 / 矩阵 DFS / 并查集分块限时练,重点打磨边界覆盖。如需限时 mock 与现场讲思路陪练,可联系 oavoservice 定制 IBM 专项。


正在准备 IBM OA?

IBM US General Software 走 HackerRank OA,重正确性和边界。oavoservice 提供 IBM 全流程陪练:HackerRank 高频题限时模拟,字符串 / 矩阵 / 并查集模板专项,边界与测试用例覆盖打磨,技术面与行为轮准备。教练含大厂背景资深工程师,帮你把代码和表达同时练稳。

立即添加微信 Coding0201获取 IBM 真题与陪练

联系方式