一、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 |