基础知识

1.HashMap和TreeMap区别?

HashMap:①数组加链表方式存储key/value,②线程非安全,③允许null作为key和value,key不可以重复,value允许重复,⑤不保证元素迭代顺序是按照插入时的顺序;

TreeMap:①基于红黑树,②线程非安全,③不允许null作为key.key不可以重复,value允许重复,⑤存入TreeMap的元素应当实现Comparable接口或者实现Comparator接口才能按照排序后的顺序遍历元素

2.HashSet有什么功能,基于哪个类实现?

①有去重的功能,也就是元素不重复;②基于HashMap实现

3.ConcurrentHashMap并发能力为什么好于Hashtable?

①Hashtable是通过对hash表整体进行锁定,是阻塞式的,当一个线程占有这个锁时,其他线程必须阻塞等待其释放锁而ConcurrentHashMap是如下实现:

②jdk1.6的实现:ConcurrentHashMap是采用Segment分段锁的方式,它并没有对整个数据结构进行锁定,而是局部锁定,

③ajdk1.8的实现:采用一种乐观锁CAS算法来实现同步问题,但其底层还是“数组+链表->红黑树”的实现

4.JDK动态代理的用法是什么?

使用Proxy和InvocationHandler两个类,并实现invoke方法