1. 数据结构与算法
这个是最基础最重要的,因为几乎每场面试都会有算法题考察
推荐学习路线
推荐一个公众号labuladong,里面的刷题秘籍非常好,跟着它刷leetcode,面试算法题基本无压力
2. Java并发编程
这个是Java的核心,几乎每场面试都会问的点
重要知识点
- JMM(Java Memory Modle)
- 关键字volatile
- 关键字sychronized
- 关键字final
- CAS(Compare And Swap)
- Java的线程模式和线程的API
- AQS与ReentrantLock
- 线程池
- ThreadLocal
以上这些是必备的,Java并发编程包内还有很多有趣的类,有时间可以看看
推荐学习路线
- 《Java并发编程的艺术》这本书不错
3. Java util包
重要知识点
- HashMap(JDK1.7和JDK1.8两个版本)
- ConcurrentHashMap(JDK1.7和JDK1.8两个版本)
- LinkedList
- ArrayList
- LinkedHashMap
推荐学习路线
这块内容需要自己去阅读源代码,比较难学,网上的博客讲的都不太全
4. JVM
重要知识点
- JVM的内存(不同JDK版本下内存结构的变化)
- 对象的创建,对象的访问,对象的布局
- 垃圾回收算法,垃圾回收器
- 对象的分配策略
- 类加载机制
推荐学习路线
- 《深入理解Java虚拟机》
5. MySQL
重要知识点
- 索引
- bin log
- redo log
- undo log
- 事务,事务隔离等级
- MVCC
- 锁
- 两阶段提交
推荐学习路线
- 《MySQL是怎样运行的》
6. 计算机网络
重要知识点
- OSI模型/TCP模型
- IP协议
- TCP协议
- UDP协议
- HTTP协议
- HTTPS
7. Redis(非必须)
Redis非必须不是说Redis不重要,知识面试中问的频率不如上面的知识点高
重要知识点
- Redis的底层数据结构
- Redis的线程模型
- Redis的事务,Lua脚本,乐观锁
- Redis的持久化——RDB和AOF
- Redis主从复制
- Redis内存
- Redis哨兵模式
- Redis的缓存问题(缓存穿透,缓存击穿,缓存雪崩)
- Redis Cluster
- Redis实现分布式锁
- 缓存与数据库的数据一致性问题
推荐学习路线
- 《Redis开发与运维》
8. 操作系统
我知道OS很重要,但Java岗位面试中,OS问的并不多,因为我们有JVM(坏笑),所以我觉得OS可以先放一放,其他准备充分了再来准备OS
9. 分布式相关
这块是纯粹的加分项了,内容非常多
- CAP协议
- Paxos协议
- Raft协议
- 各种分布式锁实现方案,以及优缺点
- Zookeeper
- ...
关注关注,主页更多java内容