对于面试大家都不会陌生,大大小小的面试也都经历过,有过不是很正规的,也有过让自己大开眼界的大型面试,但无外乎三种形式电话面试,共享桌面远程面试,现场面试。但是在这几种面试的场合中,我们到底应该如何做,面试过才会给我们抛出绿色的橄榄枝呢?
首先如果应聘者能够通过公司的简历筛选环节,那恭喜你取得了阶段性的胜利。但是想要拿到心仪的Offer,你还有更长的路要走。大部分公司面试都是从电话面试开始的。通过电话面试之后,有些公司还会有一两轮的远程面试。面试官让应聘者共享自己的桌面,远程观察应聘者编写及调试代码的过程。如果前面的面试都很顺利,应聘者就会收到现场面试的邀请信,请他去公司接受面对面的面试。整个面试流程可以用下图来表示。
注:只有少数公司会有共享桌面远程面试环节。像一些科技网络公司。
电话面试
顾名思义,电话面试就是面试官以打电话的形式考查应聘者。有些面试官会先和应聘者预约好电话面试的时间,而还有些面试官却喜欢搞突然袭击,一个电话打过去就开始面试。为了应付这种突然袭击,建议应聘者在投出建立之后的一两个星期里,保证手机电池至少能够连续通话一个小时。另外,应聘者不要长时间待在很嘈杂的地方。如果应聘者身在闹市的时候突然接到面试电话,那么双方就有可能因为听不清对方而倍感尴尬。
电话面试和现场面试的最大的区别就是应聘者和面试官是见不到对方的,因此双方沟通只能依靠声音。没有了肢体语言、面部表情,应聘者清楚的表达自己的想法的难度就比现场面试时要大很多,特别是在解释复杂算法的时候。应聘者在电话面试的时候尽可能用形象化的语言把细节说清楚。例如,在现场面试的时候,应聘者如果想说一个二叉树的结构,可以用笔在白纸上画出来,就一目了然。但是电话面试的时候,应聘者就需要吧二叉树中有哪些结点,每个结点的左子结点时什么都要说得很清楚,只有这样面试官才能准确的理解应聘者的思路。
很多外企在电话面试时都会加上英语面试的环节,甚至有些公司全部面试都会用英语进行。电话面试时应聘者只能听到面试官的声音儿看不到他的口型,这堆应聘者听力提出了更高的要求。如果应聘者在面试的时候没有听清楚或者听懂面试官的问题,千万不要不懂装懂、答非所问,这是面试的大忌。当不确定面试官的问题的时候,应聘者一定要大胆的向面试官多提问,知道弄清楚面试官的意图为止。
应聘者在电话面试的时候尽可能的用形象的语言把细节说清楚。如果在英语面试时没有听清或没有听懂面试官的问题,应聘者要敢于说Pardon。
共享桌面远程面试
共享桌面远程面试(Phone-Screen Interview)是指利用一些共享桌面的软件(比如微软的Live Meetting,腾讯的桌面共享),应聘者把自己电脑的桌面共享给远程的面试官。这样两个人虽然没有坐在一起,但是面试官却能通过共享桌面观看应聘者编程和调试的过程。目前只有为数不多的几家大公司会在邀请应聘者到公司参加现场面试之前,先进性一两轮共享桌面的远程面试。
这种形式的面试,面试官最关心的是应聘者的编程习惯和调试能力。通常面试官会认可应聘者下列几种编程习惯:
1、思考清楚在开始编码。应聘者不要一听到题目就匆忙打开编程软件开始敲代码,因为在没有形成清晰的思路之前写出的代码通常会漏洞百出。这些漏洞被面试官发现之后,应聘者容易慌张,这个时候在修改代码也会越改越乱,最终导致面试的结果不理想。更好的策略是应聘者应先想清楚解决问题的思路,算法的时间,控件复杂度各是什么,有哪些特殊情况需要处理等,然后在动手编写代码。
2、良好的代码命名和缩进对齐习惯。一目了然的变量和函数名,加以合理的缩进和括号对齐,会让面试官觉得应聘者有参与大型项目的开发经验。
3、能够单元测试。通常面试官出的题目都是要求写函数解决某一问题,如果应聘者能够在定义函数之后,立即对该函数进行全面的单元测试,那就相当于向面试官证明了自己有着专业的软件开发经验。如果应聘者是先写单元测试用例,再写解决问题的函数,我相信面试官定会对你刮目相看,因为能够做到测试在前,开发灾后的程序员实在是太稀缺了,他会毫不犹豫的爆出绿色的橄榄枝。
通常我们再写代码的时候都会遇到问题。当应聘者运行代码发现结果不对之后的表现,也是面试官关注的重点,因为应聘者此时的反应、采取的错失都能体现出他的调试功底。如果应聘者能够熟练的设置断点、单步跟踪、查看内存、分析调用栈,能很快发现问题的根源并最终解决问题,那么面试官将会觉得你的开发经验很丰富。调试能力实在书本上学不到的,只有通过大量的软件开发实践才能积累出调试技巧。当面试官发现一个应聘者的调试功底很扎实的时候,他在写面试报告的时候不会吝啬赞美之词的。
在共享桌面远程面试过程中,面试官最关心的是应聘者的编程习惯及调试能力。
现场面试
在通过电话面试和共享桌面远程面试之后,应聘者不久就会收到E-main或者电话,邀请他去公司参加现场面试(Onsite Interview)。
去公司参加现场面试之前,应聘者应该做好以下几个准备:
1、规划好路线并估算出行时间。应聘者要实现估算在路上需要花费多长时间,并预留半个小时左右的缓冲时间以应对堵车等意外情况。如果面试迟到,那至少印象分会大打折扣。
2、准备好得体的衣服。IT公司通常衣着比较随意,应聘者通常没有必要穿着正装,一般舒服干净的衣服都可以。
3、注意面试邀请函里的面试流程。如果面试有好几轮,时间也很长,那么你在面试过程中可能会觉得疲劳并思维变得迟钝。比如微软对技术职位通常有五轮面试,连续几个小时处于高压的面试之中,人难免会变得精疲力尽。因此应聘者可以带一些提神的饮料或者食品,在两轮面试之间提神醒脑。
4、准备几个问题。每一轮面试的会后,面试官都会让应聘者问几个问题,应聘者可以提前准备好。
现场面试时整个面试流程中的重头戏。由于是坐在面试官的对面,应聘者的一举一动都看在面试官的眼里。面试官通过应聘者的语言和行动,考察他的沟通能力,学习能力,编程能力等综合实力。具体的面试的综合实力,我会在后续的文章中为大家分析分析,让我们一同进步。
下面试我摘抄的几句有名的公司的面试官讲的话,让我们也明白面试官想要的应聘者是什么样的:“对于初级程序员,我一般会偏向考察算法和数据结构,看应聘者的基本功;对于高级程序员,我会多关注专业技能和项目经验。”——何幸杰(SAP,高级工程师)“应聘者要事先做好准备,对公司近况、项目情况有所了解,对所应聘的工作真的很有人情。另外,应聘者还要准备好合适的问题问面试官。”——韩伟东(盛大,高级技术员)“应聘者在面试过程中首先需要放松,不要过于紧张,这有助于后面解决问题时开拓思路。其次不要急于编写代码,应该先了解清楚所要解决的问题。这时候最好先和面试官多做沟通,然后开始做一些整体的设计和规划,这有助于编写告知了和高可读性的代码。学完代码后不要马上提交,最好自己review并借助一些测试用例来走几遍代码,找出可能出现的错误。”——尧敏(淘宝,资深经理)
“‘神马’都是浮云,应聘技术岗位就是要踏实些程序。”——田超(微软,SDE II)
注:SDE
Software Design Engineer ,即高级软件设计工程师;