集合容器概述
什么是集合
集合的特点
集合和数组的区别
使用集合框架的好处
常用的集合类有哪些?
List,Set,Map三者的区别?List、Set、Map 是否继承自 Collection 接口?List、Map、Set 三个接口存取元素时,各有什么特点?
集合框架底层数据结构
哪些集合类是线程安全的?
Java集合的快速失败机制 “fail-fast”?
怎么确保一个集合不能被修改?
Collection接口
List接口
迭代器 Iterator 是什么?
Iterator 怎么使用?有什么特点?
如何边遍历边移除 Collection 中的元素?
Iterator 和 ListIterator 有什么区别?
遍历一个 List 有哪些不同的方式?每种方法的实现原理是什么?Java 中 List 遍历的最佳实践是什么?
说一下 ArrayList 的优缺点
如何实现数组和 List 之间的转换?
ArrayList 和 LinkedList 的区别是什么?
ArrayList 和 Vector 的区别是什么?
插入数据时,ArrayList、LinkedList、Vector谁速度较快?阐述 ArrayList、Vector、LinkedList 的存储性能和特性?
多线程场景下如何使用 ArrayList?
为什么 ArrayList 的 elementData 加上 transient 修饰?
List 和 Set 的区别
Set接口
说一下 HashSet 的实现原理?
HashSet如何检查重复?HashSet是如何保证数据不可重复的?
HashSet与HashMap的区别
Queue
BlockingQueue是什么?
在 Queue 中 poll()和 remove()有什么区别?
Map接口
说一下 HashMap 的实现原理?
HashMap在JDK1.7和JDK1.8中二手QQ转让平台有哪些不同?HashMap的底层实现
JDK1.8之前
JDK1.8之后
JDK1.7 VS JDK1.8 比较
HashMap的put方法的具体流程?
HashMap的扩容操作是怎么实现的?
HashMap是怎么解决哈希冲突的?
什么是哈希?
什么是哈希冲突?
HashMap的数据结构
hash()函数
JDK1.8新增红黑树
总结
能否使用任何类作为 Map 的 key?
为什么HashMap中String、Integer这样的包装类适合作为K?
如果使用Object作为HashMap的Key,应该怎么办呢?
HashMap为什么不直接使用hashCode()处理后的哈希值直接作为table的下标?
HashMap 的长度为什么是2的幂次方
HashMap 与 HashTable 有什么区别?
如何决定使用 HashMap 还是 TreeMap?
HashMap 和 ConcurrentHashMap 的区别
ConcurrentHashMap 和 Hashtable 的区别?
ConcurrentHashMap 底层具体实现知道吗?实现原理是什么?
辅助工具类
Array 和 ArrayList 有何区别?
如何实现 Array 和 List 之间的转换?
comparable 和 comparator的区别?
Collection 和 Collections 有什么区别?
TreeMap 和 TreeSet 在排序时如何比较元素?Collections 工具类中的 sort()方法如何比较元素?
Java面试总结汇总,整理了包括Java基础知识,集合容器,并发编程,JVM,常用开源框架Spring,MyBatis,数据库,中间件等,包含了作为一个Java工程师在面试中需要用到或者可能用到的绝大部分知识。欢迎大家阅读,本人见识有限,写的博客难免有错误或者疏忽的地方,还望各位大佬指点,在此表示感激不尽。文章持续更新中…
集合容器概述
什么是集合
集合框架:用于存储数据的容器。
集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。
任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。
接口:表示集合的抽象数据类型。接口允许我们操作集合时不必关注具体实现,从而达到“多态”。在面向对象编程语言中,接口通常用来形成规范。
实现:集合接口的具体实现,是重用性很高的数据结构。
算法:在一个实现了某个集合框架中的接口的对象身上完成某种有用的计算的方法,例如查找、排序等。这些算法通常是多态的,因为相同的方法可以在同一个接口被多个类实现时有不同的表现。事实上,算法是可复用的函数。
它减少了程序设计的辛劳。
集合框架通过提供有用的数据结构和算法使你能集中注意力于你的程序的重要部分上,而不是为了让程序能正常运转而