Eine nützliche JavaScript-Frage sollte ein mentales Modell aufdecken, nicht einen auswendig gelernten Satz belohnen. Verwenden Sie diese Gruppen, um zu üben, was passiert, warum es passiert und wie Sie es überprüfen würden.
Sprachverhalten
- Wie beeinflussen lexikalischer Umfang und die Umfangskette eine Schließung?
- Wann hängt `this` von der Aufrufstelle ab und wann nicht?
- Welche praktischen Bugs kann impliziter Zwang einführen?
- Wie unterstützen Prototypen die Delegation?
- Was ändert sich, wenn ein Modul mehr als einmal bewertet wird?
- Wie wirken sich Eigenschaftsdeskriptoren auf eine API aus?
- Wann wäre ein Symbol nützlich?
- Wie unterscheiden sich flache und tiefe Kopien?
- Was macht zwei Werte bei verschiedenen Gleichheitsoperationen gleich?
- Wie würdest du zeitliche tote Zonen erklären?
Async JavaScript und der Browser
- Beschreiben Sie einen Ereignisschleifenwechsel mit einer Aufgabe und in die Warteschlange gestellten Mikrotasks.
- Wie sollte eine Benutzeroberfläche eine Anfrage stornieren, die nicht mehr relevant ist?
- Was verursacht eine unbehandelte Versprechen Ablehnung?
- Wie würden Sie die Gleichzeitigkeit für eine Reihe von Anfragen einschränken?
- Wie können zwei anrufer eine anfrage während des fluges teilen?.
- Wann ist `Promise.allSettled` nützlicher als `Promise.all`?
- Wie verhindern Sie, dass veraltete Antworten neue Daten ersetzen?
- Was sollte mit einem Cache-Eintrag passieren, nachdem der Loader abgelehnt wurde?
- Wie verhalten sich Timer in einem inaktiven Tab?
- Wo kann in einem Frontend-System Gegendruck auftreten?
Durchführung und Überprüfung
- Debounce mit Stornierung implementieren.
- Implementieren Sie Drosselklappe und erklären Sie ihr führendes und nachlaufendes Verhalten.
- Erstellen Sie einen Event-Emitter mit Abmelde-Unterstützung.
- Erstellen Sie einen Request-Cache mit TTL und In-Flight-Deduplizierung.
- Flache verschachtelte Daten, ohne die Eingabe zu mutieren.
- Schreiben Sie einen Retry-Helfer mit einer expliziten Stopp-Politik.
- Implementieren Sie einen kleinen Task-Scheduler mit einem Parallelitätslimit.
- Normalisieren Sie Serverdaten in ein Entity-Map.
- Erstellen Sie einen Erinnerungshelfer und beschreiben Sie dessen Ungültigkeitsgrenzen.
- Design-Tests für eine Funktion, die von der Zeit abhängt.
Diskussion auf höchster Ebene
- Wo sollte die Laufzeitvalidierung in einem typisierten Frontend sitzen?
- Wie entwickelt man eine Shared Client API, ohne die Verbraucher zu zerstören?
- Was sollte in einem Request Layer beobachtbar sein?
- Wie würden Sie eine lange Aufgabe in der Produktion untersuchen?
- Wann ist ein Webworker gerechtfertigt?
- Wie beeinflussen Bündelgrenzen das Laufzeitverhalten?
- Wie würden Sie einen kontrollierten Funktionsabbau bei Störungen entwerfen?
- Welche Sicherheitsannahmen sollten niemals nur im Client-Code leben?
- Wie macht man Fehlerbehandlung konsistent, ohne den Kontext zu verbergen?
- Welche Browser-Einschränkungen würden Ihre Architektur verändern?
Wie man die Fragen übt
- Antwort in drei Durchgängen: Mechanismus, konkretes Beispiel und Kompromiss.
- Schreiben Sie Code nur nach Angabe des Vertrags und wichtiger Randfälle.
- Überprüfen Sie einen Erfolgsfall, einen Grenzfall und einen Fehlerpfad.
- Zeichne schwache Erklärungen als Übungsthemen auf, anstatt längere Skripte zu merken.
- Beenden Sie, indem Sie benennen, welche Beweise Ihre Entscheidung ändern würden.
Primärquellen
Redaktionelle Überprüfung
Produktaussagen wurden anhand der aktuellen Anwendung geprüft. Haben Sie einen Fehler gefunden? Senden Sie eine Korrektur.