← Alle Themen

Interviewfragen zu JavaScript mit Antworten

Reines JS: Typen, Closures, this, Prototypen, Asynchronität und Event Loop, DOM und Browser-APIs.

225 Fragen fürs Vorstellungsgespräch zu JavaScript mit Antworten und Erklärungen: Level Junior, Middle und Senior. Beispielfragen, Online-Tests und Programmieraufgaben.

Fragen nach Level

Beispielfragen

Ein paar Fragen aus jedem Level mit richtiger Antwort und Erklärung.

JavaScript · Junior

  1. Wie viele Datentypen hat JavaScript laut Spezifikation?
    Antwort zeigen

    Richtige Antwort: 8: sieben primitive Typen und object

    Primitive: number, bigint, string, boolean, null, undefined, symbol. Alles andere ist object, auch Arrays, Funktionen und Datumswerte. Funktionen sind Objekte, auch wenn typeof für sie 'function' liefert.

  2. Was liefert typeof null?
    Antwort zeigen

    Richtige Antwort: 'object'

    Das ist ein historischer Fehler aus der ersten Implementierung der Sprache, der aus Kompatibilitätsgründen geblieben ist. null ist ein eigener primitiver Typ. Man prüft darauf mit strikter Gleichheit: value === null.

  3. Was liefert typeof NaN?
    Antwort zeigen

    Richtige Antwort: 'number'

    NaN (Not-a-Number) ist ein besonderer Wert des Typs number, das Ergebnis einer ungültigen Rechenoperation wie 0 / 0 oder Number('abc'). Man prüft darauf mit Number.isNaN(x).

  4. Wie unterscheidet sich let von var?
    Antwort zeigen

    Richtige Antwort: let gilt im {}-Block, var in der ganzen Funktion

    Ein in einem if oder for deklariertes var ist in der ganzen Funktion sichtbar. Außerdem wird var mit dem Wert undefined gehoistet und auf oberster Ebene zu einer Eigenschaft von window, während let und const bis zur Deklaration in der „Temporal Dead Zone“ liegen.

Alle 75 Fragen mit Antworten →

JavaScript · Middle

  1. Wie unterscheiden sich call, apply und bind voneinander?
    Antwort zeigen

    Richtige Antwort: call/apply rufen sofort auf, bind liefert eine neue Funktion

    fn.call(ctx, a, b) und fn.apply(ctx, [a, b]) rufen sofort mit dem angegebenen this auf. fn.bind(ctx, a) liefert eine Funktion mit dauerhaft gebundenem Kontext und teilweise angewendeten Argumenten. Auf Arrow Functions wirkt keines davon: Sie haben kein eigenes this.

  2. Wie sucht die Engine eine Eigenschaft, die das Objekt selbst nicht hat?
    Antwort zeigen

    Richtige Antwort: Sie geht die Prototypkette hinauf, bis sie die Eigenschaft findet oder null erreicht

    Jedes Objekt hat eine versteckte Verbindung [[Prototype]] (Object.getPrototypeOf). So bekommen Arrays map von Array.prototype und alle Objekte toString von Object.prototype. Die Suche in Gültigkeitsbereichen betrifft Variablen, nicht Eigenschaften.

  3. Was macht Object.create(proto)?
    Antwort zeigen

    Richtige Antwort: Erzeugt ein neues leeres Objekt mit dem Prototyp proto

    Die Eigenschaften von proto werden nicht kopiert - sie sind über die Prototypkette erreichbar. Object.create(null) erzeugt ein Objekt ganz ohne Prototyp: ein praktisches „sauberes“ Wörterbuch ohne geerbte Schlüssel wie toString.

  4. Was sind Klassen in JavaScript eigentlich?
    Antwort zeigen

    Richtige Antwort: Syntax über prototypischer Vererbung mit einigen zusätzlichen Prüfungen

    Klassenmethoden landen in Class.prototype, und extends baut die Prototypkette. Es gibt aber Unterschiede zu Konstruktorfunktionen: Eine Klasse lässt sich nicht ohne new aufrufen, ihr Rumpf läuft im Strict Mode, Methoden sind nicht aufzählbar, und es gibt private #x-Felder und static.

Alle 75 Fragen mit Antworten →

JavaScript · Senior

  1. Wie verarbeitet die Event Loop im Browser Aufgaben?
    Antwort zeigen

    Richtige Antwort: Eine Macrotask, dann die ganze Microtask-Warteschlange, dann eventuell ein Rendering

    Nach jeder Macrotask (Skript, Event, Timer) wird die Microtask-Warteschlange komplett geleert, auch mit unterwegs hinzugefügten Microtasks. Dann kann der Browser das Rendering aktualisieren (und requestAnimationFrame aufrufen), wenn es Zeit für einen Frame ist. Deshalb blockiert auch eine lange Kette von Microtasks das Rendering.

  2. Wie verfolgt man im Browser global unbehandelte Ablehnungen von Promises?
    Antwort zeigen

    Richtige Antwort: Das Event unhandledrejection an window

    window.addEventListener('unhandledrejection', e => report(e.reason)) ist der übliche Weg, solche Fehler an ein Monitoring zu senden. Synchrone unbehandelte Fehler fängt das Event error an window. Eine Methode Promise.onError gibt es nicht.

  3. Was macht for await...of?
    Antwort zeigen

    Richtige Antwort: Läuft über ein asynchrones Iterable und wartet auf jeden Wert

    Es funktioniert mit Objekten, die Symbol.asyncIterator haben: asynchrone Generatoren, Streams (ReadableStream), API-Paginierung. Die Iterationen laufen nacheinander. Um ein Array von Promises parallel zu verarbeiten, nutzt man Promise.all.

  4. Wofür wird Proxy verwendet?
    Antwort zeigen

    Richtige Antwort: Um Operationen an einem Objekt abzufangen: Lesen, Schreiben, Löschen

    Traps wie get, set, has und deleteProperty erlauben Reaktivität (so funktioniert Vue 3), Validierung, Logging und Standardwerte. Reflect liefert das Standardverhalten der Operationen zur Verwendung in Traps.

Alle 75 Fragen mit Antworten →

Kombinierte Tests mit diesem Thema

Fragen aus mehreren Themen auf einmal, wie im Vorstellungsgespräch für eine konkrete Stelle.

Programmieraufgaben

Schreib die Lösung direkt im Browser, und Tests prüfen sie sofort. Klassiker aus Vorstellungsgesprächen zu JavaScript (debounce, deepClone, Promise.all, LRU-Cache), zu TypeScript (Generics, Narrowing und Utility Types, geprüft von einem echten Compiler), Backend-Logik in Node.js (Middleware, Rate Limits, Job-Queues), SQL-Abfragen in echtem PostgreSQL und zu React: Komponenten und Hooks wie eine Aufgabenliste, Tabs, useDebounce und useInterval.

Aufgaben öffnen →