针对其他的技术或组件,基本上也都采用这种层层递进的问法,第一层问概念,第二层问(框架、源码或其它细节),第三层问在项目里怎么用的,在此基础上再顺着候选人的回答,深入提问些该技术在项目里的用法。
**但是不少候选人,顶多只准备到第二层,即深入到各框架各组件的源码,说明该技术的细节。或者说,不少候选人只知道该准备到这一层。**比方说,我见过不少候选人,在说Redis时,很全面地说了Redis的细节,比如集群,失效转移以及选举算法等能很好地说,但当我结合项目提问,比如问你们项目为什么要用Redis,以及根据你们项目的数据量,为什么要用redis集群等项目相关问题,就基本说不上了。这样就无法很好地证明自己在项目里用过Redis。
只要面试官资深些,一定不会只停留在单问技术层面,也就是说,你认为准备过的被深挖的点,可能充其量只停留在技术层面,其实还没达到面试官会深挖的“技术结合项目”层面。
道理一说就明白,所以在下文里,我不讲如何在技术层面深挖提问的方法,因为这些问题网上太多,这些知识点大家可以自行查阅。但是我讲下很容易被疏忽的深挖技术结合项目的问法。
1 问该技术的使用必要性。比如你项目数据库压力是多少?在这个情况下是否该用Redis?或者你们项目为什么要用Dubbo?而不用传统的基于Http的服务调用方式?
总之,只要你简历上写的,面试时说的值钱技术,我都会问使用必要性。我不在乎这个问题听到什么答案,但我关心候选人关于必要性的说辞是否合理。如果不合理,那对不起了,这个项目疑似学习项目或培训班项目。
2 既然在项目里用到这个技术,那么就需要解决某个痛点问题,比如使用了MyCAT,拿就需要解决数据库压力大的问题。接下来我就问,怎么解决的?你可以从配置文件,框架,Java语法等方面来说明。
这里请注意,我不仅仅关心纯粹的语法,比如我不仅仅关心MyCAT组件通过配置文件实现分库分表的做法,我更关心该技术该组件和你项目整合的方式。比如你项目里用到MyCAT,那我更关心针对哪个大表实现分库,拆分成多少个表,引入MyCAT后如果再遇到全局性的访问表语句怎么办?
在问相关问题时,如果候选人在项目里没用过,那么往往就说不上,或者如果是现编,我多从几个角度提问时,往往就会穿帮。但话说回来,其实我问的点是比较普通的,只要候选人用过,那一定能说得上。
3 再提问候选人,在使用(Redis或Dubbo或其它技术)时,遇到过哪些线上问题,是怎么发现的,怎么解决的?
其实这个问题是加分项,候选人只要通过前面的回答证明自己在项目里用过,哪怕这个问题说不上也不要紧,但如果回答出了,就能证明自己在这方面能力很资深。
4 再串起来问。这是什么意思呢?比如候选人说用了某个技术或组件,总是会解决一类问题。比如用了Redis是解决数据库压力大或高并发的问题,但解决此类问题不大可能只用一个技术或组件,往往会综合使用若干组件,同时引入(监控告警等)各种机制。
那我就围绕一个需求点,串起来问这些组件技术和机制的用法。这些问题看上去很高深,但如果候选人真用过,哪怕候选人本身只是初级开发,但多少能说出一点。
我在通过上述问题确认候选人是否在项目中用到某些技术时,其实对不同级别的候选人期望是不同的。对于初级开发,我只要求能说出大致的API用法或者文字性描述。对于高级开发,我要求多少知道点技术结合项目的细节。对于架构师,我就期望能说些解决过的实际问题。
但是不管怎么说,如果候选人在被问及上述问题时,无法很好地证明自己在项目里用过某些技术,那么我会质疑候选人项目的真实性,进而甚至会质疑候选人整体能力的真实性。一旦面试官有这些质疑后,那么后面的问题就会比较麻烦了。
如果大家就遇到只问技术的面试官,哪怕问得再深,都应当感到幸运,毕竟技术问题好准备,网上都有现有的答案。而且Java技术问题该准备哪些方面,比如准备JVM,安全管理等等方面,如果你不知道,多参加几次面试后也能知道。
也就是说,准备面试,技术问题好准备,但做到能结合项目证明自己用过该技术,有该技术的(资深)实践经验,这相对来说就不容易了,甚至有些候选人在面试前还会忽略这方面的准备。下面就说下,如何结合项目说明技术的方法,因为如果这方面说好了,面试就能达到事半功倍的效果。
1 为你简历上写的每个技术,落实个项目需求,或实际的痛点。比如要缓存会员信息,所以用Redis,因为线上出现过Redis失效,所以用Redis主从集群。其它组件其它技术一样准备。
2 网上能找到大多数java值钱技术的源码、使用经验和常见的坑。面试前,你就参照着这些说辞,在你项目中找个例子。
举个简单的例子,比如遍历ArrayList等集合,要考虑快速失效问题,你可以说,在你之前项目的xx业务里,出现过快速失效问题,后果是xxx,经过排查日志,后来发现并解决了,同时你再结合底层源码说明快速失效的原因,你这样一说,要比单纯结合源码说快速失效,不知道强多少。
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
面试题总结
其它面试题(springboot、mybatis、并发、java中高级面试总结等)
YeS-1710749986569)]
[外链图片转存中…(img-Iuw08dIg-1710749986570)]
[外链图片转存中…(img-d7COjbPx-1710749986570)]