很久没有写文章了,一时间竟不知如何开篇?为什么没有写呢?是因为太忙了。最近在忙什么呢?工作学习还有就是招人。上班时间不忙的时候大多是在看技术文章、技术文档,上下班公交车上也是,还有就是最近两个月在面试一些人。其实我是不太想面的,原因有三。一是耽误我自己的时间,二是面了十几个只有一两个能让我很称心的。还有就是太费钱了公司又不给报销,所以我最近都会用一些会议软件来面试。
昨天面试了一个2012年开始工作的30岁程序员,面试前我心里打鼓,毕竟我才工作三年?但是说实话面下来不太理想,首先简历写的一般,简历排版格式有点乱,多处字体不一致,还有技术栈很老,项目很小大多是内部用的,没用过Redis,分布式相关的东西没有,也没自己去了解过项目之外的东西,其次面试问到的问题回答的不到一半,但是态度还是不错的,临了还问我面试情况,我说了我的感受,也给了一些建议。
其实稍微看看他的简历,待过的公司,做过的项目也,就能知道为什么工作七八年的30岁程序员水平这么一般了。工作这么多年一共待过两个公司,看样子都是外包公司,写的几个项目也大多数是内部使用的一些管理系统,并发量不大,没有技术挑战,对自己提升不高。
那么程序员如何突破自己呢?怎么才能摆脱中年危机呢?首先要跳出舒适圈,人都是有惰性的,都喜欢安逸的活着,如果生活过得去,没有太大的压力,谁又愿意再努力一把呢?但是成功往往属于那些肯逼迫自己的人,肯走出舒适圈、有目标的人。即使是30多了也是可以拼一把的,如果你是该技术的,那也可以再把技术深造深造,搞的扎实一点;如果你已经考虑转管理了,那你就往管理方面靠,多看看管理方面的书籍,有空再考个管理的证,但是技术你也不能落下,不要求你把技术搞的多精通,但最起码你要知道这个技术,了解一下他的基本原理,要不然有一天你要你下属引进一个技术,他告诉你太难要花好多时间,或者说搞不了,你都不知道他说的是真的还是假的,如果你相信了,那他以后背地里就笑话你不懂技术,那以后这样的事情还会多着呢。
另外不建议搞技术的过早的去转管理,比如你刚工作3年,你的经理建议你去转管理,这是不建议的,原因上面也说了,你的技术还不透彻,对技术的把控你完全不懂,到时候让你评估一个技术引入的工作量,难度等,你搞不定的话又可能还会闹出笑话。
今天遇到一个应聘者,工作经历三年,四个项目全都是管理类的、内部使用的项目,但是人家简历写的技术都是熟悉啊,符合公司的招聘标准啊。OK,面吧,来呗。
专业技能这块写的都是熟悉,我一看会这么多还挺棒的GOOD BOY
废话不多说,上来我就问,Java基础你掌握的熟练吗?对方说还行吧,我就先问了几个Java语法的概念,然后问了HashMap的put操作的流程、扩容机制,什么时候扩容的?做什么操作的时候会发生线程不安全?统统回答的不好。
我:如果想使用线程安全的Map,用哪个?
应聘者:ConcurrentHashMap
我:ConcurrentHashMap怎么保证线程安全的?
应聘者:这个...我平时用的少,不太知道底层
然后接着我就问什么是Spring?对方的回答是Spring是一个框架,核心是AOP和IOC。这就回答完了。
我:spring有什么优点呢?
应聘者:有 什么优点?...嗯...这些概念性的东西我忘了...
我:那你说一下什么是Spring AOP,可以干什么用?使用什么技术实现的?
应聘者:AOP就是面向切面编程,可以用来记录日志,安全管理,用动态代理实现的
我:Spring AOP使用的哪种动态代理?
应聘者:JDK动态代理,CGLIB动态代理
我:什么时候用JDK动态代理,什么还是用CGLIB动态代理
应聘者:它有一个判断,好像是没有继承类时用JDK动态代理
我:BeanFactory和ApplicationContext有什么区别?
应聘者:....我们项目spring用的很少,用的是springboot
然后我简单的问了几个springboot的基础问题,还都能回答上来,可以看出来确实用了springboot。
看他简历上写的熟悉spring cloud,我心想做这些管理系统还需要微服务吗?就问他在哪个项目里用到了,他说没用过,是自己自学过。
因为我们也没有这套技术,我就没再问。
我对MQ感兴趣,就问他RabbitMQ的问题。
我:使用RabbitMQ有什么好处啊?
应聘者:我们发邮件使用了RabbitMQ,往MQ里发邮件。
我:为什么要用RabbitMQ啊?(我问有什么好处,他刚没回答,我换个问法)
应聘者:你是说为什么不用别的MQ吗?项目里用的就是RabbitMQ我就用了
我:发邮件不用MQ也能实现,为什么要引入MQ呢?有什么好处吗?
应聘者:不用MQ也能实现吗?我不知道,我们发邮件就是用RabbitMQ,我就用了。
?
我:(跳过这个问题吧)那你能说一下RabbitMQ的消息是基于什么传输的?
应聘者:基于什么传输?你这问的好官方啊,我不知道问的啥,你能问的通俗点吗?
我:(算了跳过)那你知道RabbitMQ它的消息怎么路由吗?
应聘者:这个...我不太清楚,记不清了,上个项目用到了,好久没有用了,但是我如果有项目要使用的话,基本上再看看就能很快上手了。
我:哦,我看你技术写的都是熟悉。那你Redis用的多吗?
应聘者:用的少,我买过视频看过。
我:那你说一下Redis的数据类型都有哪些?各自的使用场景
应聘者:string,hash,list,set,zset
我:(这就完了?明明问的还有使用场景呢)怎么使用Redis实现分布式锁呢?
应聘者:这...嗯...我不太清楚,项目中不怎么用redis,都是内部使用的很少用redis
我:redis有哪几种架构模式啊?
应聘者:架构模式...呃...不知道,对redis了解的不多。你问我点业务。(老是问我不会的,你问点业务啊?)
(不多,你简历写熟悉⊙﹏⊙b汗,还教我问你,你是面试官还是我是啊?你的项目有毛的业务?)
我:那你说一下你在项目中怎么使用Spring security的
应聘者:....
我:那你讲一下SSO的流程
应聘者:....
这几个问题,我已经没仔细在听他回答的是什么了
最后又问了几个问题,我已经不想问了,已经快四十分钟了。
我:我今天就这么多问题,你有什么要问我的吗?
应聘者:咱们公司是在北京吗我看手机号是北京的(...等一些关于项目的几个问题)
这个应聘者存在一个什么问题?眼高手低,高估自己,面试准备不充分。建议近期找工作的把Java基础,JVM,集合,并发,数据库,redis,框架,dubbo,zookeeper弄懂,准备充分,这样才能百战不殆,成为offer收割机。
还有的应聘者问题回答的贼6,问道到在项目中怎么使用的,哪些地方用到了,就卡壳了。很显然这样的就是简单粗暴的背面试题,所以也要结合自己的项目去准备面试,把面试题嵌入到项目中,能说出在项目里哪些地方用到了,有什么优点等,尽量准备充分。
好了今天就分享到这里,有什么需要交流的欢迎留言哦~