同步发布:http://www.yuanrengu.com/index.php/20170314.html
近一年技术团队在不断扩充成员,一直忙于高级java工程师、android工程师、iOS工程师的面试,很想写一篇和招聘程序猿相关的文章,特别是看到“酷壳”里皓哥写的一篇《我是怎么招聘程序员的》文章后,产生很多共鸣。
虽然工作年限还不够长,但也经历过很多大大小小的面试,即被面试过,也面试过很多人。经历过很多很专业的面试,也经历过一些非常BT和令人不怎么舒服的面试。
一个好的面试体验,公司的考核流程和面试官就显得非常重要了,如果考核流程非常繁琐,会让面试者内心没有任何好感,如面试时在前台莫名其妙的被晾置一两个小时,笔试初试复试得跑三趟公司。面试官就更重要了,不要刚开始面试,就弄的像别人欠你钱或别人在挑战的技术能力似的。
公司招聘不要弄成一种买卖关系,应该是寻找一些志同道合或跟公司“气场”匹配的伙伴,这里的气场是指跟公司所需要的技能匹配。公司行政经常给我说:“技术人员是不是很矫情啊?说好来面试的,最后都不来,说好要入职的,入职前一天又说有公司给更高的待遇。”
我只能微微一笑的给她说:“你见,或者不见我,我就在那里,不悲不喜。你来入职,或者不来入职,offer反正在你手里,不增只减”。因为我也曾经矫情过,研究生快毕业时,做了一堆的算法和数据结构方面的题,搜了一堆面试常问的题和一些面试技术,就到处投简历面试(其实当时手里已经有几个不错的offer了),不为找工作,只为刷存在感,回来这年少无知的举动,倍感惭愧。
如何去考核一个程序猿是否可以给offer?我在面试应聘者的时候,最主要是要弄清如下几件事:
-
应聘者是否可以跟我“正常对话”?
-
应聘者的技能是否跟公司所需的技能达到一定的契合度?
-
应聘者是否有能力解决工作中的难题?
-
应聘者是否可以跟我们团队一起愉快的工作?
我相信绝大部分的公司在考核应聘者时都会围绕上述四个问题来进行,可能有人会对第一个问题产生疑问,难道还有不能正常对话的人?还真别说,我就遇到几个性格比较“鲜明”的应聘者,面试时头抬的高高的,眼瞅着天花板,一副老子天下第一的表情,技术人员有傲骨可以理解,可是问几个技术问题,却一问三不知,问他之前团队如何协作的,只回答说公司安排的任务不喜欢就离职了,让人真的很难正常对话。对于第二个问题就更重要了,公司当然希望应聘者的技术越牛越好,梦想是美好的,现实终究还是很骨感,公司也不期待能招到全栈工程师,只希望能找到跟公司所需的技能契合的人。对于第三个问题,程序猿最基本的技能就是要通过网络解决工作中的一些难题,多问度娘,多问谷歌,程序猿比较忌讳的一点就是“拿来主义”,遇到问题不动脑思考张口就问别人。第四个问题,基本就是考查人的社交能力和情商了,个人人为,团队的和谐是一切事情的前提。
之前我经历过的一些比较传统的面试流程,基本是下面这样的:
-
应聘者先做自我介绍
-
问一些比较难的非常细节的技术问题,基本就是快问快答的形式
-
给应聘者出一些比较怪异的算法题
个人觉得这种面试形式不是太合适,可能会错过很多适合公司的程序猿。其实我个人不论是面试别人还是被面试时,都非常讨厌第一个问题,拿着别人简历难道不知道别人叫什么名字?技术面试,这种形式上的东西能少就尽量少即可。
但应聘者一进来,总得有个关于介绍的开场。我面试应聘者时,别人一进来时我会先问好,给个微笑,让应聘者不要太紧张。让别人做下技术方面的简单介绍,如工作中主要处理哪里方面的业务(电商、金融等等)啊?主要用哪些编程语言?主要用哪些开发架构(dubbo、SOA等)?主要用哪些框架(Spring、mybatis等)?这样也方便对这个人有比较全面的了解,交流时也好针对性的问些问题,做偏技术方面的介绍也好了解这个人的沟通交流能力。最后发现,其实很难从一个人的简历或自我阐述上来考核这个人是否合适。
我绝不会在面试应聘者时问一些非常细节的问题,我曾经就经历一个非常BT的面试,面试官据称刚从华为出来,一上来就问我是否用过mybatis,我说用过。接下来这哥们问,mybatis是哪一年被开源的?接手的是哪个开发团队?mybatis的升级历史?当时我觉得我可能听错了,我让面试官重复了一遍,确认自己没听错后,我说不清楚哪一年被开源的,现在是apache的开源项目。这哥们说是都不知道哪一年开源的,也不知道是apache的哪个团队接手,真的用过mybatis?当时内心就千万只骏马奔腾而过啊,我真的是在应聘程序猿吗?
我在面试时一般会根据应聘者自己的项目描述来提问,考核下他自己说的技能的熟练程度。也遇到一些技术确实够菜,简历写的无比高大上,问他自己说的问题都回答不上来,你问东他答西,完全不在同一频道对话。碰到这种情况,我就会问笔试题里的SpringMVC工作原理(笔试只是公司要求的形式,我一般不会太看重笔试的成绩),这个问题非常简单,只要用过这个框架的人都能说出个一二三来。这道题也是所有人都答的非常好的,因为网上一搜,答案一大推,问这个问题也是让应聘者放松些不要太紧张,毕竟自己刚写过。但有些人笔试题上答案写了好大一堆,但口述却一点都说不出来,知道什么问题了吧?我真的不介意你笔试时抄网上的东西,只要你能复述出来我都算你掌握了这个问题,但假如是抄的东西连复述都说不出来,那面试还有什么可问的?碰到这种情况,我也不能直接打发别人,还得照顾应聘者的自尊心啊,我会跟应聘者聊聊人生聊聊理想,然后面试就愉快的结束了。
如果没有一起工作过,没有一些实际的项目做背景,单靠半个小时或一个多小时的面试,是比较难全面的了解一个人的。个人觉得在应聘程序猿职务时需要做好如下几个方面:
-
穿着简单整洁,不需穿个西装打个领带。
-
提前熟悉公司的招聘需求,需要的技能可以提前准备下,有备无患嘛。
-
对于面试官的问题,知之为知之不知为不知,技术这东西会就是会,不会就是不会,没法伪装或隐瞒,不然等着面试官问个问题而拆穿就尴尬了。
-
平时可以养成一些写技术博客或参入开源项目的习惯,反正我是非常喜欢这样的程序猿,肯定能加分。
所有的面试技巧都敌不过自己知识体系的深度、广度!不断提升自己,基础扎实,对某一个或几个业务有比较深入的熟悉,这样的小伙伴无论在哪家公司都是非常受欢迎的。