面试题答案
一键面试1. 哈希表
- 存储特点:以键值对的形式存储索引统计数据,通过哈希函数将索引键映射到特定的存储位置,能快速定位数据的存储地址,存储效率高且分布均匀。不同索引键经哈希函数计算后尽量散列分布在哈希表中,减少冲突。
- 读取特点:当需要读取索引统计数据时,根据给定索引键计算哈希值,直接定位到对应存储位置,读取速度极快,时间复杂度接近O(1),前提是哈希函数设计合理且冲突较少。
2. 链表
- 存储特点:数据节点通过指针相连,每个节点存储索引统计数据及指向下一节点指针(单链表)或前后节点指针(双链表)。链表结构灵活,无需连续内存空间,添加和删除节点操作简单,适合动态变化的索引统计数据场景。
- 读取特点:读取数据时需从链表头开始,按指针顺序逐个查找,时间复杂度为O(n),n为链表长度。查找效率相对较低,尤其是链表较长时。但在只需要遍历部分数据或对数据插入删除频繁场景下有优势。
3. 树结构(如B树、B+树)
- 存储特点:以树形结构组织索引统计数据,B树每个节点存储多个键值对及子节点指针,B+树所有数据存储在叶子节点,非叶子节点仅用于索引。这种结构能保证数据有序存储,并且通过合理的树高和节点设计,减少磁盘I/O次数。
- 读取特点:读取时利用树的有序性进行二分查找(类似原理),时间复杂度为O(log n),n为树中节点数。相比链表查找效率大幅提升,适合范围查询,因为可以利用树的结构快速定位到范围起始节点,然后按顺序遍历叶子节点获取数据。