随笔 - 158  文章 - 0 评论 - 1145 trackbacks - 0

    在之前的一篇博文分析若干没面试机会和没体现实力的简历里,我讲了些有实力有项目经验但简历没写好的情况。不过对于有些同学,当前情况确实不容乐观,比如做了若干年后想转行,或者非计算机相关专业想要做IT工作,或者有“频繁跳槽”等情况,总之简历拿不出手。这个时候,也不用慌。

    我本身做过兼职IT培训,也在外企和互联网公司做过技术面试官,见到过不少候选人,如果简历上去掉最近一两年的经历,绝对连面试的机会也没,但他们最后确实成功入职。对于这些人,我非常敬佩,我平时也得学习他们积极上进的精神。在本文里,就将专门介绍这些同学成功的诀窍。

1 面试有技巧,但能力和当前经历是关键

    我之前写了不少讲面试技巧的博客,也出了两本面试相关的书, Java Web轻量级开发面试教程Java核心技术及面试指南,其中一方面是讲述如何归纳总结提升能力,另一方面讲述面试技巧,讲过如何挖掘提炼简历,但从没讲过如何弄虚作假修改简历(以后也不会讲)。面试技巧对大家有什么帮助呢?

    1 能力本身就已经到位,通过面试技巧能更好地表述自己。

    2 能力可上可下,通过面试技巧能扬长避短。

    3 能力稍有欠缺,通过面试能知道自己需要补充哪方面知识点。

    但如果能力或当前经历不行,面试技巧的帮助意义就不大。比如是个Java后台开发岗,小A最近1年都没做Java,那么再怎么说也无法改变这个事实,又如小B最近2年干的是测试、实施或其它和开发无关的工作,那么简历再怎么写,也无法改变“最近没有Java项目开发经验”的事实。在这个时间点,刷题和练面试说辞可能就意义不大了,因为简历发出去后,比较好的公司未必会给面试机会,这个时间段,更多地就该找个能提供实践机会的公司。

2 转行和积累经验,从小公司外派公司做起

    大的或好的IT公司,可能会简历的要求会比较高,比如要有若干年的相关项目经验,或者最近用到的技术栈需要和职位需求相匹配,但不是所有的公司就这样。

    比如外派,就被一个外包公司外派到xx银行、xx公司或xx现场,也就是去做乙方。这类职位,往往只要甲方公司面试成即可,而甲方公司给出的工资可能会低于本公司同类岗位,所以要求未必高,只要能干活就行,所以面试时要求会适当降低。

    又如楼层公司和创业公司,可能无法提供稳定性,工资也可能低于平均行情,但这类公司往往很难找到合适的开发岗,所以面试要求也不高,也能干活就行。

    相比之下,找这类能提供实践机会的公司,先考虑在本公司外派(即外包公司接到活在本公司干),再考虑外派到甲方场地。毕竟这两类公司规模都不小,而且外派到甲方甚至还有可能转成甲方正式员工。如果再不行,考虑楼层公司和创业公司,说实在话,这些公司过了几年未必还在,但提供实践机会绰绰有余。 

3 如何证明自己“能干活”

    上面提到的标准是“能干活”,相比大公司“技术熟练”的标准,这已经是很低了,下面我们来对比下。

 

能干活

技术熟练

项目经验

能通过若干个学习项目了解框架技术(比如Spring Boot)的流程,有商业项目最好,不论商业项目年限

一定要有商业项目经验,且有年限要求,且商业项目里用到的技术点需要和职位要求很匹配

技能点

会用常用的API方法干活

更得了解底层

数据库

会增删改查,最多外带索引等非常基本的优化技能

了解比较多的性能优化技能,对数据库集群等高级知识点要有一定了解

分布式架构

会基本的操作,比如用nginx做负载均衡的配置方式,且未必要有商业项目经验

得在商业项目里用过,且得了解一定的底层细节

综合评价

能在项目经理带领下干活,有问题提出来,别拖进度即可

熟悉项目开发各流程,有问题尽量先自己解决,在项目里可以独当一面

    从上表来看,“能干活”的标准真不高,那么如何体现出这点呢?

    1 尽量多带相关技能的商业项目经验,如果没有,用学习项目凑也行。

    2 在平时学习中多掌握些常规的用法,比如Java多线程,Java集合,以及框架知识点,在简历中项目描述里,多列些相关技能点,面试时能说的上来。

    3 数据库方面,至少用过1种主流数据库,复杂SQL语句没问题,最好能掌握一些缓存数据库和NoSQL技能(未必要有商业项目经验)。

    4 让人在读完简历后,感觉到你之前确实做过相关项目,至于这个项目是毕业设计项目还是培训班项目还是商业项目,那当然最好是商业项目了。正因为你有过类似项目经验,那么这些外派公司(或小公司等)能感觉你至少进来以后就能干活。 

4 了解简历痛点,用时间去冲淡

    简历上如果出现关键性的问题,一些大公司可能未必给面试机会。

    1 比如最近处于失业状态,且时间超过2个月,这证明工作意愿不强或者能力不行。

    2 最近换工作太频繁,这说明稳定性不强。

    3 相关年限不足,或者最近半年没用到相关技能。

    不过上述痛点可以用时间来冲淡,比如你最近2年比较稳定,而且干的都是相关技能的活,那么比如2年前有不稳定情况,或者有一定时间的不在职状态,只要你最近的项目里用到的技能非常匹配,你至少有面试机会。只要你面试表现出色(这个阶段就有基础准备了),那么之前的不稳定性就无关紧要了。

   这里,前提是“正视现实”,正视后不能再得过且过,而是得认真踏实,其实这样过个两年,简历就能非常好看,而且也有挖掘的潜力了。

5 培训班是用钱买时间买经验,但是否上,得看自己情况

    说到这里,不可回避的话题是培训班,是否要上?

    第一,培训班是花钱买时间,你出了这些钱,培训班能帮忙省去不少试错的时间。不过如果当前你有机会通过各种手段进公司实践,那么自然以进公司为主。况且,目前有不少视频教程,这个费用相比培训班而言,要少很多,如果你有足够的自制力和执行力,通过自己看视频学也是一种方法。

    第二,培训班不是万能的,在进培训班前,最好先尝试下通过修改简历海投简历找到一份实践的机会。还是这句话,关键要看自己努力程度,如果你平时得过且过,那么谁也没法帮助到你,包括培训班。

    第三,哪怕真的要进培训班,哪怕培训班号称包就业,你在培训班里也得刻苦卖力,不能指望出了钱就万事大吉。

    有句话叫:最了解你的人不是你的朋友,而是你的敌人,我在技术面试的时候,见过有些培训班会千方百计地包装毕业生,合理包装本没问题,但如果招个过度夸张但实际能力不行的,技术面试官就会被说,所以说技术面试官和培训学校相互敌对并无不妥。我面试多了,甚至能从简历上看出这位候选人来自哪个培训学校,甚至也能通过候选人在面试的表现风格,推断出是哪个培训学校哪位面试辅导老师帮忙辅导的面试。 

    话虽这样说,但如果候选人本身项目经历可以,而且技术可以,我并不会因为候选人来自培训学校而有歧视,如果招的是外包(Vendor)岗,面试要求更低。如果你真的进培训班,那么如下的这些建议对你会有用。

    1 准备简历时,别用给定的模板项目描述,因为同期毕业生,如果用同一个项目模板,项目经历会很雷同。也就是说,你最好用你自己的话把项目经历说一遍再写下来。

    2 别太多注重智力题算法题,这些都是辅助的。多准备些项目描述,尤其是结合项目描述说清楚职位要求的技术。

    3 别仅仅停留在“会用技术” ,再准备些亮点,哪些算亮点呢?(SQL虚拟机等)调优、(Spring Cloud等)框架组件、底层代码、项目管理发布流程(比如maven,jenkins)或在linux项目里看日志的技巧。

    4 项目千万别高大全,比如为期3个月的培训班,你做出了一个物流项目,这谁都不信,三个月的时间,最多在一个维护项目上修修补补也够了。

    5 有些培训学校的老师,可能自认为能把控面试过程,所以手下的学生在面试过程中会揣摩面试官问题的用意,然后自动地回答推断中的下一个问题,总之在面试中会过于强势,用个不恰当的成语来形容:张牙舞爪,比较恰当的成语是:色厉内荏。面试过程中始终得谦虚,哪怕听出面试官问题的用意,说些面试官爱听的话即可,或者通过三言两语点出相关问题,等面试官来问。

    写到这里,发现上述建议不仅是对培训班有用,而且再次啰嗦一下,当前技术不行更得抓紧,拿出高考一半的劲头看代码看视频看技术就行了。

    在这段的最后,我列些会让培训项目和学习项目穿帮的问题,问题答案大家自己想。

    1 问项目细节。这个项目规模多大,盈利多少?客户是谁?最后有没有上线?有多少开发多少测试?最后客户是怎么验收的?

    2 问部署细节,这个项目部署在什么系统上?用什么工具打包部署?数据库服务器如何设置?数据库服务器如何做到热备冗余?

    3 问项目的管理和开发方式。这个项目的开发方式是什么?假设回答是敏捷开发,那么再问其中有哪些实施要点。

    4 问真实项目必不可少的要素,比如一个项目上线后,总会通过网关接入,大多有热备冗余和负载均衡,如果是Java项目,可能会运行在tomcat或spring boot等环境中。我就问,项目的网关是用什么?如何实现热备冗余和负载均衡?如何部署到web服务器上,部署后配置文件如何管理?部署后如何看线上日志?如果出现问题,如何把新代码发布到线上?

6 大公司好公司的技术要求?这些就是努力方向

    写到这里,我们的一个核心观点是,如果当前项目经历和技能不行,通过各种方式狂补,再通过海投简历等方式,的确能找到实践机会,但这仅仅是个过渡。 

    刚才也提到了,这个时间段能应聘到的岗位,大多可能是外派或者是规模比较小的公司,但人总要往高处走,在第3部分的表格里,大家已经能看到大公司好公司的要求,这里再从面试说下大公司的要求,这些就是大家的努力方向。

    1 熟悉主流框架技术,不仅要能山寨代码,业务上出了问题更需要通过debug定位问题,当然无需定位到框架层面,定位到业务代码、数据库代码和ORM等代码即可。这其实不难,做过半年以后,该学的都能学到,而且通过视频等方式,了解底层代码也不是难事。

    2 进一步了解些分布式或微服务的技术,比如Spring Cloud系列,服务治理Eureka,负载均衡Ribbon,容错Hystrix等,又如阿里系的分布式组件。如果有项目实践机会,再通过看视频等手段,这些也不难学。

    3 不仅要会做项目,而且要了解项目的管理方式,比如敏捷开发,项目打包部署手段,通过sonar管理代码质量。

    4 遇到问题了,能通过debug等方式定位问题并提出解决方案,这就要求有remote定位问题的能力,并要求能会基本的linux文件操作的命令。

    5 从总体感受上来看,候选人除了技术能力到位以外,看上去还得有责任心,表达可以,有一定的分析和解决问题的能力,在项目里能独当一面,且有上进心。虽然这些描述性文字很多,但如果IT人事要不断上进,而不是坐等被淘汰,这些要求其实并不过分吧。 

    说句得罪人的话,目前公司数量太多,而且各层次的公司都有,所以只要经过努力,再不行再经过培训学校加持,各能力段的要找到份实践机会其实并不难。我知道在有些公司里,员工只要稍微熟悉些业务后,就会不断重复劳动,如果主观上不努力,可能就无法接触到项目之外的技术,而且做久了,如果态度不端正,就有可能在舒适区里混日子。

    但话说回来,有实践机会是个质的飞越,因为很多技术在没有接触到的前提下,还是比较枯燥的,但如果有实践机会,平时多少能接触到相关技能,学习的效率就能大幅度提升,换句话说,哪怕之前什么都不懂,只要进了一个小公司,有了机会接触到相关技能,后面的学习大多就是靠敲多代码多看技术文章了。 

7 自信,最重要的是自信,从动荡公司到稳定公司乃至好公司,最多只要2年

    如果在小公司干久了,可能一直处于动荡阶段,或者格局有限,会导致员工自信心不足,比如我见过一个工作年限在10年左右的人,各类公司都干过,但都比较动荡,论能力好歹能达到大型互联网公司资深开发的水平,但当我要推荐他去面试时,会给自己找很多技术不足的理由。

    其实不少比较上进的IT人,迈过了最初的困难期找到了对口的工作,而且在工作2年后也积累了不少经验,这时就应该大胆地去尝试更好的机会,如果是因为自己沉迷于舒适区的安逸而不肯上进,这个属于咎由自取,但如果因为自信心不足,这就有些可惜了。

    所谓面试造核弹,工作拧螺丝,一些大型互联网公司还有一些好的公司,其实对能力要求并不如想象中那么高,而且有2到3年实践经历以后,就可以通过简历技巧和面试技巧来让自己在大公司里找到工作。但如果一旦因为自信等原因在底层公司里呆久了,错过发展机会是小事,把自己的技术栈、视野和发展前景限制在一个很小的区域,这才是大事。

    要知道在一些大公司的平台上,技术选型和项目管理方式是在小公司里无法想象的,大公司的牛人所在的技术高度也是在小公司无法感受到的,所以大公司能给到的发展高度也绝非是在一些小公司里能想象到的。 

8 总结,求推荐,版权说明

    最困难的阶段是开始阶段,本人在筛选简历和面试的过程中,也能深深感受到众多上进的IT人在这个阶段的无力感——知道该学什么就能靠时间和体力劳动来堆积,但不知道怎么学的话,这种迷茫感或许只有当事人才能感受到。

    在这个阶段,得多靠实践多靠学习提升技能,而不是再一味地优化简历。在方法得到的前提下,踏实上进加自信心,2年后绝对有机会进好的公司。而本文给出的一些方法,多少有些操作性。

    本人前后用了周末3个小时写成此文。如果大家感觉本文有所帮助,请帮忙推荐此文,如果感觉文章内尚有不足,也请通过评论多多帮助本人,本人不胜感激。

    关于转载有如下的说明。

    1 本文可转载,无需告知,转载时请用链接的方式,给出原文出处,别简单地通过文本方式给出,同时写明原作者是hsm_computer。

    2 在转载时,请原文转载 ,如要在转载修改本文,请事先告知,谢绝在转载时通过修改本文达到有利于转载者的目的。

posted on 2019-06-10 10:13  hsm_computer  阅读(...)  评论(... 编辑 收藏