Interviewfrage für Softwareentwickler

Wie entscheidest du, was du cachest, und wie handhabst du Invalidierung?

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

Kurzantwort

Cache Daten, die weit öfter gelesen als geändert werden und teuer zu erzeugen sind. Für die Invalidierung bevorzuge eine kurze Time to Live für alles, was leicht veraltet sein darf, und explizite Invalidierung beim Write für alles, was das nicht darf. Nimm alles in den Cache Key auf, was das Ergebnis verändert, inklusive Tenant und Berechtigungen, und behandle den Cache als wegwerfbar: Das System muss korrekt bleiben, wenn er leer ist.

Warum Interviewer das fragen

Caching ist die Quelle von Korrektheitsbugs und Ausfällen gleichermaßen, der Interviewer sucht also nach Urteilsvermögen und nicht nach Redis-Kommandowissen. Er will das Verhältnis von Reads zu Writes als Auswahlkriterium, eine explizite Invalidierungsstrategie, das Bewusstsein, dass Cache Keys Daten zwischen Usern durchsickern lassen können, und die Disziplin, den Cache als Optimierung zu behandeln, ohne die das System überlebt.

So baust du deine Antwort auf

  • Gib das Kriterium: leselastig, teuer, erträglich veraltet.
  • Entscheide zwischen kurzer Time to Live und Invalidierung beim Write.
  • Warn davor, dass Cache Keys Daten zwischen Usern durchsickern lassen.
  • Sag, dass das System mit kaltem Cache funktionieren muss.

Beispielantwort

Gesprochenes Beispiel, erste Person

Ich suche nach drei Eigenschaften: weit öfter gelesen als geschrieben, teuer zu berechnen und tolerant gegenüber leichter Veraltung. Wenn es an der letzten scheitert, etwa ein Kontosaldo, ist es mir lieber langsam und richtig. Bei der Invalidierung ist mein Default eine kurze Time to Live, weil sie sich selbst heilt; wenn ein Bug eine Invalidierung verpasst, löst sich das Problem in sechzig Sekunden statt für immer zu bleiben. Wo Veraltung wirklich nicht akzeptabel ist, invalidiere ich im selben Codepfad wie den Write und nehme die zusätzliche Kopplung in Kauf. Am vorsichtigsten bin ich beim Key. Alles, was das Ergebnis verändert, kommt hinein, vor allem Tenant- oder User-id, denn der schlimmste Caching-Bug, den ich gesehen habe, war eine im CDN gecachte Antwort, die einen personalisierten Header enthielt, und ein Kunde hat kurz den Namen eines anderen Kunden gesehen. Und ich teste immer mit geleertem Cache, denn wenn das System kalt umfällt, ist es kein Cache, sondern eine Abhängigkeit.

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 einen Stampede verhindern, wenn ein heißer Key abläuft?
  • Wo würdest du den Cache platzieren: im Prozess, in Redis oder im CDN?
  • Wie misst du, ob ein Cache tatsächlich hilft?

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