专业的编程技术博客社区

网站首页 > 博客文章 正文

Java 核心技术面试题(java面试核心知识点精讲pdf)

baijin 2025-06-24 11:39:02 博客文章 3 ℃ 0 评论

以下是根据 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. 什么是单元测试?为什么需要单元测试?(测试最小功能单元,提高代码可靠性)

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表