2024最新!!Java后端面试题(2)看这一篇就够了

hello uu们 感谢收看!!!!我最近听了一首歌《21》,真的很感慨,马上步入20的我也感觉时间真的飞快...望大家都能过上理想的生活,不负内心的所托...现在口语化更新答案,让大家更加模拟的与面试官沟通.

正如人民日报所言,“请你努力,为了自己。”

二、容器

  1. Java容器都有哪些?
  • 在Java中,我们主要有两大类容器。第一类是集合类(Collection),比如我们常用的List,像ArrayListLinkedList,还有Set,例如HashSetTreeSet。第二类是映射类(Map),它用来存储键值对,比如HashMapTreeMap
  1. Collection 和 Collections 有什么区别?
  • 这个问题很常见,Collection是一个接口,它代表了一组对象的集合,比如ListSet。而Collections是一个工具类,提供了一系列静态方法来操作这些集合,比如排序和搜索等。
  1. List、Set、Map 之间的区别是什么?
  • 简单来说,List是有序的,可以包含重复元素,像一列学生的名字。Set是不允许重复的,保持唯一性,就像一个班级里每个学生只能有一个学号。至于Map,更多的是存储键值对的,比如电话簿,键是名字,值是电话号码。
  1. HashMap 和 Hashtable 有什么区别?
  • HashMap是非线程安全的,性能更好,而Hashtable是线程安全的,但因此性能会有些下降。此外,HashMap允许一个null键和多个null值,而Hashtable不允许任何null键和null值。
  1. 如何决定使用 HashMap 还是 TreeMap?
  • 如果你需要快速的插入和查找,且不关心顺序,HashMap是个不错的选择。但如果需要根据键的自然顺序或者自定义顺序来排序,那就用TreeMap。
  1. 说一下 HashMap 的实现原理?
  • HashMap通过使用哈希表来存储数据。当你存储一个键值对时,它会根据键的哈希值来计算索引位置。若发生碰撞(多个键产生相同的索引),HashMap会通过链表(在Java 8之后,可能变为红黑树)来处理这些冲突。
  1. 说一下 HashSet 的实现原理?
  • HashSet底层其实是基于HashMap实现的。每一个HashSet中的元素都是HashMap的一个键,HashMap里的值一般是一个常量。它利用HashMap的特性来确保元素的唯一性。
  1. ArrayList 和 LinkedList 的区别是什么?
  • ArrayList使用动态数组作为底层实现,随机访问的时候性能很好。而LinkedList则使用链表,适合频繁的插入和删除操作。简单来说,如果你需要经常修改列表,LinkedList可能更好;如果你需要快速访问某个元素,ArrayList更为合适。
  1. 如何实现数组和 List 之间的转换?
  • 从数组转为List很简单,你可以使用Arrays.asList(array)。而从List转为数组则可以用list.toArray(new String[0])来实现。
  1. ArrayList 和 Vector 的区别是什么?
  • Vector是线程安全的,所有方法都被锁住,因此在多线程环境下是安全的,但在单线程中,性能上可能不如ArrayList。ArrayList是非线程安全的,速度更快,适合单线程环境。
  1. Array 和 ArrayList 有何区别?
  • 数组的大小是固定的,而ArrayList是可变的,可以根据需要增减大小。数组还能存储基本数据类型,但是ArrayList只能存对象类型。
  1. 在 Queue 中 poll()和 remove()有什么区别?
  • poll()方法在队列为空时返回null,而remove()会抛出异常,二者都是用来获取并移除队列头的元素。也就是说,poll更安全一些。
  1. 哪些集合类是线程安全的?
  • 常见的线程安全集合类包括VectorHashtableConcurrentHashMap等,还有一些像CopyOnWriteArrayList和各种实现的BlockingQueue也都是线程安全的。
  1. 迭代器 Iterator 是什么?
  • Iterator是遍历集合的工具,可以让你按顺序访问集合里的每一个元素,而不用考虑集合的内部细节。这种设计使得我们能够安全地遍历集合。
  1. Iterator 怎么使用?有什么特点?
  • 使用Iterator很简单,首先通过collection.iterator()获取迭代器,然后用hasNext()next()方法顺序访问元素。特点是它支持在遍历期间安全地删除元素,使用remove()方法。
  1. Iterator 和 ListIterator 有什么区别?
  • Iterator可用于所有类型的集合,但只能单向遍历;而ListIterator专门用于List,支持双向遍历,可以让你在列表中前后移动。
  1. 怎么确保一个集合不能被修改?
  • 你可以使用Collections.unmodifiableCollection(collection)方法,这样返回的集合就不能被修改,任何修改操作都会抛出异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值