Java面试官经验谈:如何甄别候选人真实的能力,候选人如何展示值钱技能
手绘了下图所示的kafka知识大纲流程图(xmind文件不能上传,导出图片展现),但都可提供源文件给每位爱学习的朋友《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
这些疑点是需要在技术提问前确认好的,也就是说,如果疑点被确认属实,就说明候选人相关技术年限不达标,就没有继续面试的必要了,那么怎么确认?
如果本项目组或其它项目组需要初级开发,而候选人简历上确实有疑点,一般我会明说,你xx项目看上去像学习项目,你和我说实话,如果你告诉我这些项目是真实项目,那就我按高级开发的真实项目面了,如果你告诉我是学习项目,那么我就用初级开发的标准面(或让其它项目组的面试官面),可能初级开发的工资会少,但问题相对简单。这样大多数候选人会说实话,这样两厢方便。
如果没有初级开发岗,对于这些疑点项目,我会围绕如下的点来发问。
1 确认项目人数,项目周期和客户方,以及项目现在是否已经上线。对于编造或学习项目,一般项目都不会上线。
2 询问项目打包编译和部署的方式,一般的项目都用maven或gradle打包,或者用ant也算了,一般部署在linux上,出于可用性方面的考虑,会同时会部署在多台机器上。如果项目真实做过,候选人多少也能说出些,但如果是学习项目,那么回答就五花八门了,我甚至听说过部署在windows机器上的。
3 询问项目的管理方式,比如用什么工具来管理版本(比如git或svn等),代码review是怎么做的?用什么工具来管理bug(比如jira等),用什么工具画uml图,怎么做单元测试?(比如junit)开发代码时需要注意哪些规范。这些也是真实做过项目才能知道。
4 问你项目里怎么输出日志,你怎么通过日志来排查问题。一般上线后,日志都打在linux上,但如果是学习项目,则只能在windows上看日志了。
5 一般真实项目至少会配两套环境,一套测试用,一套上线用,而学习项目(甚至培训班项目)只会用一套。所以我也会对应地问,你项目是怎么搭建这两套环境,这两套环境里配置文件是怎么区分的?
通过上述方式我还真甄别出不少学习或虚假项目。其实我知道,上述甄别方式的作用有限,比如有候选人最近一个项目是真实的,但之前项目是自编的或学习项目,他完全可以用最近一个项目的说辞套在前一个项目里,这就需要用如下的甄别说辞的发问方式了。写到这里,我不敢庆幸,更不敢幸灾乐祸,只有叹息,职责使然,不敢拿公司的信任做人情。
3 值钱技术“嫁接”到真实项目上的甄别之道
其实在我之前的博文聊聊我当年在培训学校做开发的经历里已经提到,“半真半假”的项目经历最难甄别,这话怎么讲呢?
候选人的公司是真实的,项目也是真实的,但候选人用了这个真实的“壳”加入了虚假的技术。比如候选人在最近的项目里明明只做了最基本的增删改查,但结合项目背景和业务应用添加了从视频课里掌握的分布式组件、性能调优以及JVM调优的说辞。甚至可以这样说,有一部分程序员就在本身项目经验不足的情况下,靠这种技巧升级到资深开发或架构师。
作为面试官,当看到候选人在简历上有分布式之类的值钱经验时,就需要考核这些经验是真的从项目里积累的,还是只掌握了理论经验。如果候选人在简历中还有有“培训班”、“小公司”和“转行”之类的要素,更要重点考核,如下给出具体的甄别之道。
第一问技术的使用背景,比如分布式用在高并发,分库分表和数据库调优用在大批量数据,就请候选人告诉我,你的业务里,哪些点需要用到这些值钱技术。有些候选人值钱技术只是从网络教学视频上学的,没项目实践经验,这个一问就能问出来。
第二问技术的最基本的用法,比如Redis缓存,就问如何以Hash表方式读取数据,对于Dubbo,怎么设置超时时间,Kafka里怎么设置消息重发,这些问题不求难,只要是用过就一定能知道,但不少候选人如果连这个都说不上,后面我就不会再问了。
如果能回答好第二层问题,那么至少说明候选人用过,接下来会是第三层的问题,问项目里解决过哪些实际问题,再具体些,用到分布式等技术总是要解决高并发等问题,我就问,你项目的并发量是多少?为了应对这个并发量,你项目里用到哪些组件,这些组件是如何构成集群,如何部署在linux上的?
以Redis举例,根据上述三层提问的方式,我一般会问如下的问题。
1 你项目业务的并发量是多少?结合一个业务场景,告诉我,你们项目用到了哪些Redis数据结构?这是问技术的使用毕竟
2 你们项目里,Redis对象的缓存时间一般设多少?(一般项目都会设,否则对象会堆积在内存里,从而导致OOM)
3 你们Redis集群一般是怎么搭建的?(项目里,出于重用性考虑,一般都用集群,不会用单机版)
4 Redis持久化怎么做?消息通讯机制怎么做?如何压测?这些场景在项目里大概率能用到。
上述2到4点是问技术的用法,一般如果在项目里用过,多少会用到其中几个点,如果都说不上,那么可以说只会理论不会技术。
5 结合项目里遇到过的一个问题,你说下如何在项目里排查Redis方面的问题?具体来说,如何发现问题的?(无非是通过监控,通过日志,或者是用户投诉)如何分析问题的?(一般是看日志),然后如何定位和解决问题的。
对于其它组件,比如dubbo,mycat,netty,kafka等,也是采用类似的问法,第一问如何在项目里用,第二问细节,第三问如何排查解决问题。请注意在这阶段我不问底层代码,因为当前还是处于确认候选人技术的阶段,如果候选人过不了这关,只能说具备理论经验,这样通过看视频看资料准备的值钱技能基本就白费了。只有当能自证有项目经验,才有资格通过底层代码调优技能等细节来锦上添花。
4 候选人说出哪些点,才能证明值钱技术有项目经验(教你准备值钱技术的方法)
根据我的体会,如果真的达到资深开发或者架构师级别,面试时大多能靠实力过关,只要结合做过的项目和排查过的问题,稍微准备些技术细节即可,因为他们在面试中能展示自己的亮点太多了。而对于一些只会增删改查的初级开发,或者没分布式组件实践机会的程序员, 由于缺乏项目经验以及亮点说辞,这些人在挑战高一级的岗位以及大公司时,难度很大,有不少人就因此长时间停留在低级岗位或小公司,直到30岁和35岁来临。
所谓难者不会,会者不难,在这部分里,将给出一些通用性的技术整合项目经验的说辞,大家如何据此准备面试,大概率能让面试官认为,你有实践经验,毕竟面试顶多了才1小时。
技术结合项目需求的说辞,讲清楚xx技术用到xx场景里。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
最后
手绘了下图所示的kafka知识大纲流程图(xmind文件不能上传,导出图片展现),但都可提供源文件给每位爱学习的朋友
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
634348531)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
更多推荐
所有评论(0)