List常见面试问题

List的特点有哪些?

Java中的List是一种存放有序的、可以重复的数据的集合,它允许重复元素的存在。List中的元素都有对应的一个序列号(索引)记录着元素的位置,因此可以通过这个序列号来访问元素。

‍

Java中集合有哪些?

Java中的List有三种实现方式:ArrayList、LinkedList和Vector。其中,ArrayList是基于数组实现的,LinkedList是基于链表实现的,Vector是基于数组实现的线程安全版本。

​

​​

‍

ArrayList数据结构是什么?

ArrayList是基于数组实现的,其中elementData数据存储数据元素,size代表集合大小

java 复制代码
 /**
 * The array buffer into which the elements of the ArrayList are stored.
 * The capacity of the ArrayList is the length of this array buffer. Any
 * empty ArrayList with elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA
 * will be expanded to DEFAULT_CAPACITY when the first element is added.
 */
transient Object[] elementData; // non-private to simplify nested class access
/**
 * The size of the ArrayList (the number of elements it contains).
 *
 * @serial
 */
private int size;

‍

ArrayList如何进行扩容?

ArrayList的扩容方法是grow(),它会获取到ArrayList中elementData数组的内存空间长度,然后扩容至原来的1.5倍。最后调用Arrays.copyOf方法将elementData数组指向新的内存空间时newCapacity的连续空间。

ArrayList是线程安全的吗?

ArrayList不是线程安全的。

‍

有哪些线程安全的List?

线程安全的List有Vetor,​​CopyOnWriteArrayList

​

CopyOnWriteList使用情景?

  • 适用于数据量不大的场景,不适用于数据量大的场景。由于写操作的时候,需要拷贝数组,会消耗内存,如果原数组的内容比较多的情况下,可能导致young gc或者full gc
  • 适用于读多写少的场景,不适用于实时读的场景。

‍

相关推荐
Aurora111 小时前
Jane Street OA 真题解析:Mastermind 猜密码与候选集筛选
面试
skytier2 小时前
昇思大模型推理:输出 logits
面试
丑陋小蚊子3 小时前
简历电脑上清楚,手机上字太小,先改哪里?
面试·求职招聘·大学生·简历·简历下载
shehuiyuelaiyuehao3 小时前
算法56,重排链表
数据结构·算法·链表
pipixia200333 小时前
C++继承面试四连问:内存叠加、私有继承、sizeof、权限重映射
c++·面试·嵌入式·继承·面向对象·对象模型
加洛斯4 小时前
万字推演Elasticsearch修炼方法,从炼气到元婴
后端·elasticsearch·面试
suhan4 小时前
【数据结构】七、查找:1.查找的概念、线性结构查找(顺序、折半(二分)、插值、稠密、分块、倒排)
数据结构·算法·排序算法
极客 - L U4 小时前
卡尔曼滤波从零到精通
c语言·数据结构·单片机·嵌入式硬件·mcu
zhippt_10145 小时前
图转PPT实测:截图和课件图片怎么变成可编辑幻灯片
人工智能·面试·powerpoint
devilnumber5 小时前
Redis 数据类型 + 项目落地场景(面试版,全面、实用,后端常用)
数据库·redis·面试