如何通过这些简单的步骤掌握技术面试
如何通过这些简单的步骤掌握技术面试
原文:https://medium.com/hackernoon/how-to-master-the-tech-interview-in-these-easy-steps-4e449f0838e2

(这是我个人博客的交叉帖子。阅读 原文此处 。)
我们 IT 人生活在非常舒适的时代。我们在 LinkedIn 和 Xing 的收件箱里塞满了招聘人员的询问,他们就像被一大堆粪便吸引的苍蝇一样围着我们转。每一个招聘者都有这样一个客户,他是“他所在领域的市场领导者”,并且正在寻找像你这样的人。我不会责怪他们。招聘人员无非就是销售人员。他们想把一个新员工卖给一个公司,他们想把这个公司卖给你。这是他们的工作。是的,大多数大公司要么有自己的招聘部门,要么求助于外部机构,因为很难吸引新的人才。
这里的问题是,随着时间的推移,我们(IT 人员)可能变得有点过于自信了。我的意思是,我为什么要努力准备这家豪华公司的面试呢?招聘人员说我会是“完美的候选人”。我是说,他们最了解客户的需求,对吧?我会立刻抓住这份新工作!在现实中,你肯定不会得到任何特殊待遇。而且有很多事情要搞砸,即使你认为自己是一个经验丰富的高级人才。
我已经主持科技采访 7 年多了,包括我目前在 trivago 的工作,这实际上已经成为我的主要职责之一。我仍然非常喜欢它,但没有什么比一些明显有能力的人搞砸他们的面试更令人沮丧的了,因为他们要么太努力了,要么太轻视它了。
所以,事不宜迟,这里是我掌握技术面试的最佳建议。
(免责声明:这显然是一个相当固执己见的观点。我处理事情的方式可能与你最喜欢的财富 500 强公司的招聘经理不同。这只是我作为采访者和被采访者一年的个人经历。我仍然希望你会喜欢它)
做好准备
这应该是显而易见的,但令人惊讶的是,事实并非如此。为一项技术,或者,一般来说,任何一种工作面试做好适当的准备实际上是相当简单的。这不仅能让你在实际面试中获得显著优势,还能显示出你对潜在下一任雇主的潜在兴趣。如果你不关心他公司的商业模式,为什么招聘经理要关心你呢?在谷歌搜索的 20-30 分钟内,你可以找到很多东西。关于公司的很多信息,关于部门的很多信息,关于你面试的人的很多信息——只要你说得出。
但这并没有停止。尤其是当您安排了 Skype 或其他类型的远程通话时:请花几分钟时间检查您的连接、摄像头、耳机/麦克风以及您所在房间的灯光。技术问题很烦人,无法 100%避免,但是通过适当的准备,很大一部分是可以避免的。你是个书呆子,你没有理由不去做。
激情胜于头衔
当我在科技行业工作了 11 年后,我学到了一些东西,那就是头衔都是扯淡。哦,那么你是一家五人创业公司的首席云架构师?很酷的故事,兄弟!如果你想在 LinkedIn 上用这个打动你的父母或以前的同学,我祝福你。但是请不要把这个加到你的简历里,除非你绝对希望在面试中得到这样的待遇。

我更想看到的是,而不是头衔或文凭:激情!给我看看你在 Github 上的开源项目。不要担心他们可能达不到你(或者我)的质量标准。只要给出一些你关心某事的证据,推动它前进,学习,并变得更好。如果你没有自己的想法/项目,让我看看你参与了别人的想法/项目。你不必成为这个新的 hip 库或框架的顶级贡献者之一,但是成为开源社区的活跃分子是一个很好的证据,证明你知道如何掌握一定规模的软件项目,甚至更好的是,知道如何处理与所有不同类型的人的交流。
如果你仍然不知道从哪里开始开源,我有一些很棒的项目,你可能会感兴趣。
不要试图在编码任务中炫耀
哦,糟糕的编码任务(挑战、测验,无论什么)——你因为所有错误的原因而被普遍讨厌。让我告诉你我的一个秘密:让你解决一个编码任务并不意味着在最短的时间内提出最聪明的解决方案。有时候,最无聊、最直接的解决方案确实是最好的。是的,我相信你,在一定的时间内,你可以用一个非常聪明的递归算法解决它,或者用位掩码非常有效,但是。保持。它。简单。
我是说,你想在这里展示什么?在您作为开发人员的日常生活中,您总是在努力寻找最复杂的解决方案?你喜欢神秘的一句俏皮话来迷惑你的队友?这只是“最好”的情况。在几乎所有其他情况下,你的“聪明”算法都会失败,因为你有一些小错误或疏忽,因为你处于压力之下。
让我告诉你我的一个秘密:让你解决一个编码任务并不意味着在最短的时间内提出最聪明的解决方案。
如果你真的想给人留下深刻印象,就从一个真正简单的解决方案开始,并努力把它做得更好。如果你因为不记得针和草堆的的排序而陷入困境,那该死的功能——太棒了!这是演示如何在互联网上寻求帮助的最佳时机。我不是在开玩笑——这是每个软件工程师都需要的技能,说实话只有极少数人掌握。
此外——我怎么强调都不为过——请在编码任务中与你的面试官分享你的想法(即使你是那种完全耳机隔离下最有效率的人)。当你陷入困境时,“大声思考”会有所帮助。相信我,真的。另一方面,它确实为面试官提供了在敏捷环境中如何合作的帮助,在敏捷环境中,定期与团队中的其他工程师配对可能是一个(强制性的)惯例。
你不是完美的候选人。这没关系
你有没有想过那些了不起的软件工程师,他们拥有 DevOps 知识,计算机科学硕士学位,至少 3 种不同语言的 7 年经验,并且是处理各种不同类型的 SQL 和 NoSQL 数据库的专家?让我来给你剧透一下:那些几乎每个科技公司都在招聘中寻找的“完美”候选人,根本就不存在。这没关系。我不完美,所以你也不必完美。
这里的经验法则很简单:你不是完美的候选人,所以不要假装是。如果你不能回答一个问题,就坦诚面对。不知道在面试 PHP/Symfony 职位时,Symony 编译器通过了哪些考试?这里的最佳策略不是给出一些半吊子的解释,而是做出这样的回应,“我在我自己的项目中使用的一些 Symfony 包中见过它们,但是,说实话,我不知道它们是什么,我还没有机会仔细看看它们”。在这种情况下保持诚实可能意味着你可能只需要一两个提示就能被推向正确的方向。继续上面的例子,我的一个后续问题可能是解释一下 Symfony 服务容器的一般情况,它的生命周期,以及什么时候“干预”它是有用的。对我个人来说,从这里开始,在中途的某个地方见面是完全可以的。
这里有一个疯狂的想法:下次你偶然发现你最喜欢的科技公司的职位空缺,你已经读了几十遍,但总是逃避,因为你只满足了他们 70-80%的期望和要求——把你的申请发给他们!现在是 2017 年。在微服务和无服务器云架构时代,你最喜欢的公司很可能已经通晓多种语言了。所以如果你还没有使用过编程语言 X 或者技术 Y,其实也没什么关系。
学习和成长
你还是有可能搞砸的。没关系。我们都做。你可能会失望,但不要被它吓倒。花点时间进行自我反省。想想所有好的方面,当然也包括所有出错的方面。最重要的是:从你的新经历中学习。不要放弃。继续努力,变得更好。从长远来看,拒绝甚至会带来更好的结果。但是不要相信我的话——读一读这些了不起的人的经历。
就像我开头说的,这只是我根据自己的亲身经历得出的看法。你可能不同意所有的事情,所以只挑选对你来说有价值的事情。不要被这种关于“代码忍者”或“摇滚明星开发者”的营销废话所迷惑。我们行业真正的“明星”谦逊、诚实,并对自己的工作充满热情。