
Google SDE面试经验分享,包括了Google的OA和两轮面试流程,一起来看一下吧。
Google 面试过程
在线测试(OA)
第一轮是一个在线测试。有五组问题,每组有两个题目,你会随机抽到一组。我们大部分时间都花在了第二题上,第一题是leetcode easy题,但大致知道它是一个关于图的题目。
题目如下:
给定一个长度为n的整数数组A,定义一个好三元组为满足以下条件的三个索引集合 (i,j,k):
- 索引条件:0≤i<j<k<n
- 数组值条件:
- 对于所有 i<q<j,满足:
- 满足: A[i]>A[q]且A[j]>A[q]
- 对于所有 j<p<k,满足: A[k]>A[p]
- 好三元组的距离:
- 定义为: 距离=k−i+1
请找出数组A中好三元组的最大距离。
逻辑: 使用单调栈预处理每个索引的位置,即向左和向右能扩展多远。然后遍历数组,假设当前索引为三元组的第一个元素,利用预处理数据可以快速找到第二和第三个索引,从而在 O(1)时间内计算三元组的距离。
结果:最终通过了所有测试用例。成功入围下一轮面试!
Google第一轮面试(VO)
面试官是一位新加入Google的员工,非常友善。我们用了5分钟进行自我介绍,接着她给出了以下问题:
问题 1: 一个字符串被称为分组字符串,如果其中的所有字符都连续出现。例如,AAABBBBBCDEE 是分组字符串,而 AAABBBACCED 不是。
给定一个分组字符串s和一个整数k,你需要将字符串分成大小不超过 kkk 的组,例如:前k个字符为第1组,下k个字符为第2组,依此类推。注意最后一组可能少于k个字符。
一个字符被称为分布字符,如果它出现在多个组中。例如,对于字符串 AABBCCDEE 和 k=2k,分组为 AA, BB, CC, DE, E。字符 E 出现在多个组中,因此是分布式字符,而其余字符 A, B, C, D 则不是。
需求:输出字符串中未分布的字符数量。
思路: 维护两个哈希表:一个全局哈希表记录之前组中出现的字符,另一个当前组的哈希表记录当前组的字符。遍历组,检查每个字符是否在多个组中出现。
问题 2: 给定一个二叉树,每个节点的值为0或1。1的岛屿被定义为由1组成的连续区域(由0分隔或边界限制的1)。输入二叉树的根节点,返回岛屿的数量。
思路: 递归遍历树,遇到值为0的节点时将上下游的岛屿分割开,否则合并岛屿。
Google第二轮面试(VO)
这一轮难度稍高,但问题逻辑清晰。包括:
- 求最长全为0的子数组长度。
- 求二进制矩阵中最大1的连通区域面积。
- 求二进制矩阵中全为0的最大矩形面积。
最终结果: 经过几轮面试后,学生成功获得了Google的实习机会!
Reference
我们提供面试辅助、VO助攻、VO辅助、代面试等面试支持服务。对于OA辅助,我们将确保您获得满分,对于面试支持,我们有把握帮助您拿到大厂Offer,如果你需要Google的面试支持服务,请与我们联系。