原文:https://dzone.com/articles/top-java-collection-interview-questions-for-2021
作者: Sonia Mathias
翻译: 祝坤荣

对有教训开发者的常见问题

问题1:什么是CopyOnWriteArrayList?

答:这个类在java.util.concurrent包中且实现了list接口。它内建了一个外部ArrayList的克隆副原本实现所有的操作和批改。它很平安并且在迭代中永远不会抛出ConcurrentModificationException。

问题2:ConcurrentModificationException什么时候会产生?

答:当数据集在应用时尝试做出批改会抛出java.util.ConcurrentModificationException,也就是当咱们在进行数据集的迭代时进行批改。

问题3: 为什么ConcurrentHashmap比Hash table或Synchronized maps更好?

答:ConcurrentHashMap能够被平安的应用在多线程环境中。它的性能比问题中提到的两个更好,因为ConcurrentHashMap中只有一小部分会被锁,而Hashtable和SynchronizedMap则整个都会被锁。

问题4: 解释一下diamond操作符(也就是<>)。

答:diamond操作符帮编译器收集泛化类的参数类型。在Java SE中,开发者能够用一个空的参数集(<>)来代替参数化的构造函数,这就是diamond操作符。

问题5: 当要在汇合类中应用一个自定义的对象来当主键时须要做什么?

答:如果在Map中应用了自定义的对象作为主键,你须要覆写equals()和hashCode()办法。从另一方面,如果你在一个排过序的汇合中应用自定义对象,你还要保障你的equals()办法与compareTo()办法是统一的。

问题6:解释一下iterator与collection汇合。

答:Iterator只能通过next()办法来挪动和读取下一个元素,remove()也是一样。Collection,能够通过add(),iterator(),remove()和clear()来增加,iterate,删除和分明整个数据结构。同时其也有一些boolean办法。因为Iterator绝对于collection有更少的操作所以它更快。

问题7: 列出一些HashSet的个性。

答:HashSet实现了Set接口。底层的数据结构是Hashtable。容许Null元素,反复的元素是不容许的。对象是基于它们的hashcode被插入的。

问题8: 解释下fail-fast与fail-safe的不同

答:
Fail-fast

  • 应用了原生collection来遍历
  • 当迭代进行时不能批改汇合
  • 会抛出ConcurrentModicationException异样

Fail-safe

  • 应用了原生汇合的复制版进行遍历
  • 在迭代进行中能够批改汇合
  • 不会抛出任何异样

问题9:ArrayBlockingQueue与LinkedBlockingQueue的不同

答:
ArrayBlockingQueue

  • 有界阻塞队列将元素存储在数组中
  • 更高的吞吐
  • 应用single-lock double算法

LinkedBlockingQueue

  • 基于linked节点实现的可选的有界阻塞队列
  • 比拟低的吞吐
  • 应用two-lock queue算法

问题10:Java的TreeMap怎么样?你更喜爱应用哪种数据结构: HashMap还是TreeMap?

答:TreeMap是基于红黑树实现的科导航Map。它应用红黑树算法来排序TreeMap的对象键。咱们依据咱们的需要来抉择。TreeMap是排序过的而HashMap更快。因而,如果咱们的元素是有序的,咱们用TreeMap,否则就应用HashMap。


本文来自祝坤荣(时序)的微信公众号「麦芽面包」,公众号id「darkjune_think」
开发者/科幻爱好者/硬核主机玩家/业余翻译
转载请注明。

微博:祝坤荣
B站: https://space.bilibili.com/23185593/

交换Email: zhukunrong@yeah.net