Interviewfrage für Java-Entwickler

Wie nutzt du Records, sealed Types und Pattern Matching in modernem Java?

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

Kurzantwort

Records sind transparente unveränderliche Träger: du deklarierst die Komponenten und bekommst kanonischen Konstruktor, Accessoren, equals, hashCode und toString. Sealed Interfaces schränken ein, welche Typen sie implementieren dürfen, ein Switch über diese Typen kann also zur Compile-Zeit auf Vollständigkeit geprüft werden, ganz ohne default-Zweig. Record Patterns lassen dich dann im Switch destrukturieren, was eine Kette von instanceof-Casts in ein lesbares Statement verwandelt.

Warum Interviewer das fragen

Das datiert dein Java-Wissen sofort und zeigt, ob du Daten bewusst modellierst. Der Interviewer will hören, dass sealed plus Records dir algebraische Datentypen gibt, dass vollständige Switches einen neuen Subtyp zu einem Compile-Fehler statt zu einer Laufzeitüberraschung machen, und dass ein Record nicht bloß eine kürzere Klasse ist: er ist die Aussage, dass der Wert ein transparentes Aggregat ist.

So baust du deine Antwort auf

  • Definiere jedes Feature in einer Zeile und wie sie zusammenspielen.
  • Erklär Vollständigkeit und warum das fehlende default genau der Punkt ist.
  • Gib ein echtes Modellierungsbeispiel, etwa einen Result- oder Event-Typ.
  • Nenn die Grenzen: Records sind nur flach unveränderlich und nichts für Entities.

Beispielantwort

Gesprochenes Beispiel, erste Person

Ich nutze sie zusammen. Ein sealed Interface deklariert die geschlossene Menge an Fällen, jeder Fall ist ein Record mit eigenen Komponenten, und dann behandelt ein Switch mit Record Patterns sie. Ein Zahlungsergebnis wird also zu einem sealed Interface mit den Records Approved, Declined und Pending, und der Switch destrukturiert jeden davon direkt in seine Felder. Der Compiler erzwingt Vollständigkeit, und das ist der eigentliche Nutzen: fügt jemand einen vierten Fall hinzu, lässt sich jeder Switch über den Typ nicht mehr compilieren, statt still in einen default-Zweig zu fallen und das Falsche zu tun. Records haben mir außerdem korrektes equals und hashCode geschenkt, und ein kompakter Konstruktor ist der natürliche Ort zum Validieren, ein Betrag kann also in keiner existierenden Instanz negativ sein. Die Einschränkungen, die ich nenne: ein Record ist nur flach unveränderlich, ein Record mit einer Liste kann also über diese Liste trotzdem mutiert werden, solange ich sie im Konstruktor nicht kopiere, und sie passen schlecht zu JPA-Entities, die einen parameterlosen Konstruktor und veränderlichen Zustand wollen.

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 validierst du innerhalb eines Records ohne vollständigen Konstruktor?
  • Wann würdest du trotzdem eine normale Klasse statt eines Records schreiben?
  • Was gibt dir eine sealed Hierarchie, was ein Enum nicht gibt?

Weitere Fragen für Java-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

Ü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