给软件工程师、数据科学家和数据工程师的面试指南:该作与不应作

亚马逊这样的公司有 14 项领导原则 。他们不想仅仅雇佣一个数据科学家或软件工程师。对于许多只进行一次或两次面试的面试者来讲,这可能没有那么明显,由于你太专一于回答面试的技术部分。可是,在你进行技术面试时,咱们但愿提供一些提示,帮助你更好地为将来作好准备。程序员

技术面试应该准备哪些?

准备好数字指标

我回忆起我在 FAANG ( Facebook、Apple、Amazon、Netflix 和 Google ) 的第一次面试。面试

在技术面试以后,有一轮技术项目经理的面试。他们开始问我过去的经历和项目。起初,状况还不错。而后他们开始问我在该项目中担任的角色对项目起哪些做用。算法

在我回答以后,他问了我一个在那以前从未想过的问题。编程

“你为这个项目节省了多少时间?”数据结构

我之前从未想过这个问题。在个人职业生涯中,我几乎一直在作别人告诉个人事情。然而对项目的做用和节省时间这样的大局概念,我历来没有想过。终究,我只是一个年轻的开发人员,我只考虑过编程和如何知足项目的需求。数据结构和算法

其他的对话遵循相似的模式,他们在寻找个人自主权和独立思考能力,但老实说,在我目前的工做中,我并无花太多时间去作相似的事。oop

个人建议是准备好数字指标,像亚马逊这样的公司是很是标准的。他们须要的是开发人员和工程师,而不只仅是编程。这意味着你须要作好准备。当你要去面试时,准备好你所作的不只仅是一两件小事。确保准备清楚你在项目中起了哪些重要的做用。学习

想一想你过去的项目,即便你的公司没有直接计算你为项目节省了多少时间,可是你仍然应该花点时间本身估计一下。spa

准备好一些指标代表你从项目的全局考虑,并拥有独立思考的能力,这会让你脱颖而出。设计

必定要把你的问题说清楚。

大多数人的前几回笔试都不好。你可能会很迷茫,由于你想在你面试开始以前获得完美的答案。或者你仅仅是写答案,而没有与面试官沟通你的想法是什么。

因此提早几分钟把你的回答放到面试官面前,概述你使用什么方法、数据结构和算法来得到解决方案,这不只有助于你解决问题,并且还能让面试官了解你的思惟过程。

即便你没有用最好的答案回答问题,但这依然有利于你。沟通是很是重要的,在过程交谈中也能够证实你有能力提供解决方案。

此外,若是面试官很优秀,他们会常常指导你找到答案。并非说他们会给你详细解释,但他们可能会问一些问题,以确保你能够考虑到一些边缘状况,并避免主要的陷阱。

老实说,我以为最好的面试之一就是那种感受根本不像面试的面试,反而就像两个工程师在一块儿解决一个问题。固然,有一些面试官站在另外一边,根本帮不上你。

准备好想要提问的问题

这多是个老生常谈的建议,但对于一个没有任何工做上的问题的面试者来讲,这有点让人不快。然而,对于你的第一份工做,你可能只是想要这份工做,但并不在意这份工做。所以,提出真正的问题是困难的。

但这并不意味着你不该该准备一些问题来表现出对这个工做的兴趣。

我不建议你问太普遍的问题,由于这些问题你能够经过谷歌搜索。相反,集中精力向面试官提问他们的工做。例如:

  • 你最近面临的最大技术挑战是什么?
  • 你以为你在这里有很好的成长机会吗?
  • 你如何描述这里的工程文化?

这些问题代表你对工做水平很感兴趣。它们还能够帮助你与面试官创建更多的联系。

我会问这些问题,是由于我知道这不只仅是工资问题,我须要了解公司面临的具备挑战性又有做用的问题。

固然,研究最酷的技术是颇有趣的。但新技术老是很酷的。比起所使用的技术栈,我更关心项目的做用。

和朋友面对面练习

读这篇文章的人有的可能还在上大学。对于在校学生,有的学校可能会提供实习面试服务。然而对于那些不在学校的人,应该找个朋友一块儿练习。

若是你有计算机科学领域的朋友,或者已经在技术公司工做的朋友,你能够向他们寻求帮助。若是你能在笔试中解决问题,而不是在电脑上,你就会显得脱颖而出。

面试者一般认为他们擅长编程,因此他们一样也擅长面试。然而,编程与面试可不大相同。

因此必定要练习!

技术面试不该该作什么?

别让一轮面试影响其它轮面试

面试一般有好几轮,每一轮的面试可能不尽相同,你有可能在面试中顺利进行,也有可能在一轮又一轮的面试中变得更糟糕。

你可能会在一个问题上陷入一个困境,由于技术领域很广,因此很难了解一切。在面试中遇到你没有准备好的问题,这很正常。

关键是不要让一轮糟糕的面试影响你剩下的面试。即便你心里深处知道你在那一轮面试中失败了,你仍然要保持积极的态度。缘由有如下两点:

  • 若是你在其余面试中作得足够好,公司会倾向于在几个月内再次面试你,甚至多是换一个职位,尽管当下你并不知道这会对你产生什么帮助。
  • 把此次面试当作一次练习。技术面试只是面试过程的一部分。因此你练习得越多,就越能为下一次面试作好准备。

即便你在这一轮面试中失败了,你也要保持积极的态度。

不要觉得你知道会被问什么类型的问题

你永远不知道面试时会被问什么类型的问题,因此不妨问问你的招聘人员。大部分 FAANG ( Facebook、Apple、Amazon、Netflix 和 Google ) 公司会提供一些学习材料。这些公司很是注重数据结构和算法。其余人把它与面向对象和系统设计问题混合在一块儿。你最但愿作的事情就是成为一个处理决策树的数据科学家,而且涉及到反转链表或遍历树的问题。

这既尴尬又使人沮丧。事实上,每一个人的时间都被浪费了,若是公司没有为你准备好这些问题……那么我将大部分责任推到他们身上。

当你去面试时,你须要展现更多的优点。

不要太拘泥于某一个解决方案

有些人有一个坏习惯,就是过分致力于解决问题。当你在讨论一个问题时,面试官可能会试图提供一些提示,以确保你继续朝着正确的方向前进。
然而,当咱们处在一个思考问题的区域时,咱们经常只走这一条路。即便它显然是错误的。

若是你在 15 分钟内对同一问题没有更好地进展,考虑深呼吸,并努力确保你的解决方向是正确的。可是若是你在更长的一段时间内没有找到正确的解决方案,而且你还有其它三到四个问题须要回答,那么你应该考虑换一种思路。

不要谈论技术栈的劣势

你喜欢 Hadoop 、 Go 语言,或者其余技术,并且你可能讨厌其余技术栈。

这并不意味着你须要让你对一种特定语言的全部仇恨都被知道。它经常被认为是精英主义者。就像你比其余人更了解,由于你的语言显然是最好的,其余人都在石器时代编程。

团队和公司使用各类语言,假若你正在谈论某一技术栈的劣势,可是恰巧这正是他们所用的技术栈,这很是不友好。记住,若是你有你喜欢的语言,那么你能够自由地提出这个问题。但总的来讲,持一些否认意见可能会很糟糕。

别让一次面试影响其它面试

这听起来有点像”别让一轮面试影响其它轮面试“。咱们中的许多人将经历屡次面试,但屡次面试都失败了。

当咱们收到一封电子邮件或一个电话对咱们说:

“对不起,你不够优秀”

这感受糟透了。

可是,你不能让一两次糟糕的面试战胜你。有的人在同一年里屡次接受同一家公司的面试,直到他们获得这份工做。让一次面试定义其他的面试这是很是不正确的。咱们想对全部面试的人说的就是不要放弃。

有太多东西须要学习,咱们可能没法一时完成。可是不要紧。只要保持乐观,总有一扇门会为你打开。

结论

技术面试很难,由于面试官寻找的是对项目和工做有着独立的思考的人,而不只仅是在寻找程序员。但不管如何,请不要放弃!


原文连接 本文为云栖社区原创内容,未经容许不得转载。

相关文章
相关标签/搜索