这篇文章的适用范围其实不仅限于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个月,他的沟通能力大大改善,经过半年后,甚至能力能赶上和客户打交道的人了。
第四,别怕加班,别推诿事情,多做事情就相当于让自己多锻炼。
第五,如果你的项目组确实很难呆,比如项目经理或组员很难打交道,你尽量忍,至少在这个项目组里呆上半年。因为一方面社会上各种人都有,大家得学会和不同的人打交道,另一方面,如果你在一个项目的时间少于半年,后继面试官大多数会认为是你个人的问题。
本人根据面试官的经验写下此文
小伙伴们有兴趣想了解内容和更多相关学习资料的请点赞收藏+评论转发+关注我,后面会有很多干货。如果在阅读过程中有疑问,请留言讨论
此份文档详细记录了千道面试题与详解;
!
私信我回复【03】即可免费获取
很多人感叹“学习无用”,实际上之所以产生无用论,
是因为自己想要的与自己所学的匹配不上,这也就意味着自己学得远远不够。无论是学习还是工作,
都应该有主动性,所以如果拥有大厂梦,那么就要自己努力去实现它。
以上学习资料均免费放送,最后祝愿各位顺利拿到心仪的offer
作者: hsm_computer
原文出处:(Java后端 Java web)面试时如何展示自己非技术方面的能力(其实就是综合能力) - hsm_computer - 博客园