最近刚刷完 Microsoft 2026 SDE New Grad OA,一句话总结:2026年 Microsoft OA 依然是2题制,但难度和工程细节要求明显提升。平台主要是HackerRank(75-90分钟),题型以Medium为主,偶尔出现Medium-Hard,越来越注重优化思维、边界处理和代码稳定性。
我把2026年出现频率最高的几道真题整理出来,附核心思路和避坑建议,帮大家快速过关。

Microsoft OA 基本情况
平台:HackerRank / Codility
题量:2 道
时间:75–90 分钟(部分 Codility 110 分钟)
难度:Medium 为主,偶尔 Medium-Hard
Microsoft OA 高频真题-Programhelp整理
题目 1:合金最大生产数量
题目描述
一家铸造厂使用 n 种不同的金属生产合金。对于每种金属:
composition[i]表示生产 1 单位合金所需的该金属数量stock[i]表示当前库存中该金属的数量cost[i]表示该金属每单位的采购成本
给定有限的预算,计算在使用现有库存、并在预算内采购补充的情况下,最多可以生产多少单位的合金。
示例
输入:
n = 2
composition = [1, 2]
stock = [0, 1]
cost = [1, 1]
budget = 3
计算过程:
- 生产 1 单位合金:
- 需求:[1, 2]
- 库存:[0, 1]
- 需采购:[1, 1]
- 采购成本:1×1 + 1×1 = 2(在预算内)
- 生产 2 单位合金:
- 需求:[2, 4]
- 库存:[0, 1]
- 需采购:[2, 3]
- 采购成本:2×1 + 3×1 = 5(超出预算)
因此最多可生产 1 单位,答案为 1。
函数说明
完成函数 findMaximumAlloyUnits,参数如下:
int composition[n]:1 单位合金中各金属的成分int stock[n]:各金属的当前库存int cost[n]:各金属的单位采购成本int budget:总预算
返回:最多可生产的合金单位数
题目 2:最大团队规模
题目描述
给定 n 名员工,startTime[i] 表示第 i 名员工的上班时间,endTime[i] 表示第 i 名员工的下班时间。
第 i 名员工和第 j 名员工可以互动,当且仅当他们的工作时间重叠。
一个团队的成立条件是:团队中至少有一名员工可以和团队内其他所有员工互动。
求满足条件的最大团队规模。
示例 1
输入:
n = 5
startTime = [1, 6, 4, 3, 1]
endTime = [2, 7, 5, 8, 2]
分析:
团队 [1,2,3] 中,员工 3 可以和其他两名员工互动,因此团队规模 3 是可行的,无法组成更大的团队,答案为 3。
示例 2
输入:
n = 4
startTime = [2, 5, 6, 8]
endTime = [5, 6, 10, 9]
分析:
团队 [0,1,2] 中员工 1 可与其他两人互动,团队 [1,2,3] 中员工 2 可与其他两人互动,最大规模为 3,答案为 3。
函数说明
完成函数 getMaximumTeamSize,参数如下:
int startTime[n]:员工上班时间数组int endTime[n]:员工下班时间数组
返回:最大可能的团队规模
约束:1 ≤ n ≤ 2×10⁵,1 ≤ startTime [i] ≤ endTime [i] ≤ 10⁹
题目 3:Dominating XOR
题目描述
给定一个包含 n 个正整数的数组 arr,统计满足以下条件的无序对 (i,j)(0 ≤ i < j < n)的数量:
arr[i] XOR arr[j] > arr[i] AND arr[j]
其中 XOR 表示按位异或运算,AND 表示按位与运算。
示例
输入:n = 4,arr = [4, 3, 5, 2]
所有无序对计算如下:
表格
| 索引对 | XOR 结果 | AND 结果 | XOR > AND |
|---|---|---|---|
| (0,1) | 7 | 0 | True |
| (0,2) | 1 | 4 | False |
| (0,3) | 6 | 0 | True |
| (1,2) | 6 | 1 | True |
| (1,3) | 1 | 2 | False |
| (2,3) | 7 | 0 | True |
满足条件的对共 4 个,因此返回 4。
函数说明
完成函数 dominatingXorPairs,参数为数组 arr,返回满足条件的无序对数量。
约束:1 ≤ n ≤ 10⁵,0 ≤ arr [i] ≤ n
题目 4:最大可能 MEX
题目描述
给定一个包含 n 个非负整数的数组 arr,你可以对数组中的任意元素执行任意次操作:将元素的值减少 1(不能减为负数)。
数组的 MEX 定义为:数组中未出现的最小非负整数。
求通过上述操作后,数组能达到的最大可能 MEX。
示例
输入:n = 3,arr = [3, 2, 3]
最优操作:
- 将 arr [0] 减为 0
- 将 arr [1] 减为 1
- 将 arr [2] 减为 2
操作后数组为 [0,1,2],MEX 为 3,这是最大可能值,因此返回 3。
函数说明
完成函数 getMaximumMEX,参数为数组 arr,返回最大可能的 MEX。
约束:1 ≤ n ≤ 10⁵,0 ≤ arr [i] ≤ n
Microsoft OA通过后,通常会进入 VO环节(Coding + System Design + Behavioral),整体流程相对规范。
Microsoft OA 2026 备考交流 & 后续建议
如果你正在准备Microsoft SDE / Intern / New Grad 2026 OA,欢迎私信:
- 想看某道题的详细Python/Java完整代码?
- 需要更多变体或Debug题模板?
- 想了解Microsoft后续面试(Leadership Principles、System Design)经验?
- 想了解Programhelp帮助千万学员通关的 无痕OA助攻 方案?
祝大家2026 Microsoft OA顺利通过,早日拿到心仪Offer!保持稳定输出,加油冲刺~