在大多的JD(职位介绍)里,会写明该职位需要xx时间的相关经验,换句话说就是需要在简历中看到一定年限的相关商业项目经验,否则估计连面试的机会都没。
在本文里,不讨论这种门槛是否合理,而会以Java相关经验为例,说说面试官甄别真实商业项目的方式,并以此为基础讲述在简历中描述项目的要点,并进一步给出在面试中介绍项目的相关技巧。
一、和学习项目相比,商业项目为什么值钱?
为什么在筛选简历和面试过程中要甄别学习项目还是商业项目?
1、学习项目里,只要跑通正常流程,无需考虑异常处理机制,也无需经过高并发情况下的压测。
2、学习项目里,数据库方面,只需增删改查,而商业项目里会涉及到优化甚至集群。
3、学习项目里,模块间功能调用基本就靠写类写接口,而商业项目里,需要考虑微服务高并发场景,甚至需要考虑服务失效。
4、学习项目里,最多搭建个web服务器,把代码一扔,直接跑就能看出效果,而商业项目需要专门部署,还需要写日志,以及根据日志调试问题。
总之,商业项目有很多事情,比如黑盒白盒单元化回归测试、运维部署和需求方扯皮,和其它Team讨论接口等等,这类事情在学习项目里甚至都想不到。
而一些培训班让学员做的项目,在帮助学员提升相关技能方面,或者有些作用,但仅此而已。如果直接在简历中当商业项目写,甚至还会起到反作用。而不少培训班所谓的就业培训老师,让他们自己去面试Java之类的开发岗,还未必能成,可想而知他们煞有介事的“包装简历”和“模拟面试”的效果了。
本人内心自认为尚不算阴暗,不会因为看穿此类项目经验而窃窃自喜,相反更会内心沉重:候选人也算上进,但他们费钱费时间费经历准备的简历和面试技巧毫无用处,而我职责使然又没法让他们过。正因如此,在后文里将给出相关的甄别技巧,说难听点,至少吹牛也得打草稿吧。
二、一些编造项目经验的方法其实是掩耳盗铃
我听说有些培训班所谓的就业辅导,是给学员zh若干项目模板和问题,让学员练习,并通过模拟面试让学员说起来像模像样。甚至有些培训班自己还有公司,所以提供的项目也算有据可查。培训完以后,就由老师带队到北上广去应聘。
有时候甚至不用面试,一些有经验的面试官直接能从简历上甄别出这些虚假项目。比如项目名是xx金融管理系统,xx财务系统,xx学籍管理系统等,时间不会超过半年,技术方面就很敷衍地写一些常规技术,比如Spring MVC、Redis、JDBC等。
或者为了慎重,在面试里可以通过如下问题来确认。
1、你项目是如何部署在什么环境上?发布流程是什么?如果出现线上问题,如何排查?很多培训班项目或学习项目也就随便找台机器运行通就了解,所以候选人接触不到基于Linux部署以及基于Maven和Jenkins的打包部署流程,这个问题可以问出很多编造的项目。
2、在项目里,代码review和单元测试,是怎么做的?同理,很多培训班项目只考虑功能,不考虑这块。
3、这个项目现在是否上线?大多数培训班项目一般都不会上线,同时会有很多不上线的理由。
4、抽出项目里用到的一个高大上的技术,比如dubbo,问负载均衡和失效转移的问题。在不少培训班项目里,对这些分布式组件,仅仅是调用而已,不大会考虑分布式部署的问题,当然估计也没资深的老师能把这块讲透。
很多创业公司,或规模很小的公司,有时候会招不到人,所以是没资格挑挑拣拣的。这时遇到项目经验造假的人,只要技能尚可,或者甚至只要动手能力强,就会录用,至少我在身边看到的一些小公司是这样的。但录用管录用,面试官其实是知道候选人项目底细的。
三、商业项目如果写得很敷衍,就会被当成学习项目
针对之前讲述的甄别方式,这里会给出若干在简历中写商业项目的技巧,一方面,如果很敷衍地写,你的项目经验就会被当成学习项目,另一方面,如果在简历上包含足够多面试官感兴趣的要素,你的简历通过筛选的可能性就越大,也就是说,能得到更多的面试机会。
1、讲清楚必要的要素,比如项目周期、人数、项目名、客户是谁、用到什么技术,但就凭这点,无法证明是商业项目。
2、讲清楚部署和上线的方式,比如在云端,或Linux上如何部署,用到哪些命令?上线前测试怎么做的?是否用到灰度测试,把这块讲清楚了,会让人感受到你不仅会开发,更有运维方面的技能。
3、讲清楚管理项目质量的方式,比如单元测试工具,通过sonar等工具提升代码质量的方式。
4、写明目前项目已经上线,再可以提一下,如果平时遇到产线问题,是通过什么工具排查和解决的。
自然,如果在项目里用到了其它好的技术,比如用elk收集日志,用zabbix进行压测,这种就属于不写白不写的。
我之前在面试时,发现很多候选人其实做了很多事情,各种技能掌握得也非常到位,但在简历中丝毫没体现出来,这就很吃亏,因为这可能就错过了不少面试机会。
四、在校生和毕业生,该如何准备项目经验
不少毕业生在找工作时,苦于没实际项目经验,一方面确实可以在大三大四时干些实际项目,但如果确实在找工作时没项目,那该怎么办呢?
1、这时候没办法了,得加班加点,用最多一个月的时间,运行通一个全栈的项目,比如VueJS+Spring Boot+Mybatis,这个过程中有问题,赶紧通过看视频看资料等各种手段弥补,项目未必要大而全,甚至只包含简单几个增删改查功能也行,但第一要了解全栈流程,第二要了解必要的技术语法。这个过程一定不能省。
2、挖掘毕业设计和之前的课程设计,看下其中哪些需求点和商业项目很类似,这些需求点能否用基于java的技术实现?如果可以,这好歹也算是项目经验。
3、我知道不少网站能提供项目,不要多,就运行通一两个即可,但其中需要包含Java全栈技能,因为这些项目有足够多的指导文档,调试通过应该不难,这绝对可以算学习项目。
4、对毕业生而言,招聘要求不会太高,一般没商业项目,只有学习项目也会让过。
在通过上述方式掌握若干学习项目以后,按如下思路准备简历上的项目。
介绍项目技术时,如果可以,尽可能多地写些打包部署调试等技能,这块应该不难,比如在自己机器上装个Jenkins或ANT或Sonar,然后实践一下。
多写些解决的实际问题,比如Mytabis里事务是怎么调通的,总之,别浮于技术,再深入写些技术的实现细节。
从异常处理、数据库批处理优化、数据库索引、设计模式甚至虚拟机调优角度,写下项目的实现细节,这块属于基本的jdk和数据库知识点,也应该不难实现。
这样一写,虽然还是没法让学习项目变成商业项目,但由于深入细节,好歹能超过大多数学习项目,相比于其它同学,你就会有更多的面试机会。
当然,如果有机会,最好还是得找些实际商业项目做下,很多点只有做了才知道,很多技能只有做了才能掌握。
五、工作若干年转行时,没商业项目经验该怎么办?
对于工作后想转行做Java的同学,这里给出如下的建议。
1、如果工作忙,如果平时自己感觉没时间学Java,可以报个比较好的培训班,毕竟培训班里有成套的知识体系,这比自己学要省事省时间。
2、看下你之前的工作经验,能否和Java沾边,比如之前做测试或者运维,多少能碰点Java,在写项目经验时,就可以着重偏向Java。
3、我知道有些同学,比如之前3年是在做C#,通过培训掌握些Java技能,然后就把之前的经验全写成基于Java的,虽然如果面试过关,这无法用任何方式甄别出,但这块涉及诚信,请大家自己斟酌考虑。
4、对于转行的同学,第一份工作得看重实际机会,比如找个外派活,找个小公司,这些公司的招聘要求稍微低些,或许能帮助相关同学成功转行。
不过话说回来,工作3年转行还行,如果工作5年以后再转行,那就需要非常慎重了。
六、总结:不自暴自弃
固然说,努力要乘早,在校阶段就应该尽可能找实习机会,但任何时候努力都不会嫌晚,用文本提到的方法,初学者最多用1个月的努力时间,就能在简历中归纳出一个学习项目。而对于比较初级的职位,或者一些小公司,有时候候选人只要靠刷题就能进去,更何况掌握了若干学习乃至商业项目。所以,哪怕在当前阶段感觉自己什么都不懂,也绝不能自暴自弃,比如颓废无节制地用无聊的视频来打发时间,而应该立即找书找资料找项目提升自己。
通过本文给出了若干甄别商业项目的方法,大家可以对照比对你简历上的商业项目是否会被误杀,而本文给出的在简历上描述项目的技巧,更经过了不少毕业生的实践检验,应该具备足够的可操作性,最后希望此文能帮助到大家。
如果大家感觉本文有帮助,请推荐本文,也欢迎大家通过评论来交流。
————————————————
编程是一个神秘而又美丽的领域,这个领域的大门像着所有拥有理想的人们敞开。编程也是一个残酷而又充满竞争的领域,随时会淘汰掉不够努力的人。
对于刚学习Java的初学者,很多适合会感觉学的没有方向,越学越迷茫,这样的情况一般都是学习方法开始就是错误的。没有把Java技术进行专业系统化的学习。从就业和节约时间的角度考虑,如果有谁遇到这方面的问题,可以加入我的学习裙686.827.638里面有相应的学习资料,可以自行来下载获取(适合初学者)多跟大家一起交流,不要一个人盲目的学,少走弯路才是学习Java最大的捷径。
原作者:hsm_computer
原文链接:https://blog.csdn.net/sxeric/article/details/103346576
原出处:博客园