一旦涉及到编程的问题,沟通是关键。在过程中需要帮助但可以清楚与人沟通的候选人,要比那些可以轻而易举解决问题的候选人更加难得。
理解它是哪一类问题。问题有两类:
编程。面试官希望看到你解决问题,并且可以写出整洁和有效的代码。
聊聊而已。面试官只是想让你说点什么。这些问题通常要么是高层次的系统设计(“你如何设计 Twitter 的备份?”),要么是琐碎的事情(“JavaScript 中 hoisting 是什么?”)。有时候琐事是为了引出一个“真正的”问题,比如,“我们如何能快排一个整数数组?好的,现在假设我们不再使用整数而是……”
如果面试官在进入“真正的”问题之前,只是想很快得到一个类似闲聊的回答,而你却开始编写代码了,她会感到失望。只需要问一句,“我们要为它编写代码吗?”
程序员编程面试取胜的几个技巧
1、知道如何写算法
如果你申请的是软件工程师的工作,那么显然你需要知道如何编码。写代码脚本其实与写算法来解决软件问题略有不同。用人单位可能会提出这样的问题,“写一个算法,可以从链表中找到某个元素,并将此元素挪到列表末尾。”所以,你必须知道如何写算法。
2、不用工具写代码
程序员大多非常习惯于借助工具——模拟器、集成开发环境、框架等——它们能使得我们的编程任务变得更容易。 Java程序员更喜欢IntelliJ和Eclipse,不喜欢使用插件。而Node.js开发人员不需要任何IDE,他们使用文本编程。IDE无疑是强大的,但是当你去面试时,用人单位可能会要求你在不用任何工具的情况下写代码。如果你平时能够在没有任何框架和工具的情况下练习练习,那么在面试时绝对可以轻轻松松地写出代码。
3、有经验
编程经验能为你的简历添加价值。相较于一些白纸,用人单位更青睐于一些具备了相关经验的求职人员。如果你没有任何经验,那也不必发愁。通过构建移动app,然后发布到应用商店;将开源代码放到GitHub上;促进现有的开源项目等等,都是能为你增加经验值的方法。
4、活力洋溢地回答问题
只用一个字或者一句话,照本宣科平平无奇地回答问题,或许在技术上是正确的,但是你忘了应该借此机会好好展示自己的激情——这才是一个开发人员能带给团队的最大正能量。
5、小心“陷阱”问题
你为什么换工作?
说说你最大的优点和缺点。
最近一次你是如何解决和同事之间发生的技术分歧的?
在回答问题之前,你最好明白面试官问这些问题的目的,掌握如何回答这类问题的技巧。
就先说说第一个问题吧“你为什么换工作?”
在大多数情况下,面试官想知道的是你是否是一个爱说三道四、惯于诽谤抨击雇主的人。所以千万不要上当。
6、永远不要撒谎
最糟糕的事就是在面试的时候撒谎。
知之为知之,不知为不知,如果你确实不知道,千万不要自作聪明来编造问题的答案。
相反,你应该诚实地说,你不知道或者你并不是100%肯定,但是你愿意尝试一下,然后再讲讲自己的想法。讲完之后也可以问面试官正确答案是什么,以显示你对此非常感兴趣。
实话告诉你,大多数面试官问的问题都是他们知道的问题,不然如果你滥竽充数给你通过的话就会显得他们像个傻瓜。所以千万不要抱着侥幸心理,一旦发现你在撒谎,面试官马上就会质疑你的人品。
程序员面试中的常见错误
1、代码凌乱
不要低估代码规范的重要性。不管你多博闻强识,多有创造力,记得他们是在为你的编程技巧评定。面试官下任何结论前都要先读懂你的代码,如果你代码很凌乱,面试官也许压根就不想看。
2、对思路避而不谈
面试官会对你解决问题的方法很感兴趣。他们不期望你能解决所有提出的问题,但希望你能给出正确的思路。
例如,你正写一个用C指针交换两数的程序,正确的思路(即调用含待交换变量地址的函数并获取指针参数地址)才是真正重要的。面试官应该会在其他卡壳的地方提示你。
所以,答题时大声说出你的思路吧。这是让面试官参与其中的好方法。
3、不好的函数、变量命名习惯
无论面试时用哪种语言解决问题,尽量用相关的变量和函数名,这会有助于代码维护。
举个例子,假设你随手为函数和变量命名,写了成千上万行代码。现在,新人要加入并调试这段代码。可调试这种甚至无法理解变量代表什么的代码,纯粹是做梦。
另外还有一点可以通过自身的学习来获取一大进步。
究竟有哪些干货呢?先给你们一个目录:
免费领取资料,微信查找“程序员精选”,领取资料。