2021 Java面试必备知识点:HashMap、ArrayList与线程安全

版权申诉
0 下载量 30 浏览量 更新于2024-07-07 收藏 475KB DOCX 举报
"这是2021年整理的Java面试宝典,涵盖了Java基础、数据库、Spring、SpringBoot、Mybatis和redis等相关知识点,基于作者多年的IT学习和开发经验。" 在Java基础部分,讨论了几个核心概念: 1. **HashTable与HashMap的区别**: - 存储:两者都用于存储键值对,HashMap允许null键和值,而HashTable不允许。 - 线程安全性:HashTable是线程安全的,适合多线程环境;HashMap则不是,适用于单线程环境。 - 推荐使用:由于HashTable是保留类,现在通常推荐使用HashMap替代(单线程),若需线程安全,可选择ConcurrentHashMap。 2. **ArrayList与LinkedList的区别**: - 数据结构:ArrayList基于动态数组,LinkedList基于双向链表。 - 随机访问:ArrayList在随机访问时性能较好,因为可以直接通过索引访问。 - 增删效率:在链表中间插入或删除,LinkedList比ArrayList更高效,因为ArrayList需要调整多个元素的索引。 3. **Array与ArrayList的区别**: - 存储类型:Array能存储基本类型和对象,ArrayList只能存储对象。 - 大小:Array大小固定,ArrayList大小可变并自动扩展。 - 功能:ArrayList提供了更多的方法,如addAll、removeAll和迭代器等,这些都是Array不具备的。 4. **线程安全的集合**: - Vector、HashTable和Stack是线程安全的,它们在多线程环境中可以保证数据一致性。相比之下,HashMap是非线程安全的。自JDK 1.5起,为了提高并发性能,引入了java.util.concurrent并发包,其中的ConcurrentHashMap是HashMap的线程安全版本。 5. **迭代器Iterator**: - Iterator接口是用于遍历Collection的重要工具,它取代了旧的Enumeration接口。 - 通过调用Collection的iterator()方法,可以获取Iterator实例,进而进行添加、删除和遍历元素的操作。 6. **Java集合框架中的其他关键概念**: - Set接口:不包含重复元素的集合,例如HashSet和TreeSet。 - Queue接口:用于先进先出(FIFO)的数据结构,如LinkedList(作为Queue实现)和ArrayDeque。 - Map接口:存储键值对的集合,如HashMap、TreeMap和LinkedHashMap。 - Collections工具类:提供对集合的各种操作,如排序、填充、反转等。 在数据库方面,可能涉及SQL语句、事务处理、索引优化等方面;Spring框架会涵盖依赖注入、AOP、SpringMVC、Spring Boot的微服务架构;Mybatis是持久层框架,关注点可能在于XML配置、Mapper接口和动态SQL;而redis作为内存数据库,可能会讨论其数据结构、缓存策略、主从复制等特性。 这些知识点是Java开发者面试中常见的问题,理解和掌握它们对于提升技术水平和面试成功至关重要。