在 Google SWE Intern Interview 的招聘流程中,部分候选人会经历两轮 back-to-back coding interviews 45 分钟。本次面经记录了两轮 coding 面试的题目和后续 follow-up,整体重点集中在二维网格搜索、记忆化 DFS、字符串处理以及复杂度优化。

Google 27 Intern Coding Interview Overview
- 岗位: Google 2027 Intern
- 面试轮次: 2 轮 Coding Interview
- 面试形式: Back-to-back
- 每轮时间: 45 分钟
- 主要考察: Coding、算法思路、复杂度分析、Follow-up
After two interview rounds, candidates are soon notified to advance. The steps may vary by batch and candidate, leading to the Google SWE Intern Interview Team Match phase.
R1:二维高度矩阵中的水流终点
第一轮是一道二维矩阵搜索题。
给定一个二维高度矩阵,假设每个格子中都有一滴水。水会沿着最陡的下降方向流动。如果当前位置已经位于最低点,水会停留在当前格子;如果水流到边界之外,则认为水流出矩阵。
要求返回每个格子的最终终点坐标。
解题思路
对于每个格子,可以检查其相邻位置,找到高度下降幅度最大的方向,也就是最陡的下降方向。
确定下一个位置后,可以继续寻找该位置的最终终点。
如果当前格子位于边界,并且水可以继续流出矩阵,则直接记录对应的越界坐标。如果当前位置已经没有更低的位置,则当前位置就是最终终点。
由于不同格子的水流路径可能重复,可以使用 Memoization + DFS。
第一次计算某个格子的终点后,将结果保存下来。之后其他格子再次到达这个位置时,就可以直接使用已经计算好的结果,而不需要重复搜索。
可以将每个格子的状态理解为:
current cell
↓
steepest downhill neighbor
↓
neighbor's final destination如果没有更低的邻居,则:
current cell → current cell如果水流出边界,则:
current cell → outside coordinatecomplexity
使用记忆化 DFS 后,每个格子的最终状态只需要计算一次,因此整体复杂度可以控制在:
时间复杂度:O(m × n)
空间复杂度:O(m × n)
where m × n 是矩阵的大小。
R2:使用 9 个字母组成最长单词
第二轮是一道字典和字符串处理题。
给定一个 dictionary 和 9 个字母,需要从 dictionary 中找到一个可以由这 9 个字母组成的最长单词。
每个输入字母最多只能使用一次。
例如,可以将输入的 9 个字母统计成:
a: 2
b: 1
c: 1
...然后检查 dictionary 中的单词是否能够由这些字母组成。
解题思路
可以先对 dictionary 进行预处理。
对于每个单词,统计其中每个字母出现的次数,并保存对应的单词长度。
例如:
apple可以转换成对应的字母计数:
a: 1
p: 2
l: 1
e: 1然后对所有单词按照长度从大到小排序。
查询时,首先统计输入的 9 个字母分别出现多少次,然后从最长的单词开始检查。
如果某个单词中每个字母的出现次数都不超过输入字母的数量,那么这个单词就是符合条件的最长单词,可以直接返回。
判断条件可以理解为:
word_count[c] <= input_count[c]对于单词中的每一个字符都满足这个条件,则说明该单词可以由给定字母组成。
complexity
如果 dictionary 已经完成预处理,并且按照单词长度进行排序,那么查询时可以优先检查较长的单词。
具体复杂度取决于 dictionary 的规模以及单词平均长度。
面试过程中除了完成 coding,还需要根据 follow-up 进一步讨论如何优化复杂度。
Follow-up:复杂度优化
这两轮 coding 面试中,一个比较明显的特点是,完成基本题目后还会继续进行 follow-up。
Follow-up 重点之一是:
如果需要处理更大的输入,如何优化当前 solution 的时间复杂度?
因此面试时不能只停留在:
“代码可以通过。”
还需要能够解释:
- current solution 的时间复杂度是多少
- 哪一步是主要的性能瓶颈
- 是否存在重复计算
- 能不能提前预处理数据
- 能不能使用 Hash Map / Memoization
- 如果输入规模扩大,solution 是否仍然可行
例如第一题中,Memoization 的作用就是避免不同路径重复计算同一个格子的最终终点。
第二题则可以通过 dictionary preprocessing、字母频次统计以及按照单词长度排序,减少查询过程中不必要的检查。
Google Coding Interview 中需要注意什么
除了代码本身,这类 Coding Interview 也比较重视候选人与面试官之间的沟通。
拿到题目之后,可以先确认:
- 输入的数据范围是什么?
- 是否存在重复元素?
- 边界情况怎么处理?
- 如果存在多个满足条件的结果,应该返回什么?
- 是否要求最优复杂度?
确定题意后,再开始讲解自己的思路。
Coding 过程中也建议保持沟通,不要长时间沉默写代码。可以一边实现,一边说明当前正在处理什么,以及为什么选择这种方法。
代码完成后,还需要主动检查 test cases,并准备解释 edge cases 和 complexity。
如果面试官继续提出 follow-up,不要只修改代码,也要先说明新的要求会对原来的算法产生什么影响,再讨论优化方案。
Google 27 Intern Coding Interview FAQ
Google 27 Intern 有几轮 Coding Interview?
本次面经记录的是两轮 back-to-back coding interviews 45 分钟。具体面试轮次可能根据招聘流程有所变化。
Google Intern Coding Interview 每轮多长时间?
本次两轮 coding interview 每轮约 45 分钟。
Google Coding Interview 会问 Follow-up 吗?
本次面经中,两道 coding 题完成后都会继续进行 follow-up,重点涉及复杂度优化以及 solution 的进一步改进。
Google Coding Interview 需要解释思路吗?
Coding 面试不仅需要完成代码,也需要向面试官解释思路、复杂度和测试案例。沟通方式也是面试过程中的重要部分。
Google Intern Coding Interview 主要考什么?
从本次两道题来看,涉及二维矩阵搜索、DFS、Memoization、字符串处理、字母频次统计以及复杂度优化等内容。不同候选人实际遇到的题目可能有所不同。
备考建议 & 联系我们
如果你也在准备 Google 2027 Intern(或其他大厂)的 Coding Interview / OA / VO,感觉复习方向不清晰、真题不够、或者想针对二维网格 + Memoization DFS、字符串频次统计这类题做针对性强化,欢迎联系我们。
Interview Show 专注北美技术岗位的面试辅助,团队来自一线大厂工程师与面试官,提供:
- Coding / Algorithm 真题辅导与复杂度优化指导
- VO 辅助、模拟面试、Follow-up 应对训练
- 一对一针对性备考方案
有需要可以直接访问官网了解详情或预约免费评估~
我们会根据你的背景和目标岗位,给出更精准的准备建议。祝大家面试顺利,早日拿到心仪 Offer!