Files
interview/08-算法与数据结构/算法与数据结构学习指南.md
yasinshaw 7f3ab362b3 feat: rename Golang files to Chinese and supplement root files
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>
2026-03-01 00:33:32 +08:00

4.2 KiB
Raw Blame History

算法与数据结构学习指南

概述

本项目包含算法和数据结构相关的面试题和详细解释,涵盖了后端面试中最重要的数据结构及其实现。

核心算法主题

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索引优化.mdMySQL 索引优化
  • 01-分布式系统/MySQL主从延迟.md:数据库复制策略
  • 03-缓存/缓存穿透击穿雪崩.md:缓存问题和解决方案

微服务和分布式系统

  • 01-分布式系统/分布式ID生成.md:分布式 ID 生成
  • 01-分布式系统/分布式事务.md:分布式事务
  • 07-系统设计/社交信息流设计.mdFeed 流系统设计
  • 07-系统设计/LBS附近的人设计.md:负载均衡系统设计
  • 07-系统设计/秒杀系统设计.md:秒杀系统设计
  • 07-系统设计/短链接系统设计.md:短链接系统设计

入门指南

  1. 阅读每个文档 理解基础
  2. 运行代码示例 查看实际效果
  3. 练习面试问题:每个文档末尾的 Q&A
  4. 对比不同方法:理解权衡

贡献

这是一个持续维护的文档。欢迎:

  • 添加新的算法主题
  • 改进现有解释
  • 添加更多代码示例
  • 增强 Q&A 部分
  • 分享真实用例

许可证

本项目开源,使用 MIT 许可证。


注意:所有文档使用中文编写,以便更清晰易懂。代码示例使用 Java 以便广泛理解。