docs: add comprehensive algorithms guide

- Add ALGORITHMS.md guide for algorithm and data structure preparation
- Include overview of all core algorithm topics
- Document structure and usage guide
- List related system design topics
- Provide getting started instructions

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
yasinshaw
2026-02-28 23:45:25 +08:00
parent bb4f59a6d7
commit e10105c54a

123
ALGORITHMS.md Normal file
View File

@@ -0,0 +1,123 @@
# Algorithm and Data Structure Interview Guide
## Overview
This repository contains comprehensive algorithm and data structure interview questions with detailed explanations, implementations, and practical applications.
## Core Algorithm Topics
### 1. B+ Tree (B+ 树)
- **Location**: `questions/alg-btree.md`
- **Focus**: Database indexing, file systems
- **Key Features**: Multi-way search tree, ordered leaves, efficient range queries
- **Applications**: MySQL, PostgreSQL, file systems
### 2. LRU Cache (LRU 缓存)
- **Location**: `questions/alg-lru.md`
- **Focus**: Cache eviction strategies
- **Key Features**: Least Recently Used eviction, O(1) operations
- **Applications**: Web caching, database query caching, memory management
### 3. Red-Black Tree (红黑树)
- **Location**: `questions/alg-redblacktree.md`
- **Focus**: Self-balancing binary search tree
- **Key Features**: Red/black coloring, O(log n) operations
- **Applications**: Java TreeMap, Linux kernel, database indexes
### 4. Skip List (跳表)
- **Location**: `questions/alg-skip-list.md`
- **Focus**: Probabilistic data structure
- **Key Features**: Multi-level linked list, O(log n) operations
- **Applications**: Redis sorted sets, database indexes, routing tables
### 5. Timing Wheel (时间轮)
- **Location**: `questions/alg-timingwheel.md`
- **Focus**: Task scheduling and delayed execution
- **Key Features**: Hierarchical time buckets, efficient task management
- **Applications**: Distributed systems, message queues, cache expiration
## Documentation Structure
Each algorithm document includes:
### Core Components
1. **原理 (Principle)**: Detailed explanation of the data structure
2. **图解说明 (Visual Explanation)**: Diagrams and examples
3. **Java 代码实现 (Java Implementation)**: Complete working code
4. **时间复杂度分析 (Time Complexity)**: Performance analysis
5. **实际应用场景 (Practical Applications)**: Real-world use cases
6. **与其他数据结构的对比 (Comparison)**: With other data structures
### Interview Focus Areas
- **Time Complexity**: Big O analysis for all operations
- **Space Complexity**: Memory usage analysis
- **Practical Applications**: Where and why to use each structure
- **Common Interview Questions**: Q&A sections with detailed answers
## Usage Guide
### For Interview Preparation
1. Start with **B+ Tree** - fundamental for database understanding
2. Study **LRU Cache** - essential for system design interviews
3. Learn **Red-Black Tree** - important for understanding balanced trees
4. Explore **Skip List** - shows probabilistic approaches to balancing
5. Master **Timing Wheel** - crucial for distributed systems
### For Practical Implementation
- Each document includes multiple implementation approaches
- Start with the basic implementation, then explore advanced variants
- Study the concurrent implementations for production use
- Understand the trade-offs between different approaches
### Key Learning Points
1. **Understand the "Why"**: Not just how, but why each structure exists
2. **Trade-offs**: Every structure has pros and cons - understand them
3. **Performance**: Always consider time and space complexity
4. **Practical Use**: Match the right structure to the right problem
## Additional Resources
### System Design Topics
- `questions/database-sharding.md`: Database sharding strategies
- `questions/message-queue.md`: Message queue implementations
- `questions/rate-limiting.md`: Rate limiting algorithms
- `questions/consistency-hash.md`: Consistent hashing
### Performance Optimization
- `questions/mysql-index-optimization.md`: MySQL index optimization
- `questions/replication-delay.md`: Database replication strategies
- `questions/cache-problems.md`: Cache problems and solutions
### Microservices and Distributed Systems
- `questions/distributed-id.md`: Distributed ID generation
- `questions/distributed-transaction.md`: Distributed transactions
- `questions/design-feed.md`: Feed system design
- `questions/design-lbs.md`: Load balancing systems
- `questions/design-seckill.md`: Flash sale system design
- `questions/design-shorturl.md`: Short URL system design
- `questions/design-im.md`: Instant messaging system design
## Getting Started
1. **Read through each document** to understand the fundamentals
2. **Run the code examples** to see implementations in action
3. **Practice the interview questions** at the end of each document
4. **Compare different approaches** to understand trade-offs
5. **Implement your own versions** to solidify understanding
## Contributing
This is a living document. Feel free to:
- Add new algorithm topics
- Improve existing explanations
- Add more code examples
- Enhance the Q&A sections
- Share real-world use cases
## License
This project is open source and available under the MIT License.
---
**Note**: All documents are written in Chinese for clarity and accessibility. The code examples are in Java for widespread understanding.