java集合类面试题

 2022-09-14
原文地址:https://cloud.tencent.com/developer/article/2100007

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

java集合类面试题

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

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

202209142310182251.png

202209142310196692.png

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

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

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

主要是ConcurrentHashMap和CopyOnWriteArrayList

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

3.Vector和ArrayList的区别是什么

202209142310211133.png

4.ArrayDeque和LinkedList的区别是什么

202209142310224224.png

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

202209142310239605.png

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

202209142310255456.png

7.HashMap和HashTable有何不同?

202209142310274307.png

8.ArrayList和LinkedList有何区别?

202209142310289278.png

9.集合和数组的区别

202209142310305499.png

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

2022091423103184310.png

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

2022091423103339911.png

2022091423103489912.png

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

2022091423103612313.png

    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是什么?

2022091423103756014.png

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

2022091423103899515.png

15.ConcurrentHashMap和 Hashtable的区别?

2022091423104053316.png

2022091423104214317.png

2022091423104355218.png

2022091423104507919.png

2022091423104656420.png

16.comparable和comparator的区别?

2022091423104799821.png

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

2022091423104961022.png

2022091423105123423.png

2022091423105282824.png

2022091423105433125.png

2022091423105576926.png

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

2022091423105740427.png

2022091423105897628.png

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

2022091423110055029.png

2022091423110188330.png

19.讲讲红黑树的特点?

2022091423110305331.png

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

2022091423110448732.png

2022091423110599533.png

2022091423110750634.png

2022091423110868835.png

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