网站首页 > java教程 正文
原文: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[1]
References
[1] zhukunrong@yeah.net: mailto:zhukunrong@yeah.net
猜你喜欢
- 2024-12-01 Java面试问题(二)—— java 集合
- 2024-12-01 面试终结之史上最全的Java&Android面试题搜集整理
- 2024-12-01 10 道关于 Java 泛型的面试题
- 2024-12-01 每天分享几道Java面试题(Java集合之1)
- 2024-12-01 这是我见过最有用的Java面试题,面试了无数公司总结的(含答案)
- 2024-12-01 《面试知识,工作可待:集合篇》-java集合面试知识点大全
- 2024-12-01 java面试题整理《集合篇》二
- 2024-12-01 面试必备技能!关于Java集合框架面试题+答案
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)