40个Java集合面试问题和答案

2018-03-03 20:27 作者 : 围观 : TAG标签:

  Java集合问题有哪些?下面是整理的40个Java集合和答案,希望对你有帮助! qzm4

  1.Java集合框架是什么?说出一些集合框架的优点? 求职面试

  如果Map继承Collection接口,那么元素去哪儿?Map包含key-value对,它提供抽取key或value列表集合的方法,但是它不适合“一组对象”规范。 qzm4

  每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector、Stack、HashTable和Array。随着集合的广泛使用,Java1.2提出了囊括所有集合接口、实现和算法的集合框架。在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了很久。它还包括在Java并发包中,阻塞接口以及它们的实现。集合框架的部分优点如下:

求职面试

  (1)使用核心集合类降低开发成本,而非实现我们自己的集合类。

面试网

  (2)随着使用经过严格测试的集合框架类,代码质量会得到提高。

求职面试

  (3)通过使用JDK附带的集合类,可以降低代码维护成本。 面试问题

  (4)复用性和可操作性。 qzm4

  2.集合框架中的泛型有什么优点?

求职信息

  Java1.5引入了泛型,所有的集合接口和实现都大量地使用它。泛型允许我们为集合提供一个可以容纳的对象类型,因此,如果你添加其它类型的任何元素,它会在编译时报错。这避免了在运行时出现ClassCastException,因为你将会在编译时得到报错信息。泛型也使得代码整洁,我们不需要使用显式转换和instanceOf操作符。它也给运行时带来好处,因为不会产生类型检查的字节码指令。

面试问题

  3.Java集合框架的基础接口有哪些?

求职信息

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

求职信息

  Set是一个不能包含重复元素的集合。这个接口对数学集合抽象进行建模,被用来代表集合,就如一副牌。

求职面试

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

  I've already done some research on other workers at Merrill Lynch to see how they achieved similar goals. I know that Merrill Lynch encourages the pursuit and will reimburse for tuition of a graduate degree. I plan on pursuing a MBA to give me an even more extensive knowledge of business and financial analysis. 求职面试

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

求职面试

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

面试网

  4.为何Collection不从Cloneable和Serializable接口继承?

面试网

  Collection接口指定一组对象,对象即为它的元素。如何维护这些元素由Collection的具体实现决定。例如,一些如List的Collection实现允许重复的元素,而其它的如Set就不允许。很多Collection实现有一个公有的clone。然而,把它放到集合的所有实现中也是没有意义的。这是因为Collection是一个抽象表现。重要的是实现。

求职信息

  永远别说你不知道自己的未来在哪里。就会显出你缺乏计划,并显出你对自己未来的职业并不关心的一个总体的态度。如果你对这个问题没有答案,也显示出假如你被雇用,你对长期呆在这家公司没有计划。你需要和面试官交流你的职业目标以及你计划如何实现那些目标。因为雇主想看到的不仅是你对这份工作有多大的热情,还有你对所选择的这个职业有多大热情。

面试问题

  当与具体实现打交道的时候,克隆或序列化的语义和含义才发挥作用。所以,具体实现应该决定如何对它进行克隆或序列化,或它是否可以被克隆或序列化。 qzm4

  在所有的实现中授权克隆和序列化,最终导致更少的灵活性和更多的限制。特定的实现应该决定它是否可以被克隆和序列化。

面试问题

  5.为何Map接口不继承Collection接口?

求职面试

  尽管Map接口和它的实现也是集合框架的一部分,但Map不是集合,集合也不是Map。因此,Map继承Collection毫无意义,反之亦然。

礼仪

  如果Map继承Collection接口,那么元素去哪儿?Map包含key-value对,它提供抽取key或value列表集合的方法,但是它不适合“一组对象”规范。 面试问题

  6.Iterator是什么? qzm4

  Iterator接口提供遍历任何Collection的接口。我们可以从一个Collection中使用迭代器方法来获取迭代器实例。迭代器取代了Java集合框架中的Enumeration。迭代器允许调用者在迭代过程中移除元素。 面试网

  7.Enumeration和Iterator接口的区别? 求职信息

  Enumeration的速度是Iterator的两倍,也使用更少的内存。Enumeration是非常基础的,也满足了基础的需要。但是,与Enumeration相比,Iterator更加安全,因为当一个集合正在被遍历的时候,它会阻止其它线程去修改集合。 qzm4

  迭代器取代了Java集合框架中的Enumeration。迭代器允许调用者从集合中移除元素,而Enumeration不能做到。为了使它的功能更加清晰,迭代器方法名已经经过改善。 面试问题

  8.为何没有像Iterator.add()这样的方法,向集合中添加元素? 面试问题

  语义不明,已知的是,Iterator的协议不能确保迭代的次序。然而要注意,ListIterator没有提供一个add操作,它要确保迭代的顺序。

qzm4

  9.为何迭代器没有一个方法可以直接获取下一个元素,而不需要移动游标? qzm4

  它可以在当前Iterator的顶层实现,但是它用得很少,如果将它加到接口中,每个继承都要去实现它,这没有意义。

求职信息

  10.Iterater和ListIterator之间有什么区别?

求职面试

  (1)我们可以使用Iterator来遍历Set和List集合,而ListIterator只能遍历List。 求职信息

  (2)Iterator只可以向前遍历,而LIstIterator可以双向遍历。 礼仪

  (3)ListIterator从Iterator接口继承,然后添加了一些额外的功能,比如添加一个元素、替换一个元素、获取前面或后面元素的索引位置。

礼仪

  我去年结婚,目前和老公一起生活,他对我工作也很支持和关心。我个人也是希望能找个离家近一点的工作,这样可以有更多的时间和精力照顾家庭。 面试问题

  11.遍历一个List有哪些不同的方式? 面试问题

  1

求职面试

  2 面试问题

  3 面试网

  4 求职信息

  5

面试网

  6 面试网

  7 求职信息

  8

qzm4

  9 面试网

  10

礼仪

  The most significant presentation I have ever had to present was at a national research symposium. I was presenting research I had completed on digital analysis of mammograms and had to present to a panel of more than 100 judges who were at the top of their field. I focused on the research, which could sell itself, and just let the information flow. It went over very well, and I received many more invitations to present the research, including on national television.

求职面试

  11

qzm4

  List strList = new ArrayList<>(); 面试问题

  //使用for-each循环

面试网

  for(String obj : strList){

礼仪

  System.out.println(obj); 面试网

  } 面试问题

  //using iterator 面试问题

  Iterator it = strList.iterator(); qzm4

  When you're interviewing for an internal position within your company, you may be asked what you will do if you don't get the job. The interviewer wants to know whether you are concerned about just the advancement opportunity or the company. 内部职位竞聘常会被问到如果你没有得到这份工作的话你将会怎么办的问题。

礼仪

  while(it.hasNext()){

礼仪

  String obj = it.next();

求职信息

  System.out.println(obj);

面试问题

  } 面试网

  使用迭代器更加线程安全,因为它可以确保,在当前遍历的集合元素被更改的时候,它会抛出ConcurrentModificationException。

求职信息

  12.通过迭代器fail-fast属性,你明白了什么? 面试问题

  4)香港浸会大学:有MA in communication, MA international journalism studies, MSSc in media management, Master of fine arts in film, TV, digital media(3年),设立在传理学院之下。香港留学中,浸会的传理学院是HK最早开设传媒专业也是HK最有名的,也是浸会的招牌,很多香港媒体的领导都是浸会的毕业生,在香港媒体方面的影响力非常强,就业有一定的优势。

求职面试

  每次我们尝试获取下一个元素的时候,Iterator fail-fast属性检查当前集合结构里的任何改动。如果发现任何改动,它抛出ConcurrentModificationException。Collection中所有Iterator的实现都是按fail-fast来设计的(ConcurrentHashMap和CopyOnWriteArrayList这类并发集合类除外)。

求职信息

  13.fail-fast与fail-safe有什么区别?

求职信息

  Iterator的fail-fast属性与当前的集合共同起作用,因此它不会受到集合中任何改动的影响。Java.util包中的所有集合类都被设计为fail-fast的,而java.util.concurrent中的集合类都为fail-safe的。Fail-fast迭代器抛出ConcurrentModificationException,而fail-safe迭代器从不抛出ConcurrentModificationException。 qzm4

  14.在迭代一个集合的时候,如何避免ConcurrentModificationException?

礼仪

  在遍历一个集合的时候,我们可以使用并发集合类来避免ConcurrentModificationException,比如使用CopyOnWriteArrayList,而不是ArrayList。

qzm4

  15.为何Iterator接口没有具体的实现? 面试网

  Iterator接口定义了遍历集合的方法,但它的实现则是集合实现类的责任。每个能够返回用于遍历的Iterator的集合类都有它自己的Iterator实现内部类。

面试问题

  这就允许集合类去选择迭代器是fail-fast还是fail-safe的。比如,ArrayList迭代器是fail-fast的,而CopyOnWriteArrayList迭代器是fail-safe的。 礼仪

  16.UnsupportedOperationException是什么?

求职面试

  UnsupportedOperationException是用于表明操作不支持的异常。在JDK类中已被大量运用,在集合框架java.util.Collections.UnmodifiableCollection将会在所有add和remove操作中抛出这个异常。 求职信息

  17.在Java中,HashMap是如何工作的?

qzm4

  HashMap在Map.Entry静态内部类实现中存储key-value对。HashMap使用哈希算法,在put和get方法中,它使用hashCode()和equals()方法。当我们通过传递key-value对调用put方法的时候,HashMap使用Key hashCode()和哈希算法来找出存储key-value对的索引。Entry存储在LinkedList中,所以如果存在entry,它使用equals()方法来检查传递的key是否已经存在,如果存在,它会覆盖value,如果不存在,它会创建一个新的entry然后保存。当我们通过传递key调用get方法时,它再次使用hashCode()来找到数组中的索引,然后使用equals()方法找出正确的Entry,然后返回它的值。下面的图片解释了详细内容。

面试网

  其它关于HashMap比较重要的问题是容量、负荷系数和阀值调整。HashMap默认的初始容量是32,负荷系数是0.75。阀值是为负荷系数乘以容量,无论何时我们尝试添加一个entry,如果map的大小比阀值大的时候,HashMap会对map的内容进行重新哈希,且使用更大的容量。容量总是2的幂,所以如果你知道你需要存储大量的key-value对,比如缓存从数据库里面拉取的数据,使用正确的容量和负荷系数对HashMap进行初始化是个不错的做法。

面试网

  18.hashCode()和equals()方法有何重要性?

求职面试

  HashMap使用Key对象的hashCode()和equals()方法去决定key-value对的索引。当我们试着从HashMap中获取值的时候,这些方法也会被用到。如果这些方法没有被正确地实现,在这种情况下,两个不同Key也许会产生相同的hashCode()和equals()输出,HashMap将会认为它们是相同的,然后覆盖它们,而非把它们存储到不同的地方。同样的,所有不允许存储重复数据的集合类都使用hashCode()和equals()去查找重复,所以正确实现它们非常重要。equals()和hashCode()的实现应该遵循以下规则: qzm4

  (1)如果o1.equals(o2),那么o1.hashCode() == o2.hashCode()总是为true的。 礼仪

  (2)如果o1.hashCode() == o2.hashCode(),并不意味着o1.equals(o2)会为true。

求职信息

  19.我们能否使用任何类作为Map的key?

qzm4

  我们可以使用任何类作为Map的key,然而在使用它们之前,需要考虑以下几点: 面试问题

  (1)如果类重写了equals()方法,它也应该重写hashCode()方法。

qzm4

  (2)类的所有实例需要遵循与equals()和hashCode()相关的规则。请参考之前提到的这些规则。

面试问题

  (3)如果一个类没有使用equals(),你不应该在hashCode()中使用它。

求职面试

  (4)用户自定义key类的最佳实践是使之为不可变的,这样,hashCode()值可以被缓存起来,拥有更好的性能。不可变的类也可以确保hashCode()和equals()在未来不会改变,这样就会解决与可变相关的问题了。 求职面试

  比如,我有一个类MyKey,在HashMap中使用它。 求职面试

  1 求职面试

  2

求职信息

  3

礼仪

  4 面试网

  5

求职信息

  6 面试问题

  7

求职面试

  //传递给MyKey的name参数被用于equals()和hashCode()中 求职信息

  MyKey key = new MyKey('Pankaj'); //assume hashCode=1234 qzm4

  myHashMap.put(key, 'Value');

面试问题

  // 以下的代码会改变key的hashCode()和equals()值 礼仪

  key.setName('Amit'); //assume new hashCode=7890 面试网

  //下面会返回null,因为HashMap会尝试查找存储同样索引的key,而key已被改变了,匹配失败,返回null

求职信息

  我尽全力的完成了比赛,无论结果如何,我超越了自己,我就是胜利者,这类问题没固定答案,其实就看你的反应如何了。

礼仪

  myHashMap.get(new MyKey('Pankaj'));

面试网

  那就是为何String和Integer被作为HashMap的key大量使用。 qzm4

  不能掺杂主观的负面感受,如“太幸苦”、“人际关系复杂”、“管理太混乱”、“公司不重视人才”、“公司排斥我们某某的员工”等。 礼仪

  20.Map接口提供了哪些不同的集合视图?

求职面试

  Map接口提供三个集合视图:

面试网

  (1)Set keyset():返回map中包含的所有key的一个Set视图。集合是受map支持的,map的变化会在集合中反映出来,反之亦然。当一个迭代器正在遍历一个集合时,若map被修改了(除迭代器自身的移除操作以外),迭代器的结果会变为未定义。集合支持通过Iterator的Remove、Set.remove、removeAll、retainAll和clear操作进行元素移除,从map中移除对应的映射。它不支持add和addAll操作。 面试网

  招聘求职黄金期——金三银四即将到来,只准备了简历是不够的,你还要为面试做好充分准备,而对于面试来说,最让人摸不着头脑的就属面试问题了。衣服每年都有不同的流行款式,咱们畜牧行业招聘面试题也同样每年都多少会有点不一样。只有知己知彼,方能百战不殆。畜牧狼才小编今天就给大家揭秘:今年畜牧人才求职必会遇到的9个面试问题,还附有回答思路哦。 面试网

  (2)Collection values():返回一个map中包含的所有value的一个Collection视图。这个collection受map支持的,map的变化会在collection中反映出来,反之亦然。当一个迭代器正在遍历一个collection时,若map被修改了(除迭代器自身的移除操作以外),迭代器的结果会变为未定义。集合支持通过Iterator的Remove、Set.remove、removeAll、retainAll和clear操作进行元素移除,从map中移除对应的映射。它不支持add和addAll操作。

面试网

  (3)Set

声明:40个Java集合面试问题和答案来源于互联网,其版权均归原作者及其网站所有,本站虽力求保存原有的版权信息,但由于诸多原因,可能导致无法确定其真实来源,如果您对本站文章、图片资源的归属存有异议,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意!

相关文章