https://www.cnblogs.com/threetop/p/9427543.html
https://www.cnblogs.com/Java-Script/p/11095080.html
基础篇
数据结构与算法
线性表
树
图
哈希
排序
二分
…
基本功
面向对象的特征
final, finally, finalize 的区别
int 和 Integer 有什么区别
重载和重写的区别
抽象类和接口有什么区别
说说反射的用途及实现
说说自定义注解的场景及实现
HTTP 请求的 GET 与 POST 方式的区别
session 与 cookie 区别
session 分布式处理
JDBC 流程
MVC 设计思想
equals 与 == 的区别
集合
List 和 Set 区别
List 和 Map 区别
Arraylist 与 LinkedList 区别
ArrayList 与 Vector 区别
HashMap 和 Hashtable 的区别
HashSet 和 HashMap 区别
HashMap 和 ConcurrentHashMap 的区别
HashMap 的工作原理及代码实现
ConcurrentHashMap 的工作原理及代码实现
https://www.cnblogs.com/jing99/p/11330341.html
jdk 源码学习
https://www.cnblogs.com/zhangyinhua/p/7698642.html
JVM 部分
内存模型以及分区,需要详细到每个区放什么?
对象创建方法,对象的内存分配,对象的访问定位。
GC的两种判定方法:引用计数与引用链。
GC的三种收集方法:标记清除、标记整理、复制算法的原理与特点,分别用在什么地方,如果让你优化收集方法,有什么思路?
GC收集器有哪些?CMS收集器与G1收集器的特点。
Minor?GC与Full?GC分别在什么时候发生?
几种常用的内存调试工具:jmap、jstack、jconsole
类加载的五个过程:加载、验证、准备、解析、初始化。
双亲委派模型:Bootstrap?ClassLoader、Extension?ClassLoader、ApplicationClassLoader。
分派:静态分派与动态分派。
线程
创建线程的方式及实现
sleep() 、join()、yield()有什么区别
说说 CountDownLatch 原理
说说 CyclicBarrier 原理
说说 Semaphore 原理
说说 Exchanger 原理
说说 CountDownLatch 与 CyclicBarrier 区别
ThreadLocal 原理分析
讲讲线程池的实现原理
线程池的几种方式
线程的生命周期
https://blog.csdn.net/kris1025/article/details/80027035?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158677049219724845028859%2522%252C%2522scm%2522%253A%252220140713.130056874…%2522%257D&request_id=158677049219724845028859&biz_id=0&utm_source=distribute.pc_search_result.none-task-blog-blog_SOOPENSEARCH-1
锁机制
说说线程安全问题
volatile 实现原理
synchronize 实现原理
synchronized 与 lock 的区别
CAS 乐观锁
ABA 问题
乐观锁的业务场景及实现方式
核心篇
数据存储
MySQL 索引使用的注意事项
说说反模式设计
说说分库与分表设计
分库与分表带来的分布式困境