java基础

43 阅读2分钟

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类加载外部实现的对象