图片来源:pexels.com/@freeimages9
技术面试,不仅是测试面试者在计算事件发生概率时如何理解数据结构和算法。此类面试的目的是,了解你在先前的项目中承担了多少责任,沟通能力如何,通过衡量过往经历来判断你能否独立进行明智的决策。这也是为何一些像亚马逊这样的公司会有14项领导原则。他们不想仅仅雇佣一个数据科学家或软件工程师。
对许多初出茅庐,面试时只知道回答技术问题的面试者来说,此文的作用看上去可能并不明显。然而,在面试之旅中,本文将提供一些小建议来帮助你对可能出现的问题有所准备。
科技面试必做攻略
准备好数字
图片来源:Mika Baumeister 发布于Unsplash
我记得第一次面试FAANG公司的经历。
在第一轮技术面试后,一个技术项目经理开始面试我。他开始询问我的经历和过去做过的项目。刚开始我的表现还不算太坏。然后,他们始询问我在目前的职位上有什么影响。
在我回答后,他问了一个在这之前我从未想过的问题:
“这个项目节省了多少时间?”
我从来没想过这个问题。在职业生涯的那个阶段,我基本上照着别人说的做事,也从来没有职位影响和节省时间这样的大局观。我还只是一个年轻的开发人员,只考虑怎么编程、怎么满足所支持的人员的需求。瞬间,这些都被抛诸脑后。
接下来的对话也是这样的模式。我回答的每一个问题都会被来回研究,从而衡量除了编程以外我还有什么技能。他们想要的人才要拥有领导力和独立思考的能力。但说实话,我在目前的工作中并没有花什么时间做这些事。
在此建议,一定要准备好数字。像亚马逊这样的公司都是由指标驱动的。他们希望开发人员和工程师不仅仅是做开发。所以要做好准备。去面试前,一定要准备好一两件以上关于过往经历的细节并说明它的影响。
想想你过去的项目,即使公司没有直接计算影响和/或估计它节省了多少时间,花点时间自己估计一下。
准备好一些度量的标准,表明你有大局观,对任务有领导力。这样才可以脱颖而出,帮你更好理解如何在FAANG公司工作。
考虑清楚问题再开始
——我准备好面试了吗?
——问题是,面试准备好面对我了吗?
图片来源:http://grownupsurvivalguide.com/2016/09/24/10-tips-for-rocking-an-interview/
大多数人前几次的白板面试都很艰难。你可能会完全愣住,因为在开始写东西前你就已经想要得到一个完美的答案。又或许你只顾着写,没有和面试官交流你的计划。
大部分人都想立即开始解答问题,但这样可能会早早走向歧途,一道题解了15分钟还晕头转向找不到答案。
所以,开始前花几分钟将答案告诉面试官。概述答题时你会采用什么方法、算法和数据结构。这样不仅会帮你答题,还能让面试官了解你的思考过程。
即使你的答案并不完美,面试官有时也会更喜欢你的回答。沟通是非常重要的。能够讲清楚自己的答题流程能够展现你传达解决方案的能力。
此外,如果面试官非常厉害的话,他们通常还会引导你得出答案。这并不是说他们会直接告诉你结果,而是指他们可能会问一些问题来让你想到可能会遗漏的情况,避免掉入陷阱。
说实话,我记忆中最好的面试之一根本不像是一场面试,感觉就像是两个工程师在协力解决一个问题。当然,有的面试官只是冷漠旁观,并不会帮你。
准备好要问的问题
这个建议可能有点老套了,但是如果面试者对工作没有任何问题会有点令人不快。然而令人神伤的是,在找第一份工作时,你可能并不在乎工作本身,只在乎能不能通过。所以问出有价值的问题非常困难。
这并不是说,你不用准备一些问题来表现你对这份工作的兴趣。
不建议问一些宏观的、公司层面的问题,因为谷歌一下就知道了。你应该试着问面试官关于他们工作的问题。比如:
-
您最近遇到的最大的技术挑战是什么?
-
您在这里有良好的成长机遇吗?
- 您会如何形容这里的技术文化?
诸如此类。
这些问题会表现你对工作层面的兴趣,还能帮你和面试官有更多交流和联系。
现如今我比较成熟了,我会问这些问题。因为我知道工作并不只和薪水相关。我需要一些有挑战性的问题和对公司有影响力的项目。
当然,研究最新的科技非常有趣。但新的科技永远在出现。比起所使用的技术堆栈,我更关心项目的影响力。
找朋友或在学校练习
此文读者或许有些还是大学生,有些不是。对学生来说,学校或许会提供练习面试的服务。如果是的话,最好去报名参加。社会人士则可以找朋友练习。
这些服务通常会有导师和员工,他们经常会提供面试练习,对面试的流程非常了解。所以你有机会在这里有最接近面试的体验。
如果没有这样的服务,那么希望有也是学计算机科学的,或者已经任职于科技公司的朋友来帮你。如果你不仅能在电脑上解决问题,还能在白板上自如讲解问题,那面试也会更顺利。
面试者可能会设想,自己既然擅长编程,肯定也会在面试中表现良好。然而,这些技能并不互通。
所以一定要勤加练习!
科技面试勿触雷区
图片来源:Icons8 team 发布于 Unsplash
不要失利一轮就倒下
终于被邀请参加当场面试后,通常还有几轮在等着你。内容可能涉及数据结构、系统设计、行为分析等等其他这些大公司想到的磨人的东西。
关键是,成功或失败都有很多可能的因素。
你可能会一整轮都被一个问题困住。
也可能根本想不通他们引用的是什么面向对象的设计。
技术领域非常广,所以面面俱到很难。你会经常碰到没有准备好的问题。
关键是不要让一轮的失败影响到你接下来的面试。即使内心知道那局已经死定了,也要保持积极的心态。
这样做有很多原因。
第一,如果你在其他的面试中表现良好,公司会可能会在几个月内再次面试你,也有可能会让你面试不同的岗位。保持积极心态很难,但带来的改变是未知的。
第二,失败只是场练习。是,我们都希望面试中没有技术面试,但它们确实存在。所以练习得越多,你对下场面试的准备就会越充分。
即使一轮失败,也要保持积极。
不要以为自己知道问题的类型
最近一篇关于数据科学采访的文章讨论了不同的公司和团队如何在寻找数据科学家时寻找不同的特点。软件工程师也是如此。
你永远不知道面试时会问什么类型的问题,所以最好问问招聘人员。大多数FAANG公司会提供一些学习材料,但如果你马上要面试,却没有从招聘人员那里得到任何提示,就最好问一问。
一些公司非常注重数据结构和算法,另一些公司则把它与面向对象和系统设计问题混在一起。你肯定不想做一名只处理决策树的数据科学家,得到的问题都有关反转链表或遍历树。
这样又尴尬又让人诅丧。说实话,这样会浪费所有人的时间。如果公司并没有准备这类问题……那应该要怪他们。但是还是应该问一问!
尽量获得所有可能的面试优势。
不要太执着于某个解决方案
一些人可能会有个坏习惯:过度专注于解决方案。在你讨论一个问题时,面试官可能会在中途试着提示你走向正确的方向。
然而,在思考问题时,人们经常会走老路,即使明显是错的。
要接受提示。如果花了15分钟还没有任何进展,歇一下,确定自己的方向是对的。
如果花了很久还没有找到正确解决方案,而且还有三四个问题没有回答,那么花一两分钟来确保自己方向正确。这样很难,但是不要沉溺于错误的方案。
不要说技术堆栈坏话
你可能喜欢Hadoop、Go或其他特定的语言或基础设施,也可能有其他讨厌的语言。
但你不必让别人知道。这会给人精英主义的印象,仿佛你的语言是最好的,其他人都还在石器时代编程。
团队和公司使用的语言多种多样。如果你说某种技术堆栈的坏话,你可能说的就是这个公司的。
所以,如果你有自己喜欢的语言,可以大胆提出来。但总的来说,消极的语言不太好。
不要让一次糟糕面试毁了其他机会
这点听上去和之前那点很像,但这点更重要。不要让一次糟糕的面试定义你。很多人都会面试很多,失败很多。
收到下面这种话总会让人感觉不好:
“抱歉,你不够好。”
这种感觉糟透了。
但是,不要让一两个糟糕的面试打败你。有的人在同一家公司不断面试,最后得到了工作。让一场面试定义你的所有肯定是错的。
在Reddit上发布软件面试指南时,评论确实存在一些负面情绪。但是,所有要面试的人,请不要放弃。
留言 点赞 发个朋友圈
我们一起分享AI学习与发展的干货
编译组:李美欣、蒋馨怡
相关链接:
https://medium.com/better-programming/the-dos-and-donts-for-passing-your-technical-interview-1f2503c10733
如需转载,请后台留言,遵守转载规范
推荐文章阅读
ACL2018论文集50篇解读
EMNLP2017论文集28篇论文解读
2018年AI三大顶会中国学术成果全链接
ACL2017 论文集:34篇解读干货全在这里
10篇AAAI2017经典论文回顾