Leite die Bytes nicht durch deine API. Lass den Client eine Presigned Upload URL anfordern, direkt in den Object Storage hochladen, bei großen Dateien mit Multipart Upload, und danach deinen Service benachrichtigen, der das Objekt prüft und die Metadaten schreibt. Validier Content-Type und Größenlimits auf Policy-Ebene, scanne asynchron, bevor die Datei nutzbar wird, und erzeug für Downloads kurzlebige signierte URLs, statt Objekte öffentlich zu machen.
Warum Interviewer das fragen
Es ist eine Designfrage, die viel auf einmal ans Licht bringt: Streaming gegen Puffern, Storage-Wahl, Sicherheit und asynchrone Verarbeitung. Der Interviewer will, dass du das naive Design vermeidest, in dem ein Request-Thread zwei Gigabyte hält, und dass du an Validierung und Wiederaufnahme denkst. Die Sicherheitsnachfragen zum Geltungsbereich der Presigned URL und zu nicht vertrauenswürdigen Dateiinhalten trennen sorgfältige Entwickler von Leuten, die es nur zum Laufen gebracht haben.
So baust du deine Antwort auf
- Halt die Bytes aus deiner Anwendung raus: direkt in den Object Storage.
- Beschreib den Ablauf: Presign, Multipart Upload, Completion-Callback.
- Geh auf Validierung, Virenscan und den Weg zur Nutzbarkeit ein.
- Löse Downloads mit kurzlebigen signierten URLs und Zugriffsprüfungen.
Beispielantwort
Die erste Entscheidung ist, dass die Datei nie durch meine API geht, denn zwei Gigabyte durch einen Request-Handler blockieren einen Worker, kosten Bandbreite doppelt und brechen in dem Moment, in dem eine Verbindung abreißt. Der Client fragt also bei meinem Service eine Presigned Upload URL an, eng auf einen Key, einen Content-Type und eine kurze Gültigkeit begrenzt, und lädt direkt in den Object Storage. Bei dieser Größe nehme ich Multipart Upload, was mir Wiederaufnahme gibt, denn ein fehlgeschlagener Part wird wiederholt statt der ganzen Datei. Ist der Upload fertig, ruft der Client zurück, oder besser, der Storage emittiert ein Event, und mein Service prüft, dass das Objekt existiert und der erwarteten Größe entspricht, bevor er Metadaten schreibt. Die Datei startet in einem Pending-Status und wird erst nach der asynchronen Verarbeitung nutzbar: Scannen, den echten Content-Type aus den Bytes prüfen statt der Endung zu vertrauen, und Thumbnails erzeugen. Downloads laufen über eine kurzlebige signierte URL, ausgestellt nach einer Autorisierungsprüfung, nie über einen öffentlichen Bucket, woher überraschend viele Datenlecks stammen.
Steht dieses Vorstellungsgespräch bald an? GhostPilot hört bei deinem Live-Call mit, erkennt die Frage in dem Moment, in dem sie gestellt wird, und bringt dir eine strukturierte Antwort in Echtzeit auf den Bildschirm. Probier es im nächsten Mock aus, oder hol dir einen $29 Session Pass, kein Abo, für den Ernstfall.
So funktioniert esNachfragen, mit denen du rechnen solltest
- Wie verhinderst du, dass jemand über eine Presigned URL etwas anderes hochlädt?
- Wie gehst du mit einem Client um, der mitten im Upload verschwindet?
- Wie würdest du wiederaufnehmbare Uploads auf einer wackeligen Mobilverbindung unterstützen?
Weitere Fragen für Backend-Entwickler
Dein Interviewer stellt seine eigene Version davon. Kopier deine echte Stellenbeschreibung in den kostenlosen Question Predictor und bekomm die 20 Fragen, die diese Rolle am wahrscheinlichsten stellt, samt dem, worauf jede wirklich abzielt.
Meine Fragen vorhersagen