概述

最近,我在换工作过程中对面试经历进行了总结,记录了每个公司的面试流程以及所提问的面试题,以便于自己反思和供大家参考。我是一名Java开发者,拥有10年的工作经验,因此我主要投递的是高级Java开发工程师的职位。

投递数据

  • 沟通过的公司:500+
  • 面试次数:20
  • 已投简历:130+

因复试原因,最多一天面试6家(时间非常紧张,本来约了三家公司,但来了三家复试的面试官,他们都要求我能挤出一个小时进行面试,给他们看了Boss预约的信息)。

面试岗位情况

因为我有10年的Java开发经验,所以我主要投递高级Java工程师的岗位。由于我居住在顺义,所以面试的公司一般都在望京附近。

面试情况

为了避免不必要的麻烦,我将公司名称隐藏,如果需要公司名称可以私信我。

图片

Boss面试截图

为了避免不必要的麻烦,我将公司名称隐藏,也只分享部分截图,如需完整截图可以私信我。

我预约了16家公司,最终参加的面试共有20家。

图片

面试过程

为了避免不必要的麻烦,我将公司名称隐藏,也只分享部分截图,如需详细信息可以私信我。

原本我计划详细描述每个面试过程,不过感觉有点像流水账,没有太大意义。因此,我挑选了几个具有代表性的面试进行介绍。

面试经历分享:

公司A:面试时长10分钟,面试官全程面无表情。提问内容包括Spring Boot的自动装配过程、Spring Boot的循环依赖、Spring Boot的自定义starter、HashMap等。

在这种情况下,你可能会遇到面试官没有反馈,继续提问。这时候无需过于担心或生气,面试官可能正经历其他事情,或者他本身性格就是如此。

公司B:面试时长1小时,涉及的问题包括JVM、ArrayList、JMM内存屏障等,提问深度逐渐增加,直到你无法回答为止。

这类问题较为常见,一些大型公司会采用这种方式面试。除了感到沮丧,建议大家要多研究源码。

公司C:这明显是群体面试,面试官的言辞模糊,只表示前两轮面试表现良好,希望进一步沟通。

我猜测,面试官对许多候选人都这样说,可能因为面试基数较大,100个候选人中只找2个人。

公司D:面试流程显得有些混乱,首先与HR交流了半个小时,内容包括工作经历、家庭情况、职业规划等,似乎是在拖延时间。随后,业务总监来了解我的工作经历,但没有技术面试,最后HR表示因为我没有支付经验,因此未能通过。

如果他们一开始就询问支付经验,我们都可以节省时间。

希望大家在面试时能够避免这样的公司。

面试结果

此次面试周期共计10天,面试了20家公司,获得3个offer,拒绝了2个(因未能谈到薪资),还有一个正在洽谈中。也就是说,有6个公司达到了谈薪阶段。

起初由于紧张,没能仔细筛选公司,因此面试了一些不必要的公司。总体来看,我的通过率不算高。

面试高频知识

总结下面试时常见的知识点:

Java基础

  • JVM:一般从JVM组成开始介绍,然后深入讨论垃圾回收机制、回收器类型及其优缺点,比如G1和CMS的对比。

  • 集合类:常见的面试问题包括HashMap和ArrayList的原理、比较ArrayList与LinkedList的差异、ConcurrentHashMap等。

  • 锁机制:AQS的实现、公平锁与非公平锁、synchronized与Lock的区别等。

  • CAS:通常与volatile一起提及。

  • 线程池:99%的面试都会问到这一点,重点包括线程池的参数配置和拒绝策略。

Spring相关

  • IOC/AOP/事务:通常将其归为一类进行讨论,重点包括IOC的实现、AOP的逻辑实现及事务的传播方式。

  • Spring初始化Bean的过程:这个问题可以与前面的讨论结合。

MySQL

  • 索引:围绕索引的问题通常会延伸到执行计划及查询优化等内容。

  • 事务:关键点包括ACID特性、隔离级别及锁的实现。

Redis

  • 数据类型:讨论Redis的常用数据结构及使用场景。

  • 缓存问题的解决方案:例如缓存雪崩、击穿、穿透等。

微服务架构

微服务架构非常重要,通常在介绍项目时会提到。回答时可以从微服务的构成开始,介绍各个框架并对比它们的优缺点。

总结

作为一名Java开发工程师,学习的内容繁多,这篇文章记录了我在面试中遇到的高频问题,供大家参考。希望可以帮助更多正在求职的朋友们。

面经总结

1. 技术基础:包括Java基础、数据库基础及缓存等。

2. 算法题:坚持刷题,提高算法能力。

3. 微服务相关:了解多种微服务框架的使用。

4. 高级技术应用实例:应对面试官提问时,举出通用场景。

5. 2分钟内清晰介绍项目:逻辑表达能力的考察。