被裁员后,10年Java开发者的求职历程与面试经验分享:高频面试题解析与个人心得
概述
最近,我在换工作过程中对面试经历进行了总结,记录了每个公司的面试流程以及所提问的面试题,以便于自己反思和供大家参考。我是一名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开发工程师,学习的内容繁多,这篇文章记录了我在面试中遇到的高频问题,供大家参考。希望可以帮助更多正在求职的朋友们。