首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
想踢足球的布莱恩在做毕设
南昌交通学院 Java
发布于江西
关注
已关注
取消关注
@程序员鱼皮:
2025 年最全Java面试题 ,热门高频200 题+答案汇总!
为大家准备了 2025年全新热门高频 Java 面试题。适合准备求职、或者有跳槽想法的初/中/高级程序员。也合适想要对自己技术栈查缺补漏、不断完善成长的人。我们将面试题分成 Java基础&并发、MySQL、Redis、JVM……等多个分类。下面一起看看这些题目:Java 基础&并发(33 题)1,说说 Java 中 HashMap 的原理?HashMap 是基于哈希表的数据结构,用于存储键值对(key-value)。其核心是将键的哈希值映射到数组索引位置,通过数组 + 链表(在 Java 8 及之后是数组 + 链表 + 红黑树)来处理哈希冲突。HashMap 使用键的 hashCode() 方法计算哈希值,并通过 indexFor 方法(JDK 1.7 及之后版本移除了这个方法,直接使用 (n - 1) & hash)确定元素在数组中的存储位置。哈希值是经过一定扰动处理的,防止哈希值分布不均匀,从而减少冲突。HashMap 的默认初始容量为 16,负载因子为 0.75。也就是说,当存储的元素数量超过 16 × 0.75 = 12 个时,HashMap 会触发扩容操作,容量x2并重新分配元素位置。这种扩容是比较耗时的操作,频繁扩容会影响性能。2,Java 中 ConcurrentHashMap 1.7 和 1.8 之间有哪些区别?JDK 1.7 ConcurrentHashMap 采用的是分段锁,即每个 Segment 是独立的,可以并发访问不同的 Segment,默认是 16 个 Segment,所以最多有 16 个线程可以并发执行。而 JDK 1.8 移除了 Segment,锁的粒度变得更加细化,锁只在链表或红黑树的节点级别上进行。通过 CAS 进行插入操作,只有在更新链表或红黑树时才使用 synchronized,并且只锁住链表或树的头节点,进一步减少了锁的竞争,并发度大大增加。并且 JDK 1.7 ConcurrentHashMap 只使用了数组 + 链表的结构,而 JDK 1.8 和 HashMap一样引入了红黑树。除此之外,还有扩容的区别以及 size 方法的计算也不一样。3,为什么 JDK 1.8 对 HashMap 进行了红黑树的改动?在 JDK 1.8 之前,HashMap 使用链表来解决哈希冲突。当哈希冲突较多时,链表中的元素增多,查找、插入和删除的时间复杂度从 O(1) 退化为 O(n)。因此在 JDK 1.8 引入红黑树,将链表长度超过一定阈值(默认 8)时的链表转换为红黑树,避免性能急剧下降。当链表长度降到 6 以下时,红黑树会重新退化为链表,保持简单高效。红黑树是一种平衡二叉搜索树,插入、删除、查找操作的时间复杂度为 O(log n),在元素多的情况下远优于链表的 O(n)。4,JDK 1.8 对 HashMap 除了红黑树还进行了哪些改动?改进了哈希函数的计算:JDK 1.8 中优化了哈希函数,使得哈希值的分布更加均匀,减少了哈希冲突的发生。通过在生成哈希值时使用“扰动函数”,确保哈希值的高低位都能参与到桶的选择中。扩容机制优化:JDK 1.8 改进了扩容时的元素迁移机制。在扩容过程中不再对每个元素重新计算哈希值,而是根据原数组长度的高位来判断元素是留在原位置,还是迁移到新数组中的新位置。这一改动减少了不必要的计算,提升了扩容效率。头插法变为尾插法:头插法的好处就是插入的时候不需要遍历链表,直接替换成头结点,但是缺点是扩容的时候会逆序,而逆序在多线程操作下可能会出现环,产生死循环,于是改为尾插法。5,Java 中有哪些集合类?请简单介绍Java 中的集合类主要分为两大类:Collection 接口和 Map 接口。前者是存储对象的集合类,后者存储的是键值对(key-value)。Collection 接口下又分为 List、Set 和 Queue 接口。每个接口有其具体实现类。以下是主要的集合类:List 接口:ArrayList:基于动态数组,查询速度快,插入、删除慢。LinkedList:基于双向链表,插入、删除快,查询速度慢。Vector:线程安全的动态数组,类似于 ArrayList,但开销较大。Set 接口:HashSet:基于哈希表,元素无序,不允许重复。LinkedHashSet:基于链表和哈希表,维护插入顺序,不允许重复。TreeSet:基于红黑树,元素有序,不允许重复。所以网上有些说 Set 是无序集合非常不准确,因为需要看具体的实现类。Queue 接口:PriorityQueue:基于优先级堆,元素按照自然顺序或指定比较器排序。LinkedList:可以作为队列使用,支持 FIFO(先进先出)操作。Map 接口:存储的是键值对,也就是给对象(value)设置了一个 key,这样通过 key 可以找到那个 value。HashMap:基于哈希表,键值对无序,不允许键重复。LinkedHashMap:基于链表和哈希表,维护插入顺序,不允许键重复。TreeMap:基于红黑树,键值对有序,不允许键重复。Hashtable:线程安全的哈希表,不允许键或值为 null。ConcurrentHashMap:线程安全的哈希表,适合高并发环境,不允许键或值为 null。我们整理了2025年全新 java 高频热门面试题,包括:Java、 MySQL、Redis、Spring、SpringBoot、SpringCloud、计算机网络、操作系统、消息队列、Netty、后端场景题、线上问题排查、后端系统设计题 等等内容。篇幅限制,后续全套高频面试题及详细题解可以【点击此处获取】。6,为什么 Java 8 移除了永久代(PermGen)并引入了元空间(Metaspace)?7,为什么 Java 中 HashMap 的默认负载因子是 0.75?8,Java 中 HashMap 的扩容机制是怎样的?9,为什么 HashMap 在 Java 中扩容时采用 2 的 n 次方倍?10,数组和链表在 Java 中的区别是什么?11,Java 线程池核心线程数在运行过程中能修改吗?如何修改?12,Java 中如何创建多线程?13,Java 中的 final 关键字是否能保证变量的可见性?14,什么是 Java 中的原子性、可见性和有序性?15,什么是 Java 的 CAS(Compare-And-Swap)操作?16,为什么 Java 中的 ThreadLocal 对 key 的引用为弱引用?17,编译执行与解释执行的区别是什么?JVM 使用哪种方式?18,Java 中什么情况会导致死锁?如何避免?19,你了解 Java 线程池的原理吗?20,Java 线程池有哪些拒绝策略?21,如何合理地设置 Java 线程池的线程数?22,你使用过哪些 Java 并发工具类?23,Synchronized 和 ReentrantLock 有什么区别?24,Java 的 synchronized 是怎么实现的?25,如何优化 Java 中的锁的使用?26,Java 中常见的垃圾收集器有哪些?27,Java 中有哪些垃圾回收算法?28,什么是 Java 内存模型(JMM)?29,线程和进程有什么区别?30,Java 中 volatile 关键字的作用是什么?31,什么是 Java 中的 ABA 问题?32,线程的生命周期在 Java 中是如何定义的?33,说说 AQS 吧?JVM 相关(7 题)JVM 由哪些部分组成?JVM 垃圾回收调优的主要目标是什么?如何对 Java 的垃圾回收进行调优?常用的 JVM 配置参数有哪些?JVM 的内存区域是如何划分的?JVM 有哪几种情况会产生 OOM(内存溢出)?怎么分析 JVM 当前的内存占用情况?OOM 后怎么分析?MySQL(32 题)MySQL 索引的最左前缀匹配原则是什么?数据库的脏读、不可重复读和幻读分别是什么?MySQL 的存储引擎有哪些?它们之间有什么区别?MySQL 的覆盖索引是什么?MySQL 的索引类型有哪些?MySQL 的索引下推是什么?MySQL InnoDB 引擎中的聚簇索引和非聚簇索引有什么区别?MySQL 中的回表是什么?MySQL 中使用索引一定有效吗?如何排查索引效果?MySQL 中的索引数量是否越多越好?为什么?请详细描述 MySQL 的 B+ 树中查询数据的全过程为什么 MySQL 选择使用 B+ 树作为索引结构?MySQL 三层 B+ 树能存多少数据?详细描述一条 SQL 语句在 MySQL 中的执行过程。MySQL 是如何实现事务的?MySQL 事务的二阶段提交是什么?MySQL 中长事务可能会导致哪些问题?MySQL 中的 MVCC 是什么?MySQL 中的事务隔离级别有哪些?MySQL 默认的事务隔离级别是什么?为什么选择这个级别?MySQL 中有哪些锁类型?MySQL 的乐观锁和悲观锁是什么?MySQL 中如果发生死锁应该如何解决?MySQL 中 count(*)、count(1) 和 count(字段名) 有什么区别?MySQL 中如何进行 SQL 调优?如何使用 MySQL 的 EXPLAIN 语句进行查询分析?MySQL 中如何解决深度分页的问题?什么是 MySQL 的主从同步机制?它是如何实现的?如何处理 MySQL 的主从同步延迟?MySQL 中如果我 select * from 一个有 1000 万行的表,内存会飙升么?在 MySQL 中建索引时需要注意哪些事项?在什么情况下,不推荐为数据库建立索引?消息队列(16 题)RabbitMQ 怎么实现延迟队列?RabbitMQ 中消息什么时候会进入死信交换机?RabbitMQ 中无法路由的消息会去到哪里?Kafka 为什么要抛弃 Zookeeper?Kafka 中 Zookeeper 的作用?说一下 Kafka 中关于事务消息的实现?说一下 RocketMQ 中关于事务消息的实现?RocketMQ 的事务消息有什么缺点?你还了解过别的事务消息实现吗?为什么需要消息队列?说一下消息队列的模型有哪些?如何处理重复消息?如何保证消息的有序性?如何处理消息堆积?如何保证消息不丢失?消息队列设计成推消息还是拉消息?推拉模式的优缺点?为什么 RocketMQ 不使用 Zookeeper 作为注册中心?设计模式(11 题)谈谈你了解的最常见的几种设计模式,说说他们的应用场景什么是策略模式?一般用在什么场景?什么是责任链模式?一般用在什么场景?什么是模板方法模式?一般用在什么场景?什么是观察者模式?一般用在什么场景?什么是代理模式?一般用在什么场景?请描述简单工厂模式的工作原理。工厂模式和抽象工厂模式有什么区别?什么是设计模式?请简述其作用。单例模式有哪几种实现?如何保证线程安全?Netty 采用了哪些设计模式?Spring 框架(19 题)说说 Spring 启动过程?你了解的 Spring 都用到哪些设计模式?Spring 有哪几种事务传播行为?说说 Springboot 的启动流程?SpringBoot 是如何实现自动配置的?如何理解 Spring Boot 中的 starter?Spring Boot 是如何通过 main 方法启动 web 项目的?Spring Boot 的核心特性有哪些?什么是 Spring Boot?什么是 Spring IOC?Spring AOP 默认用的是什么动态代理,两者的区别?什么是 AOP?看过源码吗?说下 Spring 由哪些重要的模块组成?什么是循环依赖(常问)?Spring 如何解决循环依赖?为什么 Spring 循环依赖需要三级缓存,二级不够吗?说下 Spring Bean 的生命周期?Spring MVC 具体的工作原理?Spring 中的 DI 是什么?Redis(31 题)Redis 集群的实现原理是什么?Redis 集群会出现脑裂问题吗?Redis 中如何实现分布式锁?Redis 实现分布式锁时可能遇到的问题有哪些?说说 Redisson 分布式锁的原理?如何使用 Redis 快速实现排行榜?Redis 中如何保证缓存与数据库的数据一致性?Redis 为什么这么快?如何使用 Redis 快速实现布隆过滤器?为什么 Redis 设计为单线程?6.0 版本为何引入多线程?你在项目中使用的 Redis 客户端是什么?Redis 中常见的数据类型有哪些?Redis 中跳表的实现原理是什么?Redis 性能瓶颈时如何处理?Redis 的 hash 是什么?Redis 和 Memcached 有哪些区别?Redis 支持事务吗?如何实现?Redis 数据过期后的删除策略是什么?Redis 中有哪些内存淘汰策略?Redis 的 Lua 脚本功能是什么?如何使用?Redis 的 Pipeline 功能是什么?Redis 通常应用于哪些场景?Redis 中的 Big Key 问题是什么?如何解决?如何解决 Redis 中的热点 key 问题?Redis 的持久化机制有哪些?Redis 中的缓存击穿、缓存穿透和缓存雪崩是什么?线上发现 Redis 机器爆了,如何优化?Redis 在生成 RDB 文件时如何处理请求?Redis 的哨兵机制是什么?Redis 主从复制的实现原理是什么?如果发现 Redis 内存溢出了?你会怎么做?计算机网络相关(19 题)说说 TCP 的三次握手?说说 TCP 的四次挥手?为什么 TCP 挥手需要有 TIME_WAIT 状态?TCP 超时重传机制是为了解决什么问题?TCP 滑动窗口的作用是什么?TCP/IP 四层模型是什么?OSI 七层模型是什么?从网络角度来看,用户从输入网址到网页显示,期间发生了什么?什么是物理地址,什么是逻辑地址?到底什么是 TCP 连接?HTTP 1.0 和 2.0 有什么区别?HTTP 2.0 和 3.0 有什么区别?HTTP 和 HTTPS 有什么区别?HTTP 与 RPC 之间的区别?TCP 和 UDP 有什么区别?TCP 的粘包和拆包能说说吗?Cookie、Session、Token 之间有什么区别?线上 CPU 飙高如何排查?TCP 是用来解决什么问题?其他框架(17 题)简单说说 Netty 的零拷贝机制?Netty 是如何解决粘包和拆包问题的?Netty 如何解决 JDK NIO 中的空轮询 Bug?介绍一下 Reactor 线程模型?说说你知道的几种 I/O 模型Select、Poll、Epoll 之间有什么区别?说一下 Netty 的应用场景?为什么不选择使用原生的 NIO 而选择使用 Netty 呢?Netty 性能为什么这么高?简述 MyBatis 的插件运行原理,以及如何编写一个插件?说说 MyBatis 的缓存机制?MyBatis 中 #{} 和 ${} 的区别是什么?MyBatis 与 Hibernate 有哪些不同?什么是 MyBatis-Plus?它有什么作用?Dubbo 和 Spring Cloud Gateway 有什么区别?什么是 API 网关?它有什么作用?什么是 Seata?分布式相关(13 题)什么情况下需要使用分布式事务,有哪些方案?如何设计一个秒杀功能?让你设计一个分布式 ID 发号器,怎么设计?让你设计一个短链系统,怎么设计?分布式锁一般都怎样实现?如何设计一个点赞系统?让你设计一个 RPC 框架,怎么设计?什么是限流?限流算法有哪些?负载均衡算法有哪些?分布式和微服务有什么区别?什么是服务熔断?什么是服务降级?什么是服务雪崩?更多💻 编程学习交流:编程导航📃 简历快速制作:老鱼简历✏️ 面试刷题神器:面试鸭
点赞 17
评论 5
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
昨天 23:41
已编辑
中南大学 Java
AI是牛马打工人的天敌
有个真相可能不符合大家的认知:AI不是牛马打工人的好朋友,而是打工人的天敌。原因很简单:AI让管理者重新思考员工的工作价值,可裁可不裁者必裁。打工人真正应该关心的从来就只有自己在老板心中的工作价值。这其中还有个认知的代沟:假如一个人在之前完成一件工作要5天,ai提效后现在只要3天,但是老板觉得现在ai这么强大,半小时就应该搞完的事你为什么还是要用这么久?是不是你不会用ai?不肯懂脑子去学习ai?企业这样子下去会不会被淘汰?再代入老板的视角:ai这么强,原来3个人才能完成的事现在1个人就能搞定,那公司为什么还要留着2个闲人?一个冷知识:一个员工的企业用工成本大概是他薪资的1.4倍,裁员后会把用工...
点赞
评论
收藏
分享
05-06 15:53
杭州电子科技大学 算法工程师
投了一个多月实习了,0回复,到底怎么找实习啊
投了一个多月实习了,0回复,到底怎么找实习啊
我的求职进度条
点赞
评论
收藏
分享
04-14 12:52
已编辑
杭州电子科技大学 C++
27届找实习
三月底投到现在至今0约面,是哪里出了问题,是背景问题还是简历问题呢希望大佬指点一下改了一版新的,求大佬们看看
Luxlord:
哈哈哈我以为只有java这么逆天,杭电爷的c嘎嘎也是
点赞
评论
收藏
分享
04-09 09:36
门头沟学院 Java
简历修改
我只学了点评和外卖,9月开学前想实习一段只想找个小厂,BOSS打招呼都不回,实习僧被拒了很多,投了100份左右,到底该怎么找实习啊。还想问问大家我现在是该做一个ai项目(怕来不及找实习),还是继续背八股投呢,因为觉得进不了大厂算法没怎么刷,没招了求简历修改意见
点赞
评论
收藏
分享
05-06 11:53
杭州电子科技大学 算法工程师
华为暑期未面直接挂
起因是研一不知天高地厚,投了华为日常实习-软件开发,想着虽然没啥准备但人生第一场面试高低体验一下,结果也是理所当然喜提一面挂。后面发奋沉淀一年想要再战暑期实习(AI方向),结果投了后直接被卡在投递成功环节一个月,根本推进不到简历筛选环节,问HR说之前的面试成绩会保留,所以实习是推进不了了,只能看秋招还有没有机会了。当初到底是谁告诉我华为面评占比不重的
我的求职进度条
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
毕业啦!我们要一起去广州打拼啦!
1.8W
2
...
毕业了,有些话只能藏在心里了
1.5W
3
...
2026春招到底卷成什么样了?填问卷说出真相,最高领200元现金红包
1.3W
4
...
字节 中国交易与广告 后端一面
1.0W
5
...
从阿里被裁到快手升P6,我花了四年
7937
6
...
211本,130投0面,agent应用开发,简历求助!
7918
7
...
别人:阿里 字节 腾讯
6752
8
...
在携程的一天
6307
9
...
从腾讯到阿里感,谢一路走来的自己
5809
10
...
华为暑期实习
5156
创作者周榜
更多
正在热议
更多
#
这个offer值得去吗?
#
32035次浏览
232人参与
#
校招薪资来揭秘
#
960844次浏览
4063人参与
#
在爱玛,骑向未来
#
20448次浏览
395人参与
#
如果春招能重来,我会___
#
29565次浏览
296人参与
#
24秋招避雷总结
#
1020224次浏览
7098人参与
#
你会因为行情,降低找工作标准吗?
#
45406次浏览
328人参与
#
机械人还在等华为开奖吗?
#
339261次浏览
1652人参与
#
米哈游求职进展汇总
#
688749次浏览
3348人参与
#
华为池子有多大
#
178157次浏览
931人参与
#
26届春招投递记录
#
8721次浏览
72人参与
#
25届网易互娱暑实进度
#
109123次浏览
802人参与
#
通信/硬件求职避坑tips
#
172106次浏览
1170人参与
#
记录我的毕业季
#
4763次浏览
120人参与
#
机械人,你的秋招第一份简历被谁挂了
#
268813次浏览
2451人参与
#
远程面试的尴尬瞬间
#
363914次浏览
2062人参与
#
大学最后一个寒假,我想……
#
103327次浏览
846人参与
#
机械求职避坑tips
#
103705次浏览
589人参与
#
你认为小厂实习有用吗?
#
145083次浏览
763人参与
#
运营商笔面经互助
#
219674次浏览
1833人参与
#
美团秋招笔试
#
216453次浏览
1192人参与
#
网易求职进展汇总
#
213196次浏览
1524人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务