索引 线程池(哪些场景用到线程池)有哪些参数 dubbo部署 锁 单例模式() 线程安全吗 项目部署 JVM kafka用到哪些地方 aop原理 springboot自动配置原理
1、ArrayList和LinkedList的区别
ArrayList是基于索引的数据接口,底层是数组,可以以O(1)的时间复杂度对元素进行随机访问;LinkedList以元素列表的形式存储它的数据,每一个元素都和他的前一个和后一个连接在一起,查找元素的时间复杂度是0(n)。
add():往尾部插入数据,ArrayList有个数组扩容影响效率,LinkedList每次插入会new一个新的Node对象来存储数据;当数据量很大的时候,new对象的时间大于扩容的时间,那么就会出现ArrayList'的效率比Linkedlist高了。
LinkedList比ArrayList更占内存。
2、类实例化时,父类、子类静态静态字段、静态代码块、构造方法、普通字段、普通顺序(比如new的时候)
父类静态变量-父类静态代码块-子类静态变量-子类静态代码块-父类成员变量-父类构造方法-子类成员变量-子类构造方法
3、HashMap线程不安全、无序 -存储方式、hashcode、扩容、默认容量
数组+链表+红黑树(JDK1.8增加),采用哈希表存储数据
4、TreeMap和LinkedHashMap
TreeMap内部实现是红黑树,无重复的key;可以在new的时候传入自定义的比较器;默认构造器为null时,key必须实现了comparable接口,且key不能为null。
LinkedHashMap增加了时间和空间上的开销,额外维护了一个双向链表来保持迭代顺序。
5、抽象类和接口的区别
都不能直接实例化;抽象类要被子类继承,接口要被实现;接口智能做方法声明,抽象类技能做方法声明,又能做方法实现;接口里的变量只能是公共的静态变量,抽象类中的变量是普通变量;抽象方法必须全部被子类实现,否则这个子类也是个抽象类;抽象方法只能声明,不能实现;抽象类可以没有抽象方法;如果一个类有抽象方法,那么这个类只能是抽象类;接口可继承接口,并可多继承接口,但类只能单根继承。
6、protect
只能被类本身及子类访问。default只能在同一个包中访问。
7、动态代理的几种实现方法,优缺点
8、深拷贝和浅拷贝的区别
9、error和exception的区别,ChekedException和RuntimeExcetion的区别
10、对hashCode和equals方法的理解,以及什么场景下需要重写
equals方法相等,hashCode一定相同;hashCode相同,rquals不一定相同。