← 返回博客列表 Google SWE Intern OA 复盘:30 分钟两题高分 + 四道高频真题完整拆解
Google

Google SWE Intern OA 复盘:30 分钟两题高分 + 四道高频真题完整拆解

2026-06-04

刚陪一位学员做完 Google SWE Intern OA,题型还是两道 coding,30 分钟。和 TikTok 比难度略高,两题都是 medium 偏上。以前更偏常规数据结构,今年更强调图算法和变形题。把高频题型整理出来给想投 Google 的同学参考。

一、Google SWE Intern OA 概览

维度 详情
题量 2 道 coding
时长 约 30 分钟
难度 medium 偏上,不追极难
趋势 图算法 + 变形题比重上升
考点 拆解问题的能力 + 变体应对

核心特点:Google 不追难题,但喜欢在经典题上做变形,光会原题不够,要能应对改条件。

二、题 1:回文子串计数(DP / 中心扩展)

给字符串 s,返回其中回文子串的个数。

def countSubstrings(s):
    n, count = len(s), 0
    def expand(l, r):
        cnt = 0
        while l >= 0 and r < n and s[l] == s[r]:
            cnt += 1
            l -= 1
            r += 1
        return cnt
    for i in range(n):
        count += expand(i, i)      # 奇数中心
        count += expand(i, i + 1)  # 偶数中心
    return count

思路:中心扩展,每个字符(或两字符之间)为中心向两侧扩。复杂度:时间 O(n²),空间 O(1),优于 DP 表的 O(n²) 空间。

三、题 2:爬楼梯(经典 DP,注意变体)

n 阶楼梯,每次爬 1 或 2 阶,有多少种方法到顶?

def climbStairs(n):
    a, b = 1, 1  # dp[0]=1, dp[1]=1
    for _ in range(2, n + 1):
        a, b = b, a + b
    return b

思路dp[i] = dp[i-1] + dp[i-2],滚动变量优化到 O(1) 空间。 Google 变体提醒:常改成「可以爬 1/2/3 阶」(三项递推)或「某些台阶不能踩」(跳过这些 i 设 dp[i]=0)。备考一定要练变体。

四、题 3:二叉树最大路径和(递归)

给二叉树根节点,返回任意非空路径的最大和。

def maxPathSum(root):
    best = float('-inf')
    def gain(node):
        nonlocal best
        if not node:
            return 0
        # 负贡献直接砍掉(取 0)
        left = max(gain(node.left), 0)
        right = max(gain(node.right), 0)
        # 经过当前节点的路径和(可同时含左右)
        best = max(best, node.val + left + right)
        # 返回给父节点:只能选一条边
        return node.val + max(left, right)
    gain(root)
    return best

关键:区分两个概念——「向下到当前节点的最大路径和」(可返回给父节点,只能选一条边)和「经过当前节点的最大路径和」(可同时含左右,用于更新答案)。复杂度:时间 O(n),空间 O(h)。

五、题 4:课程表(拓扑排序判环)

numCourses 门课,prerequisites[i] = [a, b] 表示学 a 前必须先学 b。能否修完所有课?

from collections import deque, defaultdict

def canFinish(numCourses, prerequisites):
    indeg = [0] * numCourses
    graph = defaultdict(list)
    for a, b in prerequisites:
        graph[b].append(a)
        indeg[a] += 1
    # 入度为 0 的先入队
    q = deque([i for i in range(numCourses) if indeg[i] == 0])
    done = 0
    while q:
        node = q.popleft()
        done += 1
        for nxt in graph[node]:
            indeg[nxt] -= 1
            if indeg[nxt] == 0:
                q.append(nxt)
    return done == numCourses  # 全部出队 = 无环

思路:本质是有向图判环。拓扑排序维护入度,每次移除入度 0 的节点,最终全部移除则无环。复杂度:时间 O(V + E),空间 O(V + E)。

六、备战节奏

题型 重点
DP 爬楼梯/回文,练变体(多步、禁踩台阶)
最大路径和的两概念区分是高频考点
拓扑排序 / DFS 判环必练
通用 Google 爱变形,吃透原题后练改条件

FAQ

Q1:Google Intern OA 难度怎样?

两题 medium 偏上,30 分钟。不追极难,但今年图算法和变形题比重上升。重点是拆解问题的能力,而不是背原题。

Q2:爬楼梯这种简单题也会考?

会,但通常带变体——能爬 1/2/3 阶,或某些台阶不能踩。光背原题会被改条件卡住,一定要练变体的递推式。

Q3:最大路径和最容易错在哪?

混淆「返回给父节点的路径」(只能一条边)和「经过当前节点的路径」(可含左右)。前者用于递归返回,后者用于更新全局答案,写反就错。

Q4:30 分钟两题来得及吗?

来得及,前提是高频题型练熟、能快速识别套路。卡壳在思路上最耗时。我们提供 OA 辅助:题型预测 + 限时陪练 + 实时给方向,帮你把会的稳稳拿下。


正在准备 Google SWE Intern OA?

Google OA 考拆解能力和变形应对,不是偏题。如果你想要四道高频题的限时陪练、图算法/DP 变体专项,或需要 OA 辅助 的实时对接,欢迎联系交流,发岗位 JD 先做题型预测,再排练习计划。

立即添加微信 Coding0201获取 Google OA 真题与陪练

联系方式