这篇文章的适用范围其实不仅限于Java后端或Java Web,不过其中有些是拿这方面举例的,在其它方面,大家可以举一反三,应该也能得到些启示。
我们在面试时,会发现有些候选人技术不错,比如在Java Web后端方面,Spring MVC框架也做过,数据库方面不仅有经验,而且还有调优能力,Java Core方面的一些问题也能回答非常好。但由于他们在团队合作或责任心或其它综合能力方面有所欠缺,导致他们的综合竞争力甚至低于一些技术还比他们差的人,进而导致他们落选。
而且在我们的观察到的不少程序员中,会技术但缺乏其它综合能力的情况不在少数,在这篇文章里,本人不想探究原因,而是会给出些面试时的注意点。而且大家还可以在平时,根据本文给出的一些建议来提升自己的综合能力。
开场白结束,以下是正文。
--------------------------------------------------------------------------------------------------
第一部分,如何描述你在项目里的作用?别单说你仅仅coding。
一般这种问题是:“你在项目里干了什么”,或者类似的问题。
回答的时候可以适当夸张,但要量力而行,一般项目里有如下角色。
①需求调研,除非是内部项目,否则一般是项目经理做的,调研的时候会写一些需求和设计文档,也会用UML之类的工具画点图。
你可以说,在项目经理的带领下了解需求;也可以适当说写了一些文档,绘制过一些UML图;也可以说,如果在开发过程中遇到不清晰的业务,会及时和项目经理或相关人员确认。
②设计,包括文档上的设计和代码上框架的设计以及数据表的设计。一般是比较资深的人做的。你可以在了解各细节的基础上,说参与过部分设计。
③开发,这个就不说了。
④测试,你自己的模块需要你自己测试,此外还有专职的Test人,如果你了解一些黑盒、白盒以及自动化测试工具,或者是JUNIT等技术,可以说出来。
⑤部署上线,包括打包上传发布到Linux之类的工作,这个很考验一个人的动手能力,你可以去专门了解这方面的技术,比如怎么写Ant,怎么deploy到Tomcat,websphere,怎么到Linux上运行,然后可以根据你的项目情况适当准备一下。
除了写代码,程序员在项目里或多或少会做些其他的事情,比如测试或者部署上线,但我们在面试别人的时候,不少人真就说他只参与了编码工作。对此我们一般会深入提问,比如会继续问,你是否参与了设计、测试等。如果他在我们提问后能准确说出还做了其它事情,那么不会有什么不好的影响。但万一你遇到一个不大擅长挖掘候选人能力的面试官,而且你只说会coding,那他就真会写上“项目中除了coding基本没干过其他事”这样的评语。
这种评语的潜台词是,除了写代码,你没有单元测试、数据库设计、模块设计、系统发布等各种其它的经验,大家可以自己比较下其中的后果。
第二部分, 一定要找机会说出你的团队合作能力
面试过程中,我们一般会随口问一些和项目相关的情况,比如这个项目有多少人?都是做什么的?然后再进一步问,如果你在开发的时候遇到问题怎么办?不管问题是什么,其实我们想了解的内容用大白话说出来就是:“你是不是能和别人一起协作开发,会不会是刺头,遇到问题你是积极主动地解决还是消极地得过且过”。
很多人都会漫不经心随口回答,但一般来说,面试官在得不出候选人团队合作能力之前,是不会终止提问的,因为在软件开发里,不可能一人把什么事情都做了。
我们也遇到过一些人,在回答这类问题时过于简单,实在没法得出结论,就只能写“沟通和理解能力有待提升(因为你总没法理解我们提的问题,或者未表达出你的意思),没法考查团队合作精神”。如果技术可以,即使他进下一轮面试,也会因为这个原因出局。
下面列出一些关于团队合作方面需要大家展示出的能力,其实这些能力大家应该在谈吐中展示,因为这方面没什么太多的问题。
需要讲出(或者表现出)的要素 |
回答样式和面试官的考查点 |
沟通能力如何 |
如果有问题,我会及时和项目经理(或者测试人员,或者其他相关人员)确认和沟通,如果遇到我不太明白的问题,我也会及时沟通,不会按我理解的做下去 |
需要讲出(或者表现出)的要素 |
回答样式和面试官的考查点 |
|
同时,你需要在面试过程中展示出比较好的沟通能力,比如有疑问点赶紧确认,说话别吞吞吐吐,别太自大 |
理解和表达能力如何 |
这个没什么样式,表现形式是候选人能很好理解面试官提出的问题,即使个别地方不理解也能及时问懂,然后说出来的话有条理,能让面试官听明白 |
解决问题的方式 |
你需要想办法说明你是会积极主动地解决问题,而不会消极地回避问题 比如你可以说下在之前项目里解决问题的方式,你可以说,你是先通过查询网络资料尝试自己解决,如果再有问题,可以和你的同事或者领导一起协商解决 |
是否适合和其他人一起协作开发 |
候选人不会傻到自己说团队合作能力不行,一般面试官的考查点是: ①看看这个人的说话方式是不是很冲,是不是过于自大,是不是有什么沟通障碍,从中推断出这个人为人处世的大致情况 ②直接问对待问题的态度 ③有时候深入一个问题不断问,做类似的压力测试,看看候选人在被逼急了的情况下能否还心平气和 |
能不能适应在外派环境下工作 |
外派一般钱会多些,但可能压力会大些,因为毕竟甲方的压力会转嫁到外派的头上 如果你应聘的是一个外派的岗位,最好别太有个性,最好让面试官感觉你是“逆来顺受”的,这样你的成功几率就会大得多 |
我们在招聘的时候,如果某个项目比较着急,或者是某个人员流动比较多的项目,或者在招聘的淡季,往往会降低技术上标准,比如本来要对Spring MVC很熟悉的,现在只要做过就行,但不论怎么降低要求,团队协作能力不会降。也就是说,即使你能力稍微欠缺些,但很擅长和别人一起协作开发,机会就要比技能很强但沟通协作有问题的人要多得多。
第三部分 当问项目周期规模和技术时,是在考查你值多少钱
我们往往会随口问,XX项目你做了多久,多少人做,或者是,你项目里用到了什么新技术?
这时请大家注意,一旦你有大项目经验,或者用到某个新技术,你的身价会适当往上涨一些,但如果你不注意这方面的回答,让面试官感觉你只有小作坊、小团队的经验,则很可能会给你一个比较低的工资,因为某些技术、经验只有从大项目中才能得到。下面列出一些大项目的常用标准。
①客户是比较知名的银行保险等大公司。
②外派到某个著名大公司。
③展现出在项目里用到一些比较值钱的软件,比如IBM的WebSphere、Oracle之类的,而不是用免费的,因为大的项目能负担得起比较大的软件花费。
④一般在知名公司做的项目都可以理解成大项目。
如果你实在没有,可以往“长项目”上靠,比如一个项目大概10个人规模(别多说,不是大项目,人多了别人未必信,而且10个人我们都嫌多,可以说在7个人左右),做了8个月以上,你是从需求分析开始做起的,一直做到上线和维护,毕竟这样你还能深入了解软件开发的周期,而且在项目里做长了你积累也多,这个时候你在谈价格的时候也有底气。
如果我们在面试的时候,别人告诉我,他不断换项目,每个项目都做不长,比如三个月到半年,而且做的项目客户背景总换,我们就没法写上“有大项目经验”,或者是“做一个比较长的完整项目”这种评语了。
第四部分 想尽办法展示你的责任心和学习能力
责任心和学习能力看上去都是虚的,似乎没法衡量,但在面试的时候,我们会通过一些问题旁敲侧击地问出来,相信有经验的其他面试官也都会做到这点。
提问方式 |
需要展示的要素 |
如果你的项目进度比较紧/或需要加班/或需要出差/总之要你额外付出,你会怎么样 |
①先别问回报,比如别问加班是否有钱,因为不管你问不问,该给的总会给你 ②态度很诚恳,语气很平常,表达出愿意的意思 ③不仅要完成手头的事情,而且要经常和对应的人沟通协商,或者帮助其他开发人员、测试人员,或者帮助项目经理一起想办法解决问题 ④可以适当准备几个在上个项目里你责任心很强的例子,一般只要候选人语气措辞可以,说得头头是道,面试官听着像就会让他过关 |
下面列下学习能力方面你需要展示的能力。
考查点 |
需要展示的要素 |
你在以前的项目里,有没有遇到问题?你是怎么解决的 |
①总会遇到问题的,不可能不遇到 ②先自己用点时间看,但别无限期看 ③和相关的人协商,协商的时候要能说出你哪块不懂,或者说出你的想法 ④同样可以准备几个例子,但别夸张,比如遇到过在一周内学好一个大数据框架的,面试官就有些半信半疑了 |
这些方面其实是考查一个人的潜力,如果公司对候选人要求不高,只想招个初级的,其实也知道人和人之间差别不会太大。若这些方面你表现得很好,那么你入职的机会就会大很多。
第五部分 总结(外带讲述提升这方面能力的技巧)
在本文里,我列出了一些说辞和技巧,但这总是有穷尽的。在平时,大家可以通过如下的途径来提升自己的综合能力。
第一,一定得认真参加项目组的会,在其中得认真听项目经理如何分析项目的需求,如何划分任务,如何制定进度。
第二,平时在项目里,多和业务人员、 测试和实施等做非coding的人接触,观察下他们在做什么,怎么做。
第三,平时一定得多和别人沟通。我就见过一个人,刚毕业,开始很内向,表达能力也不算好,往往词不达意。但我就逼着他多说话,多表达,别怕丢脸别怕别人笑,也是就1个月,他的沟通能力大大改善,经过半年后,甚至能力能赶上和客户打交道的人了。
第四,别怕加班,别推诿事情,多做事情就相当于让自己多锻炼。
第五,如果你的项目组确实很难呆,比如项目经理或组员很难打交道,你尽量忍,至少在这个项目组里呆上半年。因为一方面社会上各种人都有,大家得学会和不同的人打交道,另一方面,如果你在一个项目的时间少于半年,后继面试官大多数会认为是你个人的问题。
本人根据面试官的经验写下此文,而且这些内容都来自java web轻量级开发面试教程,这些内容都是从诸多候选人的表现中总结出来的,扪心自问,字字谨慎,不敢误导大家。事实上,本人根据这些经验辅导过不少将要参加面试的学生,从反馈上来看,多少有些帮助。这也是本文有自信申请加入首页的理由(当然博客园藏龙卧虎,如果本文没到标准,本人还将继续努力)。最后感谢大家的阅读,大家如果在面试写简历或其它方面有任何问题,可以给我留言,本人将尽可能地解答大家的问题。