前几天刚做完 Microsoft 26NG OA,整个体验非常顺,一共两道题,总时长 20 分钟左右就提交完毕。整体难度中等、思路明确、没有太多坑点,属于微软一贯的风格:看重思维清晰、代码干净,而不是故意刁难。
因为从八月到现在已经做了上百场各大厂的 OA(Microsoft、Google、Amazon、TikTok、Meta 都扫了一轮),这次微软 OA 基本属于“看一眼就知道怎么写”的类型。这里把题目整理出来,同时写写我自己的思路,给还在准备的同学做个参考。
Q1 — Maximize Sum by Choosing from Two Arrays
Problem
Given two arrays r1 and r2 of the same length n, you must choose exactly k elements from r1 and n - k elements from r2.
At position i, you may choose either r1[i] or r2[i], but not both.
Return the maximum possible total sum.
思路分析
这题其实就是非常经典的“增益选择”(gain selection)问题,贪心直接秒。
我的做法很简单也很稳定:
- 先假设所有位置都选择 r2
- 因为 r2 选了
n-k个,但我们先全选,后面再替换掉 k 个即可。 - 初始和 =
sum(r2)。
- 因为 r2 选了
- 计算每个位置的“换成 r1 的收益”
gain[i] = r1[i] - r2[i]
- gain 越大,说明越应该选 r1。
- 对 gain 从大到小排序,选前 k 个增益
- 答案 = sum(r2) + 前 k 大的 gain 和
为什么这个贪心是最优的?
因为每个位置只有两种选法,且完全独立,所以最大化总和就是最大化局部的增益,而增益排序是唯一合理的策略。
这题基本属于微软 OA 的典型风格:
不难,但一定要写得干净、逻辑清楚。
Q2 — Minimum Edits to Form the Lexicographically Smallest Palindrome
Problem
Given a string s, you are allowed to modify characters.
You want to make the string rearrangeable into a palindrome.
Among all solutions that require the minimum number of edits, return the lexicographically smallest possible palindrome.
关键点拆解
想要一个字符串能重排成回文,有一个铁律:
最多只能有一个字符出现奇数次。
所以问题就变成了两步:
- 最少修改 → 尽可能把 odd count 的字符变成 even
- 字典序最小 → 在构造回文时尽量把小字符放在左半边
具体做法
① 统计频次,处理 odd 次数
- 数所有字符频次
- 把所有 odd 次数字符找出来
- 每一次修改可以让两个 odd → even
→ 因此修改次数最小 =odd_count / 2
为了让最后的回文字典序尽量小,我会优先把大的 odd 字符向小的 odd 字符靠拢,这样频次处理和字典序优化能同时完成。
② 构造字典序最小的回文
在频次调整好后,构造方法就很自然了:
- 左半部分:按照从小到大填(例如 ‘a’ → ‘z’)
- 中心字符:如果有 odd,就放出现次数最小的那个 odd 字符
- 右半部分:把左半部分反写
整体就能保证是 最少修改方案中的字典序最小解。
微软 26NG OA 的整体感受
这次 OA 还原了微软一贯的考察重点:
- 清晰的逻辑推导
- 数据结构基础(数组、频次统计、排序)
- 代码风格与细节处理
- 不靠炫技,胜在稳定
没有任何刁钻的 test case,也没有特别复杂的 corner case。
只要想清楚逻辑,就能直接 AC。
两道题我差不多 20 分钟搞定,每题 5~10 分钟的节奏。
如果你也在准备 Microsoft / Amazon / Google 的校招 OA
Programhelp 专注于各大厂 OA 的技术支持服务,针对 HackerRank、CodeSignal 等在线评测平台,提供以下协助内容:
- 在线评测代码协助与实现:覆盖数组、字符串、模拟、构造、贪心、图论、DP 等主流题型
- 确保所有测试用例通过:以可运行、可维护的代码为目标
- 结果导向,不成功不收费
- 多语言支持:Java / Python / C++
整个流程通过 ToDesk 等远程协作工具完成,界面无痕,操作自然,不影响正常提交体验,适用于 CodeSignal、HackerRank、Codility 等平台的各类编程测试。
我们长期积累了大量主流大厂(Microsoft / Google / Amazon / TikTok / Meta)的 OA 题型与评分机制理解,也熟悉不同平台的运行环境差异,能帮助考生在紧张时间内保持稳定发挥。