主要版本 | 更新时间 | 备注 |
---|---|---|
v1.0 | 2015-08-01 | 首次发布 |
v1.1 | 2018-03-12 | 增加新技术知识、完善知识体系 |
v2.0 | 2019-02-19 | 结构调整,更适合从入门到精通; 进一步完善知识体系; 新技术补充; |
欢迎关注[Java之道]公众号,最新内容均会在该公众号中同步发出!
JVM还支持哪些语言(Kotlin、Groovy、JRuby、Jython、Scala)
Java的继承与实现
replaceFirst、replaceAll、replace区别、
String.valueOf和Integer.toString的区别
字符串池、常量池(运行时常量池、Class常量池)、intern
transient、instanceof、volatile、synchronized、final、static、const 原理及用法。
常用集合类的使用
ArrayList和LinkedList和Vector的区别
HashMap、HashTable、ConcurrentHashMap区别
apache集合处理工具类的使用、
不同版本的JDK中HashMap的实现的区别以及原因
枚举与单例、Enum类
BIO、NIO和AIO的区别、三种IO的用法与原理、netty
java.lang.reflect.*
什么是序列化与反序列化、为什么序列化、序列化底层原理、序列化与单例模式、protobuf、为什么说序列化并不安全
元注解、自定义注解、Java中常用注解使用、注解与反射的结合
什么是Java消息服务、JMS消息传送模型
java.lang.management.*
、 javax.management.*
泛型与继承、类型擦除、泛型中K T V E ? object等的含义、泛型各种用法
限定通配符和非限定通配符、上下界限定符extends 和 super
junit、mock、mockito、内存数据库(h2)
java.lang.util.regex.*
commons.lang
, commons.*...
guava-libraries
netty
API、API和SPI的关系和区别
异常类型、正确处理异常、自定义异常
Error和Exception
异常链、try-with-resources
finally和return的执行顺序
时区、冬令时和夏令时、时间戳、Java中时间API
格林威治时间、CET,UTC,GMT,CST几种常见时间的含义和关系
SimpleDateFormat的线程安全性问题
Java 8中的时间处理
如何在东八区的计算机上获取美国时间
Unicode、有了Unicode为啥还需要UTF-8
GBK、GB2312、GB18030之间的区别
UTF8、UTF16、UTF32区别
URL编解码、Big Endian和Little Endian
如何解决乱码问题
Java中语法糖原理、解语法糖
语法糖:switch 支持 String 与枚举、泛型、自动装箱与拆箱、方法变长参数、枚举、内部类、条件编译、 断言、数值字面量、for-each、try-with-resource、Lambda表达式、
String、Integer、Long、Enum、BigDecimal、ThreadLocal、ClassLoader & URLClassLoader、ArrayList & LinkedList、 HashMap & LinkedHashMap & TreeMap & CouncurrentHashMap、HashSet & LinkedHashSet & TreeSet
什么是并发
什么是并行
并发与并行的区别
线程的实现、线程的状态、优先级、线程调度、创建线程的多种方式、守护线程
线程与进程的区别
自己设计线程池、submit() 和 execute()、线程池原理
为什么不允许使用Executors创建线程池
死锁?、死锁如何排查、线程安全和内存模型的关系
CAS、乐观锁与悲观锁、数据库相关锁机制、分布式锁、偏向锁、轻量级锁、重量级锁、monitor、
锁优化、锁消除、锁粗化、自旋锁、可重入锁、阻塞锁、死锁
死锁的原因
死锁的解决办法
synchronized和lock之间关系、不使用synchronized如何实现一个线程安全的单例
synchronized和原子性、可见性和有序性之间的关系
happens-before、内存屏障、编译器指令重排和CPU指令重排
volatile的实现原理
volatile和原子性、可见性和有序性之间的关系
有了symchronized为什么还需要volatile