一面
GET和POST的区别
HTTP2.0的特性
压缩头部、多路复用、请求优先级、二进制分帧
HTTP和HTTPS的区别
OSI哪七层,TCP在哪一层
三次握手,两次可以吗,四次可以吗
TCP如何保证可靠传输
ACID,隔离级别
innoDB如何实现可重复读的,read view是什么时候创建的
innoDB索引的数据结构是啥,为啥不用B树
命中联合索引为什么不需要回表
因为实现了索引覆盖
redis常用数据结构
ziplist:双向链表,但是所有节点都在连续的空间,push和pop的时间复杂度是O1
skiplist:经过优化的有序链表,查找时间复杂度logn
zset的底层结构
redis分布式锁的命令
setnx, getset, expire, del
rehash和渐进式rehash的过程
rehash:开辟新的数组,大小根据原数组判断,满足2*n的最小的2的整数幂
扩展条件:没有在执行BGSAVE并且负载因子大于等于1
正在执行BGSAVE并且负载因子大于等于5 负载因子=used/size
渐进式rehash:rehash的操作不是一次完成,而是多次。
首先开辟一个新数组,但是不操作。在每次对原数组操作的时候顺带着把数据复制到新数组
redis是如何解决哈希冲突
链地址法
hashmap为什么转成红黑树而不是二叉查找树
垃圾回收
引用数据类型和基本数据类型的区别
算法题:三个easy随意写2个,15min内
----------------------------------------------------------------------------
二面
spring容器启动的过程
XML里边的参数是什么时候替换到bean里边的
实例化之后set方法注入
循环依赖怎么解决的,如何提前暴露
spring的事务控制怎么实现的
编程式和声明式两种方式,详见spring学习文档
getBean的方式
4种线程池,cached有什么缺陷
OOM
讲讲AQS
实现单例的方案,除了懒汉和饿汉还有吗
静态内部类:当 Singleton 类被加载时,静态内部类 SingletonHolder 没有被加载进内存。只有当调用 getUniqueInstance() 方法从而触发 SingletonHolder.INSTANCE 时 SingletonHolder 才会被加载,此时初始化 INSTANCE 实例,并且 JVM 能确保 INSTANCE 只被实例化一次。
这种方式不仅具有延迟初始化的好处,而且由 JVM 提供了对线程安全的支持
枚举:还可以防止反射得到多个实例