微软面试题 | 微软 26 NG OA |1 月最新 Hard 题完整复盘

212Times read
No Comments

今年 1 月的 微软 26 NG OA ,依旧是 HackerRank 平台的两道编程题。整体风格:medium-hard、考点扎实、细节决定生死。我这次也是顺顺利利一次 AC,趁热把题目 & 思路一起分享,希望你们也能一次过,这也是原题来的,两题不到半小时,两题AC。

微软面试题 | 微软 26 NG OA |12 月最新 Hard 题完整复盘

微软 2026 NG OA 真题(1月最新)

Problem 1

给定一个字符串 s,枚举它的所有连续子串,在按字典序(alphabetical / lexicographical order)排序后,找出排在最后(最大的)那个子串并返回。注意比较的是字典序而不是长度,长字符串不一定更大;本质上等价于在所有子串中找“字典序最大”的那个。由于字典序比较是从首字符开始的,因此答案一定以字符串中字典序最大的字符开头,并在这些起点对应的后缀/子串中选出最大的那个。

思路:所有子串里字典序最大的,一定等价于“所有后缀里字典序最大的”,因为任意子串都是某个后缀的前缀。用双指针比较两个后缀,从左到右淘汰较小的起点,最终留下的起点就是最大后缀的起点。

代码

def maxSubstring(s):
    n = len(s)
    i = 0
    j = 1
    k = 0
    while j + k < n:
        if s[i + k] == s[j + k]:
            k += 1
        elif s[i + k] < s[j + k]:
            i = j
            j = i + 1
            k = 0
        else:
            j = j + k + 1
            k = 0
            if j == i:
                j += 1
    return s[i:]

Problem 2

给定一个长度为 n 的排列数组 p,对每个整数 k(1 ≤ k ≤ n) 判断它是否是 balanced:如果存在一段连续子数组 p[l..r],其元素恰好构成 {1,2,…,k} 的一个排列(即长度为 k,最小值为 1,最大值为 k,且无重复),则 k 是 balanced。需要对每个 k 给出结果,返回一个长度为 n 的二进制字符串,第 k 位为 '1' 表示 k balanced,否则为 '0'。考察 1..k 这些数在排列中的位置是否能形成一个连续区间。

思路:我们先把每个数字的位置记下来,用一个数组 pos[val] = index,这样能 O(1) 找到值 k 在哪。从 k = 1 开始往上扫,把目前 1..k 这些数出现过的最小下标 l 和最大下标 r 维护起来。如果当前这段区间长度 r - l + 1 正好等于 k,说明 1..k 这 k 个数正好连续出现,是一个排列,就记 1,否则记 0

代码

def countBalancedNumbers(p):
    n = len(p)
    pos = [0] * (n + 1)
    for i, val in enumerate(p):
        pos[val] = i
    l = pos[1]
    r = pos[1]
    ans = []
    for k in range(1, n + 1):
        if k > 1:
            idx = pos[k]
            if idx < l:
                l = idx
            if idx > r:
                r = idx
        if r - l + 1 == k:
            ans.append('1')
        else:
            ans.append('0')
    return ''.join(ans)

微软 OA 的两道题难度多大?

微软 OA 风格一直比较稳定:

  • 套路并不刁钻,但非常注重“代码质量 + 复杂度 + 边界处理”。
  • 当场写代码通常没太多时间 debug,所以 O(n) 方法要写得非常熟练。
  • 第二题属于微软常见的 permutation reasoning 类问题,很考逻辑严谨度。

如果你平时训练不够,这类题会觉得“脑子想到了但写不顺”;但只要做对方向,代码都不复杂。

ProgramHelp 微软 2026 NG OA 专项助攻

今年微软 2026 NG 的 OA 明显更“卷”,Hackerrank 两题虽然不算超纲,但逻辑细、坑点多、时间紧,这也是很多同学掉点的原因。我们这边已经积累了多批次学员的真题,包括 12 月最新版本的题型变化、常见卡点、最容易误判的边界情况。
如果你想更稳,我们可以提供:

  • 实时语音助攻:做题过程中给你实时答案提示、代码、思路、dry run等。
  • 0 痕迹OA辅助助攻:全程安全,不触发平台检测,用的是我们稳定验证过的技术方案。
author avatar
Jory Wang Amazon资深软件开发工程师
Amazon 资深工程师,专注 基础设施核心系统研发,在系统可扩展性、可靠性及成本优化方面具备丰富实战经验。 目前聚焦 FAANG SDE 面试辅导,一年内助力 30+ 位候选人成功斩获 L5 / L6 Offer。
End of text
 0