Files
interview/questions/08-算法与数据结构/算法与数据结构学习指南.md
yasinshaw a95c605bbf refactor: 重组项目文件结构
- 将项目概述文件移至根目录
- 将算法学习指南移至 questions 目录
- 将面试准备进度移至根目录
- 删除空的 questions 文件
- 更新 Obsidian 主题配置
2026-03-02 18:14:26 +08:00

122 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 算法与数据结构学习指南
## 概述
本项目包含算法和数据结构相关的面试题和详细解释,涵盖了后端面试中最重要的数据结构及其实现。
## 核心算法主题
### 1. B+ 树B+ Tree
- **位置**`08-算法与数据结构/B+树原理.md`
- **重点**:数据库索引、文件系统
- **核心特性**:多路搜索树、有序叶子节点、高效范围查询
- **应用**MySQL、PostgreSQL、文件系统
### 2. LRU 缓存LRU Cache
- **位置**`08-算法与数据结构/LRU缓存实现.md`
- **重点**:缓存淘汰策略
- **核心特性**最近最少使用淘汰、O(1) 操作
- **应用**Web 缓存、数据库查询缓存、内存管理
### 3. 红黑树Red-Black Tree
- **位置**`08-算法与数据结构/红黑树原理.md`
- **重点**:自平衡二叉搜索树
- **核心特性**红黑着色、O(log n) 操作
- **应用**Java TreeMap、Linux 内核、数据库索引
### 4. 跳表Skip List
- **位置**`08-算法与数据结构/跳表原理.md`
- **重点**:概率型数据结构
- **核心特性**多层链表、O(log n) 操作
- **应用**Redis 有序集合、数据库索引、路由表
### 5. 时间轮Timing Wheel
- **位置**`08-算法与数据结构/时间轮算法.md`
- **重点**:任务调度和延迟执行
- **核心特性**:分层时间桶、高效任务管理
- **应用**:分布式系统、消息队列、缓存过期
## 文档结构
每个算法文档包含:
### 核心组件
1. **原理**:数据结构的详细解释
2. **图解说明**:图表示例
3. **代码实现**:完整可运行的代码
4. **时间复杂度分析**:性能分析
5. **实际应用场景**:真实用例
6. **对比**:与其他数据结构的对比
### 面试重点
- **时间复杂度**:所有操作的大 O 分析
- **空间复杂度**:内存使用分析
- **实际应用**:在何处以及为何使用每种结构
- **常见面试问题**:详细答案的 Q&A 部分
## 使用指南
### 面试准备
1. 从 **B+ 树**开始 - 数据库理解的基础
2. 学习 **LRU 缓存** - 系统设计面试必备
3. 理解 **红黑树** - 理解平衡树
4. 探索 **跳表** - 理解概率平衡方法
5. 掌握 **时间轮** - 分布式系统关键
### 实际实现
- 每个文档包含多种实现方法
- 从基本实现开始,然后探索高级变体
- 研究并发实现用于生产环境
- 理解不同方法的权衡
### 关键学习点
1. **理解"为什么"**:不仅是如何,还有为什么每种结构存在
2. **权衡**:每种结构都有优缺点 - 理解它们
3. **性能**:始终考虑时间和空间复杂度
4. **实际应用**:将正确的结构匹配到正确的问题
## 相关资源
### 系统设计主题
- `01-分布式系统/数据库分库分表.md`:数据库分片策略
- `04-消息队列/消息队列RocketMQ_Kafka.md`:消息队列实现
- `05-并发编程/限流策略与算法.md`:限流算法
- `01-分布式系统/一致性哈希.md`:一致性哈希
### 性能优化
- `02-数据库/MySQL索引优化.md`MySQL 索引优化
- `01-分布式系统/MySQL主从延迟.md`:数据库复制策略
- `03-缓存/缓存穿透击穿雪崩.md`:缓存问题和解决方案
### 微服务和分布式系统
- `01-分布式系统/分布式ID生成.md`:分布式 ID 生成
- `01-分布式系统/分布式事务.md`:分布式事务
- `07-系统设计/社交信息流设计.md`Feed 流系统设计
- `07-系统设计/LBS附近的人设计.md`:负载均衡系统设计
- `07-系统设计/秒杀系统设计.md`:秒杀系统设计
- `07-系统设计/短链接系统设计.md`:短链接系统设计
## 入门指南
1. **阅读每个文档** 理解基础
2. **运行代码示例** 查看实际效果
3. **练习面试问题**:每个文档末尾的 Q&A
4. **对比不同方法**:理解权衡
## 贡献
这是一个持续维护的文档。欢迎:
- 添加新的算法主题
- 改进现有解释
- 添加更多代码示例
- 增强 Q&A 部分
- 分享真实用例
## 许可证
本项目开源,使用 MIT 许可证。
---
**注意**:所有文档使用中文编写,以便更清晰易懂。代码示例使用 Java 以便广泛理解。