首页 > 其他分享 >My Interview Experience at Google --- 转

My Interview Experience at Google --- 转

时间:2024-03-19 10:45:30浏览次数:20  
标签:问题 面试官 Google 解决方案 代码 --- 面试 Interview DSA

My Interview Experience at Google [L5 Offer]

看看Google都面啥

原文


第一轮 DSA(45分钟)

树,后序遍历,拓扑排序

在面试过程中,面试官在代码编辑器中分享了一个很长的问题,并让我阅读。阅读完毕后,我问了几个澄清问题以更好地理解问题。

一旦我清楚地理解了问题,我建议使用树作为数据结构,并应用后序遍历来解决问题。面试官随后要求我用一个例子来解释解决方案,我也这样做了。

解释完毕后,面试官要求我实现这个解决方案。当我开始编写代码时,我力求使其模块化。为此,我创建了一个TreeNode类、一个TreeClass,以及一个专门用于解决问题的单独类。由于时间限制和我对模块化的关注,我遇到了一点挑战,但最终我还是设法写出了一个可以工作的代码。

面试官有几个后续问题,但由于时间限制没有问出来。这一轮结束时,我知道我搞砸了。我后来意识到,同一个问题可以通过拓扑排序来解决。(作者以为是一个树问题,但后面觉得是一个图的拓扑排序问题)

第二轮 DSA(1小时)

N个孩子的树,树遍历

对于第二轮面试,我惊讶地发现面试时间安排了1小时,因为谷歌的DSA轮通常持续45分钟。

一旦面试开始,我很快意识到这一轮为什么会延长到1小时。面试官使用一个包含长达4-5页的长篇问题的Google文档来提出问题。此外,还有一个带有图表的幻灯片,以提供问题的全面概述。

看到这么复杂的问题,我感到有点紧张。在阅读问题的过程中,我发现自己在阅读到第3页时忘记了前面几页的细节。幸运的是,面试官非常乐于助人,并花时间解释了问题。我问了许多澄清问题,大约花了20-25分钟才完全理解了问题的复杂性。

与问题的复杂性类似,这个问题的解决方案也很广泛。问题围绕树展开,特别是n个孩子的树。尽管面临挑战,我还是设法写出了完整的代码。这一轮结束时,我有点出汗,但我对自己的表现感到自信。

第三轮 DSA(45分钟)

中等难度的Leetcode问题,树,堆,递归

这一轮与前两轮有所不同。面试官提出了一个标准的Leetcode问题,特别是一个中等难度的问题,重点是树,并稍作修改。我迅速提供了一个解决方案,用例子验证了它,然后被要求编写代码。我迅速地编写了解决方案,并提供了时间和空间复杂度。

跟进1:面试官稍微改变了问题,并问我如何修改我的代码以适应新特性。我迅速识别了必要的改变,使我的代码不仅能够适应修改,而且通过使用策略设计模式,更易于适应这样的变化,代码模块化程度更高。

跟进2:面试官提出了一个具有挑战性的后续问题。我花了一些时间才找到最优解,并且用例子解释解决方案也消耗了一些时间。我之前为了提高代码模块性所做的修改,在快速适应跟进2中要求的变化时证明是有益的。我能够在时间内编写代码。

跟进3:这是关于如何使我的解决方案适用于生产环境。我提供了几种方法,通过这些方法我的代码可以在生产环境中工作。

结束这一轮后,我感到很有信心。

在前三轮面试之后,招聘人员在一轮DSA面试中给出了反馈,我收到了混合的反馈。我已经有所预感,因为我觉得自己在第一轮表现得不好。招聘人员建议增加一轮DSA面试,以确保招聘委员会没有顾虑,考虑到其他两轮中给出的强烈推荐录用的反馈。

第四轮 DSA(45分钟)

字符串,排序,二分搜索,字典树(Trie)

对于这一轮,我已经感到紧张。面试官提出了一个我以前没有遇到过的问题。虽然问题本身并不特别困难,但它需要应用多个DSA概念,如哈希、排序、二分搜索、上界、下界,以及考虑边界情况。此外,面试官要求编写适当的测试用例。

在沉思了大约5分钟后(并且大声思考),我设法想出了一个算法来解决问题。我解释了解决方案,用例子验证了它,然后提供了我的解决方案的时间和空间复杂度。面试官随后要求我编写代码。我迅速编写了代码,创建了测试用例,并确保覆盖了所有边界情况。

跟进1:面试官提出了一个跟进问题,对输入进行了轻微修改,并期望一个更优的解决方案。在考虑了一些例子后,我使用字典树(Trie)想出了一个满足面试官期望的解决方案。

跟进2:面试官询问了我的解决方案在处理非常大的数据集时的可扩展性以及其在生产环境中的可行性。我讨论了对字典树数据结构进行分片的选项,概述了各种有效的分片策略。此外,我还提出了使用键值存储的替代方法,尽管我们没有深入探讨这个替代方案。在这之后,面试官要求我实现基于字典树的解决方案。

这个跟进的代码很长,我不得不赶在时间限制内完成。总的来说,这一轮进行得很顺利。

第五轮 系统设计(45分钟)

面试官要求我设计谷歌的一款产品。凭借之前对系统的了解,我在提出一些澄清问题后,高效地提供了功能性和非功能性需求,并与面试官确认了这些需求。随后,我们的对话演变成了关于特定功能的详细讨论,使得这一轮更像是一次技术讨论,而非典型的面试。

我们探讨了多种方法,仔细权衡了每一种的利弊。面试官互动且支持的态度将这一轮从典型的面试转变为技术讨论。总的来说,这是一次很棒的体验。

然而,不利的一面是,我对自己在这一轮的表现感到不确定。

第六轮 谷歌特色(45分钟)

我们深入探讨了我以往的工作经验,并探讨了我离开META的原因。之后,面试官提出了一些具有谷歌特色的情境问题。在这一环节中,面试官提出了几个有趣的场景,我通过借鉴我过去的项目和经验进行了回应。面试官始终保持友好和支持的态度。

总之,这一轮进行得很顺利,我觉得表现不错。

通过谷歌的面试

在这段漫长的等待期间,我急切地等待着结果。招聘人员在我们几次互动中提到,他们正在等待招聘委员会的决定。三周后,招聘人员打电话向我表示祝贺,并分享了我通过谷歌面试的好消息,招聘委员会给出了积极的结果。


以上。

DSA(data structures and algorithms)

超大杯算法题目!!!感觉自己之前面试的算法题像小儿科了。

标签:问题,面试官,Google,解决方案,代码,---,面试,Interview,DSA
From: https://www.cnblogs.com/keboom/p/18082207

相关文章

  • 2024-03-19 闲话
    最近看了十几集friends,非常尴尬的是这里也太多成人内容了。今天上英语课slides上出现了:开幕雷击。虽然本来就是六个成年人的故事,出现成人关注的题材也很正常,但是感觉这个内容占比,充分说明了激素是行为调节的关键因素。上周六心血来潮去看了一下未删减wolfofwallstreet......
  • L2-025 分而治之
    如果一个城市未被炸毁,那如果他可达的其他城市也未被炸毁,说明方案不可行。#define_CRT_SECURE_NO_WARNINGS#include<bits/stdc++.h>usingnamespacestd;#definelllonglongvector<vector<int>>vec;//邻接表intmain(){ intn,m; cin>>n>>m; vec.resize(n+10......
  • 阿里ModelScope应用案例-cnblog
    ​信息抽取(实体识别)分词人像抠图摘要生成人体关键点表格搜索文本分类自然语言理解人像卡通化人像增强算法图文检索大模型与Agent文字识别......
  • JS前后端交互(1)-项目BotBattle
    目录JS前后端交互交互逻辑图解后端前端JS前后端交互交互逻辑图解后端RequestMapping("/pk/")publicclassBotInfoController{@RequestMapping("getbotinfo/")publicMap<String,String>getBotInfo(){Map<String,String>bot1=newHashMap<>(......
  • DS-CDMA通信系统误码率matlab仿真,包括QPSK调制解调和扩频解扩
    目录1.QPSK调制解调2.扩频与解扩3.MATLAB程序DS-CDMA是一种多址接入技术,它允许多个用户在同一频段和时间内进行通信。每个用户都被分配一个独特的扩频码(通常是伪随机噪声码),用于在发送端对数据进行扩频,并在接收端进行解扩以恢复原始数据。DS-CDMA(DirectSequence—CodeDivis......
  • TH-FBCQX2防爆气象站
    TH-FBCQX2防爆气象站主要适用于易燃易爆、危险性高的场所。以下是其主要的适用领域:石油与天然气行业:在石油和天然气的生产、储存和运输过程中,防爆气象站可以监测环境中的可燃气体浓度,并根据气象条件预测爆炸风险。同时,它还可以监测风速、风向等气象参数,确保生产设施的安全运行......
  • postman-set
    1、<script>letauthorization=pm.environment.get("Authorization");console.log("=======authorization"+authorization);if(authorization!=null){//设置一个请求头pm.request.headers.upsert({......
  • 从零开始写 Docker(七)---实现 mydocker commit 打包容器成镜像
    本文为从零开始写Docker系列第七篇,实现类似dockercommit的功能,把运行状态的容器存储成镜像保存下来。完整代码见:https://github.com/lixd/mydocker欢迎Star推荐阅读以下文章对docker基本实现有一个大致认识:核心原理:深入理解Docker核心原理:Namespace、Cgroups......
  • ElasticSearch - 基础概念和映射
    前言写这篇东西,是因为官方文档看着太痛苦,于是乎想用大白话来聊聊ElasticSearc(下面都简称ES)。所以下文对于ES一些概念的表述可能会与官方有出入,所以需要准确的表述和详细定义的,请跳转官方文档。我也尽量贴上官方的链接。前置知识:因为下文会使用mysql的一些概念来描述,所以......
  • 十大排序算法--Java实现
    冒泡排序(BubbleSort)基本思想:冒泡排序是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。算法步骤:从第一个元素开始,比较相邻的元素。......