Wie bereite ich mich auf ein JavaScript-Vorstellungsgespräch vor: Der vollständige Leitfaden
\n\nEin JavaScript-Vorstellungsgespräch ist keine Schulprüfung, bei der man nur Antworten auswendig lernen muss. Es ist ein Gespräch, in dem nicht nur deine Syntaxkenntnisse geprüft werden, sondern auch deine Fähigkeit zu denken, die Mechanismen der Sprache zu verstehen und reale Probleme zu lösen. Wenn du das Gefühl hast, dass du bei Closures „schwimmst“, this verwechselst und Angst vor dem Event Loop hast – keine Sorge. Wir haben einen strukturierten Leitfaden erstellt, der dir hilft, dein JavaScript-Interview souverän zu bestehen.
Warum ist die Vorbereitung auf ein JS-Vorstellungsgespräch so schwierig?
\n\nJavaScript ist eine Sprache mit Seele (und manchmal mit Überraschungen). Dieselbe Funktion kann sich je nach Kontext unterschiedlich verhalten. Deshalb wird im JavaScript-Vorstellungsgespräch nicht nur gefragt „was gibt der Code aus“ – man bittet dich zu erklären, warum. Und genau hier scheitern viele. Aber wir bringen dir bei, diese Fallstricke zu erkennen.
\n\n1. Grundlagen, die du auswendig kennen musst
\n\nDatentypen und Typumwandlung
\n\nBeginnen wir mit der Basis. In JavaScript gibt es 7 primitive Typen: string, number, boolean, null, undefined, symbol, bigint – und einen komplexen: object. Die Besonderheit ist, dass typeof null "object" zurückgibt – das ist ein historischer Fehler, den man kennen sollte.
Im JavaScript-Vorstellungsgespräch wird gerne nach impliziter Typumwandlung gefragt. Zum Beispiel:
\n\nconsole.log([] + []); // ""\nconsole.log([] + {}); // "[object Object]"\nconsole.log({} + []); // 0 (in der Browser-Konsole)\n\n\nWarum ist das so? Weil der Operator + versucht, die Operanden in primitive Typen umzuwandeln, indem er toString() oder valueOf() aufruft. Merke dir: Ein leeres Array wird zu einem leeren String, und ein Objekt wird zum String "[object Object]".
Closures und lexikalische Umgebung
\n\nDies ist eines der häufigsten Themen im JavaScript-Vorstellungsgespräch. Ein Closure ist eine Funktion, die sich an Variablen aus ihrem äußeren Gültigkeitsbereich „erinnert“, selbst nachdem die äußere Funktion ihre Ausführung beendet hat.
\n\nfunction createCounter() {\n let count = 0;\n return function() {\n count++;\n return count;\n };\n}\n\nconst counter = createCounter();\nconsole.log(counter()); // 1\nconsole.log(counter()); // 2\n\nIm Vorstellungsgespräch wirst du möglicherweise gebeten, eine solche Funktion zu schreiben oder zu erklären, warum in einer Schleife mit var das klassische Problem auftritt:
for (var i = 0; i < 5; i++) {\n setTimeout(() => console.log(i), 1000);\n}\n// Gibt 5, 5, 5, 5, 5 aus\n\nDie Lösung – verwende let oder wickle es in ein Closure. Erkläre unbedingt, dass var einen funktionalen und keinen blockbezogenen Gültigkeitsbereich hat.
2. „This“ – Schmerz und Freude eines jeden JS-Entwicklers
\n\nFragen zu this sind ein Klassiker. Die Regel ist einfach: Der Wert von this wird dadurch bestimmt, wie die Funktion aufgerufen wird, nicht wo sie deklariert ist.
- \n
- Im globalen Kontext (im Browser) ist
thisdaswindow-Objekt. \n - In einer Methode eines Objekts – das Objekt selbst. \n
- In einer Konstruktorfunktion – eine neue Instanz. \n
- In einer Pfeilfunktion –
thisaus der äußeren lexikalischen Umgebung. \n
Ein Beispiel für das Vorstellungsgespräch:
\n\nconst obj = {\n name: "JS",\n getName: function() {\n return this.name;\n }\n};\n\nconst fn = obj.getName;\nconsole.log(fn()); // undefined (Kontext verloren)\n\nWie behebt man das? Verwende bind, call, apply oder eine Pfeilfunktion.
3. Event Loop und Asynchronität – ein Thema für Profis
\n\nOhne Verständnis des Event Loops wirst du ein mittelschweres JavaScript-Vorstellungsgespräch nicht bestehen. Merke dir die Reihenfolge: Zuerst wird der gesamte synchrone Code ausgeführt (St