1、hashmap与hashTable的区别
(1)HashTable的每个方法都用synchronized修饰,因此是线程安全的,但同时读写效率很低
(2)HashTable的Key不允许为null
(3)HashTable只对key进行一次hash,HashMap进行了两次Hash
(4)HashTable底层使用的数组加链表
2、ArrayList与LinkedList的区别
ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
对于随机访问get和set,ArrayList效率优于LinkedList,因为LinkedList要移动指针。
对于新增和删除操作add和remove,LinkedList比较占优势,因为ArrayList要移动数据。 这一点要看实际情况的。若只对单条数据插入或删除,ArrayList的速度反 而优于LinkedList。但若是批量随机的插入删除数据,LinkedList的速度大大优于ArrayList. 因为ArrayList每插入一条数据,要移动插入点及之后的所有数据。
3、线程的几种状态
5种,分别是 新建=》就绪=》运行=》阻塞=》死亡
拓展:
4、==和equals区别
==
如果比较的是基本数据类型,那么比较的是变量的值;
如果比较的是引用数据类型,那么比较的是地址值(两个对象是否指向同一块内存);
equals
如果没重写equals方法比较的是两个对象的地址值;
如果重写了equals方法后我们往往比较的是对象中的属性的内容;
equals方法是从Object类中继承的,默认的实现就是使用==。
5、线程池的工作原理/工作过程
6、什么是死锁/平时工作中多线程这块有遇到死锁吗
死锁指多个线程在执行过程中,因争夺资源造成的一种相互等待的僵局
7、redis你们有哪些应用场景
强引用:new的对象。哪怕内存溢出也不会回收
软引用:只有内存不足时才会回收
弱引用:每次垃圾回收都会回收
虚引用:必须配合引用队列使用,一般用于追踪垃圾回收动作
8、JVM中有哪些引用?
强引用:new的对象。哪怕内存溢出也不会回收
软引用:只有内存不足时才会回收
弱引用:每次垃圾回收都会回收
虚引用:必须配合引用队列使用,一般用于追踪垃圾回收动作
9、说下mysql有哪些索引类型?讲下索引为什么快?
单值索引、唯一索引、主键索引、复合(联合)索引;
因为以聚合索引的B+tree进行存储的。
拓展: