美文网首页数据科学与R语言我是程序员阿里云
给软件工程师、数据科学家和数据工程师的面试指南:该做与不该做

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

作者: 阿里云云栖号 | 来源:发表于2019-08-06 13:38 被阅读65次

    简介: 技术面试不仅仅是测试你对数据结构和算法的理解。这些面试通常希望了解在你以前的项目中,表现出的技术水平、沟通能力以及你的工作经验,看你是否能独立做出更好的决定。

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

    技术面试应该准备哪些?

    准备好数字指标

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

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

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

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

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

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

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

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

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

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

    大多数人的前几次笔试都很差。你可能会很迷茫,因为你想在你面试开始之前得到完美的答案。或者你仅仅是写答案,而没有与面试官沟通你的想法是什么。

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

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

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

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

    准备好想要提问的问题

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

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

    我不建议你问太广泛的问题,因为这些问题你可以通过谷歌搜索。相反,集中精力向面试官提问他们的工作。例如:

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

    这些问题表明你对工作水平很感兴趣。它们还可以帮助你与面试官建立更多的联系。

    我会问这些问题,是因为我知道这不仅仅是工资问题,我需要了解公司面临的具有挑战性又有作用的问题。

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

    和朋友面对面练习

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

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

    面试者通常认为他们擅长编程,所以他们同样也擅长面试。然而,编程与面试可不大相同。

    所以一定要练习!

    技术面试不应该做什么?

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

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

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

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

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

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

    不要以为你知道会被问什么类型的问题

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

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

    当你去面试时,你需要展示更多的优势。

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

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

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

    不要谈论技术栈的劣势

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

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

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

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

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

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

    “对不起,你不够优秀”

    这感觉糟透了。

    但是,你不能让一两次糟糕的面试打败你。有的人在同一年里多次接受同一家公司的面试,直到他们得到这份工作。让一次面试定义其余的面试这是非常不正确的。我们想对所有面试的人说的就是不要放弃。

    有太多东西需要学习,我们可能无法一时完成。但是没关系。只要保持乐观,总有一扇门会为你打开。

    结论

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



    本文作者:黄小凡

    阅读原文

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

    相关文章

      网友评论

        本文标题:给软件工程师、数据科学家和数据工程师的面试指南:该做与不该做

        本文链接:https://www.haomeiwen.com/subject/bzhidctx.html