JavaRush /Java 博客 /Random-ZH /技术面试中的特技飞行:我如何进入谷歌、微软等公司

技术面试中的特技飞行:我如何进入谷歌、微软等公司

已在 Random-ZH 群组中发布
翻译和改编了《Ace Your Technical Interview: What Got Me Into Google, Microsoft and More》这篇文章,位于 Medium 上的创业社区。 技术面试中的特技飞行:我如何进入谷歌、微软等公司 - 1在我第一次实习面试之前,我不知道还会问技术问题。我以为等待我的只会是一堆“介绍一下你自己”的问题。然而,我也没有为他们做好充分的准备。我在就业指导中心花了两个小时试图从每个人那里得到一些宝贵的建议,另外两个小时在家里排练各种问题的答案。但我来面试的时候,面试官并没有问我的优点和缺点。相反,他们递给我一个记号笔,并告诉我去黑板那里。我根本没想到他们会先检查我的技术水平!这让我大吃一惊。我不知道如何正确回答这些问题,几个小时后我收到了一封礼貌拒绝的电子邮件。幸运的是,在这件事发生之后,我获得了很多成功的面试机会。我参加过五十次技术面试,并为我的许多朋友做好了准备。我的方法似乎很有效,因为它帮助我和其他人在谷歌、微软、苹果、亚马逊等公司的面试中取得成功。我很想亲自帮助大家,但时间根本不够。我能做的就是分享如何在技术面试中取得好成绩的分步指南。通过反复试验,我了解到在这种情况下什么可以做,什么不能做。因此,这里列出了我在几年的实践中总结出的有用技巧。

1. 不要直接进入模拟面试。

人们通常建议尽可能多地进行模拟面试——他们是对的。但如果你没有做好准备,模拟面试可能会效率低下、令人生畏,甚至士气低落。我可以用经验告诉你:如果我面试一个完全没有准备的人作为练习,最后他们会因为在问题中“漂浮”而没有很好地回答而感到沮丧。花时间更好地准备并了解技术面试是什么样的。这是 Google 模拟面试的一个很好的例子:

2.沟通能力>技术培训水平

许多人会在 LeetCode 和 Hackerrank 等网站上花费数小时来准备技术面试。这些都是很好的练习平台。但最好先休息一下,然后再浪费大量时间随意解决您认为在面试中会遇到的问题。这是一种无效的方法:在面试中,您至少会遇到一个以前从未见过的问题。我的一些朋友拥有比我更强的程序员,我经常惊讶为什么我在技术背景测试中取得了好成绩,而他们(有时)却没有。我们之间最大的区别可能就是我花了很多时间练习沟通技巧。说真的:如果你不能清楚地解释你的解决方案逻辑,那么知道如何解决前 100 项技术任务也无济于事。学会表达想法非常重要。起初,这一切可能看起来很困难、尴尬和不自然,但练习会有所帮助。保持最新的技术背景很重要,但培养沟通技巧可能更重要。如果您在即将到来的面试之前时间紧迫,那么最好专注于沟通,而不是试图在两天内重做您在计算机科学领域花费两年学习的材料。在下一次技术面试之前,尝试学习以下内容:

2.1 学会提出澄清性问题

面试的主要优点之一是能够澄清所问的问题。通常进行采访的人不会提供所有信息,因此您必须从他们那里提取更多详细信息。如果不完全理解问题是什么,你就无法解决问题!为了练习,您可以从技术面试中提出一些问题,并为他们提出一系列澄清问题。例如,如果要求您对列表进行排序,您可能会问:
  • 如何对列表进行排序 - 按升序或降序排列?
  • 该列表包含什么类型的数据?
  • 您能否举例说明此类任务的数据输入和输出应该是什么样子?
  • ETC。
可能还有更多问题——这些只是几个例子。确保澄清各种细微差别:询问输入和输出的示例
  • 指定数据类型
  • 检查取值范围是否有限制
  • 询问是否必须处理边缘情况
  • 了解您是否可以使用您正在编程的语言的某些库和功能

2.2 学会表达想法

一旦您提出了所有澄清问题并确切地知道解决问题所需的内容,就该学习如何正确传达解决方案的本质了。如果你一开始只是写代码而不解释为什么这样做,那么面试官将很难判断你是对还是错。您不会因此获得积分,更不用说您最终可能会写出错误的解决方案。当你一路解释你的决定背后的逻辑时,如果你有点偏离轨道,面试官可以为你指出正确的方向。在编写任何代码之前,请尝试以下操作:
  • 告诉你的对话者你可能的解决方案 - 你是否能够“正面”解决问题,是否有可能或可以以某种方式改进?
  • 通过示例逐步浏览您的解决方案,以了解其工作原理的要点。
  • 将解决方案分为几个步骤并编写伪代码或“骨架”,以便面试官了解你的思维过程
  • 使用不同的边缘情况测试您的解决方案,看看您是否涵盖了所有内容。询问面试官的意见。
为了练习,可以做一个面试问题并尝试告诉朋友正确的答案(解决方案)。如果你找不到朋友,可以拿一个毛绒动物或任何其他物体来练习。

3. 提高你的技术知识和技能

一旦你学会了如何在面试中正确沟通,你就可以把所有的精力都花在提高你的技术知识上。一定要温习算法和数据结构。确保您理解关键主题,例如数据结构、排序、算法使用、按位运算符、Big O 符号等。您需要了解的事项列表因您申请的职位而异。

4.练习!

现在,升级了必要的技能和知识后,您可以将所有精力投入实践。
JavaRush 课程包含许多“难题”任务和用于创建应用程序解决方案的整个项目。
不仅要尝试写出解决方案,还要思考步骤:在心里提出澄清问题,思考结构,然后才写出解决方案。这将帮助你在面试中更加自信,信心为王!

5. 面试时“卡壳”怎么办?

现在让我们想象一下,你参加了一次真正的面试,突然意识到这个问题难倒了你。您不知道需要做什么以及如何解决问题。你只想跑出房间,然后不再回来。我明白——我曾经经历过至今仍在噩梦中梦见的情况。但别担心——所有的希望还没有消失。这种情况在面试中不止一次发生过,但通常都会以录用通知结束。这很难,会让你紧张,但一切皆有可能。 休息一下并思考一下。深吸一口气,理清思绪。也许你会有“线索”。 用一个简单的例子来测试您的解决方案。尝试创建类似问题的解决方案的简化版本,但更简单,注意分步操作。例如,如果您需要对列表进行排序,您会做什么?你找到最小的数字并将其放在开头。您将如何在代码中实现这个解决方案? 告诉我们一个私人解决方案。如果没有出现完整的解决方案,也没关系。告诉面试官这一点,同时也让他了解你的思路。这个挑战与您遇到过的任何挑战相似吗?看起来是不是需要用特定的数据结构来解决?分享指导您的逻辑。 说实话。如果您确定所问的问题来自您不熟悉的知识领域,请告诉面试官。假设您已准备好寻找解决方案,但尚不具备必要的技能。曾经有人问我一个有关网络安全的问题。当时我没有这方面的实践,这是我跟面试官说的。他们向我解释了必要的基础知识,以便我能够应对这项任务。您将接受真人的采访:)他们完全理解您,因为他们自己也遇到过类似的情况。这些都是我在几年的采访中总结出来的所有技巧。他们帮助我和我的朋友进入顶尖公司。祝你搜索顺利!
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION