我在面试Java求职者的时候,需要确认求职者是否是培训班学员。倒不是说个人或公司对培训班学员有偏见,而是职责使然。
1 比如这个岗位是需要有3年Java开发经验的,但求职者实际上是培训班出来,零项目经验,那么工作年限的要求就对不上。
2 招进来的Java开发如果是培训班出来,顶了天是只会Spring Boot等技术的增删改查,不具备项目开发中常见的测试,部署以及排查解决问题的经验,所以未必能满足实际项目开发的需求。
3 但是如果某岗位要求比较低,比如半年甚至更少的Java经验也能录用,培训班学员应聘的是需要3年开发的岗位,那么我会在确认培训班学员身份的前提下,和他们协商,如果他们愿意去应聘此类要求比较低同时薪资也比较低的岗位,我会按较低标准面试。此时只要求职者能达到Java要求,一般也能录用,录用的原因依然不是培训班因素,而是求职者达到了这个职位的需求。
但是大多数Java培训班学员,在简历上不会写培训班经历,因为这样写大概率没面试机会,也不会在面试中暴露培训班经历,所以在面试过程中甄别培训班经历,是面试官必须要做的事,否则培训班学员入职超出自己能力的职位后,不仅项目组会来抱怨,领导更会质疑面试官的能力。
本人写过篇高赞的文章,就讲述Java面试官如何甄别培训班学员,同样的话这里不想再重复。
本文里就将通过具体的例子,讲讲培训班学员在面试中暴露身份的一些回答。大家可以把这些内容理解成面试官识别培训班学员的方法,当然也可以理解成培训班学员在面试中改进话术的做法。
先说下介绍项目情况方面的一些例子。
1 有学员说用了半年时间做了一个电商(或物流或财会)等大型项目。
这些项目不可能是半年做出来的,而且这些求职者当时所在的公司是小公司,小公司是不会从零开始开发这些大型项目的。
2 我就问最近一个项目是在哪家公司做的?这家公司有没有给你缴纳社保。
大多数培训班学员说不清楚最近项目所在公司,而且这个公司总有理由没有给他们缴纳社保。
3 我问,你们项目用什么测试工具?用什么管理项目进度的工具?是怎么打包部署发布的?或者说是怎么让项目运行起来的?
培训班学员基本上都不做测试,或者是通过url发请求的方式测试。基本上不用jira等项目管理工具,也不知道项目打包部署的流程,所谓让项目运行起来,就直接在windows的IDEA工具里启动spring boot项目,然后接收请求。至于jenkins,基本很少有学员用过,而且大多数培训班学员甚至不知道spring boot其实是要部署到Linux上运行的。
这里我一般会再问细一些,怎么用maven等工具打包,怎么用git管理项目,比如拉分支提交代码或者你们公司是否有Maven私有仓库,很多培训班学员对此甚至没听说过。
4 我就问,你在开发项目时遇到哪些业务和功能上的问题?
真实有项目经验的求职者,多少会说些功能方面的问题,比如参数没对,对方服务不通,很多培训班学员对此是答不上的。
此时我会继续提问,大多数项目是为了排查线上问题,一般会引入日志,你们项目是怎么输出日志的?如何区分日志信息的级别?
真有不少培训班学员告诉我,是用system.out.println输出日志,至于logback日志组件,没听说说,日志级别,比如warn,error或info,也没听说过。
5 我知道有些公司的hr,会定义收集各培训班所用的项目,而面试官在甄别出培训班学员后,也会向本公司其他面试官分享这位学员在简历上写的项目案例,我之前的公司就这样干过。
所以每到培训班学员的毕业季,我总会看到一些很相似的简历,从项目名称,到用到的技术,和个人所做的模块基本都差不多。而且一些比较有经验的面试官,还能根据简历上写的项目,大致推断出这位求职者是来自哪个培训班。
对于此类简历,当然也也不是武断地直接拒绝,一般是先电话面试,单刀直入问,你是不是xx培训班出来的?如果你自己承认,我们有更合适你的岗位,但薪资比较低,你要不要试试?话说到这个份上,对方一般就认了,当然如果技术到位,所换到面试岗位也能面试成。
再说下从技术上暴露出培训班学员身份的一些例子。
1 说不出一些技术的使用必要性,这是个普遍问题。
大多数培训班学员会在培训项目里加入亮点,比如用到分布式锁,分布式事务,或者索引,或者缓存。我就问为什么要用这些技术?结合一个场景告诉我怎么用?
这方面我听到的回答是五花八门,比如数据量才几千的表要建索引,并发量才几百的项目要用缓存和分布式锁,甚至数据库就用一个mysql,且单机部署,这种情况下还要用分布式事务。
至于结合业务说这些技术?基本 一问一个倒。甚至有学员准备的分布式锁的使用场景,和面试时说的项目对不上。
2 有些技术在项目里是用不上的,或者有现成的组件或解决案例,但培训班学员真在项目里用过。
比如解决分布式事务,一般会用seata等组件,但真有学员告诉我,他们项目里真是根据两阶段提交协议自己写过一套分布式事务,问题是,还说不清这个分布式事务的使用场景。
再如高并发下,分库是有现成的组件, 比如mycat,但真有学员告诉我,他们自己根据请求的id,自己就做了一套分库方案,而且这个项目所在的公司,规模还很小。
3 有些技术,只要用过,就一定知道细节。
比如用了redis缓存,基本上都应该知道缓存穿透和超时时间,但有不少公司一般不会做持久化。我面试过的一些学员,基本上不知道上述redis要点,但真有人做过redis持久化,同时说不出为什么要用持久化。
培训班学员,或者包装项目的求职者,数据库层面一定是短板。
我看过不少培训班的课程表,里面讲数据库相关的,一般是jdbc,外带JPA等orm组件,顶多再讲些基本的sql语句,所以培训班学员在数据库层面的技能,顶多就是spring boot+JPA获取数据库。
比如我就去问表的构建方式,大多数学员回答的是三范式,一些能力强的学员还能告诉我三范式的优势。但有些学员简历上写的项目,数据量不少,这种情况应该更适用反范式。
再如我去问,你有没有参与过数据表的设计?
如果程序员是中途加入的,而且级别比较低,一般是不会参与表设计的,顶多就是根据些需求,在表里加个字段或建个索引什么的。但真有人告诉我,在这个项目里,是参与了全部的表设计,而且还是用三范式设计的。
如果我去问一些数据库层面比较深入但很常见的用法,比如左连接,表关联或者是索引,培训班学员基本上都答不上。至于我如果问,数据库优化方式,很多培训班学员都没做过这些,或者面试前都没准备,所以基本未必能说得上。
这里做个总结,怎么识别Java培训班学员呢?
1 简历上项目大而全的,而且项目周期不符常理。
2 无法通过项目细节证明项目的真实性。
3 项目里用到技术的方式和常理不符,或数据库层面的用法和常理不符。
4 其实如果培训班学员真的能证明项目的真实性,而且还能讲清楚项目里关键技术的用法,面试官是无法通过八股文来识别培训班学员的。
以上是站在面试官的角度来说明,不过面试官或者说一些公司的负责人,和培训班学员往日无怨近日无仇,所以也不会刻意为难培训班学员。上文也说了,对于一些不大需要项目经验的职位,而学员能力可以,本人或者项目组同样会给予入职机会。
最后本人也忍不住吐槽,培训班的就业辅导老师,其本职工作是让更多的培训班学员就业,所以更应当从简历和面试角度给予学员足量的帮助。
但从本人面试官的经验来看,有些辅导班的就业培训老师未必称职,把他们说成面试官的卧底也不为过,因为他们还真不会纠正学员一些常见的问题,甚至有些方面还起到了误导的效果,具体的内容本人写在如下的文章里了。
我发现不少培训班的就业辅导老师,简直是面试官的卧底——再论培训班学员的就业方式(java方向) - 知乎我最近在帮一些朋友做java方面的就业辅导,其中有些朋友是经过培训班加持后入行java的。由于我本人做过一些大厂和外企的java技术面试官,我发现其中一些朋友的简历甚至根本没法通过小公司的筛选,而且不少培训班学…https://zhuanlan.zhihu.com/p/482933524顺带发个咨询,如果大家想了解Java简历和面试方面的事情,可通过如下的链接向本人发起咨询。