最近的Java面试感慨

你总说梦想遥不可及,可你却从不早睡,也不早起。

序言

  看到这个标题,是不是觉得我去别的公司面试了?其实不是,是我作为面试官去面试别人。面试了好多好多人,着实有点小感想,当然也是吐槽。

背景资料

  公司项目缺人,需要找外包来驻场开发,我们就找外包公司给我们推简历,然后我们部门面试候选人,如果合适的话,就会来公司驻场开发。

吐槽一下

  本来让我一个工作不到一年的小菜鸟去面试别人,我还是有点虚的,尤其是简历上全是2年,3年,4年工作经验的人,我就觉得我怎么配去面试人家,我不配的好吧。
  但是,等我面试了几个之后,我真是一!言!难!尽!!!

1. 简历造假

  这都2021年了,怎么简历造假还成群结队。平均年龄21岁,三四年工作经验,着实让我难以相信,刚开始我还挑一挑,尤其是20岁写四年经验的,直接pass,实在是不敢招惹啊。后来又实在是很难招到人,只要不是20岁以前毕业的我都会面一面。

2. 必有商城,商城必是购物车和秒杀

  而且我还严重怀疑这乙方是培训机构,所有的简历毕业院校都大差不差,集中在某某科技学院,某某大学,很少有别的学校。项目经验必有商城,必有购物车,必有秒杀系统。

3. 理论背起来一套一套的。

  什么购物车啊,秒杀啊,缓存啊,搜索引擎啊,HashMap源码啊等等,背的一套一套的,背的我头皮发麻。为什么说他们是背的呢?因为一问细节,就回答不上来。
  我记得没有毕业之前我曾经在知乎上看到一篇帖子,好像是叫《一个程序员能有多差劲?》,这个帖子里大家回复的各种各样的奇葩事情,我就觉得,这怎么可能,要是大部分程序员都是这样的水平,那我还是很有竞争力的,但是又看网上那些面试题我又觉得自己很菜。直到我来面试别人,才发现,真的很有可能。

4. 面试题的奇葩回答

  现在捋一捋那些候选人的奇葩回答。
  最让我印象深刻是这么一个问题,分割字符串split()方法的返回类型是什么?答:是JSON。我已经不想多说什么了。
  还有个候选人,我问他怎么在服务器部署项目?他很疑惑的说:服务器上部署?我在IDEA里直接就能运行啊,怎么部署?我:… … …
  还有个候选人,我问他,你们项目使用哪个工具来进行版本控制的。他说,用Maven啊。我:what? 是我矮了吗?是我孤陋寡闻了吗?
  还有很多奇奇怪怪的回答,我就不一一列举了。

面试题的转变

  我刚开始面试的时候也是从网上找一些常见的面试题,偏门的面试题不要,就是一些Java基础,然后看简历上写的会什么就问什么。然后一些底层原理什么的也都问一问。
  现在呢,我已经不问底层原理了。我就想问一问候选人有没有用过。
  1. 基础知识部分
  比如,String类用过哪些方法?split方法的返回类型是什么?对吧,我觉得用过的肯定都知道,知道那就肯定用过。但是不知道为什么,确实有不少候选人回答不上来这个返回类型是什么。是太突然了吗,是话到嘴边就给忘了吗?我很想知道那个回答返回类型是JSON的候选人是口误了吗?
  再比如,List对象里获取内部元素的个数,是用的哪个方法?然后候选人就很疑惑,我就再换个方式问,比如有一个List的对象,你怎么知道这个对象内部的元素个数,判断里面有没有元素。不知道是不是我问的有问题,也有不少候选人没有答上来。是因为这个方法大家很少用吗?
  再比如,如何遍历一个HaspMap对象。这问题也有不少人没有回答上来。但凡说出来一种,我就算他过关。我记忆深刻的有一个候选人说,这个HashMap我很少用,但是我知道它底层是巴拉巴拉… …,一大堆,背的我头皮发麻。
  对于基础知识部分,我已经不想问它底层结构,扩容机制,线程安全之类的东西,我就想知道你有没有写过代码,有没有用过。
  2. 框架部分
  项目框架部分我也不问那些底层实现,我就想问一问候选人怎么用的。
  比如,有候选人简历上写的项目中用过ElasticSearch,而且还写的是主要职责就是用ElasticSearch查询数据返回给前端,于是我就会提问,你数据库中那些表数据会放在ES里呢?如果回答上来,我就会再问一句,ES怎么跟数据库的数据保持同步呢?然后我就会再问,那你项目中用哪个工具访问ES的?
  但是很可惜,基本没有人回答上来。有一个最深刻,我问他那些表数据会放在ES里,他就给我说,数据库数据量太大,模糊查询很慢,所以把数据放在ES里,提高查询速度等等,巴拉巴拉… …一大堆,我以为他没听清楚,我就又问一遍,是哪些表的数据,是哪几张表,他沉默两秒钟,再把刚刚那一大堆背了一遍。我:… …
  还有Vue,简历上明明写的熟悉Vue,我一问,他们就说,我没有用过Vue,但是能看懂。基本上我还没遇见过会前端的。不过也这没有关系,我们对前端没有什么要求,只要不是一点都不懂就行,我会问一问,id,class选择器,怎么用js获取一个HTML标签,最多问到js有哪些数据类型,就不会问了。除非这个人会Vue,我会再问问vue生命周期之类的。
  项目必有商城,有商城就必有购物车,必有秒杀系统,然后项目介绍完毕就必然要给你背一背用什么技术来实现,怎么实现的,巴拉巴拉… …一大堆。听完我是不会问他怎么实现的,我就问他,SPU与SKU的概念知道吧,那一个SKU有不同的规格参数,这些规格参数在数据库里是怎么存储的,表结构是怎么设计的?
  基本没有人回答上来,就很离谱,做项目不看表结构的吗?或者问一下,商品有价格是吧,那价格用的什么数据类型呢?我想知道有多少人用double。啊对,等以后再面试说double也没事,我就再问问,设置的几位小数,遇到价格计算是怎么计算的,我看看有多少人直接用double加减乘除。
  我还记得有个候选人,简历上写负责项目的登录注册什么的,我就问他,那你把登录这块,从用户输入到控制层再到持久层的这个整个流程给讲一讲,他说的挺好,又是验证码,又是JWT,又是redis的,整个流程确实挺像那么一回事的,也很合理。我觉得不错,有戏,终于遇到一个合适的了。
  于是我就问,项目持久层用的什么框架?他就沉默了。我以为他不知道什么是持久层,我就问他数据库用的是什么,他说MySQL,我问他,你用什么框架或者工具来查询MySQL,他说时间长了,忘了。我就想,难道刚刚那一大段登录流程是他自己背的吗?我就又问他,那控制层你用过哪些注解?后来问了啥,我也忘了,反正是让我很确定,那一大段是背的。
  控制层用的注解,我也是必然要问的,我会让候选人说说,他用过哪些注解,一般@Controller,@RequestMapping这两个大家都能回答上来。然后我会再引导一下,比如你给前端返回json数据用的哪个注解?你接收前端传过来的json数据是用的哪个注解等等,就这也有不少人回答不上来,或者回答错误。那我肯定对他做过项目是持怀疑态度的,肯定要多问一些。
  我面试过的候选人做的项目全都是前后端分离的项目,那我肯定要问一下,前后端分离有没有遇见过跨域问题?是怎么解决跨域问题的?什么是跨域问题?这个也是只有少数才能回答上来。不知道是不是我问的太难了?
  业务层我一般就问一个问题,怎么给一个方法上加上事务。就这,也有不少人回答不上来。我记得我接连面试好几个,这个问题都回答不上来,终于有候选人说有一个事务的注解,我就觉得,哇,好优秀啊。
  接下来我就会再问问sql语句,比如分组查询,排序,内连接,左右连接什么的。
  最后我会再问问项目打包,是jar包还是war包,怎么部署,把问题引到Linux命令上去。这部分有很多人都说,不是他负责的,他只负责写功能模块,不负责部署。这让我很是无奈,我只能问问,你知道哪些Linux命令。

题外话

  正经干过活的面试起来就是不一样,工作中常用的都能回答上来,我面试了这么多人,只有一个觉得是真的有3年经验的,确实很好,我给领导建议,直接招进来入职我们公司,而不是当一个外包人员进来,我们领导就说可以,但是他要价太高,公司又抠抠搜搜的给不了,就错过了。

总结

  如果是外包,项目包装无所谓,自学的,培训班的也无所谓,但是大家一定要写代码,一定要写代码。背面试题是很难面试通过的,即使面试过了,写两星期代码就暴露了,会被甲方辞退的。
  我们公司就辞退了不少外包人员,招进来确实是写不了代码,连一个分页查询都要手把手教学,但凡能写点代码,也就认了。
  前段时间,就面试了一个正经科班出身,还得过蓝桥杯比赛的几等奖(我忘了几等奖),当然我也知道省级比赛以下有多水,但是我对这个候选人还是挺期待的,看起来没有包装简历,觉得应该会不错,但是面试确实不太理想,刚好还有一个00后的简历,面试完我竟然觉得比这个正经科班出身的还要好点,于是我就给这个00后的招进来了。他也确实说,自己没上过大学,北大青鸟培训的。但是无所谓,能干活就行。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值