更新时间:2019-11-28 14:53:58 来源:极悦 浏览2194次
Java技术江湖里,谁人不知,谁人不晓,它的使用率非常高,使用难度却也不大,这也导致了很多人对它不屑一顾,殊不知其中却暗藏玄机,今天我们不妨一起来破解一下Java集合类的面试题。
面试官常用招式:
只见面试官微微一笑,拔出长剑,向你刺来,你赶紧拔剑相迎,几招过后,你才意识到面试官使的都是虚招,只是试探你而已。
1.Java集合框架是什么?说出一些集合框架的长处?
每种编程语言中都有集合。最初的Java版本号包括几种集合类:Vector、Stack、HashTable和Array。
随着集合的广泛使用。Java1.2提出了囊括全部集合接口、实现和算法的集合框架。
在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了非常久。它还包括在Java并发包中,堵塞接口以及它们的实现。
集合框架的部分长处例如以下:
(1)使用核心集合类减少开发成本,而非实现我们自己的集合类。
(2)随着使用经过严格測试的集合框架类。代码质量会得到提高。
(3)通过使用JDK附带的集合类,能够减少代码维护成本。
(4)复用性和可操作性。
**********
2.集合框架中的泛型有什么长处?
Java1.5引入了泛型。全部的集合接口和实现都大量地使用它。泛型同意我们为集合提供一个能够容纳的对象类型,因此。假设你加入其他类型的不论什么元素,它会在编译时报错。这避免了在执行时出现ClassCastException。由于你将会在编译时得到报错信息。
泛型也使得代码整洁,我们不须要使用显式转换和instanceOf操作符。
它也给执行时带来长处。由于不会产生类型检查的字节码指令。
**********
3.Java集合框架的基础接口有哪些?
Collection为集合层级的根接口。
一个集合代表一组对象。这些对象即为它的元素。
Java平台不提供这个接口不论什么直接的实现。
Set是一个不能包括反复元素的集合。
这个接口对数学集合抽象进行建模。被用来代表集合,就如一副牌。
List是一个有序集合。能够包括反复元素。
你能够通过它的索引来訪问不论什么元素。List更像长度动态变换的数组。
Map是一个将key映射到value的对象.一个Map不能包括反复的key:每一个key最多仅仅能映射一个value。
一些其他的接口有Queue、Dequeue、SortedSet、SortedMap和ListIterator。
**********
4.为何Collection不从Cloneable和Serializable接口继承?
Collection接口指定一组对象,对象即为它的元素。怎样维护这些元素由Collection的详细实现决定。
比如。一些如List的Collection实现同意反复的元素。而其他的如Set就不同意。非常多Collection实现有一个公有的clone方法。
然而。把它放到集合的全部实现中也是没有意义的。这是由于Collection是一个抽象表现。重要的是实现。
当与详细实现打交道的时候,克隆或序列化的语义和含义才发挥作用。所以,详细实现应该决定怎样对它进行克隆或序列化,或它能否够被克隆或序列化。
在全部的实现中授权克隆和序列化,终于导致更少的灵活性和很多其他的限制。特定的实现应该决定它能否够被克隆和序列化。
**********
5.为何Map接口不继承Collection接口?
虽然Map接口和它的实现也是集合框架的一部分。但Map不是集合。集合也不是Map。
因此,Map继承Collection毫无意义,反之亦然。
假设Map继承Collection接口,那么元素去哪儿?Map包括key-value对,它提供抽取key或value列表集合的方法,可是它不适合“一组对象”规范。
**********
6.Iterator是什么?
Iterator接口提供遍历不论什么Collection的接口。
我们能够从一个Collection中使用迭代器方法来获取迭代器实例。迭代器代替了Java集合框架中的Enumeration。迭代器同意调用者在迭代过程中移除元素。
**********
7.Enumeration和Iterator接口的差别?
Enumeration的速度是Iterator的两倍,也使用更少的内存。
Enumeration是非常基础的,也满足了基础的须要。可是,与Enumeration相比,Iterator更加安全,由于当一个集合正在被遍历的时候。它会阻止其他线程去改动集合。
迭代器代替了Java集合框架中的Enumeration。
迭代器同意调用者从集合中移除元素,而Enumeration不能做到。
为了使它的功能更加清晰,迭代器方法名已经经过改善。
**********
8.为何没有像Iterator.add()这种方法。向集合中加入元素?
语义不明。已知的是,Iterator的协议不能确保迭代的次序。然而要注意。ListIterator没有提供一个add操作,它要确保迭代的顺序。
**********
9.为何迭代器没有一个方法能够直接获取下一个元素。而不须要移动游标?
它能够在当前Iterator的顶层实现。可是它用得非常少,假设将它加到接口中,每一个继承都要去实现它。这没有意义。
**********
10.Iterater和ListIterator之间有什么差别?
(1)我们能够使用Iterator来遍历Set和List集合,而ListIterator仅仅能遍历List。
(2)Iterator仅仅能够向前遍历。而LIstIterator能够双向遍历。
(3)ListIterator从Iterator接口继承,然后加入了一些额外的功能,比方加入一个元素、替换一个元素、获取前面或后面元素的索引位置。
以上就是极悦注册机构小编介绍的“IT面试篇:Java集合类面试题”的内容,希望对大家有帮助,如有疑问,请在线咨询,有专业老师随时为你服务。
相关推荐
(初级到高级)
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习