1. 面向对象
- 三大特性:封装、继承、多态的理解和应用
- 重载与重写的区别
- 抽象类与接口的区别,Java 8接口新特性
- 内部类、匿名内部类、Lambda表达式
2. 数据类型与集合
- 基本数据类型与包装类,自动装箱拆箱
- String、StringBuilder、StringBuffer区别
- equals()与==的区别,hashCode()与equals()的关系
- ArrayList vs LinkedList,HashMap vs ConcurrentHashMap
- HashMap底层实现(数组+链表+红黑树),扩容机制,hash冲突解决
- ConcurrentHashMap的实现原理(JDK 1.7 vs 1.8)
3. 异常处理
- 异常体系结构(Throwable、Error、Exception)
- Checked Exception vs Unchecked Exception
- try-catch-finally执行顺序,finally一定会执行吗?
- 自定义异常的使用场景
4. IO流
- BIO、NIO、AIO的区别
- 字节流与字符流的区别
- 序列化与反序列化,serialVersionUID的作用
二、并发编程(高频重点)
1. 线程基础
- 线程的创建方式(继承Thread、实现Runnable、Callable+FutureTask)
- 线程的生命周期和状态转换
- sleep() vs wait() vs yield() vs join()
- 守护线程与用户线程
2. 锁机制
- synchronized关键字原理(对象头、Monitor、锁升级)
- volatile关键字作用(可见性、禁止指令重排序)
- ReentrantLock vs synchronized
- 公平锁与非公平锁、可重入锁、读写锁
- 死锁的产生条件和避免方法
3. 并发工具类
- ThreadLocal原理及内存泄漏问题
- CountDownLatch、CyclicBarrier、Semaphore的使用场景
- 线程池核心参数、工作原理、拒绝策略
- 常见线程池类型(FixedThreadPool、CachedThreadPool等)
4. JUC包
- AQS(AbstractQueuedSynchronizer)原理
- CAS(Compare And Swap)原理及ABA问题
- Atomic原子类的使用
三、JVM(必考深度)
1. 内存结构
- 运行时数据区(堆、栈、方法区、程序计数器、本地方法栈)
- 堆内存划分(新生代、老年代、Eden、Survivor)
- 方法区与元空间(JDK 1.8变化)
2. 垃圾回收
- 对象存活判断(引用计数 vs 可达性分析)
- 四种引用类型(强、软、弱、虚引用)
- 垃圾回收算法(标记清除、标记整理、复制算法、分代收集)
- 垃圾收集器(Serial、ParNew、CMS、G1、ZGC)
- Minor GC vs Full GC触发条件
3. 类加载
- 类加载过程(加载、验证、准备、解析、初始化)
- 双亲委派模型及其破坏
- 自定义类加载器的应用场景
4. 性能调优
- JVM参数配置(-Xms、-Xmx、-XX:MaxPermSize等)
- OOM的几种情况及排查方法
- 常用JVM调优工具(jps、jstat、jmap、jstack、VisualVM)
像这些内容在我的java专栏都涵盖了:https://www.nowcoder.com/creation/manager/columnDetail/0n9XOd
四、Spring框架(必考)
1. Spring核心
- IOC(控制反转)与DI(依赖注入)原理
- Bean的作用域(singleton、prototype等)
- Bean的生命周期(实例化、属性赋值、初始化、销毁)
- @Autowired vs @Resource注入方式
- 循环依赖问题及Spring的解决方案(三级缓存)
2. AOP
- AOP的实现原理(JDK动态代理 vs CGLIB)
- 切面、切点、通知的概念
- @Aspect注解的使用
- 事务失效的场景
3. Spring MVC
- 请求处理流程(DispatcherServlet工作原理)
- 常用注解(@Controller、@RequestMapping、@ResponseBody等)
- 拦截器与过滤器的区别
4. Spring Boot
- 自动配置原理(@SpringBootApplication、@EnableAutoConfiguration)
- Starter机制
- 配置文件加载顺序
- 常用注解(@ConditionalOnProperty等)
五、数据库(MySQL必考)
1. 索引
- 索引类型(B+树、Hash、全文索引)
- 聚簇索引与非聚簇索引
- 索引失效场景(like左模糊、类型转换、函数计算等)
- 联合索引与最左前缀原则
- 覆盖索引、索引下推
2. 事务
- ACID特性
- 事务隔离级别(读未提交、读已提交、可重复读、串行化)
- 脏读、不可重复读、幻读的区别
- MVCC(多版本并发控制)原理
- undo log、redo log、binlog的作用
3. 锁机制
- 表锁、行锁、间隙锁、临键锁
- 乐观锁与悲观锁
- 死锁的产生和解决
4. 性能优化
- 慢查询优化方法(explain分析)
- 分库分表策略
- 主从复制原理
- 读写分离实现
六、Redis(高频)
1. 数据结构
- 五种基本类型(String、List、Set、Hash、ZSet)及应用场景
- 底层数据结构(SDS、跳表、压缩列表、哈希表等)
2. 持久化
- RDB vs AOF的区别
- 持久化策略选择
3. 高可用
- 主从复制原理
- 哨兵模式(Sentinel)
- 集群模式(Cluster)
4. 常见问题
- 缓存穿透、缓存击穿、缓存雪崩的解决方案
- 分布式锁的实现(Redisson)
- 数据一致性问题(双写一致性、延迟双删)
- Redis过期策略与淘汰策略
七、消息队列(RabbitMQ/Kafka)
1. 基础概念
- 消息队列的作用(解耦、异步、削峰)
- 消息模型(点对点、发布订阅)
2. 可靠性保障
- 消息丢失的解决方案
- 消息重复消费的处理(幂等性)
- 消息顺序性保证
- 事务消息
3. 高可用
- RabbitMQ的镜像队列
- Kafka的分区与副本机制
八、分布式(进阶)
1. 分布式理论
- CAP定理、BASE理论
- 分布式事务解决方案(2PC、3PC、TCC、Saga、本地消息表)
2. 微服务
- Spring Cloud核心组件(Eureka、Ribbon、Feign、Hystrix、Gateway)
- 服务注册与发现
- 负载均衡策略
- 熔断降级限流
3. 分布式锁
- Redis实现分布式锁
- Zookeeper实现分布式锁
- 两者的区别和选择
九、算法与数据结构(必考)
1. 常见算法
- 排序算法(快排、归并、堆排序)
- 二分查找及其变种
- 动态规划(背包问题、最长公共子序列)
- 贪心算法、回溯算法
2. 数据结构
- 链表(反转、环检测、合并)
- 树(二叉树遍历、BST、红黑树)
- 图(DFS、BFS、最短路径)
- 栈、队列、堆的应用
3. LeetCode高频题
- 两数之和、三数之和
- 无重复字符的最长子串
- LRU缓存实现
- 岛屿数量、括号匹配
- 链表反转、合并K个有序链表
十、设计模式(常考)
- 单例模式(懒汉、饿汉、双重检查锁、枚举)
- 工厂模式、抽象工厂模式
- 代理模式(静态代理、动态代理)
- 观察者模式、策略模式
- 模板方法模式、适配器模式
全部评论
(1) 回帖