• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于java:如何准备Java初级和高级的技术面试

java 搞代码 4年前 (2022-01-27) 46次浏览 已收录 0个评论

来自:Java工程师-Distance 链接:my.oschina.net/u/3739863/blog/1813292

自己最近几年始终在做java后端方面的技术面试官,而在最近两周,又密集面试了一些java高级和高级开发的候选人,在面试过程中,我自认为比拟谨慎,遇到问题答复不好的候选人,我总会再三从不同方面发问,只有当重复确认能力不行才会下结论,相同,如果候选人给我的印象不错,我也会从多个角度来掂量,免得招进会说但不会干活的“大忽悠”。

其实倒也不是我成心要尴尬候选人,毕竟入职后就是共事,但面试官的职责使然,而且,如果资深的面试官个别也这样。

写到这里,恐怕会吓到一些想要面试的敌人,能力强和能力弱都会被多问,那怎么办?

这就是本文将要讲到的主题:如何筹备Java高级和高级的技术面试

一. 换位思考下,如果你面试官,你会怎么做

  1. 只能通过简历和面试来掂量,别无他法。如果某位大牛确认能力很行,但面试时无奈充沛地自证能力,那对不起了,过不了,事实就这样。
  2. 如果面试官因为能力不行,招进来一个大忽悠,那预计会被领导骂。而且再也不会被让面试了,给领导的印象就不好了。所以不能评主观印象,而是会有些主观规范,具体而言,就是从多个方面问些题目,答好答坏就看候选人的。

其实一些题目都差不多,但不同能力的面试官问问题的切入点和渐进水平会不同,而且有教训的面试官会开掘候选人的劣势,并能从候选人的说辞中判断候选人是真懂还是忽悠。

二. 总体上说下筹备面试的几个方面点

记得之前考政治,某个大题10分,分5个点,每个点的标准答案不多,也就一两句话。比拟取巧的做法是,涵盖点要全,每个点无需多说,但要说到点子上。相同,如果在某个点做得再多,其它点没笼罩到,只能拿这个点的分。

同理,在面试时,该当综合筹备 java Core,数据库,框架,分布式等方面的题目。依据我面试的后果,我发现不少候选人走了弯路,他们或者罗唆不筹备,筹备时可能办法不到位,单筹备一个方面。比方只筹备了算法题,在这方面答复很好,但其它方面就无所不知了。

所以说,没有所谓的肯定能胜利的面试秘籍,但有能够帮忙晋升成功率的筹备办法。
切记,面试前肯定得筹备,否则胜利的可能性很低,筹备时,得综合看各方面的点。至于每个点要到什么水平,后文会讲到。

三. 架构方面须要筹备的点

高级开发而言,须要让面试官感觉出如下的要点。

  1. 相熟SSM架构,至多在我的项目里做过。
    这个的说法是,介绍我的项目时,用一个业务流程来说spring mvc如何做的。
  2. 晓得Spring MVC中的细节,比方@Autowired的用法,如何把url映射到 Controller上,ModelAndView对象返回的形式等。
  3. 最好联合我的项目的用法,说下你是怎么用AOP,拦截器的,比如说能够通过拦挡 器拦挡非法申请,怎么用 AOP输入日志等。
  4. 对于ORM方面,不限用过哪种,但得晓得一对一,一多多,多对多等的用法,以及cascade和inverse的用法。
  5. 最好晓得申明式事务的做法。
    如果你要应聘高级开发,那在上述根底上,最好理解如下的知识点:
  6. Spring Bean的周期
  7. 最好能通过浏览源代码,说下IOC,AOP以及Spring MVC的工作流程
  8. 最好能联合反射,说下IOC等的实现原理
  9. Spring Boot和Spring Cloud的一些知识点

四. 数据库方面须要筹备的点

不少候选人会看很多SQL的技巧,比方select该怎么写,insert又该怎么写,但仅限于此,不会再筹备其它的。

这样就很吃亏,因为面试官会认为,哪怕是高级开发,SQL语句也该会写,所以这块不会多问,而会问如下方面的问题。

  1. 索引怎么建的,怎么用的?比方我建好了一个索引,在where 语句里写 name like ‘123%’会不会走索引,怎么状况下不该建索引,哪些语句不会走索引。
  2. 除了索引之外,你有过哪些SQL优化方面的教训,比方分库分表,或通过执行打算查看SQL的优化点。这最好是能联合你做的我的项目理论来讲。

这里,我面试下来,大略有70%的候选人只晓得根本SQL的写法,所以哪怕你是只有实践教训,会说一些优化点,也是十分无利的。

这块对于高级开发而言,更得理解优化方面的技能。

五. Java Core方面须要筹备的点

这块是根底,其实很多问的问题,候选人肯定会在我的项目里用到,但很少能说好说全。

这块次要会从汇合,多线程,异样解决流程以及JVM虚拟机这些方面来问。

汇合方面:

  1. hashcode有没有重写过?在什么场景下须要重写。如果能够,联合hash表的算法,说下hashmap的实现原理。

对于高级开发而言,最好通过ConcurrentHashMap来阐明下并发方面的底层实现代码。

  1. ArrayList,LinkedList的差异,比方一个基于数组,一个基于链表,它们均是线程不平安的,ArrayList的扩容做法等。

对于高级而言,最难看下底层的代码。

  1. Set如何实现防重的,比方TreeSet和HashSet等。
  2. Collection的一些办法,比方比拟办法,包装成线程平安的办法等。
  3. 可能有些面试官会问,如何通过ArrayList实现队列或堆栈,这个能够筹备下。

多线程方面

其实在我的项目里不怎么会用到,但会问如下的问题:

  1. synchronized和可重入锁的差异,而后可能会顺便问下信号量等防并发的机制。
  2. 在线程里该如何返回值,其实就是callable runnable 区别。
  3. 肯定得通过ThreadLocal或volatile关键字,来阐明线程的内存模型。
  4. 线程池方面,会用,理解些罕用参数

线程方面,可能问得比拟多的就是并发机制,如果是高级开发,可能会问得深些。

虚拟机方面

  1. 结构图和流程能够大抵说下。
  2. 肯定得理解针对堆的垃圾回收机制,具体而言,能够画个图,说下年老代年轻代等。
  3. 说下垃圾回收的流程,而后针对性地说下如何在代码中优化内存性能。
  4. 最好说下如果呈现了OOM异样,该怎么排查?如何看Dump文件。
  5. GC的一些概念,比方强弱软援用,finalize办法等,这些能够筹备下。

六. 算法,设计模式等,其实是虚的

这块好筹备,不过话说哪怕这些没答复好,但能证实有相干技能的我的项目教训,个别也会让过。

不过在这块,不少候选人就轻重倒置了,比方就筹备算法,设计模式,方才提到的框架,数据库和Java Core方面就不筹备了。这样很吃亏,就好比考政治只温习了一个点,其它一点也不筹备。

七. 我面试的感触&听到哪类答复就能证实候选人比拟资深

  1. 大多数的候选人(大略7成)间接就来了,不做任何筹备。要晓得,面试和我的项目其实有些脱节,哪怕我的项目做得再好,不做筹备照样通不过,只有我确认过这类人的确无奈达标,我拒掉他们没任何心理累赘,谁让他们不筹备?
  2. 还有些候选人态度很好,显著筹备过,但没筹备到位,比方像方才所说,只筹备了算法,或者在Java Core方面,只看了汇合方面的面试题。

对于这些同学,哪怕是过了,我也会感到可惜,毕竟如果面试好些的话,工资也能更高些,至于哪些过不了的,我敢说,如果他们筹备过,预计就不是这个后果了。

其实我也晓得,人无完人,哪怕我本人去面试,也不可能八面玲珑,所以,我不会要求候选人什么问题都能答复出,甚至大多答错也没关系,只有能证实本人的能力即可通过面试。

我也和不少面试官交换过,依据咱们的教训,如果候选人能说出如下的知识点,即能证实他在这个畛域比拟资深了,在这块,我可能就不会过多地问问题了。

架构方面

  1. 能证实本人能够干活(这不难),同时能联合底层代码说出IOC,AOP或Spring MVC的流程,只有能说出一个即可。或者能说出拦截器,Controller等的高级用法。
  2. 能证实本人有Spring Boot或Spring Cloud的教训,比方能说出些Spring Cloud组件的用法。
  3. 如果能证实本人有分布式开发的教训,那最好了,其实这不难证实,比方能说出服务的包是放在多台机器上(大多数公司其实都这样),而且能说出如何部署,如何通过nginx等做到负载平衡。

数据库方面

其实讲清楚一个问题即可:如何进行SQL调优,比方通过索引,看执行打算即可,如果有其它的优化点,说分明即可。

Java Core方面

这里给出些窍门:

  1. 能联合ConcurrentHashMap的源代码,说出final,volatile,transient的用法,以及在其中如何用Lock对象避免写并发。
  2. 联合一个我的项目理论,说下设计模式的实际。
  3. 多线程方面,能说出Lock或volatile等高级知识点的用法。
  4. 这块最取巧:说下GC的流程,以及如何通过日志和Dump文件排查OOM异样,如果再高级些的话,说下如何在代码中优化内存代码。

逆锋起笔是一个专一于程序员圈子的技术平台,你能够播种最新技术动静最新内测资格BAT等大厂大佬的教训增长本身学习材料职业路线等等,微信搜寻逆锋起笔关注!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于java:如何准备Java初级和高级的技术面试

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址