在本文的开篇,本人想说句正确的废话,应届生程序员要过面试,不能单靠自我介绍,也不能单靠背题,事实上应届生准备面试得综合地从简历、项目、技术和背面试题方面做准备。
由于本人有做Java方面的一点点经验,所以本人就将从上述诸多方面综合讲下,应届生朋友该如何过面试,其中的操作要点有两个,一是要在简历和面试中,向面试官证明自己有足够的商业项目经验,商业项目经验可以理解成实习经验,二是要结合项目讲清楚自己熟悉的技术,这样才能证明自己的技术是来自实践,而不是只会理论。
所以可以这样说,如果学校一般,甚至学历是大专,如果只简历上写熟悉的技术,以及学过的课程,不展现商业项目的实习能力,简历过筛选这得靠运气,过面试也得靠海投。而不少211,985院校的java应届生,可能单靠学校和学历,就能超越不少一般学校的求职者。
在下文里,本人不想罗列一些Java面试八股文,因为这些哪怕背熟了意义也不大,就会从简历和面试这两个方面,讲讲java应届生的求职技巧。甚至,如果临近毕业,自己java技能感觉不熟,本人还给出了在短时间内弥补技能和面试说辞的技巧。
先说下,Java应届生找工作的两个要点是,第一能证明自己有半年(甚至更长)的实习经验,第二能证明自己至少能用spring boot开发项目。
如果当下感觉自己spring boot技术不熟,千万别直接背八股文,也别轻易去github上去下载一个java项目来跑,更也别贸然去报个班,而是可以直接通过自学,先学会spring boot+数据库做增删改查业务的技能。这块要达到什么样的效果呢?
其实上文给出的学习要求是比较低的,可能会有不少应届生朋友质疑,学太简单了未必能找到工会作。但本人更想说的是,第一,在项目里会用技术和在面试中证明自己会用技术,这是两回事,后者的难度是远小于前者的。第二,应届生在学习阶段,由于没有接触到真实项目,所以真会做太多的无用功。同时,结合下文的描述,大家能看到,其实学到上述这个程度,真能去找工作。
下面再说下应届生该如何写简历,其中的要点刚已经说了,尽量写上足够多的商业项目经验。这里需要额外说下,如果在简历中写课程成绩之类的,这其实很虚,如果写学习项目或毕业设计项目,这块意义也不大,但如果有编程方面的获奖经验或其它加分项,这倒可以写上。
商业项目是指,真正在实习公司里做过的项目,或者是用于挣钱的项目。其中包含的关键要素是公司或挣钱。商业项目该怎么写?
从上文的描述里大家能看到,在简历中是通过多个方面来证明这是商业项目,但是别扩展写功能,别把简历这部分的项目描述写成是项目使用说明书,因为面试官不关心这个。
有些话本人不想说得太直接,不过,在面试中通过真实项目说出来的spring boot增删改查技术,其实效果和上文提到的,spring boot+单表的增删改查技术,其实两者是差不多的。求职者一方面需要说明其中包含的spring boot的处理流程,无非是从控制器到service到repo再到数据表,另一方面求职需要说明其中包含的注解。
至于前端技术,比如vue.js或android框架,当然熟悉最好,不熟悉的话,应届生面试时就一句话,“本人在这个项目里只做后端”,这就可以了,因为能有商业后端项目经验的应届生真不多。
简历上如果包含半年等的商业项目经验,其实真能争取到不少面试机会了。
应届生朋友应该是通过介绍项目,来证明商业项目的真实性。由于商业项目是用于挣钱的,而且商业项目正是因为要从客户那边收钱,所以其在确定需求,开发,测试,部署和问题排查等方面,和学习项目存在很大的差异。Java应届生朋友,不仅应该从技术层面,更应该从项目开发的诸多细节,来证明自己做过商业项目。
先可以说下真实项目的敏捷开发流程和常用的项目管理工具。
学习项目一般是从零跑通一个项目,只要能从前端发请求看到预期的效果,这个项目就算成了,但真实的项目一般会采用敏捷开发模式,哪怕是有些公司的田园敏捷开发模式,一般也是采用“迭代”开发的流程。
比如一个项目从开始做,到真实完成,假设需要半年,包含大概50个功能点,那么就会把这些功能点,均摊到6个开发周期,每个周期大概是一个月,这样每个月发布一次,把本月需要完成的功能点和本月修改掉的bug一起发布上线。具体的,比如一个月有4周,会在第一周的前半周,和产品方或客户方谈好需求,一般这是项目经理主导做的,谈好以后分配任务给诸多程序员,分配任务时一般用jira来记录,当然如果发现bug了,也会用jira来记录bug。
开发前,一般会基于git的主分支(master或dev或current)上创建一个新分支,比如202210dev分支,诸多程序员在这个分支上开发,然后约定个开发结束时间,这样到了这个月的第三周结束后,这个开发分支上就包含了本次发布所需要的的代码,然后这个发布版本就会冻结住,冻结的意思是,发布的版本需要稳定,不能随便再向里面提交并合并代码,在此基础上测试人员就开始测试。
一旦测试人员测出问题,项目经理会做个评估,如果不影响本次发布,就会在下个周期里修改掉,如果影响很大,那么需要走“解封”流程,解开本次已经冻结住的git分支,修改后再冻结住。
这样到了本次迭代周期的发布日,一般是业务量比较少的时间点,比如周末凌晨,运维人员会把从git上拉下待发布的分支,用maven或各种工具打成jar包,然后通过jenkins工具,或干脆手动复制粘贴,放到linux环境上,再用java -jar命令启动,启动后开发和测试人员发现没问题后,本次发布就算成功,然后再开始下个为期一个月的开发周期,这样一直到本项目全部完成。
所以求职者如果要证明自己的项目是真实项目,可以从如下若干个角度来准备说辞。
应注意,上述提到的技术要点,哪怕对于零基础的应届生朋友,绝不是高不可攀,而是能通过一些简单的项目实践能掌握。在商业项目里,开发者未必是全栈都做,而是只做后端开发,而且后端开发一定要加入很多细节。
在不少应届生朋友做的学习项目里,开发者其实是全包的,从前端到后端spring boot,再到建数据表,这些工作都要做。但在真实项目中,如果你的职责是后端代码,那么其实是无需关注前端的。
而且在项目组里,你其实真未必是从零开始做。比如你入职被分配到一个财务系统里,这个系统一定是开发到一定程度了, 所以你其实是无需参与表设计的工作,也无需参与搭建前端后端框架的事。你的事情其实就是用spring boot开发业务,在上文的基础上,你还可以用如下的说辞证明你做的是商业项目,而不是学习项目。
上述说辞对应届生朋友来说绝非难点,但是很多应届生是忽视的,所以如果应届生朋友用些时间学习并练习一下说辞,绝对能很好地证明自己做过商业项目。在真实项目里,一定会遇到线上问题,你可以说下排查分析线上问题的细节。
这块大家可以说,告警信息后,可以通过vi命令,去观察linux上的系统日志,或者甚至可以直接从linux上把代码拉到windows,再用记事本来打开。应届生朋友一般不会处理太难的问题,所以可以说解决过因参数不对导致的问题。比如是业务问题,是参数不对,那么能根据日志上的告警信息,定位到具体的类和代码行,然后解决。再如,在日志里看到是空指针,然后也是定位到具体的类和具体的行,然后解决。
如果应届生能通过准备日志方面的说辞,证明自己排查过线上问题,那么也能很好地证明自己的商业项目经验。
在准备好上述商业项目的说辞后,应届生朋友背些java八股文倒也不是不可以,不过一方面,java八股文资料太多,另一方面,如果在说好项目和相关的技术后,有些面试官问的八股文就会简单很多。所以这块八股文方面,本人不做展开。
所以应届生朋友在找工作时,绝对应该是方法得到,即优先展示商业项目经验。事实上,本人最近一直在帮一些应届生朋友做入职辅导,用的就是上述的一些经验。
再说应届生薪资这个话题,其实应该这样说,应届生朋友如果能找到java工作,那么就能拿到当地比较普遍的薪资,这看似是正确的废话,但更可以这样理解。
回到主题上,讲讲应届java程序员该如何在面试中做自我介绍。做自我介绍一定要有素材,即项目经验和spring boot等的技术,否则说得再好也没用。通过上文给出的方法,如果大家已经有真实的实习经验,那么能根据上文的说辞更好地整理自我介绍的说辞,如果大家当下没真实项目经验,哪怕通过熟悉spring boot+熟悉真实项目的流程,再此基础上准备自我介绍说辞问题也不大。
大家可以分若干个层次依次有条理地说明
其实这样真就行了,但事实上,本人在做校招时,不少求职者在自我介绍时会说一大堆和求职无关的事,比如兴趣爱好,校园经历等,这些说再说也没用,说再出彩也无法帮到自己成功应聘。但是,如果大家按本文给出的步骤,先通过少量的时间熟悉必要的spring boot等技能,再通过必要的准备,展示商业项目经验和技术,并在此基础上准备面试说辞,那一定能高效找到工作。