> ## Documentation Index
> Fetch the complete documentation index at: https://mintlify.com/donnemartin/system-design-primer/llms.txt
> Use this file to discover all available pages before exploring further.

# Anki flashcards

> Use spaced repetition to help you retain key system design concepts

<Note>
  The provided [Anki flashcard decks](https://apps.ankiweb.net/) use spaced repetition to help you retain key system design concepts.
</Note>

## Available flashcard decks

<CardGroup cols={1}>
  <Card title="System design deck" icon="brain">
    Core system design concepts, patterns, and principles

    [Download System Design.apkg](https://github.com/donnemartin/system-design-primer/tree/master/resources/flash_cards/System%20Design.apkg)
  </Card>

  <Card title="System design exercises deck" icon="dumbbell">
    Practice exercises for common system design interview questions

    [Download System Design Exercises.apkg](https://github.com/donnemartin/system-design-primer/tree/master/resources/flash_cards/System%20Design%20Exercises.apkg)
  </Card>

  <Card title="Object oriented design exercises deck" icon="object-group">
    OO design patterns and practice problems

    [Download OO Design.apkg](https://github.com/donnemartin/system-design-primer/tree/master/resources/flash_cards/OO%20Design.apkg)
  </Card>
</CardGroup>

<Tip>
  Great for use while on-the-go!
</Tip>

## What is Anki?

Anki is a powerful, intelligent flashcard program that uses spaced repetition to optimize your learning. Instead of cramming information, Anki shows you cards at strategically increasing intervals to help move knowledge from short-term to long-term memory.

### Benefits of spaced repetition

* **Efficient learning**: Focus on cards you're about to forget
* **Long-term retention**: Move knowledge into long-term memory
* **Customizable**: Adjust intervals based on how well you know each card
* **Mobile friendly**: Study anywhere with the Anki mobile apps

## How to use the flashcard decks

1. **Download Anki**: Get the free Anki app from [apps.ankiweb.net](https://apps.ankiweb.net/)
2. **Download the decks**: Click the links above to download the `.apkg` files
3. **Import into Anki**: Double-click the downloaded files or import them through Anki's File menu
4. **Study daily**: Spend 15-30 minutes each day reviewing cards
5. **Be honest**: Rate your knowledge honestly to get the most out of spaced repetition

<Warning>
  Consistency is key! Study a little bit each day rather than cramming before your interview.
</Warning>

## What's covered in each deck?

### System design deck

This deck covers fundamental concepts including:

* Scalability principles
* Performance vs scalability
* Latency vs throughput
* Availability vs consistency
* CAP theorem
* Consistency patterns
* Availability patterns
* CDNs and caching strategies
* Load balancing
* Database concepts (SQL, NoSQL, sharding, replication)
* Asynchronism and message queues
* Communication protocols

### System design exercises deck

Practice questions for designing systems like:

* URL shortening service (Bit.ly, Pastebin)
* Social media feeds (Twitter, Facebook)
* Web crawler
* Key-value stores
* Sales ranking systems
* Scalable web applications

### Object oriented design exercises deck

Common OO design problems:

* Hash maps
* LRU cache
* Call center
* Deck of cards
* Parking lot
* Chat server

## Additional coding resources

<Card title="Interactive Coding Challenges" icon="code" href="https://github.com/donnemartin/interactive-coding-challenges">
  Looking for resources to help you prep for the coding interview? Check out the sister repo **Interactive Coding Challenges**, which contains an additional Anki deck:

  * [Coding deck](https://github.com/donnemartin/interactive-coding-challenges/tree/master/anki_cards/Coding.apkg)
</Card>

## Tips for effective studying

1. **Study daily**: Even 15 minutes a day is more effective than hour-long sessions once a week
2. **Focus on understanding**: Don't just memorize - understand the concepts and trade-offs
3. **Apply what you learn**: Try to implement or sketch out systems as you study
4. **Review regularly**: The spaced repetition algorithm works best with consistent daily practice
5. **Customize your decks**: Add your own cards for concepts you find challenging

<Tip>
  Combine flashcard study with hands-on practice by working through the system design interview questions with solutions.
</Tip>
