最近剛刷完 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!保持稳定输出,加油冲刺~