目录
正在加载目录...

Google SWE Intern VO 面经|两轮 Coding 题与解题思路

这次分享一场 Google SWE Intern VO 面试经验,共进行了两轮 Coding Interview。两轮面试主要围绕算法题展开,第一轮考察了 0-1 BFS,第二轮则是 Sorting + Two Pointers,整体题目比较注重基础算法的理解和实际应用。

面试采用 Virtual Onsite 的形式进行,每轮都有对应的 Coding 题以及 Follow-up。下面会分别整理这两轮的题目、解题思路和考察重点,给正在准备 Google SWE Intern Interview 的同学做个参考。

Google SWE Intern VO 面经|两轮 Coding 题与解题思路

Google SWE Intern 面试流程

Google SWE Intern 的面试流程通常包括 Recruiter Call、Online Assessment(OA)、Technical Interview 和 Team Matching。具体安排会根据招聘批次、地区和候选人的申请情况有所不同,部分候选人可能会跳过 OA,直接进入技术面试。

Technical Interview 是整个流程中比较重要的环节,通常会安排多轮 Coding Interview,每轮约 45–60 分钟,主要考察 Data Structures、Algorithms 和 Problem Solving。面试时除了完成 Coding,也需要主动 Clarify 题意、解释解题思路,并根据面试官的 Follow-up 对原有方案进行调整。

完成 Technical Interview 后,符合条件的候选人可能进入 Team Matching,根据个人经历、技术方向和团队需求进行后续匹配。

整体来看,Google SWE Intern 的常见流程可以概括为:Recruiter Call → OA → Technical Interview / VO → Team Matching,具体流程可能有所变化,建议以当前招聘批次的安排为准。

Round 1:0-1 最短路

题目描述

给定一个包含 N 个节点的有向图。虽然图中的边是有方向的,但实际可以沿两个方向移动:

  • 按照原始边的方向移动,代价为 0
  • 反方向移动,代价为 1

给定 start 和 end,要求计算从 start 到 end 的最小总代价。

解题思路

这道题可以使用 0-1 BFS。建图时,可以把每条有向边转换成两条边:

  • 原方向:weight = 0
  • 反方向:weight = 1

因为边权只有 0 和 1,不需要使用普通 Dijkstra,也不需要对所有节点进行排序,可以直接使用 Deque。

遍历过程中:

  • 如果当前边的权重是 0,将节点加入 deque 的头部
  • 如果当前边的权重是 1,将节点加入 deque 的尾部

这样可以保证距离较小的节点优先被处理。时间复杂度为:O(V + E) 其中 V 是节点数量,E 是边数量。

Follow-up

面试过程中还可以继续延伸到其他情况。

如果图中出现负权边怎么办?

0-1 BFS 只适用于边权为 0 或 1 的情况。如果存在负权边,可以考虑 Bellman-Ford。

如果有多个起点和多个终点怎么办?

可以增加一个 Super Source 和 Super Sink:

  • Super Source 连接所有起点
  • 所有终点连接到 Super Sink

这样可以把多起点、多终点问题转换成单源最短路问题。

Round 2:三个数之和不超过 N

题目描述

给定一个整数数组,统计数组中有多少个不同的三元组合,使三个数的和不超过 N。

解题思路

可以先对数组进行排序,然后固定第一个数字,再使用 Two Pointers 查找另外两个数字。假设当前固定的数字为 nums[i],那么剩余两个数字需要满足:nums[left] + nums[right] <= N - nums[i],设置左右两个指针:

  • left 从当前元素的下一个位置开始
  • right 从数组末尾开始

如果:nums[left] + nums[right] <= target由于数组已经排序,那么从 left 到 right 之间、以 right 为上界的相关组合都可以满足条件,因此可以一次性统计符合条件的数量,然后移动 left。如果:nums[left] + nums[right] > target说明当前 right 太大,需要移动 right 向左寻找更小的数字。

复杂度

排序需要 O(n log n),之后使用固定一个数字 + 双指针的方式遍历,时间复杂度为 O(n²)。

因此整体时间复杂度为:O(n²) 额外空间复杂度取决于排序算法的实现。

Google SWE Intern VO 如何备考

准备 Google SWE Intern Interview 时,不建议只关注 Coding 题的数量,还需要熟悉面试中的解题过程和 Follow-up。尤其是 VO 阶段,面试官通常会继续追问当前方案的复杂度、边界情况以及如何进一步优化。

1. 熟悉常见 Coding 题型

可以重点复习 Array、String、Hash Table、Two Pointers、Binary Search、Tree、Graph、BFS、DFS、Dynamic Programming 等基础算法,同时掌握每类问题常见的解题思路。

2. 练习 Follow-up

Google Coding Interview 不一定在写出一个可行解之后就结束。准备时可以主动思考:

  • 如果数据规模变大怎么办?
  • 能不能降低 Time Complexity?
  • 如果增加新的限制条件怎么办?
  • 有没有其他解法?
  • Edge Cases 怎么处理?

像这次面经中的 0-1 BFS,面试官继续追问负权边和多起点、多终点,就是比较典型的 Follow-up。

3. 练习边写边讲

VO 面试中不要长时间只写代码。拿到题目后,可以先 Clarify Requirements,再说明自己的思路,Coding 的同时解释关键步骤,最后主动检查 Edge Cases 并分析 Time Complexity 和 Space Complexity。

如果平时习惯了这种沟通方式,正式面试时会更容易适应 Google SWE Intern 的 Coding Interview 节奏。

总结

Google SWE Intern 的 Coding Interview 不只是考察能不能写出正确代码,题意理解、解题思路、复杂度分析以及 Follow-up 同样重要。尤其是 VO 阶段,熟悉常见题型之后,还需要练习如何在面试过程中和面试官沟通,并根据新的条件优化原有方案。

如果你正在准备 Google SWE Intern OA、VO 或 Technical Interview,可以结合真实面经了解近期的题型和面试形式。需要更多 Google、Amazon、Microsoft、TikTok、Stripe 等技术面试经验和备考资料,也可以通过 InterviewShow 进一步了解。

Google SWE Intern FAQ

Google SWE Intern VO Coding 难吗?

Google SWE Intern VO 的 Coding 题通常以 Medium 难度为主,但具体难度会因面试题目和 Follow-up 而变化。相比单纯完成一道 LeetCode 题,面试更看重如何分析问题、解释思路并根据 Follow-up 调整解法。

Google SWE Intern VO 每轮多长时间?

Google SWE Intern VO 的 Coding Round 通常为 45 分钟左右。时间一般需要覆盖题意确认、思路分析、Coding、测试以及 Follow-up,因此不能把全部时间都用于写代码。

Google SWE Intern VO 会考 Follow-up 吗?

会。Google SWE Intern VO 的 Coding Round 通常不仅要求完成基础解法,还可能继续询问如何优化 Time Complexity、Space Complexity,或者改变输入条件和问题限制。近期公开的 Google SWE Intern 面经也提到技术面会重点关注候选人解释方案和 Trade-off 的能力。

Google SWE Intern VO 需要写代码吗?

需要。Google SWE Intern VO 的核心技术面通常是 Live Coding,候选人需要在共享编辑环境中完成代码并向面试官解释思路。部分公开面经提到,面试环境并不像完整 IDE,不能依赖运行代码来检查答案,因此需要提前适应这种 Coding 方式。

Google SWE Intern VO 常考哪些 Coding 题型?

Google SWE Intern VO 常见 Coding 方向包括 Array、String、Hash Table、Sorting、Two Pointers、Binary Search、Tree、Graph、BFS、DFS 和 Dynamic Programming。实际面试题可能会在基础题型上增加 Follow-up,因此准备时不能只记固定题目。

Google SWE Intern VO 怎么准备?

准备 Google SWE Intern VO 时,可以重点复习常见 Data Structures & Algorithms,并通过模拟面试训练在没有完整 IDE 的情况下完成 Coding。同时要练习边写代码边解释思路,并重点准备 Complexity Analysis、Edge Cases 和 Follow-up。

END