网站首页 > java教程 正文
以下是根据 Java 核心技术、主流框架、性能优化、分布式系统、工程实践五大方向整理的 Java 面试题分类总结,覆盖基础到高级高频考点,并附核心考察点解析:
一、Java 核心技术面试题
1. JVM 相关
- 基础题
1. JVM 内存区域如何划分?各区域的作用是什么?(考察内存模型)
2. 什么是 OOM?常见的 OOM 场景有哪些?(堆溢出、元空间溢出等)
3. 简述 GC 垃圾回收机制,如何判断对象可回收?(可达性分析、引用计数法)
- 中级题
1. 新生代和老年代的垃圾收集器有哪些?各自的特点?(Serial/ParNew/Parallel Scavenge 与 CMS/G1)
2. G1 收集器相比 CMS 有哪些优化?(分区域、可预测停顿时间)
3. 类加载的过程是什么?双亲委派模型的作用?(加载→验证→准备→解析→初始化,防止类重复加载)
- 高级题
1. 如何分析 JVM 内存泄漏?请列举工具及步骤(MAT、JProfiler、GC 日志分析)
2. 写出常见的 JVM 调优参数(如 -Xms、-Xmx、-XX:MetaspaceSize 等)
2. 并发编程
- 基础题
1. 线程和进程的区别?Java 中创建线程的方式有哪些?(继承 Thread/实现 Runnable/Callable)
2. 简述 synchronized 和 ReentrantLock 的区别?(底层实现、锁机制、功能特性)
3. 线程池的核心参数有哪些?常用线程池类型及适用场景?(ThreadPoolExecutor 参数,
FixedThreadPool/CachedThreadPool 等)
- 中级题
1. AQS 是什么?简述其实现原理(队列同步器,CLH 队列、状态位 atomic 操作)
2. 并发容器有哪些?ConcurrentHashMap 在 JDK 1.7 和 1.8 中的实现区别?(分段锁 vs CAS+链表/红黑树)
3. 什么是可见性、原子性、有序性?如何保证?(volatile/synchronized/锁)
- 高级题
1. 如何解决线程安全问题?请举例说明(CAS、悲观锁、乐观锁、ThreadLocal)
2. 聊聊线程池的拒绝策略(AbortPolicy、CallerRunsPolicy 等)及自定义实现思路
3. 集合与框架
- 基础题
1. ArrayList 和 LinkedList 的区别?(数组 vs 链表,随机访问效率、增删效率)
2. HashMap 的底层实现?为什么链表长度超过 8 转为红黑树?(数组+链表/红黑树,平衡查找效率)
3. List、Set、Map 的核心实现类及区别?(ArrayList/HashSet/HashMap 等)
- 中级题
1. HashSet 如何保证元素不重复?与 HashMap 的关系?(底层用 HashMap,元素作为 key)
2. CopyOnWriteArrayList 的原理及适用场景?(写时复制,适用于读多写少场景)
4. Java 基础特性
- 基础题
1. Java 8 新特性有哪些?(Lambda、Stream API、接口默认方法、LocalDateTime 等)
2. 抽象类和接口的区别?(实现方式、成员变量、继承关系)
3. 简述异常体系(Exception/Error,
CheckedException/UncheckedException)
二、主流框架面试题
1. Spring 框架
- 基础题
1. Spring 的 IoC 和 AOP 原理?(依赖注入、动态代理实现切面编程)
2. Spring Bean 的生命周期?(实例化→初始化→销毁,Aware 接口、后置处理器)
3. Spring 如何解决循环依赖?(三级缓存,早期暴露对象引用)
- 中级题
1. Spring Boot 自动配置的原理?(@EnableAutoConfiguration + SpringFactoriesLoader)
2. Spring 事务的实现方式?传播机制有哪些?(编程式/声明式,REQUIRED/NOT_SUPPORTED 等)
3. @Component、@Service、@Repository、@Controller 的区别?(语义化注解,用于组件扫描)
- 高级题
1. Spring Cloud 核心组件有哪些?各组件的作用?(Eureka/服务注册、Ribbon/负载均衡、Feign/声明式调用等)
2. 微服务架构下如何解决服务雪崩?(断路器 Hystrix/Sentinel、限流、降级)
2. MyBatis
- 基础题
1. MyBatis 中 #{} 和 ${} 的区别?(预编译防 SQL 注入 vs 字符串拼接)
2. MyBatis 的一级缓存和二级缓存?(会话级缓存、全局缓存,默认不开启二级缓存)
- 中级题
1. MyBatis 如何实现自定义类型处理器?(TypeHandler 接口,处理数据库类型与 Java 类型映射)
3. Netty
- 中级题
1. Netty 的线程模型?(Reactor 模式,BossGroup/WorkerGroup 线程池)
2. Netty 如何实现零拷贝?(FileRegion、CompositeByteBuf 等)
三、性能优化面试题
1. JVM 调优
- 基础题
1. 如何监控 JVM 性能?(
jps/jstat/jmap/jconsole/jvisualvm 等工具)
2. 简述 GC 调优的核心目标(降低停顿时间、提高吞吐量、避免 OOM)
- 中级题
1. 当应用出现频繁 Full GC 时,如何定位问题?(分析 GC 日志,查看对象分配速率、老年代增长情况)
2. 数据库与缓存优化
- 基础题
1. 如何优化慢 SQL?(索引优化、SQL 改写、分库分表)
2. Redis 为什么快?常用数据结构及场景?(单线程、内存操作,String/Hash/List/ZSet 等)
- 中级题
1. 缓存穿透、缓存击穿、缓存雪崩如何解决?(布隆过滤器、热点数据永不过期、分布式限流)
四、分布式系统面试题
1. 分布式理论
- 基础题
1. 简述 CAP 定理和 BASE 理论?(一致性、可用性、分区容错性,最终一致性)
2. 分布式系统中的数据一致性级别?(强一致、弱一致、最终一致)
- 中级题
1. 分布式事务解决方案有哪些?(2PC、TCC、本地消息表、事务消息)
2. 分布式组件
- 基础题
1. 如何实现分布式锁?Redis 和 ZooKeeper 实现的区别?(Redis 基于 SET NX,ZooKeeper 基于临时有序节点)
2. 服务注册与发现的核心原理?(服务提供者注册 IP+端口,消费者拉取注册表)
五、工程实践面试题
1. 设计模式
- 基础题
1. 单例模式的实现方式?如何防止反射和序列化破坏单例?(双重检查锁、静态内部类,重写 readResolve 方法)
2. 工厂模式和策略模式的应用场景?(解耦对象创建、动态切换算法)
- 中级题
1. 项目中如何使用设计模式优化代码?举例说明(如模板方法模式封装公共流程)
2. 代码质量与测试
- 基础题
1. JUnit 常用注解有哪些?(@Test、@Before、@After、@RunWith 等)
2. 什么是单元测试?为什么需要单元测试?(测试最小功能单元,提高代码可靠性)
猜你喜欢
- 2025-07-07 几乎覆盖了所有 Java 面试题(3000+)
- 2025-07-07 Java面试场景题及答案总结(2025版持续更新)
- 2025-07-07 Java面试场景题及答案最全总结(2025版持续更新)
- 2025-07-07 java 面试题和答案(java面试题库及答案)
- 2025-07-07 面试必备的 Java 面试题(3000+)(java面试精选)
你 发表评论:
欢迎- 最近发表
-
- Java内存溢出紧急处理:10个必知的Linux命令快速定位OOM
- 面试常问的 25+ 个 Linux 命令(linux面试命令大全)
- Java堆外内存溢出紧急处理实战:Linux命令定位与Spring Boot解决
- java开发常用的Linux命令,高频的没你想象的多
- Java 应用 CPU 飙升?8 个 Linux 命令组合拳快速锁定异常线程
- Java 开发者线上问题排查常用的 15 个 Linux 命令
- Java程序员必备的Linux命令:让你的工作效率翻倍
- Java程序员必备的Linux命令全解析
- [超全整理] Java 程序员必备的 100 条 Linux 命令大全
- SAP ABAP资源导航(sap aatp)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)