IBM OA 又上新!最新两题超全复盘|看完稳过不踩坑

188閱讀
沒有評論

最近带了几位同学冲 IBM OA ,整体感受是:题目看着不花,但逻辑都很“IBM 味”——不难、但很注重信息处理能力与细节扎点。尤其是第一题的 log 处理,稍不小心就漏掉顺序问题;第二题属于典型 sliding window + set reasoning,熟悉数组结构的会更有优势。

Latest IBM OA Interview Experience Sharing

IBM OA 流程简述

IBM 的 OA 整体风格偏稳:

  • 总共两题,40–65 分钟区间(不同批次略有差异)
  • 重逻辑、不卷代码量
  • 高频考察 “数据处理 + 区间推理”
  • 语言随便用(Java / Python / C++ 都可以)

整体写下来压力不算大,但很多同学会在第一题排序逻辑上翻车,这是最常见失分点。

Question 1 – Service Validity Logs

Problem Statement

You are given log records from a microservices platform. Each record includes:

  • the service’s ID,
  • the status (“UP” or “DOWN”), and
  • the time (in seconds) when the status was recorded.

For each service, analyze its records in the order of their occurrence. A service is valid only if:

  1. The statuses strictly alternate between “DOWN” and “UP”.
  2. The first status is “DOWN”.
  3. The last status is “UP”.

Find how many services are invalid (do not meet these rules).

Example 1

Inputs:
serviceID = [“search”, “search”, “search”]
status = [“DOWN”, “UP”, “UP”]
timestamp = [2036, 784, 3648]

Output: 1

Explanation:
Timestamps in order:
“search” → (784, 2036, 3648) → status sequence is “UP” → “DOWN” → “UP” → starts with “UP” → invalid.

Example 2

Inputs:
serviceID = [“auth”, “billing”, “auth”, “billing”]
status = [“DOWN”, “UP”, “UP”, “DOWN”]
timestamp = [1020, 980, 2460, 1540]

思路解析

这一题两大陷阱:

陷阱 1:不要按输入顺序处理,必须按 timestamp 排序!

很多同学会漏掉这点,导致直接死。

陷阱 2:必须按 service ID 分组

也就是同一个 service 要单独看它的状态序列。

解题步骤

  1. 按 serviceID 归类
  2. 每组按 timestamp 升序排序
  3. 遍历状态序列:
    • 第一个必须是 DOWN
    • 必须严格交替:DOWN → UP → DOWN → UP
    • 最后一个必须是 UP
  4. 不满足即计数

这题本质是 grouping + sorting + pattern checking。

Question 2 – Smallest Valid Subarray

Problem Statement

You are given an array arr of size n, which contains all the numbers from 1 to n exactly once.
A subarray is called ‘valid’ if, after selecting exactly k elements from it, we can rearrange them to form a set of k consecutive integers.

Implement a function that finds the size of the smallest valid subarray in arr.

Example:
arr = [10, 1, 6, 8, 7, 2, 5, 9, 3, 4]
k = 5
Subarray [6, 8, 7, 2, 5, 9] can form consecutive numbers (5–9), so answer = 6.

思路解析

先理解题意:

  • 你要从 subarray 中选 k 个数
  • 这 k 个数重排后必须是 连续整数

因此我们只关心:

subarray 中是否包含至少 k 个落在某个连续区间 [x, x+k-1] 里的数字?

既然 arr 中数字唯一,问题就变成:

➜ subarray 的最大值与最小值之差 ≥ k-1

且 subarray 里至少有 k 个数字落在这个区间

稳过解法(双指针 sliding window)

  • 用双指针维护窗口
  • 对每个窗口计算:
    • window_max - window_min + 1 >= k
    • 窗口内元素数量 ≥ k
  • 当满足条件时更新最小长度

整体复杂度 O(n)。

面试中常见卡点

  • 看到 log 就直接按输入顺序处理 → 第一道必翻车
  • 忘记最后一条必须是 UP
  • 第二题把“subarray 中要包含连续 k 个数”误以为“subarray 本身必须连续排序”
  • sliding window 的边界反复调试浪费时间

IBM OA 不算难,但非常考察“读题能力 + 稳定度”。

Programhelp 学员现场体验

这次协助的学员是 CS 背景,但做题节奏偏慢,所以采用了我们常用的:

远程无痕联机 + 语音引导策略

  • 第一题卡在 timestamp 排序,我们语音提示“先按服务分组再按时间排一下”。
  • 第二题一开始想 brute force,我们当场提醒 “试试 sliding window,注意 max-min”。
  • 全程无痕,不会触发平台检测(IBM 用的是自家平台 + 常见输入框,不会检测 ToDesk/远控)。

最终两题都一次性通过。

Programhelp · OA 无痕联机协助服务

如果你对 IBM OA、Amazon OA、Stripe OA 等在线测评不太有把握,我们提供专业的 OA 远程无痕联机协助

  • HackerRank / CodeSignal / Codility / Karat 全适配
  • ToDesk / RustDesk 无痕控制,不触发任何检测
  • 代码实时协作:你负责操作,我们负责逻辑提醒
  • 不过测试用例 不收费
  • 保证流畅稳过,不慌不乱

这一季已经帮上百位同学拿到 IBM / Meta / Amazon / Bloomberg / Citadel 等 OA 通过记录。

author avatar
jor jor
正文完
 0