数据结构与算法之——常见面试题及解答1
一 概述
- HashMap 原理(Java 举例)
- ArrayList 与 LinkedList 区别
- HashSet 原理
- 栈和队列原理
- ConcurrentHashMap 原理(高并发场景)
- TreeMap / TreeSet 原理
- PriorityQueue(最小堆 / 最大堆)
二 面试题解答(仅供参考)
2.1 HashMap 原理(Java 举例)
1 | 1、面试高频!问得最多的是: |
2.2 ArrayList 与 LinkedList 区别
对比点 | ArrayList | LinkedList |
---|---|---|
底层结构 | 动态数组 | 双向链表 |
随机访问 | 快(O(1)) | 慢(O(n)) |
插入/删除 | 中间插入慢 | 任意位置快(已知指针) |
内存占用 | 少 | 多(每个节点有两个指针) |
应用场景 | 频繁访问 | 频繁插入/删除 |
2.3 HashSet 原理
1 | -HashSet 实际上是基于 HashMap 实现的。 |
2.4 栈和队列原理
1 | -栈(Stack):后进先出(LIFO),常见题:有效括号、最小栈、逆波兰表达式 |
2.5 ConcurrentHashMap 原理(高并发场景)
1 | -JDK1.7 使用 分段锁 Segment[] + HashEntry[] |
2.6 TreeMap / TreeSet 原理
1 | -基于 红黑树 实现,自动排序(按 key 或 comparator) |
2.7 PriorityQueue(最小堆 / 最大堆)
1 | -Java 中的 PriorityQueue 是 最小堆结构,每次出队都是最小值 |