面试总结
https://blog.youkuaiyun.com/weixin_43495390/article/details/86533482
https://www.cnblogs.com/java1024/p/7685400.html
一、map总结
hashmap
1、hashmap(默认16,扩容之前容量的两倍)
1.7的HashMap使用的数组+链表,1.8中HashMap是数组+链表+红黑树(当数据大于8时)
hashmap中的Node[<K,V>] table,即哈希桶数组,Node是HashMap的一个内部类,实现了Map.Entry接口,本质是就是一个映射(键值对)。
hashmap在存储对象时,首先将key使用hashCode()方法得到其hashCode 值,然后再通过Hash算法的后两步运算(高位运算和取模运算)来定位该键值对的存储位置。
在多线程使用场景中,应该尽量避免使用线程不安全的HashMap,而使用线程安全的ConcurrentHashMap。
二、类、接口、抽象类
1、抽象类
抽象类中可以(但不必须)有普通的方法,抽象方法,内部变量。抽象类不能实例化对象,只能被继承!继承它的子类如果要成为普通类(能实例化对象)的话,必须全部实现其父类抽象类的全部抽象方法,否则子类也是抽象类!
2、接口
接口中只允许存在public的静态常量、抽象方法!其修饰限定符可以省略,编译器会为我们自动补全!
interface Test{
int a = 1;
//等价于public static final int a = 1;
void eat();
//等价于public abstract void eat();
}
https://www.jianshu.com/p/7cff282a2727
三、jvm的运行过程
jvm的运行过程:
装载、连接、初始化(对应下面三个模块)