求职指南网 > 面试技巧 >

程序员代码面试技巧

时间: 淑娟 面试技巧

程序员代码面试技巧

在深入代码之前,大多数面试官喜欢聊聊你的背景。他们想知道:

1、你对编码认知。你是否知道如何编写好代码?

2、个人能力/领导力。你是否经历过整个工作流程?你是否修复过并不怎么正确的东西,即使你并不需要这么去做?

3、沟通。和你交流技术问题是有用的还是痛苦的?

你应该至少说明以下中的一个:

1、你曾解决的一个有趣的技术问题

2、你曾克服的一个人际冲突

3、显示领导力或个人能力的例子

4、你曾在以往项目中做出的贡献

5、最喜欢的语言的一些琐事,对这种语言你做了什么,以及你不喜欢它哪里

6、有关公司产品/业务的问题

7、关于该公司的工程策略(测试,Scrum,等等)

热爱技术。表达你对你所做的一切感到骄傲,你对自己的选择充满自信,你对语言和工作流有着自己的看法。

沟通

涉及到编码问题的时候,沟通是关键。一个在工作时需要帮助却能和人正确沟通的求职者比那些能轻松解决问题的求职者甚至更好。

了解这是哪种问题。有两种类型的问题:

1、编码。面试官希望你能针对问题写出简洁高效的代码。

2、闲聊。面试官希望能和你聊一聊。话题通常是(1)高水平的系统设计(“如何克隆Twitter?”)或(2)琐事(“Javascript中的hoisting是什么意思?”)。有时候这些琐事中也会引入“实际”问题,例如,“如何迅速排序整数列?好的,如果不是整数,是其他类型的呢…… ”。

如果你开始编写代码,并且面试官并不想多说废话,只想尽快过渡到“实际”问题,那么如果你罗哩叭嗦太多的话,她可能会觉得厌烦。不妨直接问,“是不是为这个问题写代码?”

让人感觉你有团队精神。面试官想知道和你一起工作是什么感觉,会有什么问题,所以要让他们看到你的团队合作性。使用“我们”来代替“我”,例如,“如果那个时候我们做广度优先搜索的话,就能及时/准时得到解决方案。”如果让你选择在纸上还是在白板上编码的话,选白板。这样,你就可以接近面试官,直接面对他提出的问题(而不是和她在桌子两边遥遥相望)。

把自己的想法大声说出来。不是开玩笑,比如说:“我不知道这样做是否有效——但请让我试一试。”如果你不知道怎么办,不知道这个问题该如何解决,那么就说一说你现在的想法。说一说你认为怎么做可能会有效。说一说你认为哪些会有用,以及为什么没用的原因。这同样适用于琐碎的闲聊问题。当面试官要求你解释Javascript闭包的时候,“这与范围有关,不妨把它放到一个函数中”可能会让你得到90%的分数。

不知为不知。如果正在谈论的话题(例如,具体的语言事务,具体的琐事,运行时分析)的确是你不曾涉猎的内容,那么不要不懂装懂。相反,你可以直接说:“我不知道,但我猜$thing,因为……”,因为后面可以通过分析排除其他选项,还可以拿其他语言或问题做例子。

说话不要不经大脑。不要自信地将答案脱口而出。如果是正确的,那么你还是需要时间来考虑如何解释,如果是错的,那会显得你冲动鲁莽。你不是在和人比速度,而且你这么做更有可能因为打断她的话或者妄下结论而惹恼她。

摆脱困境

有时候你会陷入僵局。放松。这并不意味着你已经失败了。请记住,面试官通常更在乎的,是你能否巧妙地从几个不同的角度去揭示问题,而不是一根筋走到底地坚持正确答案。

画图。不要浪费时间在脑袋里思考,可以画到板上。画出几个不同的测试输入。画出你如何手动如愿得到所需的输出。然后想想将你的方法转换成代码。

解决问题的简单版本。不知道如何找到集合中的第4大条目?那么想想如何找到第1大条目,然后试试能否沿用这种方法。

写一个简洁低效的解决方案,然后对其进行优化。竭尽全力。尽一切可能的方法得到某种答案。

讲讲自己的思路。讲一讲你知道什么。讲一讲你认为什么可能工作以及为什么无效的原因。你可能突然会意识到它实际上是可以工作的,或修改版本是有效的。也有可能,你会得到提示。

等待提示。不要用期待的眼光盯着面试官,但可以有短暂的.“思考”时间——面试官或许已经决定给你个提示也说不定呢,等待她的提示以免打断她。

考虑空间和运行时的界限。如果你不知道你是否可以优化解决方案,那么就说出来。例如:

“我必须至少看看所有的条目,我做不到时间复杂度比O(n)还好的了。”

“蛮力方法才能检验所有的可能性。”

“答案将包含n^2数据项,所以我必须至少花费N^2的时间。”

写下你的思路想法

凭空地想很容易自我矛盾。把你的想法写下来,然后再去考虑细节。

调用帮助函数,继续前进。如果你不能或多或少地马上想出如何实现算法,那就跳过它。写一个命名合理的调用函数,例如:“this will do X”,然后继续下一步骤。如果帮助函数非常微不足道,你甚至可以将它忽略。

不要担心语法。不妨一笑而过。如果你非要考虑语法,那就还原到英语。只要向面试官说明稍后会回来整理即可。

预备足够的空间。你可能后面会想要在代码行之间添加代码或笔记。从白板的顶部开始写,并在每一行之间留一条空白。

最后写一个重头检查的标志。不要担心你写的for循环是否应该有“”或“=”。在代码的最后画个勾选提醒自己最后再检查一遍。先按自己的思路走。

使用描述性的变量名。想名字需要时间,但可以防止你忘记自己写某段代码的目的。使用names_to_phone_nums_map而不是nums。在名称中说明类型。返回布尔值的函数应该以“is_ __”,保存列表的Vars应该以“s”结尾。标准化很有意义。

完成之后的整理

浏览解决方案,大声地讲,输入一个例子。当程序运行时记录下变量保存的值——如果你只是记在脑子里,不会让你赢得任何加分。这有助于你发现bug和消除面试官的困惑。

寻找差一错误。你的for循环是不是应该使用“=”来代替“”?

测试边缘情况。措施包括空集合,单项目集合或负数。加分点:提一提单元测试!

不要惹人厌烦。有的面试官可能并不在意这些整理步骤。如果你不确定,可以这样说,“我通常会检测一些边缘情况——那么我们接下来是不是做这个呢?“

实践

最后,运行实践问题是没有捷径的。

好记性不如烂笔头。对自己诚实。用笔写可能一开始会让你觉得别扭。但是如果你现在就能克服这个难题,那么当面试的时候,你就不会觉得笨拙和不顺手了。

本文中的实践问题只是提供了每个面试过程的线索要点,没有真正的金科玉律,在真正面试时还需实际问题实际解决。最后,祝大家面试成功。

程序员求职面试怎样做自我介绍

01自我介绍内容为王

首先请报出自己的姓名和身份。可能应试者与面试考官打招呼时,已经将此告诉了对方,而且考官们完全可以从你的报名表、简历等材料中了解这些情况,但仍请你主动提及。这是礼貌的需要,还可以加深考官对你的印象。

其次,你可以简单地介绍一下你的学历、工作经历等基本个人情况。请提供给考官关于你个人情况的基本的、完整的信息,这部分的陈述务必简明扼要、抓住要点。例如介绍自己的学历,一般只需谈本专科以上的学历。工作单位如果多,选几个有代表性的或者你认为重要的介绍,就可以了,但这些内容一定要和面试及应考职位有关系。请保证叙述的线索清晰,一个结构混乱、内容过长的开场自,会给考官们留下杂乱无章、个性不清晰的印象,并且让考官倦怠,削弱对继续进行的面试的兴趣和注意力。

其次就是自己的工作经历。经历比较多的可以选几个重点的工作经历来说。因为信息技术类的很注重工作项目经历,在介绍工作经历的时候。提及你参与过的项目很重要。可以略微的提几句感受,最后的总结可以带一两句自己的规划和感兴趣的点。

02自我介绍时间把握

一般情况下,自我介绍应该是3~4分钟较适宜。时间分配上,可根据情况灵活掌握。一般地,第一部分可以用约2分钟,第二部分可以用约1分钟,第三部分用1~2分钟。

好的时间分配能突出重点,让人印象深刻,而这就取决于你面试准备工作做得好坏了。如果你事先分析了自我介绍的主要内容,并分配了所需时间,抓住这3、5分钟,你就能中肯、得体地表达出你自己。有些应试者不了解自我介绍的重要性,只是简短地介绍一下自己的姓名、身份,其后补充一些有关自己的学历、工作经历等情况,大约半分钟左右就结束了自我介绍,然后望着考官,等待下面的提问。但也有的应试者想把面试的全部内容都压缩在这几分钟里。要知道面试考官会在下面的面试中间向你提有关问题的,你应该给自己也给他人留下这个机会。

如果按照4分钟自我介绍的话,时间大致可以这样分配:

个人资料:一句话,占比5%左右 

学习技能:半分钟~一分钟,占比20%左右 

项目和经历:一分钟左右,占比45%左右 

工作体会:半分钟,占比15%左右

一句话左右:职业规划,占比10%左右 

一句话:兴趣占比,占比5%左右 

03自我介绍需要注意

1)面带微笑

要有目光交流、坐姿端正等表情、中等的语速来进行讲诉。少用语气词。

2)不能胆怯和紧张

但是也不可以过度兴奋。在谈论兴趣爱好时不能自作主张可能会使面试官反感。

3)不要贪功

在项目上可以进行优化,经历上也可以进行小小的优化。但是切不可优化的过于离谱。不会或者没有准备好的投入到自我介绍中,有可能会面临着后续提问的“困难”。

4)问题+解决

在自我介绍中介绍工作经验的时候,可以讲述一下自己遇到的问题。但是切记,提出了问题,一定要有自己的解决方案的追加。不要在自我介绍中抛一个问题给人力资源专员。

自我介绍模板

本人叫__,今年__岁,软对软件开发怀有浓烈的兴趣,且对JAVA语言尤其熟悉,能熟练使用——、——、——、等流行的编程技术,目前已经独自编写了好几个项目,基于——的——,——和——等,基于——的——,——系统等。

之前工作经历有————、————、————。在————项目中曾协助解决了————问题,采用了————方法。

工作中本人坦诚且有责任心,有独立进取的品性,勤于动手、善于动脑,适应新环境能力很强。自己最大的努力融入新的工作生活。请各位考官多多指教,谢谢!

面试常见问题及回答技巧

1、请你自我介绍一下。

介绍资料要与个人简历相一致;表述方式上尽量口语化。要切中要害,能够显示自我优势的,能够讲详细些,并且与招聘资料联系起来。条理要清晰,层次要分明;事先最好以文字的形式写好背熟。千万不能说"这些我在简历中都已经写得很清楚了"。介绍自我的经历中的成绩时,要注意口气,既巧妙地表露出来,又不显示出自我吹嘘的痕迹,给人以自信、谦逊、不卑不亢的印象。

2、你有没有工作经验你觉得没有工作经验是不是你的一个劣势

我在校的时候,以往在课余时间做过……也从中悟出了一些相通的道理,我明白这离您所指的具体经验还有距离,可是不能说一点基础没有,并且我无论做什么,都能很快进入主角……

我觉得有时候,经验是必不可少的,但有时候,经验也会给人的思维带来束缚,或许我会经过对这个岗位的自我理解,制定出更有新意的工作方案来,当然具体还需要我的上级和同事的指导和把握……

3、谈谈你的一次失败经历。

人人都经历过失败,说自我从没失败过,是不可信的。回答这样的问题时,不要自作聪明把自我的那些明显的成功之处说成失败,并且要切记你所叙述的经历不会对眼前的这场应聘造成不良影响。在叙述自我失败经历的过程中,自然而然地表达出自我的失败主要是由于外在的客观原因所致,而在这个过程里自我又是如何尽心尽力,失败后是如何敢于应对,不丢失信心,并且以更大的活力迎接以后的挑战的。

4、我们为什么要录用你

这个问题回答起来应当包括三方面的资料:基本贴合条件、对这份工作感兴趣、有足够的信心。"我的个人条件完全贴合公司在这个岗位上的用人要求,这样的工作也是我个人的兴趣所在,并且我有足够的信心把工作做好……"

"作为应届毕业生,在工作经验方面的确会有所欠缺,所以在读书期间我一向利用各种机会在这个行业里做兼职。我也发现,实际工作远比书本知识丰富、复杂。但我有较强的职责心、适应本事和学习本事,并且比较勤奋,所以在兼职中均能圆满完成各项工作,从中获取的经验也令我受益匪浅。请贵公司放心,学校所学及兼职的工作经验使我必须能胜任这个职。

5、与上级意见不一致时,你将怎样办

"对于非原则性问题,我会服从上级的意见,对于涉及公司利益的重大问题,我会与我的上级充分交换意见。"

6、你认为自我最大的弱点是什么

不要这样回答:我最大的弱点是过于追求完美;我最大的弱点是工作起来不要命;不看重金钱;乐于帮忙别人。这样的回答并不聪明,反而会有哗众取宠和卖弄的嫌疑,令可信度大打折扣。别说得过于具体,含糊的回答或许更适宜。

最好是说那些能够被当作是弱点也能够被当作优点,并且与应聘岗位有关的方面。比如,你应聘的岗位是销售,那能够说:我的缺点是在聚合思维方面明显欠缺,平时总是跳跃思维和发散思维,虽然活跃,但专注于一件事情的本事差些,不适合做需要长时间坚持安静的工作。再比如,你应聘的是文秘的岗位,那能够说:"我最大的缺点是过于注重细枝末节,对细节的要求近似于苛刻,在学校的时候,总是提醒同寝室的同学,别忘记这个别忘记那个的,有些显得婆婆妈妈,我也正试着改正这些缺点……"

30619