java集合类面试题

2022-09-08 14:56:02 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

java集合类面试题

1.请聊一下java的集合类,以及在实际项目中你是如何用的?

注意说出集合体系,常用类,接口,实现类 加上你所知道的高并发集合类,JUC 在实际项目中引用,照实说就好了

2.集合类是怎么解决高并发中的问题?

线程非全的集合类ArrayList LinkedList HashSet TreeSet HashMap TreeMap 实际开发中我们自己用这样的集合最多,因为一般我们自己写的业务代码中,不太涉及到多线程共享同一个集合的问题

线程安全的集合类Vector HashTable 虽然效率没有JUC中的高性能集合高,但是也能够适应大部分环境

主要是ConcurrentHashMap和CopyOnWriteArrayList

思路:先说一下哪些是非安全,普通的安全的集合类,JUC中高并发的集合类

3.Vector和ArrayList的区别是什么

4.ArrayDeque和LinkedList的区别是什么

5.List,Set,Map三者的区别?

6.集合框架底层的数据结构

7.HashMap和HashTable有何不同?

8.ArrayList和LinkedList有何区别?

9.集合和数组的区别

10.Java集合的快速失败机制 “fail-fast”?

11.遍历一个 List 有哪些不同的方式?每种方法的实现原理是什么?

12.HashSet如何检查重复?HashSet是如何保证数据不可重复的?

代码语言:javascript复制
private static final Object PRESENT = new Object();
private transient HashMap<E,Object> map;

public HashSet() { 
   
    map = new HashMap<>();
}

public boolean add(E e) { 
   
    // 调用HashMap的put方法,PRESENT是一个至始至终都相同的虚值
	return map.put(e, PRESENT)==null;
}

13.BlockingQueue是什么?

14.在Queue中poll()和remove()有什么区别?

15.ConcurrentHashMap和 Hashtable的区别?

16.comparable和comparator的区别?

17.你能说一下ArrayList在增删的时候是怎么做的么?主要说一下他为啥慢。

删除其实跟新增是一样的,不过叫是叫删除,但是在代码里面我们发现,他还是在copy一个数组。

18.哪些集合类是线程安全的?哪些不安全?

19.讲讲红黑树的特点?

20.怎么确保一个集合不能被修改?

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/156234.html原文链接:https://javaforall.cn

0 人点赞