Die hier zur Verfügung gestellten [Anki Karteikarten](https://apps.ankiweb.net/) nutzen das Konzept der verteilten Wiederholung. Damit sollst du beim Behalten der Schlüsselkonzepte des System Designs unterstützt werden.
* [Karteikarten System Design](https://github.com/donnemartin/system-design-primer/tree/master/resources/flash_cards/System%20Design.apkg)
* [Übungskarteikarten System Design](https://github.com/donnemartin/system-design-primer/tree/master/resources/flash_cards/System%20Design%20Exercises.apkg)
Auf der Suche nach Ressourcen um dich bei der Vorbereitung auf ein [**Coding Interview**](https://github.com/donnemartin/interactive-coding-challenges) vorzubereiten?
Schau dir das Partner Repo [**Interaktive Coding Herausforderungen**](https://github.com/donnemartin/interactive-coding-challenges) mit einem zusätzlichen Anki Deck an:
> Empfohlene Themen basierend auf deinen Zeithorizont zum Interview (kurz, mittel, lang).

**F: Muss ich für Interviews alles von hier wissen?**
**A: Nein, du musst nicht alles hier wissen um dich auf ein Interview vorzubereiten**.
Was man dich bei einem Interview frägt hängt von verschiedenen Variablen ab:
* Wie viel Erfahrung hast du
* Welchen technischen Hintergrund hast du
* Auf welche Position bewirbst du dich
* Bei welcher Firma ist das Interview
* Glück
Von erfahreneren Kandidaten wird allgemein mehr Wissen im Bereich System Design erwartet. Von Architekten oder Teamleitern wird mehr Wissen als vom individuellen Teammitglied erwartet. Moderne Tech-Unternehmen haben häufig multiple Vorstellungsrunden.
Beginne breit und fokussiere dich auf einige wenige Bereiche. Es hilft wenn man ein wenig über verschiedene Schlüsselthemen des System Designs. Passe den folgenden Studienführer basierend auf deinem Zeithorizont, deiner Erfahrung, die Position auf die du dich bewirbst und die Firma bei der du dich bewirbst, an.
* **Kurzer Zeithorizont** - Strebe ein **breites** Wissen über System Design Themen an. Übe mit dem Lösen **einiger** Interview Fragen.
* **Mittlerer Zeithorizont** - Strebe ein **breites** Wissen und **etwas** Tiefe über System Design Themen. Übe mit dem Lösen **vieler** Interview Fragen.
* **Langer Zeithorizont** - Strebe ein **breites** Wissen und **weit mehr** Tiefe über System Design Themen. Übe mit dem Lösen der **meisten** Interview Fragen.
| Lese dir [System Design Themen: Starte hier](#system-desing-themen-starte-hier) durch um ein breites Verständnis vom Zusammenspiel von Systemen zu bekommen | :+1: | :+1: | :+1: |
| Lese dir ein paar Artikel von [Engineering Blogs von Unternehmen](#engineering-blogs-von-unternehmen) zu den Firmen bei denen du dich vorstellst durch | :+1: | :+1: | :+1: |
| Lese dir ein paar Artikel von [Architekturen aus der echten Welt](#architekturen-aus-der-echten-welt) durch | :+1: | :+1: | :+1: |
| Beschäftige dich mit [How to approach a system design interview question](#how-to-approach-a-system-design-interview-question) | :+1: | :+1: | :+1: |
| Arbeite dich durch [System design interview questions with solutions](#system-design-interview-questions-with-solutions) | Einige | Viele | Alle |
| Arbeite dich durch [Object-oriented design interview questions with solutions](#object-oriented-design-interview-questions-with-solutions) | Einige | Viele | Alle |
| Beschäftige dich mit [Additional system design interview questions](#additional-system-design-interview-questions) | Einige | Viele | Alle |
Du kannst die folgende Schritte nutzen um die Diskussion zu leiten. Zur Festigung dieses Prozesses, arbeite dich durch [System design interview questions with solutions](#system-design-interview-questions-with-solutions) Abschnitt mit den folgenden Schritten.
Gehe für jede Kernkomponente ins Detail. Zum Beispiel, wenn du zum [design a url shortening service](solutions/system_design/pastebin/README.md) gefragt wird, dann erläutere:
Identifiziere und adressiere Engpässe angesichts der Einschränkungen. Brauchst du zum Beispiel die folgenden Komponenten um ein Problem der Skalierbarkeit zu adressieren?
Diskutiere potentielle Lösungen und trade-offs. Alles ist ein trade-off. Addressiere Engpässe mit [principles of scalable system design](#index-of-system-design-topics).
Das Warten auf die Antwort eines ausgefallenen Knotens kann zu einem Timeout-Fehler führen. CP ist eine gute Wahl, wenn deine Geschäftsanforderungen atomare Lese- und Schreibzugriffe fordern.
Antworten liefern die neueste verfügbare Version der Daten auf einem Knoten, wobei es sich nicht um die tatsächlich neueste Version handeln muss. Schreiboperationen können eine Weile brauchen, um sich auf die ausgefallenen Knoten zu verbreiten, sobald sie wieder verfügbar sind.
AP ist eine gute Wahl, wenn die Geschäftsanforderungen [Eventual Consistency](#eventual-consistency) erlauben oder wenn das System auch trotz Fehlern von Außerhalb weiterarbeiten muss.