[![](http://www.hollischuang.com/wp-content/uploads/2018/10/Hollis.png)](https://www.hollischuang.com)
## To Be Top Javaer - Java工程师成神之路
![](https://img.shields.io/badge/version-v2.0.0-green.svg) ![](https://img.shields.io/badge/author-Hollis-yellow.svg) ![](https://img.shields.io/badge/license-GPL-blue.svg)
| 主要版本 | 更新时间 | 备注 |
| ---- | ---------- | -------------- |
| v1.0 | 2015-08-01 | 首次发布 |
| v1.1 | 2018-03-12 | 增加新技术知识、完善知识体系 |
| v2.0 | 2019-02-19 | 结构调整,更适合从入门到精通;
进一步完善知识体系;
新技术补充;|
欢迎关注[Java之道]公众号,最新内容均会在该公众号中同步发出!
![](pics/wechat.png)
[全套思维导图](/mind-map.md)
## 一、基础篇
### 面向对象
#### 什么是面向对象
[面向对象、面向过程](/basics/java-basic/object-oriented-vs-procedure-oriented.md)
[面向对象的三大基本特征](/basics/java-basic/characteristics.md)和[五大基本原则](/basics/java-basic/principle.md)
#### 平台无关性
[Java如何实现的平台无关性的](/basics/java-basic/platform-independent.md)
[JVM还支持哪些语言(Kotlin、Groovy、JRuby、Jython、Scala)](/basics/java-basic/jvm-language.md)
#### 值传递
[值传递、引用传递](/basics/java-basic/java-pass-by.md)
[为什么说Java中只有值传递](/basics/java-basic/java-pass-by.md)
#### 封装、继承、多态
[什么是多态](/basics/java-basic/polymorphism.md)、[方法重写与重载](/basics/java-basic/overloading-vs-overriding.md)
Java的继承与实现
[Java的继承与组合](/basics/java-basic/inheritance-composition.md)
[构造函数与默认构造函数](/basics/java-basic/constructor.md)
[类变量、成员变量和局部变量](/basics/java-basic/variable.md)
[成员变量和方法作用域](/basics/java-basic/scope.md)
### Java基础知识
#### 基本数据类型
[7种基本数据类型:整型、浮点型、布尔型、字符型](/basics/java-basic/basic-data-types.md)
[整型中byte、short、int、long的取值范围](/basics/java-basic/integer-scope.md)
[什么是浮点型?](/basics/java-basic/float.md)
[什么是单精度和双精度?](/basics/java-basic/single-double-float.md)
[为什么不能用浮点型表示金额?](/basics/java-basic/float-amount.md)
#### 自动拆装箱
[什么是包装类型、什么是基本类型、什么是自动拆装箱](/basics/java-basic/boxing-unboxing.md)
[Integer的缓存机制](/basics/java-basic/integer-cache.md)
#### String
[字符串的不可变性](/basics/java-basic/final-string.md)
[JDK 6和JDK 7中substring的原理及区别](/basics/java-basic/substring.md)
replaceFirst、replaceAll、replace区别、
[String对“+”的重载](/basics/java-basic/string-append.md)
[字符串拼接的几种方式和区别](/basics/java-basic/string-concat.md)
[String.valueOf和Integer.toString的区别](/basics/java-basic/value-of-vs-to-string.md)
[switch对String的支持](/basics/java-basic/switch-string.md)
字符串池、常量池(运行时常量池、Class常量池)、intern
#### 熟悉Java中各种关键字
transient、instanceof、volatile、synchronized、final、static、const 原理及用法。
#### 集合类
常用集合类的使用
[ArrayList和LinkedList和Vector的区别](/basics/java-basic/arraylist-vs-linkedlist-vs-vector.md)
[SynchronizedList和Vector的区别](/basics/java-basic/synchronizedlist-vector.md)、
[HashMap、HashTable、ConcurrentHashMap区别](/basics/java-basic/HashMap-HashTable-ConcurrentHashMap.md)
[Set和List区别?](/basics/java-basic/set-vs-list.md)
[Set如何保证元素不重复?](/basics/java-basic/set-repetition.md)
[Java 8中stream相关用法](/basics/java-basic/stream.md)、
apache集合处理工具类的使用、
不同版本的JDK中HashMap的实现的区别以及原因
[Collection和Collections区别](/basics/java-basic/Collection-vs-Collections.md)
[Arrays.asList获得的List使用时需要注意什么](/basics/java-basic/Arrays-asList.md)
[Enumeration和Iterator区别](/basics/java-basic/Enumeration-vs-Iterator.md)
[fail-fast 和 fail-safe](/basics/java-basic/fail-fast-vs-fail-safe.md)
[CopyOnWriteArrayList](/basics/java-basic/CopyOnWriteArrayList.md)
[ConcurrentSkipListMap](/basics/java-basic/ConcurrentSkipListMap.md)
#### 枚举
[枚举的用法](/basics/java-basic/enum-usage.md)
[枚举的实现](/basics/java-basic/enum-impl.md)
[枚举与单例](/basics/java-basic/enum-singleton.md)、Enum类
[Java枚举如何比较](/basics/java-basic/enum-compare.md)
[switch对枚举的支持](/basics/java-basic/enum-switch.md)
[枚举的序列化如何实现](/basics/java-basic/enum-serializable.md)
[枚举的线程安全性问题](/basics/java-basic/enum-thread-safe.md)
#### IO
字符流、字节流、输入流、输出流、
同步、异步、阻塞、非阻塞、Linux 5种IO模型
BIO、NIO和AIO的区别、三种IO的用法与原理、netty
#### Java反射与javassist
反射与工厂模式、 反射有什么作用
Class类
`java.lang.reflect.*`
#### 动态代理
静态代理、动态代理
动态代理和反射的关系
动态代理的几种实现方式
AOP
#### 序列化
什么是序列化与反序列化、为什么序列化、序列化底层原理、序列化与单例模式、protobuf、为什么说序列化并不安全
#### 注解
元注解、自定义注解、Java中常用注解使用、注解与反射的结合
Spring常用注解
#### JMS
什么是Java消息服务、JMS消息传送模型
#### JMX
`java.lang.management.*`、 `javax.management.*`
#### 泛型
泛型与继承、类型擦除、泛型中K T V E ? [object等的含义](/basics/java-basic/k-t-v-e.md)、泛型各种用法
限定通配符和非限定通配符、上下界限定符extends 和 super
List