Interviewfrage für Softwareentwickler

Wie würdest du einen Rate Limiter für eine öffentliche API entwerfen?

Worauf der Interviewer abzielt, wie du deine Antwort aufbaust und ein gesprochenes Beispiel zum Anpassen.

Kurzantwort

Wähl zuerst die Dimension des Limits, meist den API Key statt der IP, dann einen Algorithmus: Token Bucket, um Bursts zu erlauben, Sliding Window für gleichmäßigere Durchsetzung. Halt die Zähler in einem gemeinsamen Store wie Redis, damit alle Instanzen sich einig sind, mit atomaren Inkrementen und Ablauf. Gib 429 mit einem Retry-After-Header und dem Restkontingent zurück, und fail open, wenn der Limiter selbst nicht verfügbar ist, damit er deine API nicht mit runterreißt.

Warum Interviewer das fragen

Das prüft Systemdenken an einem kleinen, klar abgegrenzten Problem. Der Interviewer will, dass du das Problem des verteilten States benennst, denn Zähler pro Instanz setzen kein globales Limit durch, dazu eine begründete Algorithmuswahl, korrekte HTTP-Semantik bei Ablehnung und operatives Urteilsvermögen dazu, was passiert, wenn der Zähler-Store ausfällt. Es zeigt außerdem, ob du an die Erfahrung des limitierten Clients denkst.

So baust du deine Antwort auf

  • Wähl die Schlüsseldimension und begründe sie.
  • Wähl einen Algorithmus und sag, welches Verhalten er erzeugt.
  • Erklär, wie die Zähler über Instanzen hinweg konsistent bleiben.
  • Definier die Antwort und den Fehlermodus des Limiters selbst.

Beispielantwort

Gesprochenes Beispiel, erste Person

Ich fange damit an, worauf ich limitiere, und bei einer öffentlichen API ist das der API Key, nicht die IP, weil Kunden hinter einem NAT sich nicht gegenseitig ausknocken sollen. Dann der Algorithmus. Token Bucket ist mein Default, weil er einem Client erlaubt, ein bisschen zu bursten, was dazu passt, wie echte Integrationen sich verhalten: Sie wachen auf, feuern zwanzig Requests und sind dann eine Stunde still. Ein Sliding Window Log ist präziser, speichert aber mehr pro Key. Wichtig ist, dass der Zähler geteilt sein muss, denn wenn jede meiner sechs Instanzen ihren eigenen Zähler führt, ist das echte Limit sechsmal so hoch wie angekündigt, also Redis mit atomarem Inkrement und Ablauf, oder ein kleines Lua-Skript, wenn ich Prüfung und Dekrement zusammen brauche. Bei Ablehnung gebe ich 429 mit Retry-After und dem Restkontingent in den Headern zurück, denn ein Client, der sauber zurückstecken kann, hört auf, mich zu hämmern. Und ich mache fail open, denn ein Limiter, der die API mit runterreißt, hat mehr Schaden angerichtet als der Missbrauch, den er verhindert hat.

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 es

Nachfragen, mit denen du rechnen solltest

  • Wie würdest du einem einzelnen Kunden vorübergehend ein höheres Limit geben?
  • Was ändert sich, wenn das Limit am Edge durchgesetzt werden muss?
  • Wie würdest du teure Endpoints anders limitieren?

Weitere Fragen für Softwareentwickler

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

Üb die harten Fragen, bevor sie gestellt werden

Trainier mit einem Live-Copiloten und geh dann vorbereitet rein. Ein $29 Session Pass bringt dich durch das Vorstellungsgespräch, ohne Abo und ohne Bindung.

GhostPilot holen