2021年最全Java集合⾯试题,爆肝了!
前⾔
本题集列举了众多IT公司⾯试真题,对应聘Java程序员职位的常见考点和知识体系都进⾏的分类和归纳整理。
本题集适合应聘Java和JavaEE职位的程序员作为⾯试复习、学习和强化的资料,也适合其他程序员作为拓展读物进⾏阅读。
本题集包含了常见的算法、⾯试题,也包含了新的⾼级技术,⽐如:微服务架构等技术的⾯试题⽬。本题集⾮常全⾯,对于⼯作1-5年左右的java程序员⾯试有⾮常好的指导作⽤。
⼤家也可以访问(直接在线观看最新版的⾯试题):
⼤学⽣⾼端复合⼈才成长
四个专业都要学,从零开始2000⼩时,成为⾼端⼈才,打下⼀⽣技术基础,不再是低端码农。
1.Java集合体系结构(List、Set、Collection、Map的区别和联系)
1、Collection 接⼝存储⼀组不唯⼀,⽆序的对象
2、List 接⼝存储⼀组不唯⼀,有序(插⼊顺序)的对象
3、Set 接⼝存储⼀组唯⼀,⽆序的对象
4、Map接⼝存储⼀组键值对象,提供key到value的映射。Key⽆序,唯⼀。value不要求有序,允许重复。(如果只使⽤key存储,⽽不使
⽤value,那就是Set)
2.Vector和ArrayList的区别和联系
相同点:
1)实现原理相同---底层都使⽤数组
2)功能相同---实现增删改查等操作的⽅法相似
3)都是长度可变的数组结构,很多情况下可以互⽤
不同点:
1)Vector是早期JDK版本提供,ArrayList是新版本替代Vector的
2)Vector线程安全,ArrayList重速度轻安全,线程⾮安全长度需增长时,Vector默认增长⼀倍,ArrayList增长50%
3.ArrayList和LinkedList的区别和联系
相同点:
两者都实现了List接⼝,都具有List中元素有序、不唯⼀的特点。
不同点:
ArrayList实现了长度可变的数组,在内存中分配连续空间。遍历元素和随机访问元素的效率⽐较⾼;
LinkedList采⽤链表存储⽅式。插⼊、删除元素时效率⽐较⾼
4.HashMap和Hashtable的区别和联系
相同点:
实现原理相同,功能相同,底层都是哈希表结构,查询速度快,在很多情况下可以互⽤
不同点:
1、Hashtable是早期提供的接⼝,HashMap是新版JDK提供的接⼝
2、Hashtable继承Dictionary类,HashMap实现Map接⼝
3、Hashtable线程安全,HashMap线程⾮安全
java零基础该怎么学4、Hashtable不允许null值,HashMap允许null值
5.HashSet的使⽤和原理(hashCode()和equals())
1)哈希表的查询速度特别快,时间复杂度为O(1)。
2)HashMap、Hashtable、HashSet这些集合采⽤的是哈希表结构,需要⽤到hashCode哈希码,hashCode是⼀个整数值。
3)系统类已经覆盖了hashCode⽅法 ⾃定义类如果要放⼊hash类集合,必须重写hashcode。如果不重写,调⽤的是Object的hashcode,⽽Object的hashCode实际上是地址。
4)向哈希表中添加数据的原理:当向集合Set中增加对象时,⾸先集合计算要增加对象的hashCode码,
根据该值来得到⼀个位置⽤来存放当前对象,如在该位置没有⼀个对象存在的话,那么集合Set认为该对象在集合中不存在,直接增加进去。如果在该位置有⼀个对象存在的话,接着将准备增加到集合中的对象与该位置上的对象进⾏equals⽅法⽐较,如果该equals⽅法返回false,那么集合认为集合中不存在该对象,在进⾏⼀次散列,将该对象放到散列后计算出的新地址⾥。如果equals⽅法返回true,那么集合认为集合中已经存在该对象了,不会再将该对象增加到集合中了。
5)在哈希表中判断两个元素是否重复要使⽤到hashCode()和equals()。hashCode决定数据在表中的存储位置,⽽equals判断是否存在相同数据。
6) Y=K(X) :K是函数,X是哈希码,Y是地址
6.TreeSet的原理和使⽤(Comparable和comparator)
1)TreeSet集合,元素不允许重复且有序(⾃然顺序)
2)TreeSet采⽤树结构存储数据,存⼊元素时需要和树中元素进⾏对⽐,需要指定⽐较策略。
3)可以通过Comparable(外部⽐较器)和Comparator(内部⽐较器)来指定⽐较策略,实现了Comparable的系统类可以顺利存⼊TreeSet。⾃定义类可以实现Comparable接⼝来指定⽐较策略。
4)可创建Comparator接⼝实现类来指定⽐较策略,并通过TreeSet构造⽅法参数传⼊。这种⽅式尤其对系统类⾮常适⽤。
强推Java零基础⼊门教程:
7.集合和数组的⽐较(为什么引⼊集合)
数组不是⾯向对象的,存在明显的缺陷,集合完全弥补了数组的⼀些缺点,⽐数组更灵活更实⽤,可⼤⼤提⾼软件的开发效率⽽且不同的集合框架类可适⽤于不同场合。具体如下:
1)数组的效率⾼于集合类.
2)数组能存放基本数据类型和对象,⽽集合类中只能放对象。
3)数组容量固定且⽆法动态改变,集合类容量动态改变。
4)数组⽆法判断其中实际存有多少元素,length只告诉了array的容量。
5)集合有多种实现⽅式和不同的适⽤场合,⽽不像数组仅采⽤顺序表⽅式。
6)集合以类的形式存在,具有封装、继承、多态等类的特性,通过简单的⽅法和属性调⽤即可实现各种复杂操作,⼤⼤提⾼软件的开发效率。
8.Collection和Collections的区别
1)Collection是Java提供的集合接⼝,存储⼀组不唯⼀,⽆序的对象。它有两个⼦接⼝List和Set。
2)Java中还有⼀个Collections类,专门⽤来操作集合类 ,它提供⼀系列静态⽅法实现对各种集合的搜索、排序、线程安全化等操作。9.下列说法正确的有()(选择⼀项)
10.Java的HashMap和Hashtable有什么区别HashSet和HashMap有什么区别?使⽤这些结构保存的数需要重载的⽅法是哪些?
答:HashMap与Hashtable实现原理相同,功能相同,底层都是哈希表结构,查询速度快,在很多情况下可以互⽤
两者的主要区别如下:
1、Hashtable是早期JDK提供的接⼝,HashMap是新版JDK提供的接⼝
2、Hashtable继承Dictionary类,HashMap实现Map接⼝
3、Hashtable线程安全,HashMap线程⾮安全
4、Hashtable不允许null值,HashMap允许null值
HashSet与HashMap的区别:
1、HashSet底层是采⽤HashMap实现的。HashSet 的实现⽐较简单,HashSet 的绝⼤部分⽅法都是通过调⽤ HashMap 的⽅法来实现的,因此 HashSet 和 HashMap 两个集合在实现本质上是相同的。
2、HashMap的key就是放进HashSet中对象,value是Object类型的。
3、当调⽤HashSet的add⽅法时,实际上是向HashMap中增加了⼀⾏(key-value对),该⾏的key就是向HashSet增加的那个对象,该⾏的value就是⼀个Object类型的常量
11.列出Java中的集合类层次结构?
答:Java中集合主要分为两种:Collection和Map。Collection是List和Set接⼝的⽗接⼝;ArrayList和LinkedList是List的实现类;HashSet和TreeSet是Set的实现类;LinkedHashSet是HashSet的⼦类。HashMap和TreeMap是Map的实现类;LinkedHashMap是HashMap的⼦类。
图中:虚线框中为接⼝,实线框中为类。
12.List,Set,Map各有什么特点
答:List 接⼝存储⼀组不唯⼀,有序(插⼊顺序)的对象。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论