你再优秀,也需要一个适合自己的舞台展示!程序员成为技术大牛前,是需要在实践中磨练的,所以面试就是你不得不过的一个坎儿。下面是一些面试技巧,一起看看吧!
在深入代码之前,大多数面试官喜欢聊聊你的背景。他们想知道:
你对编码认知。你是否知道如何编写好代码?
个人能力/领导力。你是否经历过整个工作流程?你是否修复过并不怎么正确的东西,即使你并不需要这么去做?
沟通。和你交流技术问题是有用的还是痛苦的?
你应该至少说明以下中的一个:
你曾解决的一个有趣的技术问题
你曾克服的一个人际冲突
显示领导力或个人能力的例子
你曾在以往项目中做出的贡献
最喜欢的语言的一些琐事,对这种语言你做了什么,以及你不喜欢它哪里
有关公司产品/业务的问题
关于该公司的工程策略
涉及到编码问题的时候,沟通是关键。一个在工作时需要帮助却能和人正确沟通的求职者比那些能轻松解决问题的求职者甚至更好。
了解这是哪种问题。有两种类型的问题:
1、编码。面试官希望你能针对问题写出简洁高效的代码。
2、 闲聊。面试官希望能和你聊一聊。话题通常是
(1)高水平的系统设计
(2)琐事
有时候这些琐事中也会引入“实际”问题,例如,“如何迅速排序整数列?好的,如果不是整数,是其他类型的呢…… ”。
如果你开始编写代码,并且面试官并不想多说废话,只想尽快过渡到“实际”问题,那么如果你罗哩叭嗦太多的话,她可能会觉得厌烦。不妨直接问,“是不是为这个问题写代码?”
让人感觉你有团队精神。面试官想知道和你一起工作是什么感觉,会有什么问题,所以要让他们看到你的团队合作性。使用“我们”来代替“我”。
把自己的想法大声说出来。不 是开玩笑,比如说:“我不知道这样做是否有效——但请让我试一试。”如果你不知道怎么办,不知道这个问题该如何解决,那么就说一说你现在的想法。说一说你认为怎么做可能会有效。
不知为不知。如果正在谈论的话题(例如,具体的语言事务,具体的琐事,运行时分析)的确是你不曾涉猎的内容,那么不要不懂装懂。相反,你可以直接说:“我不知道,但我猜something,因为……”,因为后面可以通过分析排除其他选项,还可以拿其他语言或问题做例子。
说话不要不经大脑。不要自信地将答案脱口而出。如果是正确的,那么你还是需要时间来考虑如何解释,如果是错的,那会显得你冲动鲁莽。你不是在和人比速度,而且你这么做更有可能因为打断她的话或者妄下结论而惹恼她。
有时候你会陷入僵局。放松。这并不意味着你已经失败了。请记住,面试官通常更在乎的,是你能否巧妙地从几个不同的角度去揭示问题,而不是一根筋走到底地坚持正确答案。
画图。不要浪费时间在脑袋里思考,可以画到板上。画出几个不同的测试输入。画出你如何手动如愿得到所需的输出。然后想想将你的方法转换成代码。
写一个简洁低效的解决方案,然后对其进行优化。竭尽全力。尽一切可能的方法得到某种答案。
讲讲自己的思路。讲一讲你知道什么。讲一讲你认为什么可能工作以及为什么无效的原因。你可能突然会意识到它实际上是可以工作的,或修改版本是有效的。也有可能,你会得到提示。
等待提示。不要用期待的眼光盯着面试官,但可以有短暂的“思考”时间——面试官或许已经决定给你个提示也说不定呢,等待她的提示以免打断她。
考虑空间和运行时的界限。如果你不知道你是否可以优化解决方案,那么就说出来。
不要不懂装懂!!!
凭空地想很容易自我矛盾。把你的想法写下来,然后再去考虑细节。
调用帮助函数,继续前进。如果你不能或多或少地马上想出如何实现算法,那就跳过它。写一个命名合理的调用函数,然后继续下一步骤。如果帮助函数非常微不足道,你甚至可以将它忽略。
不要担心语法。不妨一笑而过。如果你非要考虑语法,那就还原到英语。只要向面试官说明稍后会回来整理即可。
预备足够的空间。你可能后面会想要在代码行之间添加代码或笔记。从白板的顶部开始写,并在每一行之间留一条空白。
最后写一个重头检查的标志。不要担心你写的for循环是否应该有“
使用描述性的变量名。想名字需要时间,但可以防止你忘记自己写某段代码的目的。
浏览解决方案,大声地讲,输入一个例子。当程序运行时记录下变量保存的值——如果你只是记在脑子里,不会让你赢得任何加分。这有助于你发现bug和消除面试官的困惑。
寻找差一错误。你的for循环是不是应该使用“
测试边缘情况。措施包括空集合,单项目集合或负数。加分点:提一提单元测试!
不要惹人厌烦。有的面试官可能并不在意这些整理步骤。如果你不确定,可以这样说,“我通常会检测一些边缘情况——那么我们接下来是不是做这个呢?“
最后,运行实践问题是没有捷径的。
好记性不如烂笔头。对自己诚实。用笔写可能一开始会让你觉得别扭。但是如果你现在就能克服这个难题,那么当面试的时候,你就不会觉得笨拙和不顺手了。
本文中的实践问题只是提供了每个面试过程的线索要点,没有真正的金科玉律,在真正面试时还需实际问题实际解决。
最后,小鸥祝大家面试成功。