Interviewfrage für Frontend-Entwickler

Product will eine Tabelle mit fünfzigtausend Zeilen inklusive Sortierung und Inline-Editing. Wie würdest du das bauen?

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

Kurzantwort

Pack keine fünfzigtausend Zeilen ins DOM. Virtualisiere, sodass nur das sichtbare Fenster plus ein kleiner Overscan gerendert wird, halt die Zeilenhöhe vorhersagbar oder miss sie, und zieh Sortieren und Filtern aus dem Render heraus in memoisierte abgeleitete Daten oder auf den Server. Paginiere oder streame die Daten selbst, halt den Zustand der bearbeiteten Zeile lokal, damit ein Tastendruck nicht die Tabelle neu rendert, und teste mit gedrosselter CPU.

Warum Interviewer das fragen

Das prüft, ob du verstehst, wo die Kosten wirklich liegen: DOM-Knotenzahl, Layout und das Neurendern der ganzen Liste bei jedem Tastendruck. Der Interviewer will sehen, dass du das Datenproblem vom Rendering-Problem trennst und an Barrierefreiheit und Tastaturverhalten denkst, was naive Virtualisierung kaputtmacht. Direkt zu einer gepflegten Bibliothek zu greifen ist eine gute Antwort, wenn du erklären kannst, was sie für dich tut.

So baust du deine Antwort auf

  • Sag, dass die DOM-Knotenzahl die Grenze ist, und virtualisiere.
  • Trenn das Datenthema vom Rendering-Thema.
  • Halt den Edit-Zustand lokal, damit Tippen nicht alles neu rendert.
  • Benenn die Abstriche bei Barrierefreiheit und Suche, die Virtualisierung erzeugt.

Beispielantwort

Gesprochenes Beispiel, erste Person

Das Erste, was ich sage, ist, dass fünfzigtausend Zeilen nie gleichzeitig im DOM sein sollten, weil Layout und Speicher mit der Knotenzahl skalieren, egal wie schnell mein Framework ist. Ich virtualisiere also: die Zeilen im Viewport plus ein kleiner Overscan werden gerendert, absolut positioniert in einem Spacer mit der Gesamthöhe, und beim Scrollen recycelt. Danach behandle ich die Daten als eigenes Problem. Fünfzigtausend Datensätze bei jedem Tastendruck zu sortieren und zu filtern blockiert den Main Thread, entweder macht es also der Server und ich hole eine Seite, oder ich memoisiere das abgeleitete Array, damit es nur neu berechnet wird, wenn sich der Sortierschlüssel wirklich ändert. Für Inline-Editing halte ich den Entwurfswert im State der Zeile selbst und hebe ihn erst beim Commit hoch, sonst rendert jedes Zeichen die Tabelle neu. Was gern vergessen wird, sind Barrierefreiheit und die Seitensuche: Screenreader und die Browser-Suche sehen nur gerenderte Zeilen, ich setze also die Zeilenanzahl-Attribute explizit und baue ein echtes Suchfeld, statt mich auf das des Browsers zu verlassen.

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 Zeilen variabler Höhe um?
  • Was geht bei der Tastaturnavigation in einer virtualisierten Tabelle kaputt?
  • Wann würdest du das Sortieren stattdessen auf den Server schieben?

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