Changes: - Renamed all 10 Golang files from English to Chinese names - Created 00-项目概述/项目概述.md with comprehensive project overview - Created 08-算法与数据结构/算法与数据结构学习指南.md with detailed learning guide - Created 12-面试技巧/面试准备进度.md with progress tracking - Added .obsidian configuration for better markdown editing - Updated Claude.MD with Chinese filename rule Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering>
4.2 KiB
4.2 KiB
算法与数据结构学习指南
概述
本项目包含算法和数据结构相关的面试题和详细解释,涵盖了后端面试中最重要的数据结构及其实现。
核心算法主题
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 - 重点:任务调度和延迟执行
- 核心特性:分层时间桶、高效任务管理
- 应用:分布式系统、消息队列、缓存过期
文档结构
每个算法文档包含:
核心组件
- 原理:数据结构的详细解释
- 图解说明:图表示例
- 代码实现:完整可运行的代码
- 时间复杂度分析:性能分析
- 实际应用场景:真实用例
- 对比:与其他数据结构的对比
面试重点
- 时间复杂度:所有操作的大 O 分析
- 空间复杂度:内存使用分析
- 实际应用:在何处以及为何使用每种结构
- 常见面试问题:详细答案的 Q&A 部分
使用指南
面试准备
- 从 B+ 树开始 - 数据库理解的基础
- 学习 LRU 缓存 - 系统设计面试必备
- 理解 红黑树 - 理解平衡树
- 探索 跳表 - 理解概率平衡方法
- 掌握 时间轮 - 分布式系统关键
实际实现
- 每个文档包含多种实现方法
- 从基本实现开始,然后探索高级变体
- 研究并发实现用于生产环境
- 理解不同方法的权衡
关键学习点
- 理解"为什么":不仅是如何,还有为什么每种结构存在
- 权衡:每种结构都有优缺点 - 理解它们
- 性能:始终考虑时间和空间复杂度
- 实际应用:将正确的结构匹配到正确的问题
相关资源
系统设计主题
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:短链接系统设计
入门指南
- 阅读每个文档 理解基础
- 运行代码示例 查看实际效果
- 练习面试问题:每个文档末尾的 Q&A
- 对比不同方法:理解权衡
贡献
这是一个持续维护的文档。欢迎:
- 添加新的算法主题
- 改进现有解释
- 添加更多代码示例
- 增强 Q&A 部分
- 分享真实用例
许可证
本项目开源,使用 MIT 许可证。
注意:所有文档使用中文编写,以便更清晰易懂。代码示例使用 Java 以便广泛理解。