以下所有问题的答案可以参考(大部分都能找到):JavaGuide(「Java 学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识。准备 Java 面试,首选 JavaGuide!)。
花了半个月写的最新版 Java学习路线已近更新!可能是你看过最用心、最全面的 Java 后端学习路线。
Java 学习线路图是怎样的?
Java
基础
Java 中的几种基本数据类型是什么?对应的包装类型是什么?各自占用多少字节呢?
String、 StringBuffer 和 StringBuilder 的区别是什么? String 为什么是不可变的?
== 与 equals?hashCode 与 equals ?
Java 反射?反射有什么缺点?你是怎么理解反射的(为什么框架需要反射)?
谈谈对 Java 注解的理解,解决了什么问题?
Java 泛型了解么?什么是类型擦除?介绍一下常用的通配符?
内部类了解吗?匿名内部类了解吗?
BIO,NIO,AIO 有什么区别?
Java 集合框架
说说 List,Set,Map 三者的区别?三者底层的数据结构?
有哪些集合是线程不安全的?怎么解决呢?
比较 HashSet、LinkedHashSet 和 TreeSet 三者的异同
HashMap 和 Hashtable 的区别?HashMap 和 HashSet 区别?HashMap 和 TreeMap 区别?
HashMap 的底层实现
HashMap 的长度为什么是 2 的幂次方
ConcurrentHashMap 和 Hashtable 的区别?
ConcurrentHashMap 线程安全的具体实现方式/底层具体实现
jvm
jvm 内存结构
jvm 调优参数
什么是类加载?何时类加载?类加载流程?
知道哪些类加载器。类加载器之间的关系?
类加载器的双亲委派了解么?结合 Tomcat 说一下双亲委派(Tomcat 如何打破双亲委托机制?...)。
为什么需要双亲委派
Java 内存模型
栈中存放什么数据,堆中呢?
大对象放在哪个内存区域
堆区如何分类
垃圾回收有哪些算法
GC 的全流程
GC 中老年代用什么回收方法?
多线程
线程和进程的区别。
什么是上下文切换?
什么是线程死锁?如何避免死锁?
乐观锁和悲观锁了解么?
说说 sleep() 方法和 wait() 方法区别和共同点?
Java 线程池有哪些参数?阻塞队列有几种?拒绝策略有几种?新线程添加的流程?
实现 Runnable 接口和 Callable 接口的区别。
讲一下 JMM(Java 内存模型)。volatile关键字解决了什么问题?说说synchronized关键字和volatile关键字的区别。
AQS 原理了解么?AQS 组件有哪些?
用过 CountDownLatch 么?什么场景下用的?