大家好,又见面了,我是你们的朋友全栈君。
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