Dezember 21, 2025
15 Min. Lesezeit

Leitfaden für Vorstellungsgespräche: Senior Backend-Entwickler (Python)

interview
career-advice
job-search
Leitfaden für Vorstellungsgespräche: Senior Backend-Entwickler (Python)
MB

Milad Bonakdar

Autor

Meistern Sie die fortgeschrittene Python-Backend-Entwicklung mit wichtigen Fragen für Vorstellungsgespräche, die Systemdesign, Datenbankoptimierung, Parallelverarbeitung und Architektur abdecken. Perfekte Vorbereitung für Vorstellungsgespräche als Senior Backend-Entwickler.


Einführung

Dieser umfassende Leitfaden enthält 30 wichtige Fragen für Vorstellungsgespräche, die fortgeschrittene Python-Backend-Entwicklung abdecken. Diese Fragen sollen erfahrenen Backend-Entwicklern bei der Vorbereitung auf Vorstellungsgespräche helfen, indem sie Schlüsselkonzepte in fortgeschrittenem Python, Systemdesign, Datenbankoptimierung und Sicherheit abdecken. Jede Frage enthält eine detaillierte Antwort, eine Seltenheitsbewertung und eine Schwierigkeitsstufe.

Als erfahrener Entwickler wird von Ihnen erwartet, dass Sie nicht nur das "Wie", sondern auch das "Warum" und die Kompromisse kennen, die mit Ihren technischen Entscheidungen verbunden sind.


Fortgeschrittene Python-Konzepte (8 Fragen)

1. Wie funktioniert die Speicherverwaltung von Python, und welche Rolle spielt der Garbage Collector?

Antwort: Python verwendet einen privaten Heap, um den Speicher zu verwalten, in dem alle Objekte und Datenstrukturen gespeichert werden. Der Programmierer kann nicht direkt auf diesen Heap zugreifen; er wird vom Python-Speichermanager verwaltet.

  • Referenzzählung: Der primäre Mechanismus. Jedes Objekt hat einen Referenzzähler. Wenn dieser auf Null sinkt, wird der Speicher freigegeben.
  • Garbage Collector (GC): Behandelt zyklische Referenzen, die die Referenzzählung nicht erfassen kann. Er wird regelmäßig ausgeführt, um diese Zyklen zu finden und zu bereinigen.
  • Generationen-GC: Der GC von Python teilt Objekte in drei Generationen (0, 1, 2) ein. Neue Objekte beginnen in Generation 0. Wenn sie eine Sammlung überleben, werden sie in die nächste Generation verschoben. Ältere Generationen werden seltener gesammelt, um die Leistung zu verbessern.

Seltenheit: Häufig Schwierigkeit: Schwer


2. Erläutern Sie den Global Interpreter Lock (GIL) und seine Auswirkungen auf die Nebenläufigkeit. Wie umgehen Sie ihn?

Antwort: Der GIL ist ein Mutex, der den Zugriff auf Python-Objekte schützt und verhindert, dass mehrere native Threads gleichzeitig Python-Bytecode ausführen. Dies macht CPython Thread-sicher, beschränkt CPU-lastige Programme jedoch auf einen einzigen Kern.

  • Auswirkung: Multi-Threading ist effektiv für I/O-lastige Aufgaben (Warten auf Netzwerk/Festplatte), aber nicht für CPU-lastige Aufgaben (starke Berechnung).
  • Umgehung des GIL:
    1. Multiprocessing: Verwenden Sie das Modul multiprocessing, um separate Prozesse zu erstellen, jeder mit seinem eigenen Python-Interpreter und Speicherbereich.
    2. C-Erweiterungen: Schreiben Sie leistungskritischen Code in C/C++ und geben Sie den GIL frei, während er ausgeführt wird.
    3. Alternative Interpreter: Verwenden Sie Jython oder IronPython (die keinen GIL haben), obwohl CPython der Standard ist.

Seltenheit: Sehr Häufig Schwierigkeit: Schwer


3. Was sind Metaklassen in Python und wann sollten Sie sie verwenden?

Antwort: Eine Metaklasse ist "die Klasse einer Klasse". So wie eine Klasse das Verhalten einer Instanz definiert, definiert eine Metaklasse das Verhalten einer Klasse. In Python sind Klassen auch Objekte, und sie sind Instanzen von type (der Standard-Metaklasse).

  • Verwendung: Sie können die Klassenerstellung abfangen, um die Klasse automatisch zu ändern.
  • Anwendungsfälle:
    • Automatisches Registrieren von Klassen (z. B. für Plugins).
    • Erzwingen von Codierungsstandards (z. B. sicherstellen, dass alle Klassen Docstrings haben).
    • Implementierung des Singleton-Musters.
    • ORM-Frameworks (wie Django) verwenden sie, um Klassenattribute Datenbankfeldern zuzuordnen.

Beispiel:

class Meta(type):
    def __new__(cls, name, bases, dct):
        x = super().__new__(cls, name, bases, dct)
        x.attr = 100
        return x

class MyClass(metaclass=Meta):
    pass

print(MyClass.attr) # 100

Seltenheit: Ungewöhnlich Schwierigkeit: Schwer


4. Erläutern Sie den Unterschied zwischen __new__ und __init__.

Antwort:

  • __new__: Eine statische Methode, die für das Erstellen einer neuen Instanz einer Klasse verantwortlich ist. Sie ist der erste Schritt bei der Instanzerstellung. Sie gibt die neue Instanz zurück. Sie überschreiben sie selten, es sei denn, Sie erstellen Unterklassen von unveränderlichen Typen (wie str, int, tuple) oder implementieren ein Singleton.
  • __init__: Eine Instanzmethode, die für das Initialisieren der erstellten Instanz verantwortlich ist. Sie wird nach __new__ aufgerufen. Sie gibt nichts zurück.

Seltenheit: Mittel Schwierigkeit: Mittel


5. Wie funktioniert asyncio in Python? Erläutern Sie die Event Loop.

Antwort: asyncio ist eine Bibliothek zum Schreiben von nebenläufigem Code mit der Syntax async / await. Sie verwendet ein Single-Threaded, kooperatives Multitasking-Modell.

  • Event Loop: Der Kern von asyncio. Sie führt asynchrone Aufgaben und Rückrufe aus, führt Netzwerk-IO-Operationen durch und führt Subprozesse aus. Sie wechselt zwischen Aufgaben, wenn diese auf I/O warten (mit await), wodurch andere Aufgaben in der Zwischenzeit ausgeführt werden können.
  • Coroutinen: Funktionen, die mit async def definiert sind. Sie können pausiert und fortgesetzt werden.

Seltenheit: Häufig Schwierigkeit: Schwer


6. Was sind Python-Dekoratoren und wie können Sie einen Dekorator erstellen, der Argumente akzeptiert?

Antwort: Dekoratoren sind Funktionen, die das Verhalten anderer Funktionen oder Klassen ändern. Um Argumente zu akzeptieren, benötigen Sie eine dreistufige, verschachtelte Funktionsstruktur.

Beispiel:

def repeat(num_times):
    def decorator_repeat(func):
        def wrapper(*args, **kwargs):
            for _ in range(num_times):
                result = func(*args, **kwargs)
            return result
        return wrapper
    return decorator_repeat

@repeat(num_times=3)
def greet(name):
    print(f"Hallo {name}")

greet("Welt")

Seltenheit: Mittel Schwierigkeit: Mittel


7. Erläutern Sie das Konzept der Context Managers und der with-Anweisung.

Antwort: Context Manager ermöglichen es Ihnen, Ressourcen genau dann zuzuweisen und freizugeben, wenn Sie es möchten. Die häufigste Verwendung ist die with-Anweisung.

  • Mechanismus: Sie implementieren die Methoden __enter__ und __exit__.
    • __enter__: Richtet den Kontext ein und gibt die Ressource zurück.
    • __exit__: Bereinigt die Ressource (schließt die Datei, gibt die Sperre frei), auch wenn eine Ausnahme auftritt.
  • contextlib: Der Dekorator @contextmanager ermöglicht es Ihnen, Context Manager mit Generatoren zu erstellen.

Seltenheit: Häufig Schwierigkeit: Einfach


8. Was ist der Unterschied zwischen @staticmethod und @classmethod?

Antwort:

  • @staticmethod: Empfängt kein implizites erstes Argument (weder self noch cls). Sie verhält sich wie eine reguläre Funktion, gehört aber zum Namensraum der Klasse. Wird für Hilfsfunktionen verwendet, die keinen Zugriff auf den Klassen- oder Instanzstatus benötigen.
  • @classmethod: Empfängt die Klasse (cls) als erstes implizites Argument. Sie kann auf den Klassenstatus zugreifen und ihn ändern. Wird häufig für Factory-Methoden verwendet, die Instanzen der Klasse auf unterschiedliche Weise erstellen.

Seltenheit: Häufig Schwierigkeit: Einfach


Systemdesign & Architektur (8 Fragen)

9. Wie würden Sie einen URL-Shortener (wie bit.ly) entwerfen?

Antwort: Dies ist eine klassische Frage zum Systemdesign.

  • Anforderungen: Lange URLs kürzen, kurze URLs auf das Original umleiten, hohe Verfügbarkeit, geringe Latenz.
  • Datenbank: Key-Value-Store (NoSQL) wie DynamoDB oder Redis eignet sich für schnelle Suchvorgänge. Eine relationale Datenbank ist auch in Ordnung, erfordert aber möglicherweise eine Skalierung.
  • Algorithmus:
    • Base62-Codierung: Konvertieren Sie eine eindeutige ID (automatisch inkrementierende Ganzzahl) in Base62 (a-z, A-Z, 0-9).
    • Hashing: MD5/SHA256 der URL, nehmen Sie die ersten 7 Zeichen (Kollisionsrisiko).
  • Skalierung:
    • Caching: Redis/Memcached, um beliebte Weiterleitungen zu cachen (80/20-Regel).
    • Load Balancing: Verteilen Sie den Datenverkehr auf mehrere Webserver.
    • Database Sharding: Partitionieren Sie Daten basierend auf dem Präfix der kurzen URL.

Seltenheit: Sehr Häufig Schwierigkeit: Schwer


10. Erläutern Sie das CAP-Theorem.

Antwort: In einem verteilten Datenspeicher können Sie nur zwei der folgenden drei Eigenschaften garantieren: Konsistenz, Verfügbarkeit und Partitionstoleranz:

  • Konsistenz (C): Jede Leseoperation empfängt die aktuellste Schreiboperation oder einen Fehler.
  • Verfügbarkeit (A): Jede Anfrage empfängt eine (nicht fehlerhafte) Antwort, ohne die Garantie, dass sie die aktuellste Schreiboperation enthält.
  • Partitionstoleranz (P): Das System arbeitet weiterhin, obwohl eine beliebige Anzahl von Nachrichten vom Netzwerk zwischen den Knoten fallen gelassen (oder verzögert) wird.
  • Realität: In einem verteilten System ist P obligatorisch. Sie müssen zwischen CP (Konsistenz über Verfügbarkeit) und AP (Verfügbarkeit über Konsistenz) wählen.

Seltenheit: Häufig Schwierigkeit: Mittel


11. Microservices vs. Monolithische Architektur: Wann wählt man welche?

Antwort:

  • Monolith: Einzelne Codebasis, einzelne Bereitstellungseinheit.
    • Vorteile: Einfach zu entwickeln/testen/bereitzustellen, einfacheres Debuggen, keine Netzwerklatenz zwischen Komponenten.
    • Nachteile: Schwer, bestimmte Teile zu skalieren, enge Kopplung, Technologie-Lock-in, lange Build-Zeiten.
    • Anwendungsfall: Start-ups in der Frühphase, einfache Anwendungen, kleine Teams.
  • Microservices: Sammlung kleiner, unabhängiger Dienste, die über APIs kommunizieren.
    • Vorteile: Unabhängige Skalierung, technologieagnostisch pro Dienst, Fehlertrennung, einfachere parallele Arbeit für große Teams.
    • Nachteile: Komplexe Operationen (Bereitstellung, Überwachung), Netzwerklatenz, Herausforderungen bei der Datenkonsistenz (verteilte Transaktionen).
    • Anwendungsfall: Große, komplexe Systeme, schnell skalierende Teams, Bedarf an unabhängiger Skalierung.

Seltenheit: Häufig Schwierigkeit: Mittel


12. Was ist Load Balancing und welche verschiedenen Algorithmen gibt es?

Antwort: Load Balancing verteilt den eingehenden Netzwerkverkehr auf mehrere Server, um sicherzustellen, dass kein einzelner Server zu stark belastet wird.

  • Algorithmen:
    • Round Robin: Verteilt Anfragen sequenziell.
    • Least Connections: Sendet Anfragen an den Server mit den wenigsten aktiven Verbindungen.
    • IP Hash: Verwendet die IP-Adresse des Clients, um zu bestimmen, welcher Server die Anfrage empfängt (nützlich für die Sitzungspersistenz).
  • Typen:
    • L4 (Transport Layer): Basierend auf IP und Port (schneller).
    • L7 (Application Layer): Basierend auf Inhalt (URL, Cookies, Header) (intelligenter).

Seltenheit: Häufig Schwierigkeit: Mittel


13. Wie handhaben Sie Caching in einem Backend-System?

Antwort: Caching speichert Kopien von Daten an einem temporären Speicherort für schnelleren Zugriff.

  • Schichten:
    • Client-seitig: Browser-Caching.
    • CDN: Cacht statische Assets näher am Benutzer.
    • Load Balancer/Reverse Proxy: Varnish, Nginx.
    • Anwendung: In-Memory (lokal) oder verteilt (Redis/Memcached).
    • Datenbank: Query-Cache.
  • Strategien:
    • Cache-Aside (Lazy Loading): App überprüft den Cache; wenn ein Fehler auftritt, liest sie die Datenbank und aktualisiert den Cache.
    • Write-Through: App schreibt synchron in den Cache und in die Datenbank.
    • Write-Back: App schreibt in den Cache; der Cache schreibt asynchron in die Datenbank (Risiko von Datenverlust).
  • Eviction: LRU (Least Recently Used), LFU (Least Frequently Used), TTL (Time To Live).

Seltenheit: Häufig Schwierigkeit: Schwer


14. Was ist Database Sharding?

Antwort: Sharding ist eine Methode zum Aufteilen und Speichern eines einzelnen logischen Datensatzes in mehreren Datenbanken. Es ist eine Form der horizontalen Skalierung.

  • Horizontal vs. Vertikal: Vertikal = größere Maschine; Horizontal = mehr Maschinen.
  • Sharding-Schlüssel: Die Logik, die zum Verteilen von Daten verwendet wird (z. B. UserID % NumberOfShards).
  • Herausforderungen:
    • Joins: Cross-Shard-Joins sind teuer oder unmöglich.
    • Transaktionen: Verteilte Transaktionen sind komplex (Two-Phase Commit).
    • Rebalancing: Das Verschieben von Daten beim Hinzufügen neuer Shards ist schwierig.

Seltenheit: Mittel Schwierigkeit: Schwer


15. Erläutern Sie das Konzept der Idempotenz in REST-APIs.

Antwort: Eine idempotente Operation ist eine Operation, die mehrmals angewendet werden kann, ohne das Ergebnis über die anfängliche Anwendung hinaus zu ändern.

  • Sichere Methoden: GET, HEAD, OPTIONS (ändern keinen Zustand).
  • Idempotente Methoden: PUT, DELETE. Das 10-malige Aufrufen von DELETE für eine Ressource hat den gleichen Effekt wie das einmalige Aufrufen (die Ressource ist weg).
  • Nicht idempotent: POST. Das 10-malige Aufrufen von POST kann 10 Ressourcen erstellen.
  • Implementierung: Verwenden Sie einen Idempotenzschlüssel (eindeutige ID) im Anfrageheader. Der Server prüft, ob er diese ID bereits verarbeitet hat.

Seltenheit: Mittel Schwierigkeit: Mittel


16. Was ist ein Reverse Proxy und warum sollte man ihn verwenden?

Antwort: Ein Reverse Proxy sitzt vor einem oder mehreren Webservern und leitet Clientanfragen an diese weiter.

  • Vorteile:
    • Load Balancing: Verteilen des Datenverkehrs.
    • Sicherheit: Verbirgt die Identität/IP von Backend-Servern; kann SSL-Terminierung verarbeiten.
    • Caching: Cachen statischer Inhalte.
    • Komprimierung: Komprimieren von Antworten (gzip), um Bandbreite zu sparen.
  • Beispiele: Nginx, HAProxy.

Seltenheit: Häufig Schwierigkeit: Einfach


Datenbank & Optimierung (7 Fragen)

17. Erläutern Sie die ACID- vs. BASE-Konsistenzmodelle.

Antwort:

  • ACID (Relational): Atomicity, Consistency, Isolation, Durability. Konzentriert sich auf starke Konsistenz. Transaktionen sind alles oder nichts.
  • BASE (NoSQL):
    • Basically Available: Das System garantiert Verfügbarkeit.
    • Soft state: Der Zustand des Systems kann sich im Laufe der Zeit ändern, auch ohne Eingabe.
    • Eventual consistency: Das System wird schließlich konsistent, sobald es keine Eingaben mehr empfängt.
  • Kompromiss: ACID bietet Sicherheit und Konsistenz; BASE bietet Verfügbarkeit und Skalierbarkeit.

Seltenheit: Mittel Schwierigkeit: Mittel


18. Wie optimieren Sie eine langsame SQL-Abfrage?

Antwort:

  1. Analysieren: Verwenden Sie EXPLAIN oder EXPLAIN ANALYZE, um den Ausführungsplan der Abfrage zu verstehen.
  2. Indizierung: Stellen Sie sicher, dass Spalten, die in WHERE-, JOIN- und ORDER BY-Klauseln verwendet werden, indiziert sind. Vermeiden Sie Überindizierung (verlangsamt Schreibvorgänge).
  3. Wählen Sie nur das aus, was Sie benötigen: Vermeiden Sie SELECT *.
  4. Vermeiden Sie das N+1-Problem: Verwenden Sie JOINs oder Eager Loading (in ORMs), anstatt für jede Zeile in einer Schleife eine Abfrage auszuführen.
  5. Denormalisierung: Wenn Joins zu teuer sind, sollten Sie das Duplizieren von Daten in Betracht ziehen (Kompromiss: Datenkonsistenz).
  6. Partitionierung: Teilen Sie große Tabellen in kleinere Teile auf.

Seltenheit: Sehr Häufig Schwierigkeit: Mittel


19. Welche verschiedenen Arten von Datenbankindizes gibt es?

Antwort:

  • B-Baum: Der Standard und der häufigste. Gut für Bereichsabfragen und Gleichheitsprüfungen.
  • Hash-Index: Gut nur für Gleichheitsprüfungen (key = value). Sehr schnell, unterstützt aber keine Bereichsabfragen.
  • GiST / GIN: Wird für komplexe Datentypen wie Volltextsuche, geometrische Daten oder JSONB (in PostgreSQL) verwendet.
  • Clustered vs. Non-Clustered:
    • Clustered: Die Datenzeilen werden physisch in der Reihenfolge des Index gespeichert. Nur einer pro Tabelle (normalerweise PK).
    • Non-Clustered: Eine separate Struktur, die auf die Datenzeilen verweist.

Seltenheit: Mittel Schwierigkeit: Schwer


20. Erläutern Sie das N+1-Abfrageproblem und wie man es behebt.

Antwort: Das N+1-Problem tritt auf, wenn Ihr Code N zusätzliche Abfrageanweisungen ausführt, um dieselben Daten abzurufen, die beim Ausführen der primären Abfrage hätten abgerufen werden können.

  • Szenario: Sie rufen eine Liste von 10 Autoren ab (1 Abfrage). Dann rufen Sie für jeden Autor seine Bücher ab (10 Abfragen). Summe = 11 Abfragen.
  • Behebung:
    • SQL: Verwenden Sie einen JOIN, um Autoren und Bücher in einer einzigen Abfrage abzurufen.
    • ORM (Django): Verwenden Sie select_related (für Fremdschlüssel/One-to-One) oder prefetch_related (für Many-to-Many/Reverse-Fremdschlüssel).

Seltenheit: Sehr Häufig Schwierigkeit: Mittel


21. Redis vs. Memcached: Welchen sollte man wählen?

Antwort:

  • Memcached: Einfach, flüchtig, Multithreaded. Gut für einfaches Key-Value-Caching (HTML-Fragmente, Sitzungsdaten).
  • Redis: Erweiterter Key-Value-Store.
    • Datenstrukturen: Unterstützt Listen, Mengen, sortierte Mengen, Hashes, Bitmaps, Hyperloglogs.
    • Persistenz: Kann Daten auf der Festplatte speichern (RDB, AOF).
    • Replikation: Eingebaute Master-Slave-Replikation.
    • Pub/Sub: Unterstützt Message Brokering.
  • Wahl: Verwenden Sie Redis, wenn Sie komplexe Datenstrukturen, Persistenz oder Sortierung benötigen. Verwenden Sie Memcached für einfaches, hochdurchsatzstarkes Caching, wenn Sie Multithreading benötigen.

Seltenheit: Mittel Schwierigkeit: Mittel


22. Was ist Datenbanknormalisierung?

Antwort: Normalisierung ist der Prozess des Organisierens von Daten in einer Datenbank, um Redundanz zu reduzieren und die Datenintegrität zu verbessern.

  • 1NF: Atomare Werte (keine Listen in Zellen), eindeutige Zeilen.
  • 2NF: 1NF + keine partielle Abhängigkeit (alle Nicht-Schlüsselattribute hängen vom gesamten Primärschlüssel ab).
  • 3NF: 2NF + keine transitive Abhängigkeit (Nicht-Schlüsselattribute hängen nur vom Primärschlüssel ab).
  • Kompromiss: Höhere Normalisierung bedeutet mehr Tabellen und mehr Joins (langsamere Lesevorgänge). Denormalisierung wird häufig für leselastige Systeme verwendet.

Seltenheit: Häufig Schwierigkeit: Einfach


23. Wie behandelt PostgreSQL Nebenläufigkeit (MVCC)?

Antwort: PostgreSQL verwendet Multi-Version Concurrency Control (MVCC).

  • Mechanismus: Wenn eine Zeile aktualisiert wird, überschreibt Postgres die alten Daten nicht. Stattdessen wird eine neue Version der Zeile erstellt.
  • Leser: Leser sehen einen konsistenten Snapshot der Datenbank, wie er zum Zeitpunkt des Starts ihrer Transaktion war. Sie blockieren keine Schreiber.
  • Schreiber: Schreiber erstellen neue Versionen. Sie blockieren andere Schreiber in derselben Zeile, blockieren aber keine Leser.
  • Vacuuming: Alte Versionen (tote Tupel), die für keine Transaktion mehr sichtbar sind, müssen vom VACUUM-Prozess bereinigt werden, um Speicherplatz freizugeben.

Seltenheit: Ungewöhnlich Schwierigkeit: Schwer


Sicherheit & DevOps (7 Fragen)

24. Erläutern Sie OAuth 2.0 und seinen Ablauf.

Antwort: OAuth 2.0 ist ein Autorisierungsframework, das Anwendungen ermöglicht, eingeschränkten Zugriff auf Benutzerkonten in einem HTTP-Dienst (wie Google, Facebook) zu erhalten, ohne das Kennwort des Benutzers preiszugeben.

  • Rollen: Resource Owner (Benutzer), Client (App), Authorization Server, Resource Server (API).
  • Ablauf (Authorization Code Grant):
    1. Benutzer klickt auf "Mit Google anmelden".
    2. Benutzer wird zum Google-Auth-Server umgeleitet.
    3. Benutzer genehmigt den Zugriff.
    4. Google leitet mit einem "Authorization Code" zurück zur App.
    5. App tauscht den Code gegen ein "Access Token" (Back-Channel).
    6. App verwendet das Access Token, um auf die API zuzugreifen.

Seltenheit: Häufig Schwierigkeit: Schwer


25. Was ist JWT (JSON Web Token) und wie unterscheidet es sich von Session Auth?

Antwort:

  • Session Auth: Der Server erstellt eine Sitzung, speichert sie in DB/Cache und sendet eine Sitzungs-ID (Cookie) an den Client. Stateful.
  • JWT: Stateless. Der Server generiert ein Token, das die Identität des Benutzers enthält, und signiert es mit einem geheimen Schlüssel. Der Client speichert das Token und sendet es mit jeder Anfrage. Der Server überprüft die Signatur. Kein DB-Lookup erforderlich.
  • Vorteile von JWT: Skalierbar (stateless), gut für Microservices, mobilfreundlich.
  • Nachteile von JWT: Schwer zu widerrufen (Blacklisting/kurze Ablaufzeit erforderlich), Token-Größe ist größer.

Seltenheit: Sehr Häufig Schwierigkeit: Mittel


26. Was sind die OWASP Top 10 Sicherheitsrisiken? Nennen Sie ein paar.

Antwort: Ein Standard-Awareness-Dokument für Entwickler und Webanwendungssicherheit.

  1. Injection: SQL, NoSQL, OS Injection.
  2. Broken Authentication: Schwache Kennwörter, Session Hijacking.
  3. Sensitive Data Exposure: Daten werden nicht während der Übertragung/im Ruhezustand verschlüsselt.
  4. XML External Entities (XXE): Angriffe gegen XML-Parser.
  5. Broken Access Control: Benutzer agieren außerhalb ihrer beabsichtigten Berechtigungen.
  6. Security Misconfiguration: Standardkonten, ausführliche Fehlermeldungen.
  7. Cross-Site Scripting (XSS): Einschleusen von schädlichen Skripten.

Seltenheit: Häufig Schwierigkeit: Mittel


27. Was ist CI/CD?

Antwort:

  • Continuous Integration (CI): Entwickler führen Codeänderungen häufig in ein zentrales Repository zusammen. Automatisierte Builds und Tests werden ausgeführt, um die Änderungen zu überprüfen. Ziel: Fehler schnell erkennen.
  • Continuous Deployment (CD): Automatisches Bereitstellen von Code in der Produktion nach dem Bestehen von CI.
  • Continuous Delivery: Automatisches Vorbereiten des Codes für die Freigabe, aber eine manuelle Genehmigung kann für den endgültigen Push erforderlich sein.

Seltenheit: Häufig Schwierigkeit: Einfach


28. Erläutern Sie Docker vs. Virtual Machines.

Antwort:

  • Virtual Machines (VM): Virtualisieren die Hardware. Jede VM hat ein vollständiges Betriebssystem (Gastbetriebssystem), einen Kernel und Apps. Schwergewichtig, langsamer Start.
  • Docker (Container): Virtualisieren das Betriebssystem. Container teilen sich den Kernel des Hostbetriebssystems, haben aber isolierte Benutzerbereiche (bins/libs). Leichtgewichtig, schneller Start, portabel.

Seltenheit: Häufig Schwierigkeit: Einfach


29. Was ist Kubernetes?

Antwort: Kubernetes (K8s) ist eine Open-Source-Container-Orchestrierungsplattform. Sie automatisiert die Bereitstellung, Skalierung und Verwaltung von containerisierten Anwendungen.

  • Funktionen:
    • Service Discovery & Load Balancing: Stellt Container bereit.
    • Self-healing: Startet fehlgeschlagene Container neu.
    • Automated Rollouts/Rollbacks: Aktualisiert Apps ohne Ausfallzeiten.
    • Secret & Configuration Management: Verwaltet sensible Daten.

Seltenheit: Mittel Schwierigkeit: Mittel


30. Wie sichern Sie eine Python-Webanwendung?

Antwort:

  1. Input Validation: Bereinigen Sie alle Eingaben (Formulare, API-Bodies, Abfrageparameter).
  2. SQL Injection: Verwenden Sie ORMs oder parametrisierte Abfragen. Niemals String-Verkettung.
  3. XSS: Escapen Sie Benutzerausgaben in Vorlagen (Jinja2 tut dies standardmäßig).
  4. CSRF: Verwenden Sie CSRF-Token für zustandsändernde Anfragen.
  5. Dependencies: Halten Sie Bibliotheken auf dem neuesten Stand (verwenden Sie pip-audit oder Snyk).
  6. HTTPS: Erzwingen Sie SSL/TLS.
  7. Headers: Setzen Sie Sicherheitsheader (HSTS, X-Frame-Options, CSP).
  8. Secrets: Committen Sie niemals Secrets in Git. Verwenden Sie Umgebungsvariablen.

Seltenheit: Häufig Schwierigkeit: Mittel

Newsletter subscription

Wöchentliche Karrieretipps, die wirklich funktionieren

Erhalten Sie die neuesten Einblicke direkt in Ihr Postfach

Decorative doodle

Heben Sie sich bei Recruitern ab und Landen Sie Ihren Traumjob

Schließen Sie sich Tausenden an, die ihre Karriere mit KI-gestützten Lebensläufen transformiert haben, die ATS passieren und Personalverantwortliche beeindrucken.

Jetzt erstellen

Diesen Beitrag teilen

Verdoppeln Sie Ihre Vorstellungsgespräch-Rückrufe

Kandidaten, die ihre Lebensläufe auf die Stellenbeschreibung zuschneiden, erhalten 2,5-mal mehr Vorstellungsgespräche. Nutzen Sie unsere KI, um Ihren Lebenslauf sofort für jede Bewerbung anzupassen.