Interviewfrage für Softwareentwickler

Du erbst einen Service ohne Tests und musst seine Kernlogik ändern. Wie gehst du das an?

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

Kurzantwort

Nagel das aktuelle Verhalten fest, bevor du es änderst. Schreib Characterization Tests an einer stabilen Grenze, füttere echte Eingaben und assertiere, was der Code heute tut, Bugs inklusive, damit du ein Netz hast, das Änderungen erkennt. Dann refactore in kleinen Schritten mit grünen Tests und zieh die Logik, die du anfassen musst, in etwas Testbares heraus. Erst wenn die Naht existiert, änderst du Verhalten, und jede Änderung bekommt ihren eigenen Test.

Warum Interviewer das fragen

Der Großteil der Arbeit passiert an Code, den du nicht geschrieben hast, und das zeigt, ob du losstürmst oder zuerst Sicherheit baust. Interviewer hören auf Characterization Tests, auf das Testen an einer stabilen Grenze statt Unit Tests auf Implementierung, die du gleich löschst, und auf die Trennung von Refactoring und Verhaltensänderung, damit du bei einem Fehler sofort weißt, welches von beiden es war.

So baust du deine Antwort auf

  • Weiger dich, ungetestete Logik ohne Netz zu ändern.
  • Schreib zuerst Characterization Tests an der API-Grenze.
  • Trenn Refactoring von Verhaltensänderung.
  • Nutz echte Produktionsdaten zur Validierung.

Beispielantwort

Gesprochenes Beispiel, erste Person

Ich ändere keine Logik, die ich nicht verifizieren kann, Schritt eins ist also ein Netz. Ich schreibe Characterization Tests an der höchsten stabilen Grenze, meist dem HTTP-Handler oder einem Service-Einstiegspunkt, und ich assertiere, was der Code gerade tut, inklusive Dingen, die ich für Bugs halte. Der Punkt ist nicht Korrektheit, sondern Änderungen zu erkennen. Wenn ich Produktionszugriff habe, nehme ich ein paar hundert echte Request-Response-Paare auf, denn handgebaute Eingaben verfehlen die schrägen Fälle, und die schrägen Fälle sind es, die kaputtgehen. Dann refactore ich in kleinen Schritten mit durchgehend grünen Tests und ziehe die Logik, die ich wirklich anfassen muss, in eine Funktion, die ich direkt aufrufen kann. Erst dann ändere ich Verhalten, und jede Änderung kommt mit einem echten Test plus einer Entscheidung darüber, ob das alte Verhalten Absicht war. Bei einem Legacy-Pricing-Service habe ich genau das gemacht, und der aufgenommene Traffic hat zwei Rundungspfade offengelegt, die sich widersprochen haben und von denen niemand wusste. Genau so etwas findest du mit einem Netz und zerstörst du ohne.

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 gehst du mit einem Bug um, auf den Kunden sich inzwischen verlassen?
  • Würdest du den alten und den neuen Pfad parallel laufen lassen?
  • Wie verhinderst du, dass der Refactor im Scope explodiert?

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