HashMap 说透

    HashMap 为什么是 2 次方扩容

    Volatile 说透

    解决问题:Volatile关键字主要是保证了内存可见性和有序性的问题

    作用流程:在字节码层面会看到变量加上了ACC_VOLATILE的标识,到了汇编语言会产生一条Lock前缀指令,而这个指令最终会产生一个Lock信号,Lock信号会让硬件对这个变量添加缓存一致性协议的处理

    缓存一致性,目前主流的都是MESI协议,当然了早期技术比较落后的时候使用的IO总线锁,当MESI失效的时候也仍然还会退化为IO总线锁

    缓存一致性什么情况下会失效?跨缓存行的时候就会失效,缓存行其实就是缓存的一个计量单位,默认情况下都是64字节,当你标识的变量超过这个值的时候MESI就会失效

    Static 和 非 static 修饰的类
    静态类为什么能访问外部的方法和变量

    匿名内部类 为什么能访问外部的变量和方法?
    labada 表达式里面为什么能访问外面

    Java 泛型,类型擦除

    隔离级别,MVCC 说透

    B+ 树说透

    B+树实际上就是由最原始的二分搜索树演变而来的,在非叶子节点中只存储索引,真正的数据存储在叶子节点中,这样做的目的主要是为了降低树的一个高度,从而可以更快的查找到数据

    和 B-树的区别

    数据页

    数据页其实就是Innodb引擎中的叶子节点,数据页里面主要包含有几个东西

    用户数据:就是数据库中真正的一行行数据
    页目录:就是对用户数据进行分组所用,以便更快的查找到数据
    指针:前一页和后一页的指针,方便范围查找的

    缓存页

    索引,联合索引,回表,最左匹配原则

    有长文本如何设计索引
    截取后另外存一个字段,需要注意区分度
    用 hash算法将长文本转为32位,不是范围查询的情况下
    索引的最长长度为 256

    Spring 是通过什么机制加载配置文件的
    SPI

    severless

    servermesh

    k8s