Java面试手册——高频问题总结(二)

Java面试手册——高频问题总结(二),第1张

Java面试手册——高频问题总结(二)

这里将Java集合和垃圾回收的知识总结,放到(二)中。对Java平台的理解、Java基础知识、面向对象请参考Java面试手册——高频问题总结(一)

文章目录
      • 四、Java集合
        • 1. Java集合框架的基础接口有哪些?
        • 2. Collection 和 Collections 有什么区别?
        • 3. List、Set、Map是否继承自Collection接口?
        • 4. HashMap 和 HashTable 的区别?
        • 5. ArrayList、Vector 和 linkedList 的区别是什么?
        • 6. Array 和 ArrayList 区别?
        • 7. Map 和 ConcurrentHashMap 的区别?
        • 8. HashMap的内部具体如何实现?
        • 9. HashMap 底层,负载因子,为啥是2^n?
        • 10. ConcurrentHashMap 锁加在了什么地方?
        • 11. TreeMap 底层,红黑树原理?
        • 12. ArrayList 是否会越界?
        • 13. 什么是迭代器?Iterator 和 ListIterator 的区别是什么?
        • 14. HashSet 的实现原理?
      • 五、 JVM 和 垃圾回收 GC
      • 六、Java 多线程
      • 七、IO 和 NIO

四、Java集合 1. Java集合框架的基础接口有哪些?

Collection为集合层级的根接口。一个集合代表一组对象,这些对象即为它的元素。Java平台不提供这个接口任何直接实现。

Set是一个不能包含重复元素的集合。

List是一个有序集合,可以包含重复元素。可以通过它的索引来访问任何元素。List更像长度动态变换的数组。

Map是一个将key映射到value的对象。一个Map不能包含重复的key:每个key最多只能映射一个value。

一些其它的接口有Queue、Dequeue、SortedSet、SortedMap 和 ListIteator。

2. Collection 和 Collections 有什么区别

Collection 是一个集合接口,它提供了对集合对象进行基本 *** 作的通用接口方法,所有集合都是它的子类,比如List、Set 等。

Collections 是一个包装类,包含了很多静态方法,不能被实例化,就像一个工具类,比如提供的排序方法:Collections.sort(list)。

3. List、Set、Map是否继承自Collection接口?

List,Set是,Map不是。Map是键值对映射容器,与List和Set有明显的区别,而Set存储的零散的元素且不允许有重复的元素,List是线性结构的容器,适用于按数值索引访问元素的情况。

4. HashMap 和 HashTable 的区别?

HashMap 和 HashTable 都实现了 Map 接口,很多特性相似。不同点如下:

  1. HashMap 允许 key 和 value 为 null,而 HashTable 不允许。
  2. HashTable 是同步的,而 HashMap 不是,所以HashMap适合单线程环境,HashTable适合多线程环境。
  3. 在Java1.4 中引入了linkedHashMap,HashMap 的一个子类,想要遍历顺序,很容易从HashMap 转向 linkedHashMap,但是HashTable的顺序是不可预知的。
  4. HashMap提供对key的Set进行遍历,因为它是fail-fast 的,但HashTable 提供对key的Enumeration 进行遍历,它不支持fail-fast。
  5. HashTable 被认为是个遗留的类,如果寻求在迭代的时候修改Map, 应该使用CourrentHashMap。
5. ArrayList、Vector 和 linkedList 的区别是什么? 6. Array 和 ArrayList 区别? 7. Map 和 ConcurrentHashMap 的区别? 8. HashMap的内部具体如何实现? 9. HashMap 底层,负载因子,为啥是2^n? 10. ConcurrentHashMap 锁加在了什么地方? 11. TreeMap 底层,红黑树原理? 12. ArrayList 是否会越界? 13. 什么是迭代器?Iterator 和 ListIterator 的区别是什么? 14. HashSet 的实现原理? 五、 JVM 和 垃圾回收 GC 六、Java 多线程 七、IO 和 NIO

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/4670270.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-06
下一篇 2022-11-06

发表评论

登录后才能评论

评论列表(0条)

保存