Interviewfrage für Data Analyst

Wann würdest du eine CTE statt einer Subquery benutzen?

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

Kurzantwort

Nimm eine CTE, wenn Lesbarkeit zählt oder wenn dasselbe Zwischenergebnis mehr als einmal referenziert wird, denn sie benennt einen Schritt, statt ihn zu verschachteln. Für einen einzelnen kleinen Inline-Filter ist eine Subquery völlig in Ordnung. Die Performance ist auf den meisten modernen Engines ungefähr gleich, manche materialisieren CTEs und manche inlinen sie, eine CTE ist also nicht automatisch schneller oder langsamer als die entsprechende verschachtelte Query.

Warum Interviewer das fragen

Das ist halb eine Handwerksfrage und halb ein Mythen-Check, denn genug Kandidaten behaupten selbstbewusst, CTEs seien schneller oder würden immer materialisiert. Der Interviewer will die ehrliche Antwort, dass der Hauptnutzen Lesbarkeit und Wiederverwendung ist, plus das Wissen, dass Engines sie unterschiedlich planen und dass rekursive CTEs Hierarchieprobleme lösen, die eine normale Subquery nicht schafft.

So baust du deine Antwort auf

  • Führ mit Lesbarkeit und Wiederverwendung als den echten Gründen.
  • Korrigier den Mythos, CTEs seien grundsätzlich schneller.
  • Weise auf Unterschiede zwischen Engines bei der Materialisierung hin.
  • Erwähne rekursive CTEs für Hierarchien.
  • Sag, wann eine schlichte Subquery wirklich die bessere Wahl ist.

Beispielantwort

Gesprochenes Beispiel, erste Person

Vor allem wegen Lesbarkeit und Wiederverwendung. Wenn eine Query vier logische Schritte hat, lesen sich vier benannte CTEs wie ein Absatz und ein Reviewer kann der Argumentation folgen, während drei Ebenen verschachtelter Subqueries bedeuten, dass man in der Mitte anfängt und sich nach außen arbeitet. Der andere echte Grund ist, dieselbe Zwischenmenge zweimal zu referenzieren, ohne sie zu wiederholen. Was ich nicht behaupten würde: dass CTEs schneller sind. Dieser Mythos ist überall. Je nach Engine und Version wird eine CTE in den Plan geinlined oder einmal materialisiert, und beides kann das Schnellere sein, abhängig davon, wie oft sie referenziert wird und wie selektiv sie ist. Auf Postgres vor Version 12 waren CTEs ein Optimization Fence, was sie gelegentlich dramatisch langsamer gemacht hat, deshalb schaue ich in den Plan, wenn Performance wirklich zählt. Wo eine CTE einzigartig nützlich ist, ist Rekursion: eine Vorgesetztenhierarchie oder einen Kategoriebaum durchzulaufen ist mit einer rekursiven CTE geradeaus und ohne sie ehrlich unangenehm.

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

  • Was ist eine rekursive CTE und wofür würdest du sie einsetzen?
  • Wie prüfst du, ob eine CTE deinem Query-Plan schadet?
  • Wann schlägt eine temporäre Tabelle eine CTE?

Weitere Fragen für Data Analyst

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