基础篇
-
String为什么要设计成Final
-
String StringBuffer StringBulider的区别
-
你能给我写一个final对象吗
-
重写hashcode()方法
-
java 序列化
-
你能给我写个单例模式吗?你这个如果要是被反射或者序列化破坏单例该怎么办?
-
Java io流体系结构
-
HashMap的实现原理
-
HashMap产生冲突了会怎么样
-
HashMap在多线程下会出现什么问题,为什么会这样
-
HashMap为什么要采用红黑树,你能给我讲讲红黑树的特点吗
-
ConcurrentHashMap的实现原理
-
ConcurrentHashMap JDK1.7和1.8有什么区别
-
ConcurrenthashMap用到了哪些锁
-
ArrayList和LinkedList的区别,分别在什么场景下使用
-
ArrayList的扩容
-
Vector为什么是线程安全的
-
TreeSet的底层实现
-
一些Collection的方法
-
Servlet,filter
-
interface里面接口用什么进行修饰
-
为什么要先加载父类构造器,如果父类构造器没有无参构造器会怎么办
-
idea 快捷键
-
git操作
-
maven生命周期,install和deploy的区别
-
并发篇
-
volatile 底层实现
-
CAS乐观锁的原理
-
ASQ 的原理
-
CountDownLanch 和 CyclicBarrier 的区别和用法
-
线程池的拒绝策略
-
FixedThreadPool SingleThreadPool CacheThreadPool 一些细节,比如说用了什么队列,空闲线程的等待时间等等。
-
sleep和wait的区别
-
notify和notifyAll的区别
-
如何实现线程按顺序执行
-
为什么wait, notify, notifyAll方法定义在Object里
-
你是怎样理解线程安全的
-
sychronizated使用在方法上和sychronizated(xxx.class)和sychroizated(this)有什么区别
-
ThreadLocal用过吗,给我介绍下他的使用场景
-
Lock和Sychronizated的区别
-
Callable和Future了解过吗?
-
为什么说ConcurrentHashMap是弱一致性的?以及为何多个线程并发修改ConcurrentHashMap时不会报ConcurrentModificationException?
-
线程运行的状态以及如何他们之间是怎么切换的
底层篇
-
JVM 内存模型
-
JVM 垃圾回收算法
-
JVM 垃圾回收器
-
JVM major gc 和 full gc 的触发时机
-
new一个对象会放在哪里
-
JVM 调整的一些参数
-
怎么判定一个对象的内存可以被回收了
-
哪些对象可以作为CGRoots
-
强引用,软引用,弱引用,虚引用
-
可达性分析算法
类加载
-
类加载器与类的”相同“判断
-
类加载器种类
-
类加载过程
-
自定义类加载器
-
反射用过么,私有成员变量和私有方法能被反射出来吗
-
怎样获取一个类的私有方法和私有变量
Spring篇
-
BeanFactory和ApplicationContext的区别
-
Spring 和SpringBoot的区别
-
SpringMvc的请求过程
-
SpringMvc用到的设计模式
-
你用过的一些Spring注解
-
如何让Spring bean按顺序初始化
数据库
-
数据库隔离级别, 会出现什么问题
-
数据库索引用过吗?是怎么实现的
-
索引的最左匹配原则
-
三大范式
-
数据库的锁,你能给我介绍下吗
-
聚簇索引和非聚簇索引
-
你都是怎么优化数据库的
-
数据库的三级封锁协议
计算机网络
-
TCP的三次握手和四次握手
-
TCP/IP协议 五层协议的对象头的变化
-
cookie和session区别
-
HTTP HTTPS的区别
操作系统
-
进程通信方式
-
线程进程区别
-
进程通信方式;
-
死锁(代码实现);
-
常用linux命令;
-
作业调度方式;
-
LRU算法实现