Google SWE Intern 两轮新鲜面经 | 非常顺利的通过两轮Code面试

569閱讀
沒有評論
Google SWE Intern 两轮新鲜面经 | 非常顺利的通过两轮Code面试

Google SWE Intern 的面试就2轮面试,主要考察算法设计部分,重点考察数据结构和算法基础,包括动态规划、图算法、树操作、排序搜索等经典问题。常见题目有最大子数组和、LRU缓存实现、二叉树LCA、序列化反序列化等,需要熟练掌握时间空间复杂度分析。Google 面试用自家的text editor,没用Google Doc;建议mock的同学用text editor 练习。

Google SWE Intern VO 第一轮

题目:Google Company有一堆会议室预订记录请求,每条record有start_time和end_time。返回最少需要多少room。

澄清问题

  1. 时间区间是start开始还是end开始?
    • 若为 半开区间 [start, end)end == next.start 可复用同一间房。
    • 若为 闭区间 [start, end]end == next.start 视为冲突,需要新房间。(面试时需要先问清,若未明确,通常默认半开区间。)
  2. 输入是否可能为空?是否存在 start == end 的会议?
  3. 时间是否有上界/是否为整数?
  4. 输入是否已按 start_time 升序?

思路

按开始时间处理会议,用一个小根堆存“正在占用的房间的最早结束时间”,每来一个新会议:

  • 若堆顶结束时间 <= 新会议开始时间,说明有房间空出来了——弹出并复用;
  • 否则需要新开一间房——直接把新会议的结束时间压入堆。
    用一个变量记录堆曾达到的最大大小,即所需房间数。

复杂度:时间复杂度 O(Nlog N),空间复杂度:O(N)

Google SWE Intern VO 第二轮

这轮面试包含BQ环节和两道coding题。面试官是位美国小哥,人很nice,简单寒暄后直接进入正题,整体节奏挺舒服的,下面简单分享一下。

BQ

  1. 讲一个你从项目失败中学到重要经验的例子?
  2. 如果你和同事在技术方案上意见不合,你会怎么处理?
  3. 描述一次你主动帮助团队成员提升技术能力的经历?

Coding

题目:可变范围求和 这题要求设计一个数据结构,既能查询数组某个区间的和,又能支持更新某个元素的值。

思路:用线段树来解决最合适,把数组构建成二叉树结构,每个节点存储子节点的和,这样查询和更新都能在O(log n)时间内完成。

Follow up:

  1. 除了线段树,你还能想到其他方法吗?请比较一下它们的优劣。
  2. 如果这个数组非常大,并且需要频繁更新,你的线段树实现在内存和性能上可能会有什么瓶颈?如何优化?

整场下来,顺利通过! 在Amazon、Meta、微软、Google等等北美大厂OA和VO都很熟悉,都能顺利通过。如果你也需要Google面试助攻、面试辅助、OA代写等服务,请与我们联系

author avatar
ProgramHelp
正文完
 0