我通过了 Google 技术面试,所以你也能行!

嵌入式资讯精选 2020-05-04 00:00

作者 | Emma Bostian
译者 | 香槟超新星,责编 | 郭芮

以下为译文:

在通过了Google技术面之后,我中途退出了应聘流程。我知道你会怎么想:“你疯了吗?!谁会中途退出Google面试?”
这篇博文将讨论我在Google面试中的经历,以及通过技术面流程的技巧(适用于任何公司的技术面)。
Google以超难的技术面而闻名,而且是一家让很多面试者垂涎不已的公司,所以我选择在此博文中重点介绍它。
虽说如此,但其他的好公司也有很多,其中一些没有Google这个技术巨头那么知名,但这并没有什么关系。要成为一名成功的开发人员,并不一定非要为一家知名公司工作。
此外,为大公司工作也是有利有弊的(我将在本文中介绍)。想清楚自己要从一份工作中得到什么,然后去寻找符合这些核心价值观和工作环境的公司。
我只能就Google(或任何其他公司)的JavaScript /前端面试流程谈谈,而我的面试经历可能跟你的面试经历有所差别,因此请有所保留地听取我给出的建议和经验。
我不会透露我在Google面试(或任何其他技术面试)中被问到的面试问题,因为我认为这对公司不公平。作为候选人,你想要凭借自己解决问题的能力获得工作机会,因此我选择在本文中强调你应该学习的技能,而不是面试中会问的问题。
不要背诵答案,而要学习解决问题的能力,从而构建高效的解决方案!有关如何成功进行技术面试的更多见解,可以参考本文的面试技巧部分。
最后,我只想对整个Google团队,以及与我交谈过的任何现任或前任员工表示感谢。我遇到的负责招聘的人员都非常出色,与每位面试官的交流过程都十分愉悦。他们给我的感觉很舒服,从来没有让我觉得自己不够聪明。我被问到的都是一些公平的,能够评估我日常工作中所需技能的问题。为此,我要说谢谢。


历史

这是我第三次面试Google(每次的进度条都走得更远一些)。以下是概述。
回合1:2016
我的第一次面试是在2016年,当时我还住在德克萨斯州的奥斯丁。那一次我对技术面试的准备非常的不充分,但居然还是坚强地通过了招聘人员的电话筛选,并且经过了两道技术电话面试题才被拒绝。
回合2:2019
我第二次面试Google是在2019年底。我以为我参加的是材料设计(Material Design)团队中的用户体验工程师(UX Engineering)的面试,但我最终完整走了一遍软件工程面试的过程,所以有些准备不足。
我通过了电话编程挑战,然后转到去慕尼黑的园区参加现场面试。我进行了两轮前端技术面试,两轮数据结构和算法面试,以及一次围绕开发过程,沟通和文化契合度的面试。
我的前端面试中的一轮是在Chromebook上通过Google Hangouts进行的,很不幸,我们遇到了技术问题(Chromebook无法启动,Hangouts无法屏幕共享),并且一半的面试时间都花在了故障排除上。面试官后来告诉我,我的JavaScript技能还有进步空间。
结果就是,我没有通过面试,但团队希望我在一两个月后再到慕尼黑园区重新面试。我那时的生活有点混乱,所以婉拒了重新面试的邀约。
回合3:2020
2020年初,我重新面试了Google的用户体验工程师职位,因为我在几个月前刚刚面试过,所以这次的面试流程就加快了(我不必重新进行电话代码挑战,现场做数据结构和算法题,或进行过程/文化契合度面试了)。
我把一个用户体验工程项目带回家做,设计了用户流和信息架构,使用Sketch创建了高保真模型,并搭建了一个app。然后,我在一个文档中简洁地记录了我的流程以及工具选择。
通过了这个项目挑战之后,我又用Google Hangouts进行了三次Google现场面试(由于COVID-19疫情无法实地面试)。我进行了两次前端技术(代码)面试,一次用户体验面试,在用户体验面试的过程中讨论了我带回家做完的项目,以及可以从用户体验的角度进行的改进。
在“现场”面试之后,我的招聘人员(面试两天后)通知我,我已通过面试,且后续会进入招聘委员会和团队匹配阶段。
我与招聘主管见了面,我们讨论了手上的这个职位。巧合的是,我在慕尼黑的第二轮面试中遇到过这个主管,所以再次见到他还挺开心的。
在这之后,我等了几个星期,在此期间也继续面试其他公司。不幸的是,由于COVID-19疫情,Google的内部招聘流程有些混乱,所以我最终接受了另一家公司的offer。
我永远也不会知道自己最终是否真的能收到Google的offer,但起码我已经通过了技术面,所以已经很为自己骄傲了。曾经有人说我的技术不够出色,我也曾经觉得自己的技术无法在这个行业立足,以前的时候我觉得能进入现场面试这一轮就已经很不错了。


怎样才能成为Google的员工?

想要应聘去Google,你必须具备以下特征。
  • 做一个善良的人

  • 愿意学习

  • 具备良好的沟通能力

  • 做一个优秀的问题解决者

  • 展现出色的团队合作精神

  • 具备同理心根据我的经验,招聘人员们找的不是天才,而是具有良好沟通和团队合作能力的善良,勤奋的人,而且许多其他公司也都是如此。



一般面试流程

Google的一般面试流程包含五到六个阶段:
Google的一般面试流程包含五到六个阶段:
  • 招聘人员电话面试

  • 技术电话面试/代码挑战

  • 带回家做的能力测试*

  • 现场面试

  • 团队匹配阶段

  • 招聘委员会

*此步骤仅针对用户体验工程师,而不是软件工程师。

让我们再深入研究一下这几个阶段。
招聘人员电话面试
在招聘人员电话面试期间,招聘人员会向你提供有关这个职位和面试过程的更多信息。但是,不要轻视这次面试,因为面试过程中的每个步骤都很重要,并且会影响公司对你整体表现的评估。
招聘人员电话面试的一些技巧:
  • 提前阅读关于这个职位和公司的内容

  • 要准时

  • 准备好两三个问题,用来在面试时问招聘人员

  • 最后不要忘记感谢他们抽出时间

你的招聘人员会努力为你争取offer,因此对他们nice一些!

技术电话面试
如果招聘人员电话面试进行得顺利,接下来你将进行技术电话面试。在通话过程中,你将与一名Google员工配对,TA会给你出一个编程挑战问题。
我回答了一个问题,这个问题主要是测试以下技能:
  • DOM操作(访问DOM节点,执行某些任务,动态生成新的DOM节点)

  • CSS

我在Google文档中写下了我的答案。下面是我的解题思路。

  • 提一些问题:由于招聘人员希望了解你的想法,所以他们问的问题本身会不够全面。

  • 编写伪代码:写伪代码的过程可以让你在写真代码之前先理清思路。

  • 写出暴力解决方案:你不必第一次就写出最优解。从暴力解决方案开始,然后再进行优化,这能够显示出你对性能的关注度。

  • 优化你的方案:如果已经有了暴力方案,那么该从哪里着手进行优化呢?你能否将一个嵌套的for循环重构为两个顶级循环?

  • 测试边缘例子:在你的方案能够运行且已经过优化后,你需要创建一些测试用例。这将让你知道自己是否错过了任何极端情况。

编程项目

如果你的技术电话面试顺利进行,你可能会被要求把一项编程项目带回家完成。在软件工程面试中,我没有被要求做任何项目,但是在用户体验工程面试中,我被要求完成一个项目。
我非常喜欢做这种编程项目,原因如下:
  • 我能够从两个项目中选一个,这两个项目分别展示了不同的技能

  • 我有一个星期左右的时间来完成该项目(尽管对方告诉我这个项目应该只需要几个小时),这减轻了编程面试的“现场”压力

  • 我能够展示一些我最擅长的技能,例如详尽的文档,用户流程,以及信息架构

  • 我可以自己选择技术栈

在埋头写代码之前,你应该先与招聘人员明确一下项目要求。例如,如果你想使用一个JavaScript框架,就应该先询问一下可不可以。

我对编程项目的一些小贴士如下:
  • 尽量不要过于依赖第三方库。我当时选择使用Material UI(Google的设计系统)来做UI,因为这展示了我对设计系统的了解,并且保持了UI的一致性,但使用UI框架可能会对性能产生一定影响。

  • 坦白地对待你想要改进的地方。在提交一份带回家做的项目作业时,我总是会在里面添加“还能改进的方面”这一项。如果再给你的项目几个小时或几个星期的时间,你会做些什么改变?

  • 通过可访问性测试器运行你的应用程序。我通过Google Lighthouse运行我的app来测试可访问性。

  • 不要在项目上花太多心血。如果招聘人员告诉你,在项目上花费2-3个小时就差不多了,那么就不要花一个星期。你会感到身心俱疲,而且如果公司在此之后拒绝了你,你会觉得自己被利用了(我的经验之谈)。

  • 把你的代码收拾干净。确保删除注释,并确保代码格式正确。

  • 考虑一下项目架构。你的文件结构应该清晰有序。

  • 添加安装说明。如果检查你代码的人不知道如何运行你的程序,则你可能就无法进入下一轮面试了。

现场面试

如果你已经成功晋级到了现场面试这一轮,恭喜你!你已经跨出很大的一步了,你应该为自己感到骄傲!
在我第二次面试Google时,我去了慕尼黑园区,并参观了办公室(办公环境真是太棒了!),但在我最近的这次面试过程中,由于COVID- 19疫情,所有的现场面试都是通过Google Hangouts进行的。
现场面试分为五轮:
  • 两次前端面试(代码)

  • 两次数据结构和算法面试(代码)

  • 一次过程/团队合作/文化契合度面试

前端面试将集中考察HTML,CSS和JavaScript等前端技术,但也可能会对性能和异步JavaScript等其他领域有所涉及。

前端面试
以下是我建议为前端面试准备的技能:
有关要点内容,请点击:
https://gist.github.com/emmabostian/aea646464456c2fb4ad66f1051faba83。
数据结构与算法面试
以下是我建议为数据结构和算法面试准备的技能:
有关要点内容日,请点击:
https://gist.github.com/emmabostian/c996c68458dd5eb770529b52dd7bfb00
团队合作,流程,以及文化契合度面试
团队合作/流程/文化契合度面试融合了多种主题,从敏捷方法论到工作流,从团队精神与协作到冲突的解决等等。
为了确保这个面试的成功,有以下小贴士:
  • 拥有两个或三个项目可供讨论。

  • 拥有一到两个你解决团队冲突的例子。

团队匹配阶段

如果你所有的现场面试都已经通关,那么困难的那部分已经过去了!有些候选人会直接进入招聘委员会,但另一些会进入团队匹配阶段。
在此阶段,你将会与潜在的主管见面,并讨论你将加入那个团队,以及你将从事什么样的工作。
如果哪个团队想要你,他们会告诉你的招聘人员,然后这个团队会被加入你的应聘文件夹(portfolio)中,然后被提交给招聘委员会。
招聘委员会
招聘委员会是面试过程的最后阶段。在我的理解中,委员会由几名Google员工组成,他们会审查候选人在整个面试过程中的表现。
在招聘委员会会议召开的前一两天,审核人员会阅读候选人的数据包,并就是否录取候选人发表意见。在会议上,审核人员会讨论他们的意见,如果所有成员都同意,那候选人就会得到offer。
我没有收到有关招聘委员会意见的反馈,因为我在收到之前就退出了流程,因此很遗憾,我也不清楚通过招聘委员会的概率。


学习技巧

对于面试,以下是一些一般性建议,这样能确保你发挥出自己全部的才能。
每天学一点
尽管这样你可能不会感觉自己每天都有巨大进步,但是每次的少量信息结合起来最终会取得惊人的结果。我喜欢James Clear撰写的Atomic Habits一书,这本书里更加深刻地阐述了这个观点。
当你每天集中精力学习一小段时间,就更不容易感到疲惫,而且这能让你的大脑有更多时间来消化学到的东西。
边学边做
你可以学会世界上所有的技术,但是如果你不把这些技术应用到各种各样的项目中,那么你在面试中可能很难使用它们。我建议学习一两个技能,然后找到一个示例程序来进行应用。
学着去看其他人的解决方案
你的解决方案可能好用,并且可能已经优化过了,但是阅读其他人的解决方案并了解他们的想法始终是有好处的。你可能会找到一种更高性能的方式来完成一项任务,但总的来说,学会阅读代码是一项非凡的技能,并且也是必备的。


面试技巧

当现场面试终于到来时,下面的一些技巧可以帮助你定下心来:
喝水
喝点东西可以给你一个深呼吸并放松下来的契机。你的面试官们应该会问你是否需要饮料,但如果他们没有主动提供,你尽可以问他们要。
澄清问题
白板问题会故意留有一些空白,因为面试官希望看到你解决问题的能力。如果有什么问题看起来仿佛没有讲清楚,那可能它的确不清楚!写下你所知道的东西,并推理出你不知道的东西。
如果卡住,就先暴力解然后再优化
如果你完全没有头绪,那就先从性能较差的方案开始。可以稍后再进行优化。
例如,如果要求你在有序的数组中搜索某数字,如果找到则返回true,那么你总是可以用一个for循环遍历每个数组下标,如果找到就返回true。在最坏的情况下,复杂度为O(n),其中n是数组的长度,因为我们要检查数组中的每一个元素。
在面试中,过了一会你可能会意识到,“哦,原来数组已排好序了!我可以使用二分查找来找到该元素!”二分查找是一种出色的分治算法,它通过每次减小数组的大小来重复对目标元素的搜索。最终这可能会比上一个解决方案性能更好。
说出你的思考过程
面试就是为了考察你是如何思考的,因此你必须大声说出自己的想法!你的面试官又不懂读心术。
如果你在两种解决方案之间摇摆不定,就告诉你的面试官,并解释为什么你对两种解决方案都持保留意见。他们也许能够指引你选出正确的那个。
测试你的方案
当你已经有了解决方案,并已经对其进行了优化,那就应该进行测试了。许多面试者会忘记测试,但测试是编程挑战的一个重要组成部分。你的解决方案可能适用于75%的测试用例,但忘记了其他25%的边缘用例。
在面试中,测试你的方案是不可或缺的一步。
不要依赖工具
Google通常会让你使用Word或纯文本编辑器来编写代码挑战问题,因此,不要依赖linters或Prettier来规范代码格式。要学会在无法使用工具的环境中编写代码。


最后的想法

Google并不是 “一劳永逸”的终极梦想公司。你甚至可能会不喜欢在大公司工作!
关于面试,要记住的最重要的一点就是,这是个双向的过程。公司在面试你,同时你也在面试这家公司。
你所拥有的技能是很有价值的,即使这家公司拒绝了你,也并不意味着你不够出色。
对于所有人来说,我们被拒绝的次数都要比得到offer的次数多,所以请加油,坚持下去。
文中所有插图都来自UnDraw,在此表示感谢!
原文:https://dev.to/emmabostian/i-passed-the-google-technical-interviews-you-can-too-4i6m
作者:Emma Bostian,软件工程师,藏书爱好者,猫咪铲屎官。


1.FPGA惊爆无解漏洞 - “StarBleed”技术细节全解读

2.Keil MDK 5.30来了,可以快速入门Cortex-M55!

3.如何写一个健壮且高效的串口接收程序?

4.零代码将AI应用迁移到生产环境!解读英特尔的AI软件布局

5.浅谈STM32硬件I2C的使用

6.一个工业项目,用MCU还是PLC?

嵌入式资讯精选 掌握最鲜资讯,尽领行业新风
评论
  • 上汽大通G90是一款集豪华、科技与舒适于一身的中大型MPV,号称“国产埃尔法”。在国内市场,作为“卷王”的G90主要面向中大型MPV市场,满足家庭出行、商务接待和客运租赁等多元化场景需求,在国内市场上取得了不错的销售成绩。在海外市场,上汽大通G90也展现出了强大的竞争力,通过技术创新和品质提升,上汽大通的产品在国际市场上获得了广泛认可,出口量持续增长,如果你去过泰国,你就应该可以了解到,上汽的品牌出海战略,他们在泰国有建立工厂,上汽大通G90作为品牌的旗舰车型之一,自然也在海外市场上占据了重要地
    lauguo2013 2024-12-18 10:11 98浏览
  • 车载光纤通信随着ADAS(高阶驾驶辅助系统)、汽车智能网联、V2X和信息娱乐技术的不断发展,车载电子系统和应用数量迅速增加。不断增长的车内传输数据量对车载通信网络造成了巨大的数据带宽和安全性需求,传统的车载总线技术已经不能满足当今高速传输的要求。铜缆的广泛使用导致了严重的电磁干扰(EMI),同时也存在CAN、LIN、FlexRay等传统总线技术不太容易解决的问题。在此背景下,车载光纤通信技术逐渐受到关注和重视,除了大大提高数据传输率外,还具有抗电磁干扰、减少电缆空间和车辆质量等优点,在未来具有很
    广电计量 2024-12-18 13:31 101浏览
  • You are correct that the length of the via affects its inductance. Not only the length of the via, but also the shape and proximity of the return-current path determines the inductance.   For example, let's work with a four-layer board h
    tao180539_524066311 2024-12-18 15:56 92浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-18 14:02 96浏览
  • 随着现代汽车工业的不断发展,驾驶安全与舒适性成为消费者关注的焦点。在这个追求极致体验的时代,汽车ASF随动转向LED大灯技术应运而生,它不仅代表了车辆操控辅助系统的最新进展,更是对未来智能安全出行愿景的一次大胆探索。擎耀将深入探讨ASF随动转向技术的原理及落地方案,旨在为汽车LED照明升级行业提供一份详尽且实用的参考。首先,ASF随动转向技术不是什么高精尖的技术,一般的汽车大灯制造厂商都可能完成,通过软硬件的逻辑加上传感器,基本就可以实时监测车辆的行驶状态,包括但不限于车速、转向角度等关键参数。
    lauguo2013 2024-12-17 14:43 69浏览
  • 以人形机器人和通用人工智能为代表的新技术、新产品、新业态蓬勃发展,正成为全球科技创新的制高点与未来产业的新赛道。01、Optimus-Gen 2来了,人形机器人管家还远吗?没有一点点防备,特斯拉人形机器人Optimus-Gen 2来了!12月13日,马斯克于社交媒体上公布了特斯拉第二代人形机器人的产品演示,并预计将于本月内发布。在视频中,Optimus-Gen 2相比上一代有了大幅改进,不仅拥有AI大模型的加持,并在没有其他性能影响的前提下(相比上一代)将体重减少10kg,更包含:由特斯拉设计的
    艾迈斯欧司朗 2024-12-18 12:50 96浏览
  • 2003年买的电子管功放机,俗称胆机,坏过几次,咨询厂家,购买零件,自己修理,干中学,学中干。有照片记录的是2011年3月,一天,发现整流管比之前红亮了很多,赶紧关机,想找原因,反反复复折腾了几个月,搞好了。就此,还在网上论坛咨询和讨论,欧博Rererence 5.0电子管发粉红色光,何故?-『胆艺轩音响技术论坛』-胆艺轩[Tubebbs]论坛 发表于2011-5-7同时与厂家联系得到支持,见文:29kg胆机修理之联想——环保简易,做到真难!-面包板社区 发表于2011-6-13又继续使用了多年
    自做自受 2024-12-17 22:18 178浏览
  •        随着对车载高速总线的深入研究,以电信号为媒介的传输方式逐渐显露出劣势,当传输速率超过25Gbps时,基于电信号传输已经很难保证长距离传输下的信号质量与损耗。在这样的背景下,应用于工业领域的光通信技术因其高带宽、长距离、低电磁干扰的特点得到了密切的关注,IEEE在2023年发布了802.3cz[1]协议,旨在定义一套光纤以太网在车载领域的应用标准。MultiGBASE-AU总览       以下是Mult
    经纬恒润 2024-12-17 17:29 84浏览
  •   前言  作为一名电子专业的学生,半导体存储显然是绕不过去的一个坎,今天聊一聊关于Nand Flash的一些小知识。  这里十分感谢深圳雷龙发展有限公司为博主提供的两片CS创世SD NAND的存储芯片,同时也给大家推荐该品牌的相关产品。  一、定义  存储芯片根据断电后是否保留存储的信息可分为易失性存储芯片(RAM)和非易失性存储芯片(ROM)。  非易失性存储器芯片在断电后亦能持续保存代码及数据,分为闪型存储器 (Flash Memory)与只读存储器(Read-OnlyMemory),其中
    雷龙发展 2024-12-17 17:37 71浏览
  •  2024年下半年,接二连三的“Duang Duang”声,从自动驾驶行业中传来:文远知行、黑芝麻、地平线、小马智行等相继登陆二级市场,希迪智驾、Momenta、佑驾等若干家企业在排队冲刺IPO中。算法模型的历史性迭代与政策的不断加码,让自动驾驶的前景越来越清晰。由来只有新人笑,有谁听到旧人哭。在资本密集兑现的自动驾驶小元年里,很多人可能都已经遗忘,“全球自动驾驶第一股”的名号,曾经属于一家叫做图森未来的公司。曾经风光无两的“图森”,历经内讧与退市等不堪往事之后,而今的“未来”似乎被锚
    锦缎研究院 2024-12-18 11:13 87浏览
  • 户外照明的“璀璨王者”,艾迈斯欧司朗OSCONIQ® C3030降临啦全球领先的光学解决方案供应商艾迈斯欧司朗(瑞士证券交易所股票代码:AMS)近日宣布,推出新一代高性能LED——OSCONIQ® C 3030。这款尖端LED系列专为严苛的户外及体育场照明环境而设计,兼具出色的发光强度与卓越的散热效能。其支持高达3A的驱动电流及最大9W的功率输出,以紧凑扁平封装呈现卓越亮度和可靠性,确保高强度照明持久耐用且性能出众。应用领域01体育场及高杆照明OSCONIQ® C 3030以卓越的光通量密度、出
    艾迈斯欧司朗 2024-12-18 14:25 95浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦