当前位置: 首页 > news >正文

Java 后端面试干货:四大核心模块高频考点深度解析

Java 后端面试核心围绕 “基础深度、原理理解、场景应用” 展开,本文针对并发编程、JVM、Spring 框架、数据库四大高频模块,拆解核心考点与面试重点,助力求职者精准备考。​

一、并发编程:面试必问的 “硬骨头”​

1. 线程池核心原理​

  • 核心参数:核心线程数(corePoolSize)、最大线程数(maximumPoolSize)、队列容量(workQueue)、空闲线程存活时间(keepAliveTime)、拒绝策略(handler)。​
  • 执行流程:核心线程满→任务入队→队列满→创建非核心线程→线程数达最大→触发拒绝策略。​
  • 面试重点:​
  • 拒绝策略选型(如秒杀场景用 CallerRunsPolicy 避免任务丢失);​
  • 线程池参数设计(CPU 密集型:核心线程数 = CPU 核心数 + 1;IO 密集型:核心线程数 = CPU 核心数 ×2);​
  • Executors 创建线程池的弊端(如 FixedThreadPool 无界队列易 OOM)。​

2. synchronized 与 ReentrantLock 区别

特性

synchronized

ReentrantLock

锁实现

JVM 层面(监视器锁)

JDK 层面(AQS)

可中断性

不可中断

可中断(lockInterruptibly)

公平锁

非公平

可公平 / 非公平

条件变量

支持(Condition)

锁释放

自动释放(异常 / 方法结束)

手动释放(finally 中 unlock)

  • 面试延伸:synchronized 锁升级过程(偏向锁→轻量级锁→重量级锁)及触发条件。​

3. volatile 关键字​

  • 核心作用:可见性(禁止 CPU 缓存,变量修改直接写入主内存)、有序性(禁止指令重排)。​
  • 局限性:无法保证原子性(如 i++ 操作)。​
  • 面试重点:volatile 的内存语义、与 synchronized 的区别。​

二、JVM:底层原理的 “分水岭”​

1. 运行时数据区​

  • 线程私有:程序计数器(无 OOM)、虚拟机栈(StackOverflowError/OOM)、本地方法栈;​
  • 线程共享:堆(GC 核心区域,OOM 高发地)、方法区(JDK8 为元空间,存储类元信息)。​
  • 面试重点:堆内存分代(年轻代 Eden+Survivor、老年代)及对象晋升流程。​

2. 垃圾回收(GC)​

  • 核心算法:可达性分析(GC Roots)、标记 - 清除(碎片多)、标记 - 复制(年轻代用)、标记 - 整理(老年代用)。​
  • 收集器:​
  • CMS:低延迟,标记 - 清除,有碎片;​
  • G1:分区回收,兼顾吞吐量与延迟;​
  • ZGC:大内存低延迟,并发回收。​
  • 面试重点:GC Roots 类型、G1 与 CMS 的对比、Full GC 触发条件。​

3. 类加载机制

  • 流程:加载→验证→准备→解析→初始化(执行 clinit 方法)。​
  • 类加载器:双亲委派模型(Bootstrap→Extension→Application)。​
  • 面试重点:双亲委派模型的破坏场景(如 Tomcat 类加载)。​

三、Spring 框架:从 API 到源码的 “深度考察”​

1. Spring IoC 容器​

  • 核心概念:控制反转(对象创建权交给容器)、依赖注入(构造器 /setter/ 字段注入)。​
  • Bean 生命周期:实例化→属性注入→初始化(InitializingBean)→使用→销毁(DisposableBean)。​
  • 面试重点:循环依赖解决(三级缓存)、Bean 作用域(singleton/prototype)。​

2. Spring AOP​

  • 核心术语:切面(Aspect)、通知(Advice:@Before/@After/@Around)、切入点(Pointcut)。​
  • 实现原理:JDK 动态代理(接口)、CGLIB 动态代理(继承)。​
  • 面试重点:动态代理区别、AOP 应用场景(事务 / 日志)。​

3. Spring 事务​

  • ACID 特性:原子性、一致性、隔离性、持久性。​
  • 隔离级别:Read Committed(解决脏读)、Repeatable Read(MySQL 默认,解决不可重复读)、Serializable。​
  • 传播机制:REQUIRED(默认)、REQUIRES_NEW(独立事务)。​
  • 面试重点:事务不生效场景(非 public 方法、自调用、异常被捕获)。​

四、数据库(MySQL):性能优化的 “关键”​

1. 索引原理​

  • 类型:聚簇索引(主键,叶节点存数据)、二级索引(叶节点存主键)。​
  • 数据结构:B + 树(范围查询高效)。​
  • 索引失效场景:函数操作索引列、Like 以 % 开头、联合索引不满足最左前缀。​
  • 面试重点:聚簇索引与非聚簇索引区别、覆盖索引(避免回表)。​

2. 事务与并发​

  • 并发问题:脏读、不可重复读、幻读。​
  • 隔离级别对应解决:Repeatable Read 通过 MVCC 解决幻读。​
  • 面试重点:MVCC 实现原理。​

3. SQL 优化​

  • 避免 select *,使用覆盖索引;​
  • 大表分库分表(水平按行、垂直按列);​
  • 分页优化(where id>xxx limit 10 替代 limit 100000,10)。​
  • 面试重点:慢查询分析流程(慢日志→explain 执行计划)。​

总结​

Java 后端面试考察的是 “底层原理 + 场景应用” 的综合能力。建议结合源码(如 HashMap、Spring IoC)和项目实操,深入理解每个知识点的 “为什么” 与 “怎么用”,避免死记硬背。祝各位求职者面试顺利,offer 到手!💪

以上面试题已打包:DDD面试题

 

http://www.dtcms.com/a/565689.html

相关文章:

  • 交换机路由器基础(三)--常见接口、线缆和器件
  • Qt笔记:QtAdvancedStylesheet使用时,关于url(icon:/primary/checklist_invert.svg)的疑惑
  • 亚远景-ISO/PAS 8800在软件定义汽车(SDV)时代的AI安全治理角色
  • 网站开发前端和后端技术简单的微信小程序项目
  • 企业电子商务网站的建设方式百度网站首页提交入口
  • Bayes/BO-CNN-BiLSTM、CNN-BiLSTM、BiLSTM贝叶斯优化三模型多变量回归预测Matlab
  • STM32中使用三极管驱动风扇
  • 深度解析阿里云通用算力型U1与U2i实例性能差异:架构、算力、场景选型全对比
  • 北斗形变监测传感器在水库安全中的应用及技术优势分析
  • 深圳网站建设公司地图网站建设优秀网站建
  • 网站建设犭金手指C排名15淮安市哪里可以做网站
  • Playwright
  • 每日两题day32
  • GJOI 10.27 题解
  • 极限挑战之一命速通哈夫曼树
  • 手机网站是怎么做的备案ip 查询网站查询系统
  • 做全房订制网站公司大型网站建设哪家服务好
  • 介绍几个网站第寒网站建设
  • 24级闪屏制作流程
  • 1X9光模块怎么选?
  • 网站建设许可证用名字做壁纸网站
  • 福州网站建设多少钱敬请期待上一句
  • k8s --- Intro
  • 构建内网离线的“github.com“,完美解决内网Go开发依赖
  • 虚幻基础:动作组件
  • k8s-Pod中的网络通信
  • 在合肥哪里学网站建设昆明城乡建设网站
  • 重庆做网站建设找谁微动网站建设
  • 电商网站建设培训石家庄做网站排名
  • 【论文精读】AID:打通 Image2Video 与文本引导视频预测的关键技术