整理时间:2026年03月
数据来源:牛客网2026年3月Java面经、面试题库整合
整理规则:相同/相似知识点合并去重,按面试模块逻辑归类,保留原始核心问题描述
一、Java基础
1.1 语言特性与核心概念
Java相比其他语言(如C++、Go)有什么优势和特点?
JDK、JRE、JVM、JIT的区别是什么?
什么是Java字节码?有什么作用?
Java解释与编译共存的原因是什么?
JIT与AOT的区别是什么?
Java八大基础数据类型有哪些?各自的取值范围?
基本类型和包装类的区别是什么?
包装类的缓存机制了解吗?
自动装箱拆箱的原理是什么?for循环中使用包装类有什么问题?
浮点数为什么会精度丢失?如何解决?
为什么说对象可能不在堆中?
基本数据类型的存储位置?堆里还是栈里?
超过long范围的整型数据怎么表示?
++、--运算符的使用注意事项?
const int p和int const p有什么区别?
1.2 面向对象编程
面向对象的三大特性是什么?分别怎么理解?
什么是多态?多态的实现方式有哪些?
方法重写和方法重载的核心区别是什么?
成员变量和局部变量的区别是什么?
成员变量为什么要有默认值?
静态方法和实例方法的区别是什么?
继承、接口、抽象类的区别是什么?各自的应用场景和局限性?
深拷贝和浅拷贝的区别是什么?
Object类包含哪些方法?
== 和 equals的区别是什么?
为什么要同时重写equals和hashCode方法?
final关键字的作用是什么?
static关键字的作用是什么?
封装特性在项目中的具体体现?
1.3 String相关
String、StringBuffer、StringBuilder的区别是什么?
String底层为什么用byte[]而不是char[]?
直接使用+拼接字符串和使用StringBuilder有什么区别?
String的equals和Object的equals有什么区别?
字符串常量池是什么?有什么作用?
String s = new String("abc")创建了几个字符串对象?
String的intern()方法是干嘛的?
1.4 异常处理
Java异常的分类有哪些?
受检查异常和不受检查(运行时)异常的核心区别是什么?
try-catch-finally的执行顺序是怎样的?
try、catch、finally都有return时怎么执行?
finally一定会执行吗?哪些情况不会执行?
异常的正确使用方式有哪些?
1.5 泛型与反射
什么是泛型?泛型的作用和原理是什么?
什么是泛型擦除?
泛型的使用方式有哪些?
什么是反射?反射的原理是什么?
反射的优缺点是什么?
反射的常见应用场景有哪些?
什么是注解?注解的原理和使用场景是什么?
1.6 代理与SPI
JDK动态代理和CGLIB动态代理的底层实现差异是什么?
什么是AOP?AOP的原理是什么?由哪几个部分组成?
同一个类中方法相互调用不触发AOP的原因是什么?如何解决?
什么是SPI?SPI的作用是什么?解决了什么问题?
什么是模板元编程?有什么实际应用?
C++的模板编程是什么?有什么优缺点?
1.7 IO与序列化
什么是序列化和反序列化?原理是什么?
为什么需要序列化和反序列化?
字节流和字符流的区别是什么?
BIO、NIO、AIO的区别是什么?
二、Java集合框架
2.1 集合体系基础
Java集合的继承体系是什么?
Collection和Map的区别是什么?
List、Set、Map、Queue的核心区别是什么?
Iterator迭代器的原理是什么?
2.2 List相关
ArrayList和Array(数组)的区别是什么?
ArrayList的底层实现是什么?扩容机制是怎样的?
ArrayList的插入删除性能如何?
LinkedList的底层实现是什么?插入删除性能如何?
ArrayList和LinkedList的区别是什么?
CopyOnWriteArrayList的原理是什么?适用场景?
2.3 Set相关
HashSet的底层实现是什么?
HashSet如何检查元素重复?
Set要实现排序该怎么办?
TreeSet和HashSet的区别是什么?
2.4 Map相关
HashMap和Hashtable的区别是什么?
HashMap的底层实现是什么?JDK1.7和1.8的区别是什么?
往HashMap里put一个值的过程是怎样的?
HashMap的扩容机制是怎样的?
HashMap为什么要引入红黑树?树化和退化的条件是什么?
HashMap在JDK1.7中头插法为什么会出现死循环?1.8为什么改成尾插法?
HashMap多线程操作为什么不安全?会出现什么问题?
HashMap的hash()方法原理是什么?如何解决哈希冲突?
HashMap的遍历方式有哪些?
TreeMap和HashMap的区别是什么?
HashMap和ConcurrentHashMap的区别是什么?
ConcurrentHashMap的底层实现是什么?JDK1.7和1.8的区别是什么?
ConcurrentHashMap如何实现线程安全?
ConcurrentHashMap有哪些原子性复合操作方法?
2.5 队列相关
Queue和Deque的区别是什么?
队列和栈的区别是什么?常用实现类有哪些?
阻塞队列的常用实现类有哪些?分别有什么特点?
三、Java并发编程
3.1 线程基础
进程和线程的区别是什么?
进程间的通信方式有哪些?
线程间的通信方式有哪些?
线程之间哪些内存是共享的?
创建线程的方式有哪些?本质上的实现方式是什么?
继承Thread类和实现Runnable接口的核心区别是什么?
Runnable和Callable的区别是什么?
线程的生命周期有哪些状态?状态之间如何切换?
线程WAITING状态和TIMED_WAITING状态的核心区别是什么?
什么是线程上下文切换?触发场景有哪些?有什么性能影响?
sleep()和wait()的区别是什么?
并发和并行的区别是什么?
同步和异步的区别是什么?
单核CPU支持Java多线程吗?
Java的线程调度方式有哪些?
什么是协程?和线程的区别是什么?
3.2 线程池
什么是线程池?为什么要使用线程池?
线程池的核心参数有哪些?分别是什么含义?
线程池的任务执行流程是怎样的?
线程池有哪些拒绝策略?分别是什么含义?
常见的线程池有哪些?使用Executors创建线程池有什么坑?
线程池参数可以动态调整吗?通过什么方式?
线程池任务执行完后线程如何回收?
线程池中线程异常后,会被销毁还是复用?
如何给线程池命名?有什么作用?
线程池大小如何规划配置?CPU密集型和IO密集型如何考量?
什么是Future类?有什么作用?
CompletableFuture相比Future有什么优势?
一个任务依赖另外两个任务才能执行,该怎么设计?
3.3 锁机制
什么是死锁?死锁的四个必要条件是什么?
如何检测死锁?如何避免死锁?
什么是悲观锁?什么是乐观锁?分别的适用场景?
如何实现乐观锁?
什么是CAS?CAS的原理是什么?
CAS的ABA问题是什么?如何解决?
CAS有哪些局限性?
synchronized关键字的作用是什么?怎么使用?
构造方法能加synchronized吗?
synchronized的底层原理是什么?
synchronized的锁升级过程是什么?
volatile关键字的作用是什么?
volatile如何保证可见性和禁止指令重排序?
为什么volatile不能保证原子性?
volatile和synchronized的区别是什么?
ReentrantLock是什么?和synchronized的区别是什么?
公平锁和非公平锁的区别是什么?底层如何实现?
ReentrantReadWriteLock是什么?适用场景?
什么是AQS?AQS的原理是什么?
3.4 并发工具类
CountDownLatch、CyclicBarrier、Semaphore的区别和使用场景?
ThreadLocal是干嘛的?原理是什么?
ThreadLocal如何实现线程隔离?
ThreadLocal内存泄漏是什么场景触发的?怎么解决?
线程池场景下使用ThreadLocal会导致什么问题?如何解决?
不同ThreadLocal之间如何进行信息传递?
TransmittableThreadLocal相比InheritableThreadLocal核心解决了什么问题?
Atomic原子类的原理是什么?
3.5 JMM内存模型
什么是JMM模型?三大特性是什么?如何保证?
什么是指令重排序?如何禁止指令重排序?
什么是内存屏障?有什么作用?
四、JVM虚拟机
4.1 内存模型与内存区域
JVM内存模型是怎样的?各区域的作用是什么?
堆和栈的区别是什么?
方法区/元空间是什么?存储什么内容?
什么是直接内存?有什么作用?
哪些区域容易发生OOM?OOM的常见触发场景有哪些?
堆的作用是什么?结构是怎样的?
字符串常量池是什么?有什么作用?为什么放在堆中?
对象的创建过程是怎样的?
线程是如何访问使用对象的?句柄访问和直接指针访问的区别?
4.2 垃圾回收机制
Java垃圾回收机制是什么?
如何判断对象是否可回收?
哪些对象可以作为GC Roots?
可被回收的对象一定会被回收吗?
Java的引用类型有哪些?分别是什么含义?
如何判断一个类是无用类?
常见的垃圾回收算法有哪些?分别的优缺点和适用场景?
分代收集算法的原理是什么?
堆的GC流程是怎样的?
Minor GC、Major GC、Full GC的区别是什么?
Full GC的触发机制是什么?
只有堆会发生GC吗?
常见的垃圾收集器有哪些?
CMS和G1的区别是什么?
G1垃圾回收器的回收流程是怎样的?如何实现可预测的停顿时间?
G1中Remembered Set的作用是什么?
ZGC颜色指针的核心解决了什么问题?
什么是读写屏障?有什么作用?
为什么JDK1.8弃用了永久代?
JDK15后为什么默认关闭偏向锁?
4.3 类加载机制
类加载的完整过程是什么?
什么是双亲委派模型?为什么要用双亲委派?
如何打破双亲委派机制?
常见的类加载器有哪些?
4.4 JVM调优与问题排查
JVM常用的调优参数有哪些?
如何进行JVM调优?有哪些思路?
线上服务CPU100%怎么排查?
线上服务频繁GC怎么排查?
如何排查OOM问题?
五、MySQL数据库
5.1 索引原理
MySQL索引的作用是什么?有哪些类型?
MySQL索引底层是什么数据结构?为什么用B+树?
B+树和B树的区别是什么?B+树的优势是什么?
红黑树和B+树的区别?为什么索引不用红黑树?
聚簇索引和非聚簇索引的核心区别是什么?
InnoDB引擎中聚簇索引的底层存储结构及查询流程是什么?
主键索引和唯一索引的区别是什么?
什么是覆盖索引?如何检查SQL是否使用了覆盖索引?
什么是索引下推(ICP)?核心作用是什么?
联合索引的最左前缀法则是什么?
索引什么时候会失效?
为什么不用哈希索引?
索引的cardinality是什么?
如何确定SQL是否使用了索引?
如何设计索引?
5.2 事务与隔离级别
事务的ACID四大特性是什么?
事务的隔离级别有哪些?分别解决了什么问题?
什么是脏读、不可重复读、幻读?
幻读是什么?如何解决?
读已提交和可重复读的核心区别是什么?
什么是MVCC?底层实现原理是什么?
InnoDB事务的原子性、持久性、隔离性分别依靠什么机制保证?
5.3 锁机制
MySQL中常见的锁有哪些?
表级锁和行级锁的区别是什么?
什么情况下会升级为表锁?
乐观锁和悲观锁的区别是什么?
什么是间隙锁?有什么作用?
MySQL死锁如何排查和解决?
InnoDB引擎的优点是什么?
5.4 SQL优化
MySQL中执行一条SQL的完整流程是什么?
慢SQL如何定位?
如何分析一条慢SQL?
EXPLAIN执行计划主要看哪些字段?
MySQL优化器是如何选择索引的?
深度分页如何优化?
多表联合查询变慢了,如何排查和优化?
左连接(LEFT JOIN)查询时,ON和WHERE条件的核心区别是什么?
如何避免JOIN多表后出现笛卡尔积的问题?
给几十万条数据的表新增字段时,如何避免锁表影响业务?
5.5 日志机制
MySQL中常见的日志有哪些?分别的作用是什么?
redo log和undo log的区别是什么?
binlog的作用是什么?有哪些格式?
slow query log是什么?有什么作用?
5.6 集群与架构
MySQL主从复制的原理是什么?怎么确保主从一致性?
读写分离怎么实现?
分库分表了解吗?常见的分片策略有哪些?
ShardingSphere的原理是什么?
数据冷热分离怎么做?
关系型数据库和非关系型数据库的区别是什么?
5.7 分布式事务
分布式场景下,如何保证MySQL事务的分布式一致性?
CAP定理是什么?BASE理论是什么?
2PC分布式协议的原理是什么?最大的缺陷是什么?
3PC相比2PC有什么改进?
TCC模式的原理是什么?如何解决空回滚、悬挂问题?
Seata AT模式是什么?
5.8 其他基础
UNSIGNED属性的作用是什么?
char和varchar的区别是什么?
为什么不推荐使用text和blob类型?
timestamp和datetime的区别是什么?
Null和''的区别是什么?
MySQL中布尔值怎么表示?
MySQL可以存图片吗?为什么不推荐?
内连接和外连接的区别是什么?
六、Redis
6.1 基础特性与数据结构
什么是Redis?有什么特点?
Redis为什么速度这么快?
Redis是单线程还是多线程?为什么用单线程?
Redis的应用场景有哪些?
Redis有哪些数据类型?分别的底层实现是什么?
String类型的底层实现是什么?SDS是什么?
Hash类型的底层实现是什么?什么是渐进式rehash?
List/Set/ZSet的底层实现分别是什么?
什么是跳跃表?原理是什么?
各数据类型的常见应用场景是什么?
6.2 持久化机制
Redis的持久化机制有哪些?分别怎么实现?
RDB和AOF的区别是什么?
RDB会丢数据吗?为什么?
AOF重写是什么?后台重写的原理?
什么是混合持久化?
Redis持久化方式如何选择?
6.3 过期与淘汰策略
Redis的key过期删除策略有哪些?
Redis采用的过期删除策略是什么?
Redis的内存淘汰策略有哪些?
6.4 缓存常见问题
什么是缓存穿透?如何解决?
什么是缓存击穿?如何解决?
什么是缓存雪崩?如何解决?
缓存预热怎么做?
如何保证数据库和缓存的一致性?
什么是大key问题?怎么处理?
Redis内存碎片率高的原因是什么?如何排查和优化?
为什么不用本地缓存?本地缓存和分布式缓存如何选择?
6.5 分布式锁实现
分布式锁的原理是什么?设计分布式锁需要考虑哪些问题?
如何基于Redis实现分布式锁?
SETNX的功能是什么?先执行set nx再执行set ex会存在什么问题?
加锁后进程异常退出,锁泄露怎么办?
分布式锁的可重入性如何实现?
Redisson分布式锁的实现原理是什么?使用注意事项?
什么是红锁(Redlock)?原理是什么?
6.6 集群与高可用
Redis主从复制的原理是什么?
Redis哨兵(Sentinel)模式的作用是什么?选举机制是什么?
Redis Cluster的原理是什么?
Redis哨兵和Cluster集群的核心区别是什么?怎么选?
6.7 实际业务应用
Redis除了做缓存还有哪些功能?
如何基于Redis实现接口限流?
如何基于Redis实现延迟队列?
如何基于Redis实现消息队列?
Redis怎么保证库存扣减的可靠性,防止多扣/多增?
多机器部署本地缓存如何保证数据一致性?
七、计算机网络
7.1 TCP/UDP
TCP和UDP的区别是什么?
TCP是如何保证可靠传输的?
TCP三次握手的过程是什么?为什么不是两次?
TCP四次挥手的过程是什么?为什么需要四次挥手?
TIME_WAIT状态为什么要等2MSL?
TCP拥塞控制的流程是什么?
TCP粘包和拆包问题是什么?如何解决?
7.2 HTTP/HTTPS
HTTP协议的工作原理是什么?
HTTP1.0、HTTP1.1、HTTP2.0的区别是什么?
HTTP和HTTPS的区别是什么?
HTTPS的握手过程是怎样的?为什么需要三个随机数?
HTTPS的性能开销在哪里?
什么是中间人攻击?HTTPS如何防御?
HTTP3和QUIC了解吗?
常见的HTTP状态码有哪些?301/302/403等状态码的含义?
WebSocket和HTTP长连接的区别是什么?
7.3 DNS与网络请求流程
在浏览器输入URL到页面加载完成的完整流程是什么?
DNS解析的核心作用是什么?完整的DNS解析过程是怎样的?
7.4 网络编程
Socket编程了解吗?
长连接和短连接的区别是什么?
select、poll、epoll的区别是什么?
Epoll的底层实现原理是什么?为什么比select/poll快?
Epoll的ET和LT模式有什么区别?
什么是零拷贝?原理是什么?
八、操作系统与Linux
8.1 操作系统基础
进程和线程的区别是什么?
进程间的通信方式有哪些?
线程间的通信方式有哪些?
什么是进程上下文切换?和线程上下文切换的区别?
什么是写时拷贝(Copy-On-Write)?应用场景和好处是什么?
Windows和Linux操作系统的区别是什么?
Linux操作系统的内核了解吗?
8.2 Linux常用命令
Linux中查看当前系统所有进程的命令是什么?
如何查看Linux系统的日志?
Linux中export命令的作用是什么?
Linux中chmod命令的作用和使用方式?
Ubuntu系统中查看已安装软件包的核心命令是什么?
如何用find命令查找当前目录下所有.log文件?
xargs命令的作用是什么?
grep命令的常用用法有哪些?
如何用Linux命令找出当前目录下所有.log文件里包含"error"的行,并存到error_log.txt?
8.3 问题排查相关
如何用Linux命令排查系统性能问题?
线上服务CPU100%如何用Linux命令排查?
如何查看系统的内存、磁盘使用情况?
九、消息队列
9.1 消息队列基础
为什么要使用消息队列?消息队列的作用是什么?
什么是削峰填谷?
消息队列的常见使用场景有哪些?
9.2 消息可靠性保证
如何保证消息不丢失?
如何处理消息重复消费的问题?
如何保证消息的有序性?
消息积压了怎么办?
9.3 Kafka
Kafka分区的目的是什么?
Kafka消费者组的原理是什么?
Kafka怎么保证消息有序性?
Kafka和RocketMQ的区别是什么?
9.4 RocketMQ
为什么选用RocketMQ而不是Kafka?
RocketMQ的延迟队列是怎么实现的?
RocketMQ事务消息的原理是什么?
9.5 RabbitMQ
RabbitMQ的镜像队列机制是如何保证消息高可用的?
使用RabbitMQ时,如何解决消息丢失和重复消费问题?
十、微服务与分布式系统
10.1 分布式基础理论
CAP定理是什么?
BASE理论是什么?
10.2 微服务架构
什么是微服务?微服务架构的优缺点是什么?
微服务架构遇到的常见问题及解决方案?
10.3 微服务核心组件
什么是服务注册与发现?原理是什么?
Nacos和Eureka的区别是什么?
配置中心的作用是什么?原理是什么?
API网关的作用是什么?
常见的负载均衡算法有哪些?轮询算法的核心缺陷是什么?
Dubbo的原理是什么?SPI机制是什么?
RPC和HTTP的区别是什么?
gRPC的原理是什么?
Spring Cloud的核心组件有哪些?
Feign和Ribbon的区别是什么?
Hystrix和Sentinel的区别是什么?
10.4 分布式事务
常见的分布式事务解决方案有哪些?
2PC、3PC、TCC、SAGA、本地消息表、事务消息的区别和适用场景?
10.5 分布式ID
分布式ID生成器怎么实现?
Snowflake雪花算法的原理是什么?
10.6 高可用与高并发设计
如何设计一个高可用的系统?
如何设计一个高并发的系统?
什么是服务雪崩?如何避免?
什么是熔断和降级?区别是什么?
常见的限流算法有哪些?令牌桶和漏桶的区别是什么?
如何设计接口限流系统?
什么是接口幂等性?如何保证接口幂等性?
分布式定时任务下,如何保证任务执行的幂等性?
十一、Spring全家桶与常用框架
11.1 Spring核心
Spring的核心特性是什么?
什么是IOC?原理是什么?
什么是AOP?原理是什么?
Spring Bean的生命周期是什么?
Spring Bean的作用域有哪些?默认是哪种?
Spring Bean是线程安全的吗?如何保证线程安全?
@Autowired和@Resource的区别是什么?
Spring如何解决循环依赖?
Spring事务的传播行为有哪些?
@Transactional注解的原理是什么?失效场景有哪些?
11.2 Spring Boot
Spring Boot自动装配原理是什么?
Spring Boot Starter是什么?
Spring Boot常用的注解有哪些?
11.3 Spring MVC
Spring MVC的工作流程是什么?
Tomcat的Connector组件的核心职责是什么?
11.4 MyBatis
MyBatis中#{}和${}的区别是什么?
MyBatis的一级缓存和二级缓存是什么?
MyBatis的插件原理是什么?
MyBatis一级缓存的作用域是哪里?默认是否开启?
11.5 Spring AI
介绍一下Spring AI这个框架?
用Spring AI写一个Agent的过程大概是什么样的?
十二、设计模式
常用的设计模式有哪些?分别解决什么问题?
单例模式的实现方式有哪些?应用场景是什么?
手写双重检验锁(DCL)实现单例模式?
工厂模式的应用场景是什么?
代理模式的应用场景是什么?
观察者模式的应用场景是什么?
你的项目中使用了哪些设计模式?为什么选择这些模式?
十三、数据结构与算法
13.1 基础算法概念
常见排序算法的时间复杂度、空间复杂度对比?
二分查找的原理和实现?
动态规划的解题思路是什么?
回溯算法的解题思路是什么?
贪心算法的适用场景是什么?
BFS和DFS的区别是什么?
13.2 手撕算法题汇总
手写堆排序
手写快速排序
手写归并排序
反转链表(K个一组翻转链表)
反转双向链表
用栈实现队列(线程安全)
LRU缓存设计
合并两个有序数组
升序数组找target的开始位置和结束位置
数字1的个数(LC233)
糖果分发(DP)
扁平数组化成树(二叉树)
二叉树的层次遍历及变体
十四、场景设计题
设计一个秒杀系统?
设计一个抢票系统?
设计一个微信红包系统?
设计一个延迟队列?
设计一个分布式ID生成器?
设计一个分布式锁?
设计一个接口限流系统?
设计一个评论系统?
设计一个feed流系统?
弱网环境下上传1G视频,应该怎么设计?
100个进程,5个并发数的工作,应该怎么设计?
高并发场景下,如何解决数据库读写性能瓶颈?
抛开MQ,自己实现延迟功能,你会怎么做?
设计一个RPC框架时,序列化模块最优先考虑的因素是什么?
介绍docker代码沙箱的实现流程?
代码沙箱如何防止恶意代码攻击(如死循环、占满内存、文件读写)?
Docker沙箱在高并发判题场景下,如何避免资源争抢与容器反复创建?
如何设计一个日志系统?如何处理海量日志?
十五、AI/大模型/Agent
15.1 Agent基础
什么是Agent?组成部分有哪些?
Agent和大模型怎么交互、协同?工作流程是什么?
为什么要给大模型引用工具?单纯大模型不行吗?
工具给大模型扩展了什么能力?
什么是Function Call?
什么是MCP?MCP的组成是什么?
什么是Skill?和Function Call、MCP的区别是什么?
MCP和Skill哪个上下文占用大?
Agent怎么判断某轮tool call后该不该结束?
Agent生成代码执行用什么方法?了解过sandbox吗?
Agent执行代码工具如何设计?报错了怎么办?
重试做在tool内还是agent多次调用?
如果一轮tool call返回结果非常多,怎么设计?
Coding agent会有哪些模块?
多个agents怎么相互协作?
Agent间通信和状态管理怎么设计?
Agent效果评估怎么做?
15.2 RAG
RAG和传统搜索的区别是什么?
为什么不直接用关键词检索?
RAG混合检索策略怎么做?
RAG召回效果如何评估?
Chunk切片粒度太大/太小有什么问题?
RAG系统文档频繁更新,向量索引与原文不一致怎么办?
混合检索时,如果关键词匹配但语义不匹配怎么办?
RAG效果优化有哪些方法?
什么是CoT(思维链)?
RAG如何解决大模型幻觉?怎么体现/评估?
15.3 大模型与提示词工程
常用哪些大模型?模型选型的考虑因素有哪些?
大模型API调用原理是什么?流式输出怎么实现?
写提示词的方法论是什么?对提示词工程的理解?
上下文工程的理解?和提示词工程的区别?
如何避免不同用户上下文互相污染?
保存/隔离/选择/压缩上下文的方法有哪些?
如何持久化上下文?
多轮prompt中当前prompt怎么利用之前的prompt?
Prompt管理:存什么?怎么存?相似度高怎么处理?
15.4 向量数据库与检索
向量数据库如何选型?
检索召回速度怎么优化?
ES千万级数据取top100,内部怎么执行?
检索这块做过效果上的优化吗?有什么优化案例?
15.5 工具调用
工具调用失败怎么办?
怎么溯源工具调用失败?是意图识别错、入参错还是工具掉线?
Agent系统可观测平台有哪些?langsmith和langfuse的区别?
工具重试不成功怎么办?保底工具策略?
入参校验怎么做?有什么现成手段?
15.6 AI编程工具
日常使用哪些AI编程工具?
不同场景怎么切换使用AI编程工具?
AI Coding的流程是什么?大项目需求怎么解决?
怎么保证AI生成代码的正确性和质量?
Cursor从设计稿直接生成代码的挑战是什么?
十六、项目经验相关
介绍一下你的项目架构?
项目中最有挑战/出彩的地方是什么?
项目中遇到最难的问题是什么?怎么解决的?
项目的技术选型是怎么考虑的?
项目中你负责的模块是什么?核心业务场景是什么?
项目压测过吗?并发量多少?QPS/TPS/RT是多少?
项目中做过哪些性能优化?
项目中如何保证接口的幂等性?
分享一个你印象最深的Bug?当时的现象、定位过程、解决方案、学到的东西?
项目中使用消息队列有没有遇到什么问题?怎么解决的?
项目中权限控制模块,你是如何设计数据权限和功能权限的隔离逻辑的?
项目中如果抛出自定义异常,你是如何保证异常信息能准确定位问题的?
是否部署过项目?具体怎么部署的?
项目中如何保证数据库和ES数据同步?
项目中Token过期机制是怎么设计的?
JWT鉴权流程是怎样的?
十七、认证与安全
JWT签名中的非对称加密具体是如何防篡改的?
JWT令牌被窃取后该如何处理?了解重放攻击吗?
JWT是无状态的,为什么不使用Session?
为什么选择JWT+Filter实现用户登录认证,而非拦截器?有哪些考量?
JWT存在哪些安全风险,如何在分布式网关层做防护?
JWT无状态架构下,如何实现分布式会话的强制下线、拉黑功能?
分布式会话场景下,如何实现JWT的细粒度权限刷新?
基于AOP思想,如何自定义拦截器防止SQL注入?
十八、Git相关
Git rebase和merge的区别是什么?
Git冲突如何解决?
常见的Git工作流有哪些?
十九、HR与职业规划
做一个自我介绍?
为什么学计算机?为什么喜欢这个专业?
你的职业规划是什么?
对AI的看法?AI会不会取代程序员?
上一段实习的经历?学到了什么?为什么不留在那里?
你在实习中负责的模块是什么?遇到了什么技术难点?
学校是否允许实习?可以实习几个月?
你为什么选择我们公司?对我们公司的业务有了解吗?
你的优点和缺点是什么?
你最有成就感的一件事?
能接受加班吗?
还有别的公司在流程中吗?
你的兴趣爱好是什么?
你对这次面试有什么建议?
(注:文档部分内容可能由 AI 生成)