前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Java核心面试宝典】Day15、“Java容器”高频面试题总结!✊✊✊

【Java核心面试宝典】Day15、“Java容器”高频面试题总结!✊✊✊

作者头像
灰小猿
发布2021-09-23 15:22:28
3330
发布2021-09-23 15:22:28
举报
文章被收录于专栏:灰小猿技术社区

Hello,你好呀,我是灰小猿!一个超会写bug的程序猿! 用坚持缔造技术、用指尖敲动未来! 和很多小伙伴们一样,我也是一名奔波在Java道路上的“创造者”。也想靠技术来改未来,改变世界!因为我们坚信每一次敲动键盘都能让生活变得更智能、世界变得更有趣在此专栏《Java核心面试宝典》记录我们备战梦想的**【day 15】**!

集合、数组这些内容都是我们日常开发最常用到的东西,但是其中有很多能够被面试官拿来当做考察点的内容你知道嘛?今天就和小伙伴们剖析一下在容器的相关内容中,都会有哪些常见的面试题呢?

1、Iterable和Iterator接口的作用分别是什么?

Iterable接口的作用是使容器具备迭代元素的功能,如果一个容器类实现了Iterable接口,则该容器类的实例就具备了迭代元素的功能。

Iterator接口的作用是迭代器,其作用是迭代容器中的元素。

2、Iterable接口的核心方法是什么?该方法的返回值类型是什么?

Iterable接口的核心方法是iterator,该方法返回迭代器的实例,返回值类型是Iterator

3、如何实现在遍历过程中删除元素?

为了实现在遍历中删除元素,最好的做法是使用迭代器进行元素遍历,当遇到需要删除的元素时,调用方法remove可以删除元素,并且不会出现错误。

4、Collection接口继承了哪个接口?

Collection接口继承了Iterable接口,

关于容器中接口的继承和实现关系,可以看下面这张图:

5、Collection接口中的哪三个方法分别和集合的并集、差集、交集运算相似?

方法addAll和集合的并集运算相似,它的作用是一次将另一个容器中的元素全部添加到当前容器中。

方法removeAll和集合的差集运算相似,它的作用是一次将另一个容器中的全部元素从当前容器中删除,

方法retainAll和集合的交集运算相似,它的作用是保留既在当前容器中又在另一个容器中的元素。

6、Collection接口的两个子接口List和Set有什么不同?

List线性表,存储一组顺序排列的元素,允许元素重复;

Set集合,存储一组互不相同的元素,不允许元素重复。

7、ListIterator类型的迭代器和Iterator类型的迭代器有什么区别?

Iterator类型的迭代器只支持单向遍历ListIterator类型的迭代器支持双向遍历

8、ArrayList和LinkedList的主要区别是什么?从底层实现、随机访问元素、插入和删除元素方面回答?

ArrayList的底层实现是数组LinkedList的底层实现是双向链表

ArrayList可以快速访问指定下标处的元素。LinkedList需要遍历元素才能得到指定下标处的元素。ArrayList插入和删除元素时需要移动其他元素(除了在尾部插入和删除元素的情况),

LinkedList可以快速插入和删除元素,但是在指定位置(除了头部和尾部)插入和删除元素时则需要首先遍历元素到指定位置。

9、ArrayList和Vector的主要区别是什么?什么情况下使用 ArrayList 比使用 Vector 更好?

ArrayList和Vector的主要区别是,Vector的所有方法都是同步的,因此可以保证线程安全。而ArrayList不能保证线程安全。

在不需要保证线程安全的情况下,使用 ArrayList 比使用 Vector 效率更高。

10、Map中,键能否重复?如果重复,会有什么现象?

Map中不允许键重复,因为每一个键对应一个值,如果有重复的键,则会出现一个键对应多个值的情况,这违背了映射的定义

11、HashMap和Hashtable的区别有哪些?

HashMap 不是线程安全的,Hashtable 是线程安全的; HashMap 的效率高于 Hashtable;

HashMap 允许键或值为 null,最多可以有一个键为 null,Hashtable 不允许键或值为 null;

从 JDK 1.8 开始,HashMap 的实现包括红黑树,Hashtable 则没有这样的机制。

12、从JDK1.8之后,HashMap的实现有什么变化?

JDK 1.8 之前的 HashMap 的底层通过数组和链表实现,如果出现冲突则通过拉链法解决冲突。

JDK 1.8 在解决冲突时的实现有较大变化,当链表长度大于阈值(默认为 8)时,将链表转化为红黑树。这便是“树化”, 当链表长度小于6时,会重新形成链表,这个过程称为“链化”。

关于HashMap底层实现的深入探究,小伙伴们可以看这一篇《【Java核心面试宝典】Day3、图解HashMap高频面试及底层实现架构!》。

13、HashSet和TreeSet有什么区别?

HashSet 的底层实现基于 HashMap,元素是无序的,通过方法 hashCodeequals 保证元素没有重复;

TreeSet 的底层实现基于 TreeMap,元素是有序的,通过 Comparable 接口或 Comparator接口保证元素没有重复。

今日总结

集合和容器相关的内容虽然经常用,但是我们可以看出能出的面试题其实一点都不少,这里面的很多都是重点,比如HashMap的底层实现列表接口的继承关系实现原理等。

这方面的题目还有很多,所以如果小伙伴们有遇到其他相关的面试题,欢迎在评论区留言提出,我会把大家提出的总结到文章内`, 欢迎小伙伴们一起评论区打卡学习!小伙伴们可也在左方加我好友一起探讨学习!

我是灰小猿,我们下期见!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/08/11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、Iterable和Iterator接口的作用分别是什么?
  • 2、Iterable接口的核心方法是什么?该方法的返回值类型是什么?
  • 3、如何实现在遍历过程中删除元素?
  • 4、Collection接口继承了哪个接口?
  • 5、Collection接口中的哪三个方法分别和集合的并集、差集、交集运算相似?
  • 6、Collection接口的两个子接口List和Set有什么不同?
  • 7、ListIterator类型的迭代器和Iterator类型的迭代器有什么区别?
  • 8、ArrayList和LinkedList的主要区别是什么?从底层实现、随机访问元素、插入和删除元素方面回答?
  • 9、ArrayList和Vector的主要区别是什么?什么情况下使用 ArrayList 比使用 Vector 更好?
  • 10、Map中,键能否重复?如果重复,会有什么现象?
  • 11、HashMap和Hashtable的区别有哪些?
  • 12、从JDK1.8之后,HashMap的实现有什么变化?
  • 13、HashSet和TreeSet有什么区别?
  • 今日总结
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档