(1)勇于提问 面试官提出的问题,有时候可能过于抽象,让求职者不知所措,或者无从下手,所以, 对于面试中的疑惑,求职者要勇敢地提出来,多向面试官提问,把不明确或二义性的情况都 问清楚。不用担心你的问题会让面试官烦恼,影响你的面试成绩,相反还对面试结果产生积 极影响:一方面,提问可以让面试官知道你在思考,也可以给面试官一个心思缜密的好印象; 另一方面,方便后续自己对问题的解答。 例如,面试官提出一个问题:设计一个高效的排序算法。求职者可能丈二和尚摸不到头 脑,排序对象是链表还是数组?数据类型是整型、浮点型、字符型还是结构体类型?数据基 本有序还是杂乱无序?数据量有多大,1000 以内还是百万以上个数?此时,求职者大可以 将自己的疑问提出来,问题清楚了,解决方案也自然就出来了。
(2)高效设计 对于技术性问题,如何才能打动面试官?完成基本功能是必须的,仅此而已吗?显然不 是,完成基本功能顶多只能算及格水平,要想达到优秀水平,至少还应该考虑更多的内容, 以排序算法为例:时间是否高效?空间是否高效?数据量不大时也许没有问题,如果是海量 数据呢?是否考虑了相关环节,例如数据的“增删改查”?是否考虑了代码的可扩展性、安 全性、完整性以及鲁棒性?如果是网站设计,是否考虑了大规模数据访问的情况?是否需要 考虑分布式系统架构?是否考虑了开源框架的使用?
(3)伪代码先行 有时候实际代码会比较复杂,上手就写很有可能会漏洞百出、条理混乱,所以,求职者 可以首先征求面试官的同意,在编写实际代码前,写一个伪代码或者画好流程图,这样做往 往会让思路更加清晰明了。 切记在写伪代码前要告诉面试官,他们很有可能对你产生误解,认为你只会纸上谈兵, 实际编码能力却不行。只有征得了他们的允许,方可先写伪代码。
(4)控制节奏 如果是算法设计题,面试官都会给求职者一个时间限制用以完成设计,一般为 20min 左 右。完成得太慢,会给面试官留下能力不行的印象,但完成得太快,如果不能保证百分百正 确,也会给面试官留下毛手毛脚的印象,速度快当然是好事情,但只有速度,没有质量,速 度快根本不会给面试加分。所以,编者建议,回答问题的节奏最好不要太慢,也不要太快, 如果实在是完成得比较快,也不要急于提交给面试官,最好能够利用剩余的时间,认真仔细 地检查一些边界情况、异常情况及极性情况等,看是否也能满足要求。 (5)规范编码 回答技术性问题时,多数都是纸上写代码,离开了编译器的帮助,求职者要想让面试官 对自己的代码一看即懂,除了字迹要工整,不能眉飞色舞以外,最好是能够严格遵循编码规 范:函数变量命名、换行缩进、语句嵌套和代码布局等,同时,代码设计应该具有完整性, 保证代码能够完成基本功能、输入边界值能够得到正确地输出、对各种不合规范的非法输入 能够做出合理的错误处理,否则,写出的代码即使无比高效,面试官也不一定看得懂或者看 起来非常费劲,这些对面试成功都是非常不利的。