Java集合框架是面试中的高频考点,涉及底层数据结构、核心方法原理、线程安全性、性能对比等,以下是常见的面试题分类及典型问题:
hasNext()+next();快速失败:迭代时修改集合会抛ConcurrentModificationException)Arrays.copyOf()复制数组)get(int index))?(需要从表头/表尾遍历,时间复杂度O(n))synchronized,效率低;扩容默认翻倍,ArrayList是1.5倍)Collections.synchronizedList(list),或使用CopyOnWriteArrayList)hashCode()和equals():先比较哈希值,不同则直接存入;相同再用equals()判断,若为false则以链表/红黑树形式存储)equals()必须重写hashCode()?(否则可能导致HashSet中出现相同元素:例如两个对象equals()为true,但hashCode()不同,会被视为不同元素存入)Comparable接口,或通过Comparator定制排序,底层红黑树按比较结果维护顺序)(key.hashCode() ^ (key.hashCode() >>> 16)) & (n-1),高16位与低16位异或,减少哈希冲突,用位运算替代取模提升效率)CAS+synchronized(对链表头/红黑树根节点加锁),粒度更细,性能更好accessOrder=true,每次访问元素后移到链表尾部,淘汰头部元素即最近最少使用的元素)Collections.synchronizedXXX()返回的集合,CopyOnWriteArrayList、CopyOnWriteArraySet、ConcurrentHashMap等)size()、isEmpty()、iterator()等核心方法,考虑线程安全和性能)这些问题覆盖了集合框架的核心知识点,面试中常结合底层源码(如HashMap的put()、resize()方法)和实际场景(如“如何设计一个高并发的缓存系统”)进行延伸,建议结合源码和实践理解,而非死记硬背。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。