首页 课程 师资 教程 报名

IT面试篇:Java集合类面试题

  • 2019-11-28 14:53:58
  • 2321次 动力节点



  Java技术江湖里,谁人不知,谁人不晓,它的使用率非常高,使用难度却也不大,这也导致了很多人对它不屑一顾,殊不知其中却暗藏玄机,今天我们不妨一起来破解一下Java集合类的面试题。


微信截图_20190703153336.jpg


  面试官常用招式:


  只见面试官微微一笑,拔出长剑,向你刺来,你赶紧拔剑相迎,几招过后,你才意识到面试官使的都是虚招,只是试探你而已。


  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接口继承,然后加入了一些额外的功能,比方加入一个元素、替换一个元素、获取前面或后面元素的索引位置。


        以上就是动力节点Java培训机构小编介绍的“IT面试篇:Java集合类面试题”的内容,希望对大家有帮助,如有疑问,请在线咨询,有专业老师随时为你服务。


相关推荐


最新最全java面试题及答案(初级到高级)


史上最全的中高级JAVA工程师面试题及答案汇总


Java高级开发工程师面试题


2019史上最全java面试题题库大全800题


哪有资深java工程师面试题


选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交