千锋教育-做有情怀、有良心、有品质的IT职业教育机构

你所在的位置:首页 > 求职指南

程序员面试时应如何回答技术性问题

时间:2016-03-21 15:21:58 来源:千锋教育成都校区  作者:成都千锋教育

程序员在面试中,面试官常常会提出一些技术性的问题。有的面试题是历年的笔试面试真题,求职者在平时的复习中可能会经常遇到,自然能够应付自如。而有的题目来源于Google、Microsoft等大企业的题库,或是企业自己为了招聘需要设计的题库,这些对于求职者来说相对难些,可能从来没见过或是从来都不能完整地、独立地想到解决方案,而这些题目往往又是企业比较关注的。

如何能够回答好这些技术性的问题呢?对于简单的题目,求职者要努力做到完全正确,毕竟这些题目,只要复习得当,完全回答正确一点问题都没有。而对于难度比较大的题目,不要惊慌,也不要害怕,即使无法完全做出来,也要学会思考问题,哪怕是半成品也要写出来,至少要把自己的思路表达给面试官,让面试官知道你的想法,而不是完全回答不会或是放弃。很多时候,面试官除了关注你的独立思考问题的能力以外,还会关注你技术能力的可塑性,观察求职者是否能够在别人的引导下去正确地解决问题,所以,对于你不会的问题,他们很有可能会循序渐进地启发你去思考,通过这个过程,让他们加了解你。

一般而言,在回答技术性问题时,求职者大可不必胆战心惊,除非是没学过的新知识,否则,一般都可以采用以下六个步骤来分析解决。

(1)勇于提问

面试官提出的问题,有时候可能过于抽象,让求职者不知所措,或是无从下手,所以,对于面试中的疑惑,求职者要勇敢的提出来,多向面试官提问,把不明确或是二义性的情况都问清楚。不用担心你的问题会让面试官烦恼,影响你的面试成绩,相反还对面试结果产生积极影响:一方面,可以给面试官一个心思缜密的好印象;另一方面,方便后续自己对问题的解答。

例如,面试官提出一个问题:设计一个的排序算法。求职者可能丈二的和尚摸不到头脑,排序对象时链表还是数组?数据类型是整型、浮点型、字符型还是结构体类型?数据基本有序还是杂乱无序?数据量,有多大,1000以内还是百万以上个数?此时,求职者大可以将自己的疑问提出来,问题清楚了,解决方案也自然就出来了。

(2)设计

对于技术性问题,如何才能打动面试官?完成基本功能肯定是必须的,仅此而已吗?显然不是,完成基本功能顶多只能算及格水平,要想达到水平,至少还应该考虑多的内容,以排序算法为例:时间是否?空间是否?数据量不大时也许没有问题,如果是海量数据呢?是否考虑了相关环节,例如数据的“增删改查”?是否考虑了代码的可扩展性、安全性、完整性以及鲁棒性?如果是网站设计,是否考虑了大规模数据访问的情况?是否需要考虑了分布式系统架构?是否考虑了开源框架的使用?

(3)伪代码先行

有时候实际代码会比较复杂,上手就写很有可能会漏洞百出、条理混乱,所以,求职者可以首先征求面试官的同意,在编写实际代码前,写一个伪代码或是画好流程图,这样做往往会让思路加清晰明了。

切记在写伪代码前要告诉面试官,他们很有可能对你产生误解,认为你只会纸上谈兵,实际编码能力却不行。只有征得了他们的允许,方可先写伪代码。

(4)控制节奏

如果是算法设计题,面试官都会给求职者一个时间限制用以完成设计,一般为20分钟左右。完成的太慢,会给面试官留下能力不行的印象,但完成的太快,如果不能正确,也会给面试官留下毛手毛脚的印象,速度快当然是好事情,但只有速度,没有质量,速度快根本就不会面试中加分。所以,编者建议,回答问题的节奏好不要太慢,也不要太快,如果实在是完成的比较快,也不要急于提交给面试官,好能够利用剩余的时间,认真仔细地去检查一些边界情况、异常情况、极性情况等是否也能满足要求。

(5)规范编码

回答技术性问题时,多数都是纸上写代码,离开了编译器的帮助,求职者要想让面试官对自己的代码一看即懂,除了字迹要工整,不能眉飞色舞以外,好是能够严格遵循编码规范:函数变量命名、换行缩进、语句嵌套、代码布局等,同时,代码设计应该具有完整性,代码能够完成基本功能、输入边界值能够得到正确的输出、对各种不合规范的非法输入能够做出合理的错误处理,否则,写出的代码即使无比,面试官也不一定看得懂或是看起来非常费劲,这些对面试成功都是非常不利的。

(6)精心测试

在软件界,有一句真理:任何软件都有bug。但不能因为如此,就纵容自己的代码,允许错误百出。尤其是在面试过程中,实现功能也许并不十分困难,困难的是在有限的时间内设计出的算法是否各种异常都得到了有效的处理,是否各种边界值都在算法设计的范围内,等等。

测试代码是让代码变得完备的方式之一,也是一名程序员的素质之一。所以,在编写代码前,求职者好能够了解一些基本的测试只是,做一些基本的单元测试,功能测试,边界测试以及异常测试。

 

其实,在面试时,求职者往往会存在一种思想误区,把技术性面试的结果看得太重要了。面试过程中的技术性问题,结果固然重要,但也并非重要的内容,因为面试官看重的不仅仅是终的结果,还包括求职者在解决问题的过程中体现出来的逻辑思维能力以及分析问题的能力。所以,求职者在与面试官的博弈中,要适当地提问,通过提问获取面试官的反馈信息,并抓住这些有用信息进行辅助思考,从而博得面试官的欢心,进而提高面试的成功率。

热帖推荐

  • 成都地址:成都市武侯区科华北路62号力宝大厦N(北楼)18楼
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训
  • 北京天丰利校区:北京市海淀区宝盛北里西区28号天丰利商城4层
    北京沙河校区:北京市昌平区沙阳路18号北京科技职业技术广场服务楼2层、南区服务楼2层
    咨询电话:400-654-7778 010-82790226-801
    面授课程:iOS培训、Android培训、HTML5培训、UI培训、PHP培训、JavaEE培训、好程序员
  • 深圳科技园校区:深圳市南山区科苑南路高新技术产业园R3-B栋5层
    深圳大学城校区:深圳市南山区留仙大道1201号大学城创客小镇16栋2楼、3楼
    深圳西部硅谷校区:深圳市宝安区宝安大道5010号西部硅谷B座A605-619
    咨询电话:0755-86681178/9-801
    面授课程:iOS培训、Android培训、HTML5培训、UI培训、PHP培训、JavaEE培训、好程序员
  • 上海地址:上海市宝山区同济支路199号智慧七立方3号楼2-4层
    咨询电话:400-627-7899 021-65025129-602
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、好程序员
  • 郑州地址:郑州市金水区纬五路21号河南教育综合楼(经纬中学楼)6/7/8层
    咨询电话:0371-55911950 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训
  • 广州地址:广州市天河区元岗路310号智汇park创意园E座5层
    咨询电话:020-22119207 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 大连地址:大连市甘井子区软件园路2号B8座二楼
    咨询电话:0411-39026086 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 武汉地址:武汉市东新区光谷大道77号金融港B26栋9楼
    咨询电话:027-59905909 027-59905908 027-59905902
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 西安南二环校区:西安市二环南路西段60号永安大厦4层
    西安科技园校区:西安市雁塔区高新六路52号立人科技园C座西区4层
    咨询电话:029-85260160 029-85261030 029-85260960
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 杭州地址:浙江省杭州市江干区九堡旺田书画城A座4层
    咨询电话:0571-86893632 010-82790226-801
    面授课程:iOS课程培训、Android课程培训
  • 青岛校区地址:青岛市市南区金坛路17号青岛职业技术南校区实训楼A4层
    咨询电话:0532-80910752/3 010-82790226-801
    面授课程:iOS课程培训、Android课程培训
  • 扫码匿名提建议
    直达CEO信箱