jstack查看线程信息
集合包括collection以及map接口
arraylist初始化大小为10,扩容为1.5倍
通过拉链法避免哈希冲突,同时计算哈希值使用了二次哈希算法也使哈希值均匀分布
java的并行流底层是forkJoinPool线程池
java采用的排序算法为快排不稳定用于基本类型,TimSort稳定用于包装类型,TimSort首先用插入排序对短序列排序,然后使用归并排序对这些有序短序列排序
static关键字修饰类的时候只能修饰内部类
匿名内部类访问局部变量必须使用final修饰,因为匿名内部类的生命周期长于局部变量,所以匿名内部类拷贝了局部变量
字符串通过new创建会在堆创建对象引用常量池,不通过new创建则直接引用常量池
注解通过反射解析
反射类包括class类,构造器类,method类,注解类以及field类
堆中创建对象分为指针碰撞针对整理类GC以及空闲列表针对清除类GC
对于包装类型有128陷阱,原因在于包装类型使用了享元模式,小于128时会从缓存中获取
java的本质是值传递,值传递和引用传递的区别在是否发生了拷贝
java在栈,堆以及方法区都会发生OOM
重写是运行时多态,重载时编译时多态
finally块中的return语句会覆盖try/catch中的,但是finally中对try中return的变量的修改则不会生效
常见函数式接口包括consumer,supplier以及function
可以用lambda表达式或者匿名内部类实现函数式接口
泛型在编译过程中会被擦除
深拷贝可以通过json或者serializable接口实现
重写equals方法需要重写hashcode方法,因为hashcode时equals的轻量级版本
vo用于和前端交互
栈是头插法,队列是尾插法
正则中的环视定义了要匹配串的前后应该满足的正则,^和$本质也是环视
SPI即服务发现接口,java内置的一种寻找服务实现的机制,先定义接口,然后通过META-INF路径下的文件寻找该接口的外部实现。通过ServiceLoader类加载外部实现的对象