简介: 技术面试不仅仅是测试你对数据结构和算法的理解. 这些面试通常希望了解在你以前的项目中, 表现出的技术水平, 沟通能力以及你的工作经验, 看你是否能独立做出更好的决定.
亚马逊这样的公司有 14 项领导原则 . 他们不想仅仅雇佣一个数据科学家或软件工程师. 对于许多只进行一次或两次面试的面试者来说, 这可能没有那么明显, 因为你太专注于回答面试的技术部分. 但是, 在你进行技术面试时, 我们希望提供一些提示, 帮助你更好地为未来做好准备.
技术面试应该准备哪些?
准备好数字指标
我回忆起我在 FAANG ( Facebook,Apple,Amazon,Netflix 和 Google ) 的第一次面试.
在技术面试之后, 有一轮技术项目经理的面试. 他们开始问我过去的经历和项目. 起初, 情况还不错. 然后他们开始问我在该项目中担任的角色对项目起哪些作用.
在我回答之后, 他问了我一个在那之前从未想过的问题.
"你为这个项目节省了多少时间?"
我以前从未想过这个问题. 在我的职业生涯中, 我几乎一直在做别人告诉我的事情. 然而对项目的作用和节省时间这样的大局概念, 我从来没有想过. 终究, 我只是一个年轻的开发人员, 我只考虑过编程和如何满足项目的需求.
其余的对话遵循类似的模式, 他们在寻找我的自主权和独立思考能力, 但老实说, 在我目前的工作中, 我并没有花太多时间去做类似的事.
我的建议是准备好数字指标, 像亚马逊这样的公司是非常标准的. 他们需要的是开发人员和工程师, 而不仅仅是编程. 这意味着你需要做好准备. 当你要去面试时, 准备好你所做的不仅仅是一两件小事. 确保准备清楚你在项目中起了哪些重要的作用.
想想你过去的项目, 即使你的公司没有直接计算你为项目节省了多少时间, 但是你仍然应该花点时间自己估计一下.
准备好一些指标表明你从项目的全局考虑, 并拥有独立思考的能力, 这会让你脱颖而出.
一定要把你的问题说清楚.
大多数人的前几次笔试都很差. 你可能会很迷茫, 因为你想在你面试开始之前得到完美的答案. 或者你仅仅是写答案, 而没有与面试官沟通你的想法是什么.
所以提前几分钟把你的回答放到面试官面前, 概述你使用什么方法, 数据结构和算法来获得解决方案, 这不仅有助于你解决问题, 而且还能让面试官了解你的思维过程.
即使你没有用最好的答案回答问题, 但这依然有利于你. 沟通是非常重要的, 在过程交谈中也可以证明你有能力提供解决方案.
此外, 如果面试官很优秀, 他们会经常指导你找到答案. 并不是说他们会给你详细解释, 但他们可能会问一些问题, 以确保你可以考虑到一些边缘情况, 并避免主要的陷阱.
老实说, 我觉得最好的面试之一就是那种感觉根本不像面试的面试, 反而就像两个工程师在一起解决一个问题. 当然, 有一些面试官站在另一边, 根本帮不上你.
准备好想要提问的问题
这可能是个老生常谈的建议, 但对于一个没有任何工作上的问题的面试者来说, 这有点让人不快. 然而, 对于你的第一份工作, 你可能只是想要这份工作, 但并不在乎这份工作. 因此, 提出真正的问题是困难的.
但这并不意味着你不应该准备一些问题来表现出对这个工作的兴趣.
我不建议你问太广泛的问题, 因为这些问题你可以通过谷歌搜索. 相反, 集中精力向面试官提问他们的工作. 例如:
你最近面临的最大技术挑战是什么?
你觉得你在这里有很好的成长机会吗?
你如何描述这里的工程文化?
这些问题表明你对工作水平很感兴趣. 它们还可以帮助你与面试官建立更多的联系.
我会问这些问题, 是因为我知道这不仅仅是工资问题, 我需要了解公司面临的具有挑战性又有作用的问题.
当然, 研究最酷的技术是很有趣的. 但新技术总是很酷的. 比起所使用的技术栈, 我更关心项目的作用.
和朋友面对面练习
读这篇文章的人有的可能还在上大学. 对于在校学生, 有的学校可能会提供实习面试服务. 然而对于那些不在学校的人, 应该找个朋友一起练习.
如果你有计算机科学领域的朋友, 或者已经在技术公司工作的朋友, 你可以向他们寻求帮助. 如果你能在笔试中解决问题, 而不是在电脑上, 你就会显得脱颖而出.
面试者通常认为他们擅长编程, 所以他们同样也擅长面试. 然而, 编程与面试可不大相同.
所以一定要练习!
技术面试不应该做什么?
别让一轮面试影响其它轮面试
面试通常有好几轮, 每一轮的面试可能不尽相同, 你有可能在面试中顺利进行, 也有可能在一轮又一轮的面试中变得更糟糕.
你可能会在一个问题上陷入一个困境, 因为技术领域很广, 所以很难了解一切. 在面试中遇到你没有准备好的问题, 这很正常.
关键是不要让一轮糟糕的面试影响你剩下的面试. 即使你内心深处知道你在那一轮面试中失败了, 你仍然要保持积极的态度. 原因有以下两点:
如果你在其他面试中做得足够好, 公司会倾向于在几个月内再次面试你, 甚至可能是换一个职位, 尽管当下你并不知道这会对你产生什么帮助.
把这次面试当做一次练习. 技术面试只是面试过程的一部分. 所以你练习得越多, 就越能为下一次面试做好准备.
即使你在这一轮面试中失败了, 你也要保持积极的态度.
不要以为你知道会被问什么类型的问题
你永远不知道面试时会被问什么类型的问题, 所以不妨问问你的招聘人员. 大部分 FAANG ( Facebook,Apple,Amazon,Netflix 和 Google ) 公司会提供一些学习材料. 这些公司非常注重数据结构和算法. 其他人把它与面向对象和系统设计问题混合在一起. 你最希望做的事情就是成为一个处理决策树的数据科学家, 并且涉及到反转链表或遍历树的问题.
这既尴尬又令人沮丧. 事实上, 每个人的时间都被浪费了, 如果公司没有为你准备好这些问题...... 那么我将大部分责任推到他们身上.
当你去面试时, 你需要展示更多的优势.
不要太拘泥于某一个解决方案
有些人有一个坏习惯, 就是过度致力于解决问题. 当你在讨论一个问题时, 面试官可能会试图提供一些提示, 以确保你继续朝着正确的方向前进.
然而, 当我们处在一个思考问题的区域时, 我们常常只走这一条路. 即使它显然是错误的.
如果你在 15 分钟内对同一问题没有更好地进展, 考虑深呼吸, 并努力确保你的解决方向是正确的. 但是如果你在更长的一段时间内没有找到正确的解决方案, 并且你还有其它三到四个问题需要回答, 那么你应该考虑换一种思路.
不要谈论技术栈的劣势
你喜欢 Hadoop , Go 语言, 或者其他技术, 而且你可能讨厌其他技术栈.
这并不意味着你需要让你对一种特定语言的所有仇恨都被知道. 它常常被认为是精英主义者. 就像你比其他人更了解, 因为你的语言显然是最好的, 其他人都在石器时代编程.
团队和公司使用各种语言, 倘若你正在谈论某一技术栈的劣势, 但是恰巧这正是他们所用的技术栈, 这非常不友好. 记住, 如果你有你喜欢的语言, 那么你可以自由地提出这个问题. 但总的来说, 持一些否定意见可能会很糟糕.
别让一次面试影响其它面试
这听起来有点像 "别让一轮面试影响其它轮面试". 我们中的许多人将经历多次面试, 但多次面试都失败了.
当我们收到一封电子邮件或一个电话对我们说:
"对不起, 你不够优秀"
这感觉糟透了.
但是, 你不能让一两次糟糕的面试打败你. 有的人在同一年里多次接受同一家公司的面试, 直到他们得到这份工作. 让一次面试定义其余的面试这是非常不正确的. 我们想对所有面试的人说的就是不要放弃.
有太多东西需要学习, 我们可能无法一时完成. 但是没关系. 只要保持乐观, 总有一扇门会为你打开.
结论
技术面试很难, 因为面试官寻找的是对项目和工作有着独立的思考的人, 而不仅仅是在寻找程序员. 但无论如何, 请不要放弃!
来源: http://www.jianshu.com/p/a2947a025a86