面试是一个永恒的话题,也是这一辈子必不可少的一部分,无论是对于公司还是个人而言。如何能更好的找人和找工作也是一个值得探究的问题。针对不同角色面试官和应聘者,结合自身的经验,总结了一些能让面试更有效率的建议:
对于公司和面试官
明确需求:到底需要什么样的人
招聘中的面试应该是按照需求来选择人,就好比体育选拔赛,制定一定的标准,然后对应聘者进行测试(通常为笔试和面试)然后择优录取。
所以招聘的第一步要做的是:明确需求,明白的知道,你需要什么样的人,要具有哪些技术背景,有什么样的经历和经验,必备的基础知识和技能等。所以在面试的时候不能只盯着应聘者的简历,问他做过什么,哪个项目是什么样子的,用了什么东西,遇到什么问题等。应聘者的项目经历,只说明他在过去做了什么,不能证明他在那些领域有经验或者就符合你的预期。所以事先要根据预期,列出一些的问题。比如你需要Java方面的人才,那么就准备一批Java开发中常见的问题和Java语言相关的问题做为面试的主要内容。就好比选拔跳高的人一样,制定一个高度,比如3米,然后去筛选应聘者,而不是纠缠于他过去是怎么跳高的,用的什么工具,能跳多高,怎么起步等等。
根据公司的战略,业务的需求和项目的需求来设计筛选问题,只有明确了需要才能清楚想要什么样子的人,才能找对人。
隔领域如隔山,当项目经历与预期严重不符时,比如需求预期是WEB后端应用,而应聘者都是从事手机应用开发的话,那么这种情况下,面试时要着重考查基础知识和分析问题解决问题的能力。但是一般希望不大,除非此人对WEB开发熟悉,因为宁愿选择有相关经历的,即使基础差了一点。
做好前期准备工作
● 评估应聘者是否符合职位
主要要做的事情是阅读应聘者的简历,看是否符合预期:如果与预期相差较大,要么不面试,要么推荐到其他更适合的项目或者部门;或者虽然相差较大,但觉得有潜力可以培养,则也可进行面试。其实这个应该是招聘应该做好的功课,否则会浪费大家的时间,所以招聘人员或者猎头最好能有了解一点技术背景,以确定哪些领域需要哪些技术,以提高效率。
● 通过网络了解应聘者的背景
比如查看应聘者的博客,查看其所写的代码,或者他的作品,他的微博,他的社交圈子。如果应聘者有参与开源社区,那一定要去看看其代码,从其代码可以看出编程风格,语言能力,解决问题的思路等等,可以对一个人的技术背景了解个大概,有人说看到应聘者的代码就可以略去面试,虽然夸张,但却不无道理;通过其博客可以看出他的文档能力,表达能力,爱好等等;通过所关注的微博可以看出他的兴趣在哪里;更能通过社交圈子看出他大概是一个人什么样的人。除了基础知识,分析解决问题的能力和业务领域知识外,还有其他方面的能力也在日常工作中扮演很重要的角色,比如:代码的规范程度,编程风格,工作态度,责任感,文档能力,办公能力是否热爱编程等等,这些在面试时无法直接了解,就需要做一些事先的调查工作。
● 准备面试问题,不要现抓
对于可以进行面试的人,也要按照预期选定一些必须要问的问题和一些可选的问题,以考查应聘者到底能否符合预期需求。
这些准备工作用30分钟就可以做到,但却是一个重要的参考,能大概看出这个人的水平。至少能看出一个人是否真的喜欢编程。
同样,对于应聘者来讲也要做充足的准备工作,了解公司背景,技术实力,产品和大致战略;复习基础知识,整理业务知识,总结和回顾。
总之,要想有一个比较理想的面试结果和更高效的找到人才和得到工作,面试官和应聘者都要做好准备(do your homework)。
面试官要考查的技术内容
● 基础知识,无论你工作多少年,无论从事哪一个领域,基本知识是必须的,不能少的。
→ 编程语言能力,对语言的理解
→ 算法和数据结构
→ 面向对象方法
→ 设计模式
→ 开发方法,敏捷,TDD
→ 网络知识,HTTP,Socket
→ WEB知识,HTML,JS,CSS,AJAX等
→ 操作系统,进程,资源,文件系统
→ Linux/UNIX,SHELL,系统调用,常见命令
→ 数据库,SQL语句
→ 多线程,同步,并发,死锁等
这些通常通过笔试就可以了解,如果不能笔试也要多多少少问一问。
这些基础知识,也能反应出应聘者的态度问题。通常对于有一定工作年限的人,由于长期接触业务领域的东西,对基础知识可能会淡忘,如果一个态度积极的人,会在面试前重拾课本进行恶补,这是积极的表现,这些人在工作中也会更加的主动。正常的情况是经验越多的人知识对基础掌握更好,理解更深入,同时面也会更广。
● 分析问题解决问题的能力
这个部分最好是通过预先设置的一些问题来问,或者是面试官刚刚遇到的问题,或者是与需求相关的将要遇到的问题,也可以从应聘者的项目经历为出发点。主要考查分析问题的思路和解决问题的方式。
● 业务领域知识,这个就要看需求预期了,也要事先准备好与业务相关的问题。
如果预期的业务需求是后端开发,就要重点问题后端相关的问题,数据库,性能,安全等;如果是Android平台开发就要问题Android方面的问题;如果是网络就要细细的问题网络协议,HTTP或者TCP/IP或者Socket的问题;如果是管理者就要问题人员管理,项目管理和风险控制的问题等。
总之对于技术背景的考查,最好是事先根据公司战略,业务需求和项目需求设计好足够的问题,以确保问题的质量且能真正体现出应聘者的水平。现抓的问题,或者网上常见的问题不一定能真正反应出应聘者的水平。另外需要注意的是千万别把题搞错了(曾经公司的Java笔记题写出了public class SomeClass() {...},人可丢大发了),还有就是面试官要有相对正确的理解(可能的情况是面试官还不如应聘者理解的深,见识的广,如果遇到这种情况千万别乱说,否则丢人啊!),这也是为什么面试官也要事先准备,准备问题查找资料,以免闹出笑话。
录用人的标准
● 看中业务领域经验
经历与需求预期符合度较大,比如都是做WEB前端的,需求是前端工程师,应聘者本身也是一们前端工程师,这时业务领域知识和项目经验应该占主导决策作用。
事实上,这也是招聘时主要的考虑因素,起到决定的性作用,特别是针对社会招聘和一些大型公司,大型公司非常注重专业素养和专业领域里的经验。
● 看中潜力和能力
表现为经验与需求差距较大,但是基础知识很强,或者解决问题的能力很强或者学习能力很强,这时也可以考虑,毕竟软件都是类似的,PC上的高手,转到手机上会很快,并且也会是一个高手。这个通常是对应届生和工作年限较少的人的选择标准。对于工作时间较长的人来讲,被选择机率不大。但是外包公司可能会选择有潜力的人,因为外包本身的项目流动性较大,所以外包公司最喜欢的就是解决问题能力,学习能力和适应能力特别强的人,能快速上手和快速的切换项目。
● 折中:业务经验和潜力
表现为经验与需求相关不大,但又比较有潜力,有能力的人。这是最难决定的情况,也是现实生活中最常发生的情况,这时起主导作用的是面试官的主观感受和公司的文化及人才战略。通常公司喜欢培养0经验的应届生或较少经验的人,培训成本低,且可作长期发展战略。但对于有一定经验的人来讲,公司不愿意承担培训,主要原因是它不稳定。 总体来讲,对于应届生和较少项目经历的人更看中其潜在价值,应该主要问基础知识,分析问题和解决问题的能力及学习能力;而对于工作2年以上的人更注重其经验,表现在其业务领域的知识,且要求业务领域与需求预期相符较好。
面试过程
面试官和应聘者都要以诚相待,相互尊重。毕竟,说到底大家都是出来混饭吃的,都是给别人打工,没有情感瓜葛,也无深仇大恨,所以不要带有感情色彩,更不能无故轻视别人,你可以决定这个人录用与否,但绝对不能对技术以外的事情进行评论或攻击。曾经有一个同事,面试完之后笑话人家应聘者口气重,长的难看等等,也有的同事嘲笑现在的应届生水平太差!这种面试官也是素质极其低下的,个人卫生与长相跟面试有什么关系,跟工作有什么关系?你的口气就香吗?你的长相就好吗?你当年毕业时又是什么德性呢?这种人能做为同事吗?反之,如果在面试时察觉到了面试官带有感情色彩或者与面试无关的东西,或者当面质疑,或者结束面试,即使是再好的公司也不能去!人格是高贵的,尊严是无价!
面试的时候要给应聘者足够的尊重,要以同事的角色来进行面对面的交流,不要以考核者的身份或者做为领导的身份,要像与同事讨论问题那样去面试。如果应聘者不能很好的回答时,要给与纠正和正确的阐述,并令其明白他哪里没答好,这对应聘者是有好处的,也会令应聘者对面试官和公司有更好的印象。这样还能考查出应聘者的其他能力,比如团队协作的能力,沟通能力,对待同事的态度等等,因为这在日常工作中是经常遇到手情况,比如团队在做项目的时候遇到了一些难题,你就需要给其他人解释和讲解,直到其他人明白;或者当发生争论时也要给出足够的理论让同事信服。同时你也能从另外的角度来对面试者做主观的判断:这个人到底能否与我一同工作。但是现实的情况是面试官并非人才需求方,换句话说应聘者成功入职后并不是与面试官一起工作,这时面试的质量和效果也会下降。
保持幽默,适当的幽默一些,保持一个轻松的气氛,毕竟是一个面试,不是什么关乎国家利益,什么生死存亡,什么爱恨情仇的大事,何必搞的那么紧张呢?
面试是双向选择的过程
应聘者也要根据自身的特点和职业生涯的方向来确定这个公司和职位到底适不适合我。所以面试官在面试时候一定要在政策允许的情况向应聘者提供尽可能详尽的关于公司关于项目的信息,以便让应聘者更加真切的了解公司的文化和背景,以做出最终的决定。同时也要留给应聘者提问的机会,并对问题做出真实的答复。
经历,经验,潜力与能力
经历只能代表过去都干了什么,不等同于经验。
经验表现在基础知识的掌握程度,比如对语言的理解,对面向对象的理解,对开发方法的熟悉程度等,业务领域的熟悉程度,不光知道某个功能怎么实现,还更知道有几种方式,哪种情况用什么方法等。经验的最重要的的价值在于,当再次遇到类似的问题时能够依据以往的经验能够在最短时间内给出最佳的解决方案,当然这里的最佳是相对来讲,也即针对问题的特点和环境在限制条件下的最优方案。经验是靠总结的,也就是说当做了某些项目之后要进行深度总结:做对的地方在哪里,特别的,哪些地方做错了,为什么错的,还有哪些地方做的不够好,还有哪些替代方案,如果某些条件和环境发生变化要如何应对等等。要进行深度总结,融会贯通,不断思考,升华提炼之后才是经验。就好比Frederick Brooks一样,做了一个OS/360项目后,总结出了一本书,他在OS/360项目中干的事什么设计啊,什么管理啊,什么文档啊都不是经验,那是经历,而《人月神话》才是他的经验。如果他仅像写日记那样记述他在项目中的工作的话,最多只能当一本普通的小说来看,但是他的总结,思考和升华提炼之后的经验《人月神话》才得以流芳百世捧为经典。
那么总结,思考升华提炼之后的产物---经验---应该是以什么样式来存在呢?应该是文档,博客,论文和书籍,无论是公开或不公开。纵观现在的软件界,但凡那些公认的牛人都有自己的博客和书籍,并且都获得好评和被业界人士视为学习必参考之物。另外人类所有的文明,先进的学说与思想或者科技成果也都会以书籍或论文的形式留传下来。当然,不能太绝对,也有相当一部分人就是不喜欢写东西,但他们也都是一流的高手,这些人都是智商高的出奇的人且记忆力超群的人,要不然,年复一年的解决过那么多问题,怎么可能记得清,天天都在思考,想法怎么记得住?猜测这些人也会把自己的经验写下来,只不过未公开罢了!
潜力表现在分析问题解决问题的能力,思维,思路,未来所遇到的问题不可能与所经历过的问题完全一样,或者大部分相同,如果那样生活也失去了新意,工作也变成了重复性的了,但很多人都喜欢新的挑战和解决新的问题,同样项目也要不断的发展不能停步不前。当遇到新的问题新的挑战的时候,思路与思维就很重要,思路一旦错了,后面就什么都白费,正如那句话讲的思路决定出路。
再说能力,简言之能力就是能把复杂的事情变得简单,能把不可能的事情变成可能,能把从来没做过的事情做好,跟经历一点关系也没有。身边的例子很多,有一个同事之前是做C#的,但是过来做Android,刚进来就去定制IncallScreen,结果做的很漂亮,连有Android经验都叹服;后来他带项目,带着几十个某些连Android是啥都不知道的人去给运营商定制一些应用,最终也是所有的人都满意;再后来他做部门主管,也把部门带的很好!还有一个同事是学生物的,毕业后进来,被分配一个Linux Kernel方面的任务,居然搞定了,折服了老大们!后来他带项目,面对的都是极品的客户,最终也都满意!再后来当部门主管,也干得很好,再后来临危受命去接管招聘与培训的烂摊子,现在呢无论是招聘还是培训都比以前好的很多!还有一个同事本身是Linux Kernel方面的高手,但第一次带项目领着四个连BSP是啥都不知道的应届生,成功的把Linux Kernel移植到了一个新的板子上,最后客户请他们去做足疗。相信类似的例子还会很多很多!如果问他们项目怎么带,部门怎么管,怎么更好的招聘,怎么更好的培训等等,他们可能不会说的很好!但是你给他任务,他却能完成,这就是能力
对应聘者而言
做好职业规划
这其实是个比较难的问题,所有人都明白职业规划的重要性,所有人也都建议要做职业规划,但是真正能做的有几个呢?真正做可执行的职业规划又有几个呢?最终能执行付诸实战的又有多少呢?但,至少,要有一个大致的方向。人的一生是一个不断的自我认知的过程,其实“我是谁”,“我究竟想要什么”是很难回答的问题,有的人一辈子也不明白为啥活着,到临终前也没弄明白我是谁。这听起来像是哲学里的命题,但是在夜深人静的时候你轻轻的问自己:我是谁,我到底想要什么,我为什么而活时?也会很茫然!所以职业生涯规划也并不是那么好做的。可以读一读《高效能人士的七个习惯》里面的以始为终,确定人生使命宣言,进而指导各个方面包括工作的计划。
其实对于大多数人来讲,想要的无疑是一份更好的工作。什么又是更好的工作呢?更好的薪资待遇,更好的企业文化(办公室文化),与更优秀的人为伍,正所谓不怕虎一样的对手,只怕猪一样的队友。这个理由其实足够了。
明确需求:弄清楚职位信息
这个十分重要,就好比软件中的需求,他们需要的是个什么样的人,将来要负责的是什么样的工作,这个必须搞清楚。通常这个在公司的招聘信息中都会明确的写出,但也有些公司写的很模糊。也有的时候是猎头或者朋友推荐,所以没清楚的告诉你是一个什么样的职位,有什么工作职责,需要什么样的技术背景。总之,最不理想的情况就是你连职位信息,工作职责,技术需要都清楚的情况下去面试,这成功机率很小,等同于是在浪费双方的时间,亲身经历深有体会。所以,无论机会源自哪里,作为应聘者的你一定要搞清楚职位信息,工作职责和技术需要,通过推荐人或者朋友或者什么其他途径,总之一定要搞清楚!
做好准备工作(Do Your Homework)
明确了需求以后就好办了,从工作职责和技术需求就可以确定需要的是哪方面的知识,甚至可以通过互联网,经验和朋友那些挖掘出可能的问题。通过互联网,和书籍熟悉相关的背景知识,把自己的项目经验总结一下,把知识进行梳理和总结,找一找面经和可能的问题,最好再进行模拟面试,演练演练。就连乔布斯在发布了众多产品以后,举行发布会都要做很多准备和预演,更何况我们?凡事预则立,不预则废!多做点准备反正没坏处!对于所有可能被问的问题,准备好答案,并且准备好相应的实例,实例是最有说服力的。
其实如果你有一个相对清晰明确的规划的话,应该会有一个心仪的公司和职位,所以可能几个月前就开始准备了!
向面试官提问
这是了解公司,了解项目,了解一切你所需要的机会。一定要问,但不能问太傻的问题(比如是否会被录取或者是否会加班之类的),不问说明你要么还不知道你在干嘛,要么就对公司或职位不感兴趣。
● 技术面试时可以问的问题:
→ 为什么会有空缺/为什么要招聘新人?
这里的回答能大概看出公司的文化:前任为啥离职(发现了更好机会,受不了压力,政治斗争失败等等)能反应出企业的文化和同事之间的关系以及办公室的风气,但这只能作为一个参考。如果是业务扩张,那可能反映出公司发展的还比较好!
→ 如果入职,将负责什么样的工作
虽然这在招聘信息中会有,但是很多时候都与实际有出入,也许因为公司也不确定究竟需要啥样的人,也许变化太快,总之入职后具体的职责将与招聘时有所不同。所以可以详细的问问,以确定到底这份工作适不适全自己。
→ 如果某个人的工作与兴趣并不相符,可以调整吗?
这能体现出企业的文化的人才战略,好的公司会尽可能让每个人做自己最感兴趣的,以发挥最大的价值,所以,会根据实际情况进行调整。
→ 公司有什么样的培训计划,是否有专门的培训部门或才聘请外界机构来培训
同样也能体现出公司对人才是否重视,优秀的公司会对内部员工进行培训,技术上的,办公能力上的,职场能力,心理方面的等,不用多说,如果有对员工个人的成长是有益处的。
→ 向面试官征求关于成长方面的建议
如果我是面试官肯定不会拒绝,特别是对于应届生或者经验比较少的人!作为一个学长有义务给与建议和帮助。但面试官要注意不要随便乱说,要认真负责,给点真正有用的建议,如果想不出来说别说,也无妨;另一方面,应聘者也要注意,取其精华,去其糟粕,找有用的,其他的扔掉。
→ 与面试官交朋友
同样我是不会拒绝,人海茫茫,二个能相遇并坐在一起聊几十分钟,也算不容易,更何况都是做挨踢的,兴趣相投,何乐而不为呢?
● HR面试时可以问的问题:
→ 户口档案社保等杂项
生活在天朝中,作为一个老百姓,这些东西也是很重要的一部分,不可忽视。
→ 薪水福利待遇,假期,请假流程
这个你懂得,不解释
→ 职位晋升空间
除非你想一辈子混饭吃,否则还是考虑晋升空间吧!
→ 奖惩考评制度
优秀的公司应该奖罚分明,光惩不奖或光奖不罚或者不罚不奖都不是好管理方法。人是有惰性的,要靠奖来激励,罚来鞭策,如果啥都没有,可能公司也是在混饭吃,进去了也没前途!
→ 员工活动
企业虽以利益为终极目标,但是人不是机器,不能天天都干活,劳逸结合是长久之计,某些皮包公司真的啥都没有!自然没人愿意去。
关于面试真的有说不完的话,就先写这么多吧,等以后有了新的想法再来更新。