网站首页 > 技术文章 正文
以下是根据 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-06 面试官:前端批量请求失败 Toast 重复弹窗怎么解决?
- 2025-07-06 TOP 20+ .NET和OOP面试题(ooa oop ood 面试)
- 2025-07-06 一次 Java 架构师面试全记录:从准备到实战的深度复盘
- 2025-07-06 springboot面试题(springboot三大核心注解)
- 2025-07-06 React.js Top20面试题(react面试题)
- 2025-07-06 Java面试题整理:紧跟2025年面试趋势
- 2025-07-06 Spring Cloud的18道面试题及答案(收藏版)
- 2024-10-09 BAT架构师分享30道Java面试题:题目+答案+文末彩蛋
- 2024-10-09 前端工程师常见面试题(前端进阶)——Angular 框架
- 2024-10-09 最全Java架构师130面试题:微服务、高并发、大数据...
你 发表评论:
欢迎- 593℃几个Oracle空值处理函数 oracle处理null值的函数
- 586℃Oracle分析函数之Lag和Lead()使用
- 574℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 571℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 567℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 559℃【数据统计分析】详解Oracle分组函数之CUBE
- 546℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 540℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端懒加载 (49)
- 前端获取当前时间 (50)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)