Junior Python Backend Entwickler: Interviewfragen

Milad Bonakdar
Autor
Bereiten Sie sich mit 30 Fragen zu Python-Grundlagen, Django/Flask, REST-APIs, Datenbanken, Tests, Git, Docker und API-Sicherheit auf Junior-Backend-Interviews vor.
Vorbereitung auf Junior-Python-Backend-Interviews
Wenn Sie sich auf ein Interview als Junior Python Backend Entwickler vorbereiten, sollten Sie zeigen können, dass Sie Python-Grundlagen erklären, einfache HTTP-Routen bauen, REST-APIs verstehen, mit SQL-Daten arbeiten, Tests schreiben, Git nutzen und grundlegende API-Sicherheit erklären können. Dieser Leitfaden enthält 30 typische Fragen mit Antworten, die Sie laut üben können.
Nutzen Sie ihn in drei Durchgängen:
- Beantworten Sie jede Frage zuerst ohne die Beispielantwort.
- Verbinden Sie die Antworten dann mit einem kleinen Projekt, etwa einer CRUD-API mit Authentifizierung und Datenbankmodellen.
- Üben Sie zum Schluss Abwägungen: wann Django oder Flask sinnvoll ist, warum Indizes Lesezugriffe beschleunigen, aber Schreibzugriffe kosten, und wie Sie einen Endpunkt absichern würden.
Wenn in der Stellenanzeige FastAPI steht, bereiten Sie ähnliche Konzepte zu Routing, Validierung, Async und Dependencies vor. Die Grundlagen unten decken trotzdem ab, was in den meisten Junior-Python-Backend-Interviews geprüft wird.
Python Grundlagen (10 Fragen)
1. Was ist der Unterschied zwischen list und tuple in Python?
Antwort:
list: Veränderlich (kann geändert werden), definiert mit eckigen Klammern[], langsamer als Tupel.tuple: Unveränderlich (kann nicht geändert werden), definiert mit runden Klammern(), schneller als Listen, kann als Dictionary-Schlüssel verwendet werden.
Beispiel:
Seltenheit: Häufig Schwierigkeit: Leicht
2. Erklären Sie den Unterschied zwischen is und ==
Antwort:
==: Prüft auf Wertgleichheit (haben die Objekte den gleichen Wert?).is: Prüft auf Referenzgleichheit (zeigen die Variablen auf genau dasselbe Objekt im Speicher?).
Beispiel:
Seltenheit: Häufig Schwierigkeit: Leicht
3. Was sind Python-Dekoratoren und wie funktionieren sie?
Antwort: Ein Dekorator ist ein Entwurfsmuster in Python, das es einem Benutzer ermöglicht, einem bestehenden Objekt neue Funktionalität hinzuzufügen, ohne dessen Struktur zu verändern. Dekoratoren werden üblicherweise vor der Definition einer Funktion aufgerufen, die Sie dekorieren möchten.
Beispiel:
Seltenheit: Häufig Schwierigkeit: Mittel
4. Was ist der Unterschied zwischen args und kwargs?
Antwort:
*args: Ermöglicht es Ihnen, eine variable Anzahl von Nicht-Schlüsselwort-Argumenten an eine Funktion zu übergeben. Sie werden in einem Tupel gesammelt.**kwargs: Ermöglicht es Ihnen, eine variable Anzahl von Schlüsselwort-Argumenten an eine Funktion zu übergeben. Sie werden in einem Dictionary gesammelt.
Beispiel:
Seltenheit: Häufig Schwierigkeit: Leicht
5. Erklären Sie List Comprehensions
Antwort: List Comprehensions bieten eine prägnante Möglichkeit, Listen zu erstellen. Häufige Anwendungen sind das Erstellen neuer Listen, bei denen jedes Element das Ergebnis einer Operation ist, die auf jedes Element einer anderen Sequenz oder eines iterierbaren Objekts angewendet wird, oder das Erstellen einer Teilsequenz dieser Elemente, die eine bestimmte Bedingung erfüllen.
Beispiel:
Seltenheit: Häufig Schwierigkeit: Leicht
6. Was sind Generatoren und das yield-Schlüsselwort?
Antwort: Generatoren sind eine einfache Möglichkeit, Iteratoren zu erstellen. Sie sind Funktionen, die ein Objekt (Iterator) zurückgeben, über das wir iterieren können (jeweils einen Wert). Das yield-Schlüsselwort wird wie return verwendet, außer dass die Funktion einen Generator zurückgibt.
Beispiel:
Vorteile: Speicher effizient (Lazy Evaluation).
Seltenheit: Mittel Schwierigkeit: Mittel
7. Wie funktioniert das Speichermanagement in Python?
Antwort: Python verwendet einen privaten Heap-Speicher zur Verwaltung des Speichers. Alle Python-Objekte und Datenstrukturen befinden sich in einem privaten Heap. Der Programmierer hat keinen Zugriff auf diesen privaten Heap. Der Interpreter kümmert sich um diesen privaten Python-Heap. Python hat auch einen eingebauten Garbage Collector, der den gesamten ungenutzten Speicher recycelt, sodass er für den Heap-Speicher verfügbar gemacht werden kann.
Seltenheit: Mittel Schwierigkeit: Mittel
8. Was ist der Global Interpreter Lock (GIL)?
Antwort: Im Standard-CPython ist der Global Interpreter Lock (GIL) ein Mutex, der dafür sorgt, dass jeweils nur ein Thread Python-Bytecode ausführt, während die Speicherverwaltung von Python-Objekten geschützt wird. Deshalb skaliert CPU-lastiger Python-Code mit mehreren Threads oft nicht über mehrere CPU-Kerne. I/O-lastige Threads können trotzdem helfen, weil der GIL bei blockierenden Operationen wie Netzwerk- oder Datei-I/O freigegeben wird.
Aktueller Hinweis: Seit Python 3.13 gibt es auch optionale Free-Threaded-Builds, in denen der GIL deaktiviert werden kann. Das ist jedoch eine besondere Build-Variante und nicht die Standardannahme in den meisten Junior-Interviews.
Auswirkung: Für CPU-lastige Arbeit sollten Sie Multiprocessing, native Erweiterungen oder Background Worker in Betracht ziehen. Für I/O-lastige Webarbeit können Threads oder Async-Muster weiterhin sinnvoll sein.
Seltenheit: Mittel Schwierigkeit: Schwer
9. Erklären Sie den Unterschied zwischen Deep Copy und Shallow Copy
Antwort:
- Shallow Copy (Flache Kopie): Erstellt ein neues Objekt, das die Referenz der ursprünglichen Elemente speichert. Eine flache Kopie erstellt also keine Kopie verschachtelter Objekte, sondern kopiert lediglich die Referenz verschachtelter Objekte.
- Deep Copy (Tiefe Kopie): Erstellt ein neues Objekt und fügt rekursiv die Kopien verschachtelter Objekte hinzu, die in den ursprünglichen Elementen vorhanden sind.
Beispiel:
Seltenheit: Mittel Schwierigkeit: Mittel
10. Was sind die eingebauten Datentypen von Python?
Antwort:
- Numerisch: int, float, complex
- Sequenz: list, tuple, range
- Text: str
- Mapping: dict
- Set: set, frozenset
- Boolean: bool
- Binär: bytes, bytearray, memoryview
Seltenheit: Häufig Schwierigkeit: Leicht
Web Frameworks (Django/Flask) (10 Fragen)
11. Vergleichen Sie Django und Flask
Antwort:
- Django: "Batterien enthalten"-Framework. Beinhaltet ORM, Authentifizierung, Admin-Panel usw. Gut für große, komplexe Anwendungen. Folgt dem MVT-Muster (Model-View-Template).
- Flask: Micro-Framework. Minimalistisch, flexibel. Sie wählen die Tools, die Sie möchten (ORM, Auth usw.). Gut für kleinere Apps, Microservices oder wenn Sie eine feinkörnige Kontrolle benötigen.
Seltenheit: Häufig Schwierigkeit: Leicht
12. Was ist das MVC-Muster (und MVT in Django)?
Antwort:
- MVC (Model-View-Controller): Architektonisches Muster, das eine Anwendung in drei Hauptkomponenten unterteilt: das Modell (Daten), die Ansicht (Benutzeroberfläche) und den Controller (verarbeitet Eingaben).
- MVT (Model-View-Template): Djangos Variation.
- Model: Datenstruktur (Datenbank).
- View: Geschäftslogik (ähnlich dem Controller in MVC).
- Template: Präsentationsschicht (ähnlich der View in MVC).
Seltenheit: Häufig Schwierigkeit: Mittel
13. Erklären Sie Django ORM
Antwort: Django ORM (Object-Relational Mapping) ermöglicht Ihnen die Interaktion mit Ihrer Datenbank, wie SQLite, PostgreSQL und MySQL, mithilfe von Python-Code anstelle von SQL. Sie definieren Ihre Datenmodelle als Python-Klassen, und Django kümmert sich um die Erstellung von Datenbanktabellen und Abfragen.
Beispiel:
Seltenheit: Häufig Schwierigkeit: Mittel
14. Was ist eine Migration in Django?
Antwort: Migrationen sind Djangos Art, Änderungen, die Sie an Ihren Modellen vornehmen (Hinzufügen eines Feldes, Löschen eines Modells usw.), in Ihr Datenbankschema zu übertragen. Sie sind so konzipiert, dass sie weitgehend automatisch ablaufen, aber Sie müssen wissen, wann Sie Migrationen erstellen, wann Sie sie ausführen und welche häufigen Probleme auftreten können.
Befehle:
makemigrations: Erstellt neue Migrationen basierend auf Modelländerungen.migrate: Wendet Migrationen auf die Datenbank an.
Seltenheit: Häufig Schwierigkeit: Leicht
15. Wie handhabt Flask das Routing?
Antwort: Flask verwendet den @app.route()-Dekorator, um eine Funktion an eine URL zu binden.
Beispiel:
Seltenheit: Häufig Schwierigkeit: Leicht
16. Was sind Flask Blueprints?
Antwort: Blueprints sind eine Möglichkeit, Ihre Flask-Anwendung in Module zu organisieren. Sie ermöglichen es Ihnen, verwandte Routen, Vorlagen und statische Dateien zusammenzufassen. Dies ist für die Skalierung von Flask-Anwendungen unerlässlich.
Seltenheit: Mittel Schwierigkeit: Mittel
17. Erklären Sie das Konzept von Middleware in Django
Antwort: Middleware ist ein Framework von Hooks in Djangos Request/Response-Verarbeitung. Es ist ein leichtes, Low-Level-"Plugin"-System, um Djangos Eingabe oder Ausgabe global zu verändern. Jede Middleware-Komponente ist für die Ausführung einer bestimmten Funktion verantwortlich.
Beispiele: AuthenticationMiddleware, SessionMiddleware, CsrfViewMiddleware.
Seltenheit: Mittel Schwierigkeit: Mittel
18. Wie handhaben Sie Sessions in Flask?
Antwort: Flask verwendet ein signiertes Cookie, um den Session-Inhalt zu speichern. Der Benutzer kann sich den Inhalt des Cookies ansehen, ihn aber nicht ändern, es sei denn, er kennt den geheimen Schlüssel, der zum Signieren verwendet wird.
Beispiel:
Seltenheit: Mittel Schwierigkeit: Mittel
19. Was ist der Zweck von settings.py in Django?
Antwort: settings.py ist die Hauptkonfigurationsdatei für ein Django-Projekt. Sie enthält die gesamte Konfiguration für das Projekt, einschließlich Datenbankeinstellungen, installierter Apps, Middleware, Vorlageneinstellungen, statischer Dateipfade und Sicherheitsschlüssel.
Seltenheit: Häufig Schwierigkeit: Leicht
20. Wie verhindern Sie CSRF-Angriffe in Django?
Antwort: Django verfügt über einen integrierten Schutz gegen Cross Site Request Forgery (CSRF). Es verwendet ein CSRF-Token, das für jede Benutzersitzung generiert wird. Dieses Token muss in jeder POST-Anfrage enthalten sein (normalerweise als verstecktes Formularfeld). Der Server überprüft das Token, bevor er die Anfrage verarbeitet.
Seltenheit: Mittel Schwierigkeit: Mittel
Datenbank & Allgemeines Backend (10 Fragen)
21. SQL vs NoSQL
Antwort:
- SQL (Relational): Strukturierte Daten, vordefiniertes Schema, Tabellen, Zeilen, Spalten. Gut für komplexe Abfragen und Transaktionen (ACID). Beispiele: PostgreSQL, MySQL.
- NoSQL (Nicht-Relational): Unstrukturierte oder semistrukturierte Daten, dynamisches Schema, Dokumente, Schlüssel-Wert-Paare. Gut für Skalierbarkeit, Rapid Prototyping und große Datensätze. Beispiele: MongoDB, Redis.
Seltenheit: Häufig Schwierigkeit: Leicht
22. Was ist eine API?
Antwort: API steht für Application Programming Interface (Anwendungsprogrammierschnittstelle). Es ist eine Reihe von Regeln und Protokollen, die es verschiedenen Softwareanwendungen ermöglichen, miteinander zu kommunizieren. In der Backend-Entwicklung erstellen wir typischerweise RESTful APIs oder GraphQL APIs, um Frontends (Web, Mobile) die Interaktion mit den Backend-Daten und der Logik zu ermöglichen.
Seltenheit: Häufig Schwierigkeit: Leicht
23. Erklären Sie die Prinzipien einer RESTful API
Antwort:
- Client-Server: Trennung der Verantwortlichkeiten.
- Stateless (Zustandslos): Kein Client-Kontext, der zwischen Anfragen auf dem Server gespeichert wird.
- Cacheable (Cache-fähig): Antworten müssen sich selbst als cache-fähig oder nicht definieren.
- Uniform Interface (Einheitliche Schnittstelle): Standardisierte Kommunikationsweise (HTTP-Methoden: GET, POST, PUT, DELETE).
- Layered System (Mehrschichtiges System): Der Client kann normalerweise nicht erkennen, ob er direkt mit dem Endserver oder mit einem Vermittler auf dem Weg verbunden ist.
Seltenheit: Häufig Schwierigkeit: Mittel
24. Was sind HTTP-Statuscodes? Nennen Sie Beispiele.
Antwort: HTTP-Statuscodes sind standardisierte Antwortcodes, die dem Client zeigen, ob eine Anfrage erfolgreich war, fehlgeschlagen ist, umgeleitet wurde oder eine weitere Aktion braucht.
- 2xx Erfolg: 200 OK, 201 Erstellt.
- 3xx Weiterleitung: 301 Dauerhaft verschoben, 304 Nicht geändert.
- 4xx Client-Fehler: 400 Ungültige Anfrage, 401 Nicht autorisiert, 403 Verboten, 404 Nicht gefunden.
- 5xx Server-Fehler: 500 Interner Serverfehler, 502 Bad Gateway.
Seltenheit: Häufig Schwierigkeit: Leicht
25. Was ist Datenbankindizierung?
Antwort: Indizierung ist eine Datenstrukturtechnik, die verwendet wird, um die Daten in einer Datenbank schnell zu finden und darauf zuzugreifen. Indizes werden mithilfe einiger Datenbankspalten erstellt. Sie verbessert die Geschwindigkeit von Datenabrufoperationen in einer Datenbanktabelle auf Kosten zusätzlicher Schreibvorgänge und Speicherplatz zur Aufrechterhaltung der Indexdatenstruktur.
Seltenheit: Mittel Schwierigkeit: Mittel
26. Erklären Sie das Konzept der ACID-Eigenschaften in Datenbanken
Antwort:
- Atomicity (Atomarität): Alle Operationen in einer Transaktion sind erfolgreich oder jede Operation wird zurückgesetzt.
- Consistency (Konsistenz): Die Datenbank ändert ihren Zustand ordnungsgemäß nach einer erfolgreich abgeschlossenen Transaktion.
- Isolation (Isolation): Ermöglicht es Transaktionen, unabhängig und transparent voneinander zu arbeiten.
- Durability (Dauerhaftigkeit): Stellt sicher, dass das Ergebnis oder die Auswirkung einer abgeschlossenen Transaktion im Falle eines Systemausfalls bestehen bleibt.
Seltenheit: Mittel Schwierigkeit: Mittel
27. Was ist Docker und warum wird es verwendet?
Antwort: Docker ist eine Plattform zum Entwickeln, Versenden und Ausführen von Anwendungen in Containern. Container sind leichtgewichtige, portable und autarke Einheiten, die alles enthalten, was zum Ausführen einer Anwendung benötigt wird (Code, Laufzeit, Systemtools, Bibliotheken). Es löst das Problem "es funktioniert auf meiner Maschine" und gewährleistet Konsistenz über verschiedene Umgebungen hinweg (Entwicklung, Staging, Produktion).
Seltenheit: Häufig Schwierigkeit: Mittel
28. Was ist Unit Testing?
Antwort: Unit Testing ist eine Softwaretestmethode, bei der einzelne Einheiten oder Komponenten einer Software getestet werden. Der Zweck ist es, zu validieren, dass jede Einheit des Softwarecodes wie erwartet funktioniert. In Python werden üblicherweise das unittest-Framework oder pytest verwendet.
Seltenheit: Häufig Schwierigkeit: Leicht
29. Was ist Git und warum ist es wichtig?
Antwort: Git ist ein verteiltes Versionskontrollsystem. Es verfolgt Änderungen im Quellcode während der Softwareentwicklung. Es ermöglicht mehreren Entwicklern, gleichzeitig am selben Projekt zu arbeiten, verschiedene Versionen des Codes (Branches) zu verwalten und bei Bedarf zu früheren Zuständen zurückzukehren.
Seltenheit: Häufig Schwierigkeit: Leicht
30. Wie sichern Sie eine Backend-API?
Antwort:
- Authentifizierung: Prüfen Sie, wer der Benutzer ist, zum Beispiel mit Sessions, JWT oder OAuth.
- Autorisierung: Prüfen Sie bei jeder geschützten Ressource, worauf der Benutzer zugreifen darf, nicht nur beim Login.
- HTTPS: Verschlüsseln Sie Daten während der Übertragung.
- Eingabevalidierung: Validieren Sie Typen, Längen, Formate und Pflichtfelder vor der Verarbeitung.
- Sicherer Datenbankzugriff: Nutzen Sie parametrisierte Queries oder ein ORM statt zusammengesetzter SQL-Strings.
- Rate Limiting: Reduzieren Sie Brute-Force-Versuche, Scraping und missbräuchlichen Traffic.
- CORS: Beschränken Sie Browser-Ursprünge, behandeln Sie CORS aber nicht als Authentifizierung.
- Fehlerbehandlung und Logging: Geben Sie sichere Fehlermeldungen zurück und loggen Sie genug Kontext zum Debuggen.
Seltenheit: Mittel Schwierigkeit: Mittel


