Java 后端面试题目全集

一、Java 基础(72题)

🔥 高频题

# 题目 频次
1 Java作为一门编程语言,其核心特点有哪些? 🔥
2 Java是如何实现"一次编写,到处运行"的跨平台特性的? 🔥
3 请解释JVM、JDK、JRE三者分别是什么,以及它们之间的关系? 🔥
4 为什么说Java既是编译型语言又是解释型语言?JIT编译器在其中起什么作用? 🔥
5 值传递和引用传递有什么区别?Java中使用的是哪一种?请举例说明。 🔥
6 Java的八种基本数据类型分别是什么?每种各占用多少字节? 🔥
7 为什么涉及金额计算时推荐使用BigDecimal而不是double或float? 🔥
8 什么是自动装箱和自动拆箱?使用过程中有哪些常见的坑? 🔥
9 Integer的缓存机制是什么?缓存范围是多少?为什么这样设计? 🔥
10 请结合代码示例,说明面向对象的三大特性:封装、继承、多态。 🔥
11 方法重载(Overload)和方法重写(Override)有什么区别?各自的规则是什么? 🔥
12 Java中抽象类和接口的区别是什么?在Java 8之后接口有哪些变化? 🔥
13 final关键字在Java中可以修饰类、方法、变量,分别有什么作用? 🔥
14 static关键字可以修饰哪些成员?分别产生什么效果? 🔥
15 深拷贝和浅拷贝的区别是什么?如何实现一个对象的深拷贝? 🔥
16 == 运算符与 equals() 方法在比较对象时有什么区别? 🔥
17 hashCode()和equals()方法之间有什么约束关系?为什么重写equals时必须重写hashCode? 🔥
18 String、StringBuffer、StringBuilder三者的区别是什么?分别在什么场景下使用? 🔥
19 Java 8引入了哪些重要的新特性?请列举并简要说明。 🔥
20 什么是Java反射机制?反射有哪些典型应用场景?它有什么优缺点? 🔥
21 请描述Java的异常体系结构:Error和Exception有什么区别?受检异常与非受检异常分别是什么? 🔥
22 双重校验锁(DCL)实现单例模式时,为什么必须使用volatile关键字? 🔥
23 BIO(阻塞IO)、NIO(非阻塞IO)、AIO(异步IO)三者的区别和适用场景分别是什么? 🔥
24 Java如何利用NIO的Channel、Buffer、Selector三大组件实现网络高并发编程? 🔥
25 什么是Java泛型?什么是泛型擦除?泛型擦除会带来哪些问题? 🔥

⭐ 中频题

# 题目 频次
26 相比其他编程语言,Java的核心优势和劣势分别是什么?
27 JVM(Java虚拟机)和Java语言本身有什么区别?
28 JVM是什么?它的核心职责有哪些?
29 编译型语言和解释型语言有什么区别?Java属于哪一种?
30 Python和Java在语言特性、运行机制、适用场景上有哪些区别?
31 int和long类型各占多少位、多少字节?各自的取值范围是多少?
32 long类型和int类型之间可以互相转换吗?转换时需要注意什么?
33 Java中的数据类型转换分为哪几种方式?各自可能引发什么问题?
34 Java中为什么既要有int基本类型,又要有Integer包装类?二者如何对比?
35 既然有了Integer包装类,为什么还要保留int基本类型?
36 Java多态体现在哪几个方面?请分别举例说明。
37 多态机制解决了编程中的什么问题?
38 面向对象的六大设计原则(SOLID + 迪米特法则)分别是什么?
39 抽象类和普通类有什么区别?什么时候应该使用抽象类?
40 抽象类可以用final修饰吗?为什么?
41 从Java 8到Java 9,接口中可以定义哪些类型的方法?
42 抽象类可以直接new实例化吗?为什么?
43 接口中能否定义构造函数?为什么?
44 静态变量和静态方法在内存中是如何存储的?它们的加载时机是什么?
45 非静态内部类和静态内部类有什么区别?分别如何实例化?
46 非静态内部类为什么能直接访问外部类的成员?编译器背后做了什么?
47 实现对象深拷贝有哪几种方法?各自优缺点是什么?
48 Java中创建对象有哪几种方式?除了new关键字还有哪些途径?
49 通过new创建的对象什么时候会被垃圾回收?判断依据是什么?
50 如何访问一个类的私有字段或私有方法?有哪些途径?
51 Java注解的底层实现原理是什么?
52 @Retention注解的三种保留策略(SOURCE/CLASS/RUNTIME)分别代表什么含义?
53 @Target注解可以指定哪些作用域(ElementType)?常用的有哪些?
54 Java中异常处理有哪些方式?try-with-resources语法有什么好处?
55 为什么有些方法抛出异常时不需要显式使用throws声明?
56 如果try块中有return "a",finally块中也有return "b",最终返回什么?为什么?
57 Object类中有哪些常用方法?各自的作用是什么?
58 String类有哪些常用的方法?请列举并说明用途。
59 Lambda表达式的基本语法是什么?它解决了什么问题?
60 Stream API有哪些常用操作?中间操作和终端操作有什么区别?
61 ParallelStream是什么?适用于什么场景?使用时需要注意哪些问题?
62 CompletableFuture是什么?它解决了传统Future的哪些痛点?
63 Java 21引入了哪些重要的新特性?虚拟线程(Virtual Thread)的原理是什么?
64 在进行Java对象序列化时,有哪些推荐的最佳实践?
65 Java原生序列化如何实现?serialVersionUID和transient关键字的作用是什么?
66 代理模式和适配器模式有什么区别?各自的适用场景是什么?
67 责任链模式和策略模式有什么区别?分别适用于什么业务场景?
68 NIO的三大核心组件Channel、Buffer、Selector分别起什么作用?
69 哪些主流框架底层使用了Java NIO技术?
70 如何用Comparable接口对学生列表按分数降序、学号升序排序?
71 Native方法是什么?Java中为什么要使用Native方法?
72 Java进程如何与操作系统进行交互?从用户态到内核态的调用链路是怎样的?

二、Java 集合(40题)

🔥 高频题

# 题目 频次
1 数组和集合有什么区别?你用过哪些Java集合类? 🔥
2 请画出Java集合框架的整体体系结构,Collection和Map两大分支分别包含哪些核心接口和实现类? 🔥
3 ArrayList和LinkedList在底层数据结构、随机访问、插入删除性能上有什么区别? 🔥
4 ArrayList的扩容机制是怎样的?扩容因子是多少?底层如何实现数组拷贝? 🔥
5 HashMap的底层实现原理是什么?JDK 1.7和1.8在数据结构上有什么变化? 🔥
6 请详细描述HashMap的put方法的完整执行流程。 🔥
7 HashMap的扩容机制是怎样的?JDK 1.8在扩容时做了哪些优化? 🔥
8 HashMap的容量为什么必须是2的n次方?这样设计有什么好处? 🔥
9 ConcurrentHashMap在JDK 1.7和1.8中实现原理有什么不同?分别如何保证线程安全? 🔥
10 HashMap、Hashtable、ConcurrentHashMap三者在线程安全性、性能、null值支持上有什么差异? 🔥
11 HashMap在链表转红黑树时,为什么选择红黑树而不是AVL树? 🔥
12 为什么重写equals方法时必须同时重写hashCode方法?如果不重写会发生什么问题? 🔥

⭐ 中频题

# 题目 频次
13 Java中有哪些线程安全的集合类?它们分别通过什么机制实现线程安全?
14 java.util.Collections工具类和java.util.Collection接口有什么区别?
15 集合遍历有哪些方式?哪种方式可以在遍历时安全地删除元素?
16 List接口有哪几种常见实现?它们之间的核心区别是什么?
17 使用for-each或Iterator遍历List时,能否直接修改List中的元素?什么是fail-fast机制?
18 如何高效地删除List中指定下标位置的元素?
19 ArrayList和Vector有什么区别?Vector为什么逐渐被弃用?
20 ArrayList存在线程安全问题吗?有哪些解决方案?
21 什么场景下应该使用ArrayList,什么场景下应该使用LinkedList?
22 CopyOnWriteArrayList是如何实现线程安全的?它适用于什么场景?有什么缺点?
23 为什么List会编译报错,而List可以?背后的泛型擦除机制是怎样的?
24 List和数组之间如何互相转换?使用Arrays.asList()有哪些常见的坑?
25 Java集合中List和Set的核心区别是什么?在什么场景下选择Set?
26 如何对一个Set集合进行排序?TreeSet和HashSet在排序上有什么区别?
27 Set集合是如何保证元素不重复的?底层依赖什么机制?
28 Java中有哪些有序的Set实现?它们分别通过什么方式保证顺序?
29 常见的Map实现类有哪些?它们在有序性、线程安全性、性能上有什么区别?
30 遍历Map有哪几种方式?哪种方式效率最高?为什么推荐使用entrySet?
31 哈希冲突的解决方法有哪些?HashMap采用的是哪种?
32 HashMap是线程安全的吗?JDK 1.7中HashMap在多线程下可能产生什么问题?
33 HashMap中get方法获取元素的完整过程是怎样的?
34 HashMap的get方法在并发场景下调用一定安全吗?可能出现什么问题?
35 在使用HashMap时,一般用什么类型作为Key?为什么String是比较理想的选择?
36 HashMap允许key为null吗?ConcurrentHashMap呢?为什么这样设计?
37 往一个初始容量为16的HashMap中依次存入20个元素,会触发几次扩容?
38 HashMap的默认负载因子是0.75,这个值是怎么确定的?为什么不是0.8或0.6?
39 HashMap和Hashtable在继承关系、线程安全、null值处理、性能上有哪些区别?
40 ConcurrentHashMap在JDK 1.8中为什么同时使用CAS和synchronized两种机制?

三、多线程与并发(30题)

🔥 高频题

# 题目 频次
1 什么是Java内存模型(JMM)?它如何保证并发编程中的原子性、可见性和有序性? 🔥
2 synchronized锁的升级过程是怎样的?偏向锁、轻量级锁、重量级锁分别是什么? 🔥
3 synchronized和ReentrantLock有什么区别?分别在什么场景下使用? 🔥
4 什么是可重入锁?synchronized是如何实现锁重入的? 🔥
5 AQS(AbstractQueuedSynchronizer)的核心原理是什么?它是如何实现锁的获取与释放的? 🔥
6 volatile关键字有什么作用?它能保证原子性吗?底层是如何实现可见性和禁止指令重排的? 🔥
7 CAS(Compare And Swap)是什么?它有哪些优缺点?什么是ABA问题? 🔥
8 乐观锁和悲观锁的区别是什么?分别在什么场景下使用?Java中有哪些对应的实现? 🔥
9 ThreadLocal的底层实现原理是什么?为什么可能导致内存泄漏?如何解决? 🔥
10 死锁产生的四个必要条件是什么?如何预防和排查死锁? 🔥
11 线程池的7个核心参数分别是什么?请描述线程池的工作流程和4种拒绝策略。 🔥
12 为什么阿里巴巴开发手册禁止使用Executors来创建线程池? 🔥
13 双重校验锁(DCL)实现单例时,为什么必须给instance变量加volatile? 🔥

⭐ 中频题

# 题目 频次
14 Java中的多线程编程是什么?在实际开发中需要注意哪些问题?
15 Java线程和操作系统线程是一一对应的吗?Java 21的虚拟线程(Virtual Thread)带来了什么变化?
16 多线程并发的三个核心要素是什么?并发会导致哪些数据一致性问题?
17 Java中创建线程有哪几种方式?调用start()和直接调用run()有什么区别?
18 如何安全地停止一个正在运行的线程?interrupt()方法的机制是什么?
19 Java线程有哪几种状态?各状态之间如何转换?
20 sleep()和wait()方法有什么区别?调用后线程分别进入什么状态?是否会释放锁?
21 线程的BLOCKED状态和WAITING状态有什么区别?wait()/notify()/notifyAll()的用法是什么?
22 Java中线程间通信的方式有哪些?
23 Go语言的协程(Goroutine)和Java线程有什么区别?
24 JUC(java.util.concurrent)包下有哪些常用的并发工具类?
25 公平锁和非公平锁有什么区别?ReentrantLock默认是哪种?为什么非公平锁性能更好?
26 如何根据CPU密集型和IO密集型场景合理配置线程池参数?
27 线程池的shutdown()和shutdownNow()方法有什么区别?
28 如何用两个线程交替打印奇数和偶数?请用wait/notify实现。
29 CountDownLatch的用法是什么?适用于什么场景?
30 两个线程各对一个共享变量执行50次i++操作,最终结果一定是100吗?为什么?

四、JVM内存与GC(34题)

🔥 高频题

# 题目 频次
1 请画出JVM运行时内存区域结构图,并说明每个区域的作用(堆、栈、方法区/元空间、程序计数器、本地方法栈)。 🔥
2 JVM内存模型中堆和栈的本质区别是什么?各自存储什么内容? 🔥
3 Java堆内存分为哪几个区域?新生代中的Eden区和Survivor区是如何协作的? 🔥
4 JVM有哪些类加载器?什么是双亲委派模型?它的工作流程是怎样的? 🔥
5 请描述一个类从加载到初始化的完整过程(加载→验证→准备→解析→初始化)。 🔥
6 JVM垃圾回收算法有哪几种?请分别说明其原理和优缺点。 🔥
7 JVM有哪些常见的垃圾回收器?各自的特点和适用场景是什么? 🔥
8 Minor GC、Major GC、Full GC有什么区别?什么情况下会触发Full GC? 🔥
9 CMS垃圾回收器和G1垃圾回收器在实现原理、回收阶段、适用场景上有什么区别? 🔥
10 G1垃圾回收器相比于CMS有哪些核心改进?Region化内存布局带来什么好处? 🔥
11 Java中有哪几种引用类型(强引用、软引用、弱引用、虚引用)?它们的区别和使用场景是什么? 🔥

⭐ 中频题

# 题目 频次
12 JVM栈帧中存储的是对象的引用(指针)还是对象本身?
13 如果创建了一个很大的对象,它一般会被分配在堆的哪个区域?什么情况下会直接进入老年代?
14 程序计数器(PC寄存器)有什么作用?为什么它必须是线程私有的?
15 方法区中方法的执行过程是怎样的?
16 除了类信息和方法代码,方法区/元空间中还存储了哪些内容?
17 字符串常量池(String Pool)在JDK不同版本中分别位于哪个内存区域?
18 执行 String s = new String("abc") 这行代码,一共创建了几个对象?分别在内存的什么位置?
19 弱引用(WeakReference)是什么?有哪些典型使用场景?
20 内存泄漏(Memory Leak)和内存溢出(OutOfMemoryError)有什么区别?如何理解?
21 JVM运行时数据区中,哪些区域可能发生内存溢出?
22 线上发生堆内存溢出(Heap OOM)时,如何排查和解决?
23 什么情况下会发生栈内存溢出(StackOverflowError)?如何定位?
24 ThreadLocal为什么可能导致内存泄漏?底层是如何引发的?应该如何正确使用?
25 请描述JVM创建一个对象的完整过程,从类加载检查到对象初始化。
26 一个Java对象从创建到被回收,完整的生命周期是怎样的?
27 双亲委派模型有什么作用?有哪些场景会破坏双亲委派模型?
28 类和双亲委派原则之间有什么关系?
29 什么是Java中的垃圾回收(Garbage Collection)?如何主动触发GC?
30 JVM判断一个对象是否可以被回收的方法有哪些?引用计数法和可达性分析有什么区别?
31 标记-清除(Mark-Sweep)算法的缺点是什么?会产生什么问题?
32 哪些垃圾回收算法的执行阶段会出现STW(Stop The World)?
33 在什么场景下应该选择CMS,什么场景下应该选择G1?
34 GC只会对堆内存进行回收吗?元空间中的类信息会被卸载吗?

五、Spring全家桶与MyBatis(44题)

🔥 高频题

# 题目 频次
1 什么是IoC(控制反转)?Spring IoC容器是如何通过依赖注入(DI)管理对象之间的依赖关系的? 🔥
2 请描述Spring IoC容器的初始化过程,从配置文件/注解扫描到Bean的实例化。 🔥
3 什么是AOP(面向切面编程)?请解释切面、连接点、通知、切入点、织入这几个核心概念。 🔥
4 Spring AOP的底层代理机制是什么?JDK动态代理和CGLIB代理分别在什么情况下使用? 🔥
5 请完整描述Spring Bean的生命周期,从实例化到销毁经历了哪些阶段? 🔥
6 什么是Spring中的循环依赖问题?Spring是如何通过三级缓存解决的? 🔥
7 Spring声明式事务在什么情况下会失效?请列举常见的几种情况。 🔥
8 Spring Boot的自动装配(Auto Configuration)原理是什么?@SpringBootApplication注解背后做了什么? 🔥
9 MyBatis中 #{} 和 ${} 有什么区别?为什么推荐使用 #{} ? 🔥
10 什么是缓存雪崩、缓存击穿、缓存穿透?分别如何解决? 🔥
11 Spring框架中使用了哪些设计模式?请举例说明。 🔥

⭐ 中频题

# 题目 频次
12 JDK动态代理和CGLIB代理在实现原理、性能、限制上有什么区别?
13 Spring中Bean默认是单例的吗?单例Bean和非单例Bean的生命周期有什么区别?
14 Spring Bean的作用域(Scope)有哪几种?分别适用于什么场景?
15 Spring IoC容器中实际存储的是什么?
16 如何在Bean初始化前后或销毁前执行自定义逻辑?有哪些实现方式?
17 Spring提供了哪些扩展点?请列举常用的几个。
18 Spring解决循环依赖的三级缓存分别是什么?每一级缓存存储的内容和作用是什么?
19 Spring中有哪些常用注解?@Autowired、@Component、@Configuration等的作用分别是什么?
20 在同一个类中,一个非事务方法通过this调用事务方法,事务会生效吗?为什么?
21 在Spring Boot项目中如何开启和使用事务?
22 请描述MVC模式的三层架构,每一层的职责是什么?
23 Spring MVC处理一个HTTP请求的完整流程是怎样的?
24 Spring MVC中的HandlerMapping和HandlerAdapter分别起什么作用?
25 为什么越来越多的项目选择Spring Boot而不是传统Spring?它解决了哪些痛点?
26 Spring Boot框架中用到了哪些设计模式?
27 如何理解Spring Boot中"约定大于配置"的设计理念?请举例说明。
28 一个标准的Spring Boot项目结构是怎样的?各目录的作用是什么?
29 请列举几个常用的Spring Boot Starter启动器及其作用。
30 你有自定义过Spring Boot Starter吗?说说自定义Starter的主要步骤。
31 Spring Boot中有哪些核心注解?@SpringBootApplication内部包含了哪些注解?
32 Spring Boot是如何实现"引入依赖即可直接使用"的自动配置的?
33 Spring Boot中过滤器(Filter)和拦截器(Interceptor)有什么区别?分别如何实现?
34 与传统的JDBC编程相比,MyBatis有哪些优势?
35 在你看来,MyBatis在哪些方面做得比较好?
36 请简述使用JDBC原生方式连接数据库并进行查询的标准步骤。
37 使用MyBatis原生的XML方式如何进行数据库查询?需要配置哪些内容?
38 MyBatis-Plus和MyBatis有什么区别?Plus解决了哪些问题?
39 MyBatis框架中运用了哪些常见的设计模式?
40 Spring Cloud和Spring Boot有什么区别?分别在什么场景下使用?
41 你用过哪些Spring Cloud微服务组件?各自的作用是什么?
42 负载均衡有哪些常见的算法?各自的特点是什么?
43 如何实现会话保持,使得同一个用户的请求始终被路由到同一台服务器?
44 服务熔断和服务降级有什么区别?分别在什么场景下触发?

六、MySQL数据库(91题)

🔥 高频题

# 题目 频次
1 数据库事务的四大特性(ACID)分别是什么?MySQL是如何通过undo log、redo log、MVCC等机制来实现的? 🔥
2 事务的四种隔离级别分别是什么?各自解决了哪些并发问题(脏读/不可重复读/幻读)? 🔥
3 MySQL的默认事务隔离级别是什么?为什么选择这个级别? 🔥
4 MVCC(多版本并发控制)的实现原理是什么?Read View和undo log版本链是如何协作的? 🔥
5 什么是数据库索引?它为什么能提高查询效率? 🔥
6 数据库索引可以从哪些维度进行分类?请分别举例说明。 🔥
7 MySQL中聚簇索引(Clustered Index)和非聚簇索引(Secondary Index)的核心区别是什么? 🔥
8 MySQL的InnoDB引擎为什么使用B+树作为索引结构?相比B树、哈希表、二叉搜索树有什么优势? 🔥
9 联合索引(Composite Index)的实现原理是什么?什么是最左匹配原则? 🔥
10 索引在哪些情况下会失效?请列举常见的场景并解释原因。 🔥
11 什么是回表查询?什么是覆盖索引?覆盖索引如何避免回表? 🔥
12 MySQL中有哪些类型的锁?全局锁、表级锁、行级锁分别有什么作用和适用场景? 🔥
13 binlog(二进制日志)有哪三种格式?各自的优缺点是什么? 🔥
14 Undo Log(回滚日志)的作用是什么?它是如何支持事务回滚和MVCC的? 🔥
15 有了Undo Log为什么还需要Redo Log?Redo Log解决的核心问题是什么? 🔥
16 Redo Log是如何保证事务持久性(Durability)的?它的写入机制是怎样的? 🔥
17 binlog的两阶段提交(Two-Phase Commit)过程是怎样的?为什么需要两阶段提交? 🔥
18 一条UPDATE语句在MySQL内部从接收到返回结果的完整执行过程是怎样的? 🔥
19 EXPLAIN命令有什么作用?如何通过EXPLAIN的输出判断SQL是否使用了索引? 🔥
20 如果发现某张表的查询速度非常慢,你会从哪些方面入手排查和优化? 🔥
21 InnoDB和MyISAM存储引擎有哪些核心区别?为什么现在默认使用InnoDB? 🔥
22 MySQL主从复制的原理是什么?有哪些常见的复制模式? 🔥
23 为什么MySQL推荐使用自增ID作为主键,而不是UUID? 🔥

⭐ 中频题

# 题目 频次
24 NoSQL数据库和传统SQL数据库的核心区别是什么?分别在什么场景下选择?
25 数据库设计的三大范式分别是什么?在实际开发中是否必须严格遵守?
26 MySQL中如何进行多表连接查询?INNER JOIN、LEFT JOIN、RIGHT JOIN的区别是什么?
27 MySQL中如何避免重复插入数据?有哪些实现方式?
28 CHAR和VARCHAR类型有什么区别?分别在什么场景下使用?
29 VARCHAR(100)中的100代表的是字节数还是字符数?与编码有关吗?
30 INT(1)和INT(10)有什么不同?括号中的数字代表什么含义?
31 TEXT数据类型可以存储无限大的数据吗?它有哪些限制?
32 IP地址在数据库中应该如何存储?用字符串还是整数?
33 什么是外键约束?在实际项目中是否推荐使用外键?为什么?
34 MySQL中IN和EXISTS关键字有什么区别?分别在什么场景下使用?
35 MySQL中有哪些常用的内置函数?请按字符串、日期、数值、聚合等分类列举。
36 SQL查询语句中各子句的执行顺序是怎样的?FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT?
37 SQL题:查询没有选修01号课程但选修了02号课程的学生成绩信息。
38 SQL题:查询总成绩排名在第5到第10名的学生信息。
39 SQL题:查询某个班级下所有学生的课程选修情况,包括未选课的学生。
40 如何利用MySQL实现一个可重入的分布式锁?
41 一条SQL语句从客户端发送到MySQL服务器后,内部经历了哪些处理步骤?
42 MySQL有哪些存储引擎?InnoDB、MyISAM、Memory各自的特点和适用场景是什么?
43 为什么MySQL将InnoDB作为默认存储引擎?
44 MySQL的数据文件分为哪几种类型?各自存储什么内容?
45 哈希索引的使用场景是什么?为什么InnoDB不默认使用哈希索引?
46 如果聚簇索引中某行数据的索引列值发生了更新,该行数据在磁盘上的物理存储位置会不会改变?
47 MySQL中主键默认就是聚簇索引吗?如果没有显式定义主键,聚簇索引如何确定?
48 什么样的字段适合作为主键?需要满足哪些条件?
49 性别字段(只有男/女两种值)适合加索引吗?为什么?
50 MySQL中索引的底层数据结构是如何实现的?B+树在InnoDB中具体如何组织?
51 通过B+树索引定位到叶子节点后,如何查找具体的数据行?页目录(Page Directory)是如何工作的?
52 B+树的核心特性有哪些?
53 B+树和B树在结构上有哪些区别?
54 B+树作为数据库索引结构,有哪些优势?
55 B+树叶子节点之间的链表是单向的还是双向的?为什么这样设计?
56 为什么MySQL使用B+树而不是Redis中使用的跳表(Skip List)?
57 创建联合索引时需要注意哪些原则?字段顺序如何确定?
58 联合索引(A,B,C),查询条件为 A=xxx AND C<xxx,索引会如何被使用?
59 联合索引(a,b,c),查询条件 WHERE b>xxx AND a=x,这个查询能用到索引吗?为什么?
60 联合索引(a,b,c),查询条件 WHERE a=2 AND c=1,能用到联合索引吗?会使用索引的哪些字段?
61 什么是覆盖索引?它为什么可以避免回表查询?
62 当一张表同时存在单列索引和包含该列的联合索引时,查询会优先走哪个索引?
63 索引已经建立好之后,再往表中插入一条新数据,索引结构会发生哪些变化?
64 索引字段建得越多越好吗?索引有哪些优缺点?
65 如何决定在哪些字段上建立索引?判断依据是什么?
66 索引优化有哪些常见的策略和技巧?
67 什么是前缀索引?适用于什么场景?有什么注意事项?
68 MySQL在并发场景下可能出现哪些数据一致性问题?
69 哪些业务场景对脏读是不能容忍的?
70 MySQL是如何通过锁机制和MVCC来解决并发问题的?
71 在可重复读(REPEATABLE READ)隔离级别下,事务A提交的数据,事务B能立即读到吗?
72 请举例说明在可重复读隔离级别下仍然可能发生的幻读问题。
73 在可重复读隔离级别下,如何使用SELECT ... FOR UPDATE来避免幻读?
74 串行化(SERIALIZABLE)隔离级别是通过什么机制实现的?
75 一条UPDATE语句的执行是原子性的吗?底层是如何保证的?
76 滥用事务或者在事务中执行过多的SQL语句会带来什么问题?
77 数据库的表级锁和行级锁分别有什么作用?分别在什么场景下使用?
78 两个事务同时对同一条数据执行UPDATE操作,会不会发生阻塞?
79 两个UPDATE语句分别操作不同主键范围的数据,会互相阻塞吗?
80 如果两个UPDATE的范围条件字段不是主键也没有索引,它们还会互相阻塞吗?
81 能不能只用binlog而不用redo log?redo log存在的必要性是什么?
82 MySQL是如何保障数据不丢失的?涉及哪些机制?
83 Redo Log是存储在内存中还是磁盘上的?它的写入流程是怎样的?
84 为什么MySQL要先把修改写入Redo Log,而不是直接更新B+树中的数据页?
85 MySQL的Double Write Buffer(两次写)机制是什么?它解决了什么问题?
86 如何查看一条SQL语句是否使用了索引?
87 如何查看一张表上建立了哪些索引?
88 如果EXPLAIN显示优化器选择的索引不正确,有什么办法干预?
89 MySQL主从复制出现延迟时,有哪些处理方法?
90 数据库的分库和分表是什么?有什么区别?分别在什么场景下使用?
91 MySQL中如何实现一个可重入的锁?

七、Redis全栈(44题)

🔥 高频题

# 题目 频次
1 Redis支持哪些数据类型?每种类型的底层数据结构是什么? 🔥
2 Zset(有序集合)的底层数据结构是如何实现的?从压缩列表到跳表的演进过程是怎样的? 🔥
3 跳表(Skip List)的数据结构是怎样的?它如何实现快速查找、插入和删除? 🔥
4 Redis的Zset为什么使用跳表而不是B+树作为底层数据结构? 🔥
5 Redis中哈希表的扩容过程是怎样的?什么是渐进式rehash? 🔥
6 Redis的String类型底层使用什么数据结构存储?为什么不用C语言原生的字符串?SDS有什么优势? 🔥
7 「Redis为什么这么快?」请从数据结构、内存操作、IO模型、单线程等多个维度分析。 🔥
8 Redis有哪几种持久化方式?RDB和AOF各自的原理和优缺点是什么?混合持久化是怎样的? 🔥
9 Redis有哪几种内存淘汰策略?分别适用于什么场景? 🔥
10 Redis的过期键删除策略是怎样的?惰性删除和定期删除是如何配合工作的? 🔥
11 Redis哨兵(Sentinel)模式的原理是什么?如何实现监控、自动故障转移和通知? 🔥
12 Redis集群(Cluster)模式是怎样的?哈希槽分配机制(16384个槽)是如何工作的? 🔥
13 如何用Redis实现一个分布式锁?需要注意哪些问题? 🔥
14 在使用Redis做缓存时,如何保证Redis和MySQL之间的数据一致性?请说明旁路缓存策略。 🔥
15 什么是缓存雪崩、缓存击穿、缓存穿透?分别有哪些解决方案? 🔥
16 布隆过滤器(Bloom Filter)的原理是什么?它在解决缓存穿透中如何应用? 🔥
17 如何设计一个支持高并发的秒杀系统?如何处理超卖问题? 🔥

⭐ 中频题

# 题目 频次
18 Zset(有序集合)有哪些常用命令?你实际项目中有用过吗?
19 Redis中Set和Zset有什么区别?分别在什么场景下使用?
20 跳表在插入新节点时,如何随机确定节点的层高?
21 压缩列表(ZipList)的数据结构是怎样的?它的连锁更新问题是什么?
22 Redis中的listpack是什么?它如何解决了压缩列表的连锁更新问题?
23 Redis哈希表在进行渐进式rehash过程中,如果有读请求到来,数据是如何查找的?
24 Redis的Zset在你做过的项目中具体有哪些应用场景?
25 Redis在哪些地方使用了多线程?Redis 6.0引入的多线程I/O是怎么回事?
26 Redis是如何通过epoll和Reactor模式实现I/O多路复用的?
27 Redis的网络模型是怎样的?单线程事件循环是如何工作的?
28 如何保证Redis中多个操作的原子性?有哪些实现方式?
29 除了Lua脚本,还有其他方式保证Redis操作的原子性吗?事务(MULTI/EXEC)能保证吗?
30 Redis的过期删除策略和内存淘汰策略有什么区别?分别在什么情况下触发?
31 Redis的key过期后会不会被立即删除?如果不是,为什么这样设计?
32 Redis主从同步中,增量同步和全量同步分别是怎么实现的?
33 Redis的主从架构和集群架构能保证数据的强一致性吗?为什么?
34 哨兵模式中选举新主节点的算法是怎样的?
35 Redis Cluster模式下,客户端如何知道一个key应该访问哪个分片节点?
36 在你的项目中,选择使用Redis的主要原因是什么?
37 Redis为什么比MySQL的查询速度快那么多?
38 本地缓存(如Caffeine)和Redis分布式缓存有什么区别?分别在什么场景使用?
39 在高并发场景下,单节点Redis+单节点MySQL大概能支撑多大的并发量?
40 Redis在实际项目中有哪些常见的应用场景?
41 Redis除了作为缓存,还有哪些应用场景(如消息队列、分布式锁)?
42 Redis支持并发操作吗?单个命令是原子的吗?
43 Redis中的大Key问题是什么?会带来什么影响?如何排查和解决?
44 什么是Redis的热Key问题?如何发现和解决?

八、消息队列(36题)

🔥 高频题

# 题目 频次
1 为什么在系统架构中需要引入消息队列?它解决了哪些核心问题(解耦、异步、削峰)? 🔥
2 使用消息队列会带来哪些副作用和挑战? 🔥
3 RabbitMQ、RocketMQ、Kafka三者如何做技术选型?各自的适用场景和优缺点对比? 🔥
4 消息重复消费的问题如何解决?如何保证消费者处理的幂等性? 🔥
5 如何保证消息不丢失?请从生产端、存储端、消费端三个阶段分别分析。 🔥
6 如何保证消息写入的幂等性?有哪些实现手段? 🔥
7 消息队列出现消息积压时,应该如何排查和处理? 🔥
8 在分布式系统中,如何利用消息队列保证数据最终一致性?事务消息是如何实现的? 🔥
9 Kafka为什么吞吐量这么高?顺序写、零拷贝、批量发送、压缩等机制是如何工作的? 🔥
10 消息中间件如何实现高可用?请分别说明主从架构和集群架构的高可用方案。 🔥
11 Kafka和RocketMQ的消息确认机制(ACK)有什么不同? 🔥
12 RocketMQ是如何通过事务消息实现分布式事务的? 🔥

⭐ 中频题

# 题目 频次
13 什么是消息队列?它的核心概念(生产者、消费者、Broker、Topic、队列)分别是什么?
14 消息队列有哪些典型的使用场景?请结合实际业务举例说明。
15 消息队列的设计借鉴了哪种设计模式?
16 如果让你从零设计一个消息队列,你会如何设计它的架构?需要考虑哪些方面?
17 在项目中为什么选择了RocketMQ而不是其他消息队列?
18 RocketMQ和Kafka在架构设计上有哪些核心区别?如何进行技术选型?
19 RocketMQ的延时消息(定时消息)底层实现原理是什么?
20 RocketMQ如何保证消息的顺序性?
21 RocketMQ如何保证消息不丢失?涉及哪些配置和机制?
22 RocketMQ出现消息积压时,有哪些排查手段和处理方案?
23 你对Kafka有哪些了解?它的核心架构是怎样的?
24 Kafka是消费者主动拉取(Pull)还是Broker推送(Push)?为什么选择这种模式?
25 Kafka如何保证单个分区内消息的顺序性?
26 Kafka出现消息积压时,有哪些处理方法?
27 为什么Kafka中一个分区只能被同一个消费者组内的一个消费者消费?
28 Kafka消费者线程数和Topic分区数之间有什么关系?应该如何配置?
29 Kafka和RocketMQ在Broker架构设计上有什么不同?
30 RabbitMQ和AMQP协议是什么关系?
31 RabbitMQ有哪些核心组件(Connection、Channel、Exchange、Queue、Binding)?
32 RabbitMQ有哪几种交换机(Exchange)类型?各自的路由规则是什么?
33 RabbitMQ有哪些重要特性(消息确认、持久化、死信队列、延迟队列等)?
34 RabbitMQ的底层架构是怎样的?
35 RabbitMQ如何保障消息的可靠性投递?
36 RabbitMQ的延迟队列和死信队列(DLX)机制是什么?如何配合使用?

九、分布式理论(19题)

🔥 高频题

# 题目 频次
1 什么是CAP理论?分布式系统中一致性©、可用性(A)、分区容错性§三者之间如何权衡? 🔥
2 什么是BASE理论?它与ACID的区别是什么?在分布式系统中如何应用? 🔥
3 如何用Redis实现分布式锁?请详细说明加锁、解锁的完整流程以及潜在问题。 🔥
4 分布式事务的解决方案有哪些?2PC、3PC、TCC、Saga、可靠消息最终一致性各自的原理和优缺点是什么? 🔥
5 请描述Raft共识算法的核心机制(Leader选举、日志复制、安全性)。 🔥
6 Raft协议和Paxos协议相比有哪些异同?为什么Raft在实际工程中更受欢迎? 🔥

⭐ 中频题

# 题目 频次
7 什么是分布式系统?它与集中式系统的核心区别是什么?
8 分布式系统和微服务架构有什么区别和联系?
9 除了Redis,还有哪些实现分布式锁的方式?ZooKeeper如何实现?
10 什么场景下需要使用分布式ID?它解决了什么问题?
11 分布式ID的生成方案有哪些?UUID、数据库号段、Redis、雪花算法各自的优缺点?
12 在什么业务场景下需要引入分布式事务?
13 阿里巴巴的Seata分布式事务框架了解吗?它有哪几种事务模式?
14 什么是RPC(远程过程调用)?它的核心概念和工作原理是什么?
15 ZooKeeper主要用来做什么?它的核心原理(ZAB协议、临时节点、Watch机制)是什么?
16 常见的限流算法有哪些?计数器、滑动窗口、漏桶、令牌桶分别是什么原理?
17 请描述Paxos共识算法的基本思想和工作流程。
18 有哪些框架或技术底层使用了Raft共识协议?
19 请描述ZAB(ZooKeeper Atomic Broadcast)协议的工作原理。

十、系统设计与场景题(14题)

🔥 高频题

# 题目 频次
1 如何设计一个支持高并发的秒杀系统?请从前端、网关、后端服务、数据库、缓存各层详细说明。 🔥
2 10万用户同时抢购10个库存商品,你会如何设计系统来保证不超卖且性能可接受? 🔥
3 如果让你从零设计一个RPC框架,你会考虑哪些模块?如何设计通信协议、序列化、服务注册与发现? 🔥
4 如果系统的QPS突然提升了10倍,现有架构扛不住了,你会从哪些方面进行优化和改造? 🔥
5 如何实现"订单30分钟未支付自动取消"的功能?有哪些技术方案?各有什么优缺点? 🔥

⭐ 中频题

# 题目 频次
6 如何设计一个短链系统(类似短网址服务)?请从生成算法、存储、高并发等方面考虑。
7 如何设计一个点赞系统?需要支持高并发点赞和取消点赞,以及点赞数的实时统计。
8 如何设计一个分布式ID发号器?需要保证全局唯一、趋势递增、高可用。
9 大流量网站中,单台Redis已经无法承受压力了,你会如何解决?
10 如何设计一个支持可重入的分布式锁?需要考虑哪些关键问题?
11 负载均衡有哪些实现方案?四层负载均衡和七层负载均衡有什么区别?
12 什么是微服务架构?它与单体架构相比有什么优势和挑战?
13 一个单体项目如何逐步拆分成微服务架构?拆分的策略和原则是什么?
14 对外提供的API服务,客户反馈请求频繁超时,你会如何排查和定位问题?

十一、计算机网络(66题)

🔥 高频题

# 题目 频次
1 请对比说明OSI七层模型和TCP/IP四层模型,各层的功能和典型协议分别是什么? 🔥
2 TCP协议和IP协议分别位于TCP/IP模型的哪一层? 🔥
3 HTTP常用的状态码有哪些?请按1xx~5xx分类列举并说明含义。 🔥
4 HTTP的GET和POST方法有什么区别?从语义、参数位置、安全性、幂等性等方面对比。 🔥
5 HTTP和HTTPS的核心区别是什么?HTTPS在HTTP基础上增加了哪些安全机制? 🔥
6 请描述HTTPS的TLS握手过程(以TLS 1.2 RSA密钥交换为例)。 🔥
7 HTTP/1.1和HTTP/2.0有什么区别?HTTP/2.0做了哪些核心优化(多路复用、头部压缩、服务器推送)? 🔥
8 请描述DNS域名解析的完整工作流程,从浏览器输入URL到获取IP地址。 🔥
9 Cookie和Session有什么区别?各自的工作原理和使用场景是什么? 🔥
10 Token、Session、Cookie三种身份认证方式有什么区别?分别在什么场景下使用? 🔥
11 JWT(JSON Web Token)和传统的Session认证方式有什么区别?各自的优缺点? 🔥
12 请描述TCP三次握手建立连接的完整过程,每一步发送的报文和状态变化。 🔥
13 为什么TCP建立连接需要三次握手,而不是两次或四次? 🔥
14 请描述TCP四次挥手断开连接的完整过程,每一步的状态变化。 🔥
15 为什么TCP挥手需要四次,中间两次(FIN和ACK)为什么不能合并为一次? 🔥
16 为什么TCP四次挥手后,主动关闭方要进入TIME_WAIT状态并等待2MSL? 🔥
17 TCP和UDP协议的核心区别是什么?分别在什么应用场景下使用? 🔥
18 TCP是如何保证可靠传输的?请说明其六大核心机制(确认应答、超时重传、流量控制、拥塞控制、校验和、序列号)。 🔥
19 什么是TCP粘包和拆包问题?产生的原因是什么?如何解决? 🔥
20 请描述TCP拥塞控制的四个阶段:慢启动、拥塞避免、拥塞发生、快速恢复。 🔥
21 HTTP长连接和WebSocket有什么区别?各自的适用场景是什么? 🔥

⭐ 中频题

# 题目 频次
22 TCP/IP模型的应用层有哪些常见的协议?各自的功能是什么?
23 HTTP请求报文和响应报文分别由哪些部分组成?
24 HTTP状态码301和302分别表示什么?有什么区别?
25 HTTP状态码502(Bad Gateway)和504(Gateway Timeout)有什么区别?
26 HTTP有哪些请求方法?GET、POST、PUT、DELETE、PATCH等各自的作用是什么?
27 HTTP的长连接(Keep-Alive)是什么?它是如何工作的?
28 HTTP协议默认的端口号是多少?HTTPS呢?
29 HTTP/1.1中如何通过Content-Length或Chunked分块传输来对请求/响应进行拆包?
30 HTTP断点续传是如何实现的?Range请求头和206状态码是如何配合的?
31 为什么说HTTP协议不安全?具体存在哪些安全隐患?
32 HTTPS是如何通过数字证书和TLS加密来防范中间人攻击的?
33 HTTP建立TCP连接后,在什么情况下TCP连接会被中断?
34 HTTP、Socket和TCP三者之间有什么关系和区别?
35 既然有了HTTP协议,为什么还需要RPC协议?二者在什么场景下使用?
36 DNS的全称是什么?域名的层级结构是怎样的?
37 DNS服务默认使用的端口号是多少?
38 你修改过本地的hosts文件吗?它的作用是什么?
39 DNS协议底层使用TCP还是UDP进行传输?分别在什么情况下使用?
40 HTTP协议到底是无状态还是有状态的?为什么说它是无状态的?
41 携带Cookie的HTTP请求算是有状态还是无状态的?
42 如果客户端禁用了Cookie,Session还能正常工作吗?为什么?
43 浏览器的LocalStorage和Cookie有什么区别?分别在什么场景下使用?
44 JWT令牌由哪三个部分组成?每部分的作用和内容是什么?
45 JWT为什么能解决分布式集群环境下的身份认证问题?
46 JWT有哪些缺点和局限性?
47 JWT令牌万一泄露了怎么办?有哪些应对措施?
48 前端通常将JWT存储在哪里?各有什么安全考量?
49 Nginx支持哪些负载均衡算法?各自的特点和适用场景是什么?
50 Nginx工作在OSI七层模型中的哪一层?它和四层负载均衡有什么区别?
51 TCP报文头部有哪些关键字段?各自的作用是什么?
52 TCP三次握手中,如果客户端发送的第三个ACK报文丢失了,会发生什么?
53 服务端在发送第二次握手报文(SYN+ACK)后,连接进入什么状态?
54 TCP的三次握手和应用程序的accept()系统调用之间是什么关系?
55 TCP第一次握手时,客户端发送了SYN报文但服务器没有收到,会发生什么?
56 服务器回复的SYN+ACK报文在网络中丢失了,两端会如何处理?
57 服务端收到了一个重复的SYN报文,会怎么处理?
58 TCP第一次握手时,服务端在内核中做了哪些工作?半连接队列和全连接队列分别是什么?
59 SYN洪水攻击(SYN Flood)是什么?有哪些防御手段?
60 TCP四次挥手中,第二次挥手(ACK)和第三次挥手(FIN)能合并吗?
61 如果TCP四次挥手的第三次挥手(FIN)一直没发出去,会发生什么?
62 TCP挥手过程中,在第二次和第三次挥手之间,主动断开连接方还能发送数据吗?
63 TCP断开连接时,如果客户端发送的FIN包丢失了,服务端处于什么状态?
64 服务器上出现大量的TIME_WAIT状态连接,可能是什么原因?如何优化?
65 如何用UDP协议来实现类似HTTP的功能?HTTP/3(基于QUIC)是如何做到的?
66 大流量网站中,单台Redis无法承受压力了,你会如何设计和扩展?

📊 统计总览

专题 总题数 🔥高频 ⭐中频
Java基础 72 25 47
Java集合 40 12 28
多线程与并发 30 13 17
JVM内存与GC 34 11 23
Spring+MyBatis 44 11 33
MySQL数据库 91 23 68
Redis全栈 44 17 27
消息队列 36 12 24
分布式理论 19 6 13
系统设计与场景 14 5 9
计算机网络 66 21 45
合计 490 156 334

相关推荐
lsx2024061 小时前
CSS 选择器
开发语言
jran-1 小时前
Docker dockerfile镜像制作&compose服务编排&私有仓库
java·docker·容器
Chase_______1 小时前
【Java杂项】0.1 + 0.2 为什么不等于 0.3?IEEE 754 与 BigDecimal 精度避坑
java·开发语言·python
ch.ju1 小时前
Java Programming Chapter 4——Static part
java·开发语言
geovindu1 小时前
python: Monitor Pattern
开发语言·python·设计模式·监控模式
之歆1 小时前
DAY_11JavaScript BOM与DOM深度解析:底层原理与工程实践(上)
开发语言·前端·javascript·ecmascript
YDS8292 小时前
DeepSeek RAG&MCP + Agent智能体项目 —— 环境搭建和项目初始化
java·springboot·agent·rag·deepseek
会编程的土豆2 小时前
Go ini 配置加载:`ini.MapTo` 详细解析
开发语言·数据库·golang
ChoSeitaku2 小时前
04.数组
java·开发语言·数据结构