Heim >Web-Frontend >js-Tutorial >Wichtige Fragen im JavaScript-Interview, die Sie kennen sollten

Wichtige Fragen im JavaScript-Interview, die Sie kennen sollten

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-06 01:39:40148Durchsuche

Essential JavaScript Interview Questions You Should Know

Als jemand, der durch zahlreiche JavaScript-Interviews navigiert ist, habe ich eine Liste mit wesentlichen Fragen zusammengestellt, die meine Fähigkeiten und mein Verständnis der Kernkonzepte auf die Probe stellten. In diesem ersten Teil der Serie teile ich 40 Fragen, mit denen ich persönlich konfrontiert war, und decke alles ab, von Grundlagen bis hin zu wichtigen Interviewthemen.

Diese Fragen sind nicht nur theoretisch; Sie fordern Sie heraus, Ihr praktisches Wissen und Ihre Problemlösungsfähigkeiten unter Beweis zu stellen. Egal, ob Sie sich auf eine Front-End- oder Full-Stack-Rolle vorbereiten, diese Fragen werden Ihnen helfen, Ihre Fähigkeiten zu verbessern.

Chalo Shuru karte hai!

1. Ist JavaScipt eine Sprache vom dynamischen Typ oder vom Typ Variable?

Antwort: JavaScript ist eine dynamisch typisierte Sprache, was bedeutet, dass sich Variablentypen zur Laufzeit ändern können, anstatt zur Kompilierungszeit festgelegt zu werden.

2. Wie senden Sie HTTP-Anfragen an das Backend?

Antwort: Fetch API, Axios, XMLHttpRequest

3. Was ist der Ausführungskontext?

Antwort: In JavaScript ist der Ausführungskontext die Umgebung, in der Code ausgeführt wird und entscheidet, welche Variablen, Objekte und Funktionen zur Verwendung verfügbar sind. Jedes Mal, wenn eine Funktion ausgeführt wird, wird ein neuer Ausführungskontext nur für diese Funktion erstellt, der seine eigenen Variablen und seinen eigenen Bereich enthält.

Jeder Ausführungskontext besteht aus zwei Hauptphasen:

  1. Speichererstellungsphase: JavaScript scannt zunächst den Code und weist Speicher für Variablen und Funktionen zu.
  2. Ausführungsphase: Der Code wird Zeile für Zeile ausgeführt.

4. Was ist eine lexikalische Umgebung?

Antwort: Eine lexikalische Umgebung in JavaScript ist eine Datenstruktur, die im aktuellen Bereich definierte Variablen und Funktionen sowie Verweise auf alle äußeren Bereiche speichert. Er wird auch als lexikalischer Geltungsbereich bezeichnet.

5. Was ist der Unterschied zwischen null und undefiniert?

Antwort: null: Ein Zuweisungswert, der bedeutet, dass eine Variable auf kein Objekt zeigt, was zeigt, dass sie keinen spezifischen Wert hat.

undefiniert: Bedeutet, dass eine Variable deklariert ist, aber keinen zugewiesenen Wert hat, was bedeutet, dass der Variablen selbst ein Wert fehlt.

Typ von Null ist Objekt.
Der undefinierte Typ ist undefiniert.

6. Wie geht JavaScript mit dem Speicher um?

Antwort: JavaScript verwaltet den Speicher hauptsächlich durch automatische Speicherbereinigung, was bedeutet, dass es während der Codeausführung automatisch Speicher zuweist und freigibt.

7. Ereignisschleife erklären?

Antwort: JavaScript ist eine Single-Threaded-Sprache, was bedeutet, dass sie jeweils nur eine Aufgabe innerhalb eines einzigen Aufrufstapels ausführen kann. Trotz dieser Single-Thread-Natur ist JavaScript jedoch dank der Ereignisschleife in der Lage, asynchrone, nicht blockierende Vorgänge auszuführen.

Die Ereignisschleife ist ein grundlegender Mechanismus in JavaScript, der asynchrone Vorgänge verarbeitet. Wenn eine Aufgabe, beispielsweise eine HTTP-Anfrage oder ein DOM-Ereignis, initiiert wird, wird sie an Browser-APIs übergeben.

Die Ereignisschleife überwacht kontinuierlich den Aufrufstapel und die Aufgabe
Warteschlangen. Wenn der Aufrufstapel leer ist, prüft die Ereignisschleife zunächst das
Die Mikrotask-Warteschlange sucht nach ausstehenden Aufgaben und führt diese aus.

Sobald die Mikrotask-Warteschlange leer ist, überprüft die Ereignisschleife die Makrotask-Warteschlange und verschiebt Aufgaben von dort zur Ausführung in den Aufrufstapel. Dieser Prozess stellt sicher, dass Aufgaben mit hoher Priorität (Mikrotasks) vor Aufgaben mit niedrigerer Priorität (Makrotasks) ausgeführt werden.

8. Heben und temporäre Totzone?

Antwort: Hoisting ist eine JavaScript-Funktion, die es Ihnen ermöglicht, Variablen und Funktionen zu verwenden, bevor sie deklariert werden. Das bedeutet, dass Sie Variablen und Funktionen verwenden können, bevor sie in Ihrem Code definiert werden. Das Hochziehen erfolgt durch die JavaScript-Engine, die die Deklaration von Variablen und Funktionen an den Anfang ihres "Geltungsbereichs" verschiebt.

In JavaScript führt die JavaScript-Engine vor der Ausführung von Code eine Speichervorbereitungsphase durch, die als Heben bezeichnet wird. Während dieser Phase reserviert die Engine Speicher für Variablen und Funktionen.

Funktionsdeklarationen sind vollständig hochgezogen, was bedeutet, dass sie an einer beliebigen Stelle innerhalb ihres Gültigkeitsbereichs aufgerufen werden können, sogar vor ihrer eigentlichen Deklarationszeile.

Variablen, die mit var deklariert wurden, werden mit undefiniert angehoben und initialisiert. Das bedeutet, dass Sie auf var-Variablen vor ihrer Deklaration zugreifen können, ihr Wert jedoch undefiniert ist.

Andererseits: Mit let und const deklarierte Variablen werden ebenfalls gehisst, bleiben aber nicht initialisiert. Der Zugriff auf sie vor ihrer Deklaration im Code führt zu einem ReferenceError.

Temporale Totzone:

Dieser Zeitraum zwischen dem Start des Blocks und der tatsächlichen Deklaration einer let- oder const-Variablen wird als Temporal Dead Zone (TDZ) bezeichnet. Die TDZ existiert vom Anfang des Blocks bis zur Zeile, in der die Variable deklariert und initialisiert wird.

Temporale Totzone ist ein Konzept in JS, das sich auf let- und const-Deklarationen bezieht. Variablen mit let- oder const-Deklarationen werden an die Spitze ihres Gültigkeitsbereichs gehoben, sind jedoch nicht sofort im Code verfügbar. Das bedeutet, dass Sie eine Variable verwenden können, bevor sie deklariert wird, der Wert der Variablen jedoch undefiniert bleibt, bis ihr ein Wert zugewiesen wird.

9. Umfang und Umfangskette?

Antwort: Der Bereich regelt die Zugänglichkeit von Variablen in verschiedenen Teilen des Codes. Es bestimmt, wo auf eine Variable zugegriffen werden kann und
wo es nicht kann.

Es gibt drei Arten von Bereichen:

Globaler Geltungsbereich: Im globalen Geltungsbereich deklarierte Variablen können
sein Zugriff von überall im Code.
Lokaler Geltungsbereich: Innerhalb einer Funktion deklarierte Variablen sind nur
innerhalb dieser Funktion zugänglich.
Blockbereich: Variablen, die innerhalb eines Blocks deklariert werden (wie innerhalb von Curly
). Klammern {}) sind nur innerhalb dieses Blocks zugänglich.

Scope-Kette:

Scope-Kette bedeutet eine Kette von Referenzen. JavaScript gibt nicht auf; Es verfügt über einen Suchmechanismus für Variablen. Es wird weiter nach der Variablen gesucht. Zunächst wird im lokalen Bereich überprüft, ob auf die Variable zugegriffen werden kann. Wenn nicht, wird im äußeren Bereich gesucht. Es wird so lange fortgesetzt, bis es den globalen Geltungsbereich oder den globalen Ausführungskontext erreicht. Diese kontinuierliche Suche nach einer Variablen während der Kette wird als Bereichsverkettung bezeichnet. Der Ausführungskontext sucht immer vom inneren Bereich zum äußeren Bereich, kann jedoch nicht vom äußeren Bereich zum inneren Bereich wechseln.

10. Prototypische Vererbung?

Antwort: Verknüpfen von Prototypen eines übergeordneten Objekts mit einem untergeordneten Objekt, um Eigenschaften der übergeordneten Klasse zu teilen und zu nutzen. Das bedeutet, dass Eigenschaften und Methoden durch den Prototyp von einem Objekt auf ein anderes übertragen werden können.

Zum Beispiel sind Methoden wie .join und .length Teil der prototypischen Vererbung, da diese Eigenschaften aus der Hauptobjektklasse in JavaScript stammen und in Ihren Objekten verfügbar sind.

In JavaScript ist alles ein Objekt, sodass Objekte Eigenschaften gemeinsam nutzen können. Das bedeutet, dass Arrays Methoden von Objekten verwenden können und Strings dasselbe tun können.

let faang = {
    name: "google",
    salary: function(){
        console.log("100K Salary")
    }
}
let engineer = {
    employeeId: 1278,
    role: function(){
        console.log("Frontend Developer")
    }
}

Ältere Art:

engineer.__proto__ = faang;

Neuer Weg:

let engineer = Object.create(faang, {
    role: function(){
        console.log("Backend Developer")
    }
})

Object.setPrototypeOf(engineer, faang);

// let res = Object.getPrototypeOf(faang);

11. Versprechen in JavaScript erklären?

Antwort: Versprechen sind eine Möglichkeit, asynchrone Vorgänge in JavaScript abzuwickeln. Sie ermöglichen das Schreiben von Code, der asynchron ausgeführt werden kann, ohne den Hauptthread zu blockieren. Versprechen werden mit dem Promise-Konstruktor erstellt und können mit der then-Methode miteinander verkettet werden.

Ein Versprechen in JavaScript fungiert als Platzhalter, der in Zukunft aufgelöst oder abgelehnt werden kann.

Versprechen haben drei Zustände: ausstehend, erfüllt und abgelehnt. Wenn ein Versprechen aussteht, bedeutet dies, dass der asynchrone Vorgang noch ausgeführt wird. Wenn ein Versprechen erfüllt ist, bedeutet dies, dass der asynchrone Vorgang erfolgreich abgeschlossen wurde. Wenn ein Versprechen abgelehnt wird, bedeutet dies, dass der asynchrone Vorgang fehlgeschlagen ist.

Umgang mit Versprechen

Versprechen stellen Methoden bereit, um das Ergebnis des asynchronen Vorgangs zu verarbeiten:

.then(): Wird verwendet, um den erfüllten Zustand zu verarbeiten und das aufgelöste
zu erhalten Wert.
.catch(): Wird verwendet, um den abgelehnten Status zu verarbeiten und alle Fehler abzufangen
das geschah während der Hinrichtung.
.finally(): Diese Methode führt einen Rückruf aus, wenn das Versprechen
ist abgewickelt, was bedeutet, dass es ausgeführt wird, unabhängig davon, ob das Versprechen erfüllt wird oder
abgelehnt.

12. Erklären Sie Async Await?

Antwort: Async/await ist eine Syntaxfunktion in JavaScript, die es Ihnen ermöglicht, asynchronen Code synchroner zu schreiben. Es verwendet die Schlüsselwörter „async“ und „await“, um asynchrone Funktionen zu definieren

In JavaScript gibt die asynchrone Funktion ein Versprechen zurück. Das Schlüsselwort „await“ unterbricht die Ausführung der asynchronen Funktion, bis das erwartete Versprechen aufgelöst wird. Nach dem Warten gelangt der Rest der asynchronen Funktion in die Mikrotask-Warteschlange. Dies ermöglicht einen besser lesbaren und verwaltbaren asynchronen Code.

let faang = {
    name: "google",
    salary: function(){
        console.log("100K Salary")
    }
}

13. Erklären Sie dieses Schlüsselwort?

Antwort: Das Schlüsselwort „this“ bezieht sich auf das Objekt, das gerade die Funktion ausführt. Sein Wert hängt vom Kontext ab, in dem die Funktion aufgerufen wird. Im globalen Kontext (z. B. in einem Browser) bezieht sich dies auf das Fensterobjekt

14. Geschlossenheit und lexikalischen Geltungsbereich erklären?

Antwort: Abschlüsse sind Funktionen, die Zugriff auf Variablen aus ihrem äußeren Bereich haben, auch nachdem die Ausführung der äußeren Funktion abgeschlossen ist.

Hier ist ein Beispiel für einen Abschluss in JavaScript:

let engineer = {
    employeeId: 1278,
    role: function(){
        console.log("Frontend Developer")
    }
}

In diesem Beispiel definiert die Funktion „outerFunction“ eine Variable „outerVariable“ und eine Funktion „innerFunction“, die Zugriff auf „outerVariable“ hat. Die innerFunction gibt die OuterFunction-Funktion zurück, wodurch sie später aufgerufen werden kann.

Ein DOM-bezogenes Beispiel für einen Abschluss ist die addEventListener-Methode. Mit der Methode addEventListener können Sie Ereignis-Listener an Elemente im DOM anhängen. Die Ereignis-Listener-Funktion hat Zugriff auf die Eigenschaften und Methoden des Elements, auch nachdem das Element aus dem DOM entfernt wurde.

Hier ist ein Beispiel für die Verwendung der addEventListener-Methode mit einem Abschluss:

engineer.__proto__ = faang;

In diesem Beispiel ist die handleClick-Funktion innerhalb der addEventListener-Methode definiert. Die Funktion handleClick hat Zugriff auf das Schaltflächenelement, auch nachdem das Schaltflächenelement aus dem DOM entfernt wurde.

Lexikalischer Geltungsbereich:

In JavaScript ist der lexikalische Bereich das Konzept der Bestimmung des Bereichs einer Variablen basierend auf ihrer Deklaration. Das bedeutet, dass der Gültigkeitsbereich einer Variablen durch den Codeblock in
bestimmt wird durch den es deklariert wird, nicht durch den Codeblock, in dem es verwendet wird.

15. Ist Javascript Single-Threaded oder Multi-Threaded?

Antwort: JavaScript ist eine Single-Threaded-Sprache, das heißt, sie verfügt über einen Aufrufstapel und einen Speicherheap. Es führt den Code der Reihe nach aus und vervollständigt einen Teil des Codes, bevor mit dem nächsten fortgefahren wird. Diese Struktur ermöglicht es JavaScript, asynchrone Vorgänge abzuwickeln, ohne den Hauptthread zu blockieren.

Asynchrones Verhalten ermöglicht uns die Nutzung von Funktionen wie setTimeout, AJAX und Promises. Diese Funktionen werden vom Browser verwaltet, nicht von JavaScript selbst, was dazu beiträgt, dass der Hauptthread frei bleibt, um anderen Code auszuführen, während er auf den Abschluss dieser Vorgänge wartet.

16. Erklären Sie, wie Javascript-Engines funktionieren?

Antwort: JavaScript-Engines sind Programme, die JavaScript-Code ausführen. Sie finden sich in Webbrowsern und anderen Umgebungen, die JavaScript hosten. Die beliebtesten JavaScript-Engines sind Googles V8, SpiderMonkey und JavaScriptCore. Diese Engines sind in C geschrieben und werden zum Ausführen von JavaScript-Code verwendet.

17. Unterschied zwischen var, let und const?

Antwort:

-var: Der Gültigkeitsbereich einer mit dem Schlüsselwort „var“ definierten Variablen ist auf die „Funktion“ beschränkt, innerhalb derer sie definiert ist. Wenn sie außerhalb einer Funktion definiert ist, ist der Gültigkeitsbereich der Variablen global. Der Standardwert von var ist undefiniert.

  • let: Der Gültigkeitsbereich einer mit dem Schlüsselwort „let“ oder „const“ definierten Variablen ist auf den durch geschweifte Klammern definierten „Block“ beschränkt, d. h. {}. Der Standardwert von let ist nicht initialisiert.
  • const: Der Gültigkeitsbereich einer mit dem Schlüsselwort „const“ definierten Variablen ist auf den durch geschweifte Klammern definierten Block beschränkt. Wenn eine Variable jedoch mit dem Schlüsselwort const definiert ist, kann sie nicht neu zugewiesen werden. Der Standardwert von const ist nicht initialisiert.

18. Verschiedene Arten von Datentypen in Javascript?

Antwort: In JavaScript gibt es hauptsächlich zwei Arten von Datentypen: primitive Datentypen und Objektdatentypen (Referenzdatentypen).

Primitive Datentypen sind die grundlegenden Datentypen in JavaScript. Dazu gehören Zahlen, Zeichenfolgen, boolesche Werte, null und undefiniert. Symbole sind ebenfalls primitive Datentypen, die eindeutige Bezeichner darstellen.

Objektdatentypen sind Datentypen, die andere Datentypen enthalten. Sie werden mithilfe von Objektliteralen oder Konstruktorfunktionen erstellt. Objekte, Arrays und Funktionen sind Beispiele für Objektdatentypen.

19. Rückruf besprechen?

Antwort: Callback-Funktionen sind Funktionen, die als Argumente an andere Funktionen übergeben und aufgerufen werden, wenn ein bestimmtes Ereignis eintritt. Sie werden in JavaScript häufig verwendet, um asynchrone Vorgänge abzuwickeln, z. B. das Senden von HTTP-Anfragen oder das Lesen aus einer Datei.

20. Callback Hell besprechen?

Antwort: Callback Hell ist ein Problem in JavaScript, bei dem Funktionen ineinander verschachtelt sind, was das Lesen und Verstehen des Codes erschwert. Es kann dazu führen, dass Rückrufe mehrmals oder gar nicht aufgerufen werden, was zu unerwartetem Verhalten führen kann.

Hier ist ein Beispiel für die Rückrufhölle:

let faang = {
    name: "google",
    salary: function(){
        console.log("100K Salary")
    }
}

21. Wie erstelle ich ein Objekt in Javascript?

Antwort: Objekte sind ein grundlegender Datentyp in JavaScript. Sie können mithilfe von Objektliteralen oder Konstruktorfunktionen erstellt werden.

Objektliterale werden in geschweifte Klammern {} eingeschlossen und werden zum Erstellen von Objekten mit Schlüssel-Wert-Paaren verwendet. Hier ist ein Beispiel für ein Objektliteral:

let engineer = {
    employeeId: 1278,
    role: function(){
        console.log("Frontend Developer")
    }
}

Konstruktorfunktionen werden verwendet, um Objekte mit benutzerdefinierten Eigenschaften und Methoden zu erstellen:

engineer.__proto__ = faang;

Obwohl es auch andere Möglichkeiten zum Erstellen von Objekten gibt, beispielsweise die Verwendung der Methode Object.create(), sind Objektliterale und Konstruktorfunktionen die gebräuchlichsten Methoden zum Erstellen von Objekten in JavaScript.

22. Wie klone ich ein Objekt in JavaScript?

Antwort:

  1. Verwenden von Object.assign():
let engineer = Object.create(faang, {
    role: function(){
        console.log("Backend Developer")
    }
})

Object.setPrototypeOf(engineer, faang);

// let res = Object.getPrototypeOf(faang);

  1. Verwendung des Spread-Operators:
async function fetchData() {
  try {
    const response = await fetch('https://api.freeapi.app/v1/jokes/random');
    const data = await response.json();
    console.log(data);
  } catch (error) {
    console.error(error);
  }
}

fetchData()
  .then(() => console.log('Data fetched'))
  .catch(error => console.error(error));

23. Was sind Rest- und Spread-Operatoren in Javascript?

Antwort: Rest- und Spread-Operator sind zwei wichtige Funktionen in JavaScript, die es Ihnen ermöglichen, präziser und lesbarer mit Arrays und Objekten zu arbeiten.

Mit dem Rest-Operator können Sie ein Array oder ein Objekt als Argument verwenden und es in einem Funktionsaufruf verwenden.

Mit dem Spread-Operator können Sie ein Array oder ein Objekt in einzelne Elemente erweitern.

function outerFunction() {
  const outerVariable = 'I am an outer variable';

  function innerFunction() {
    console.log(outerVariable); // Output: I am an outer variable
  }

  return innerFunction;
}

const closure = outerFunction();
closure(); // Output: I am an outer variable

In diesem Beispiel verwendet die Summenfunktion mithilfe des Restoperators ein Array von Zahlen als Argument.
Mit dem Spread-Operator wird das Array in einzelne Elemente erweitert, die dann an die Reduce-Funktion übergeben werden.

24. Was ist eine Funktion höherer Ordnung in Javascript?

Antwort: Funktionen höherer Ordnung sind Funktionen, die andere Funktionen als Argumente verwenden oder Funktionen als Ergebnisse zurückgeben. Sie sind ein leistungsstarkes Tool in JavaScript, mit dem Sie flexibleren und wiederverwendbareren Code schreiben können.

const button = document.getElementById('myButton');

function handleClick() {
  console.log('Button clicked');
}

button.addEventListener('click', handleClick);

25. Nennen Sie einige Funktionen von ES6 in Javascript.

Antwort: Hier sind einige der wichtigsten Funktionen von ES6:

  • Pfeilfunktionen: Pfeilfunktionen bieten eine prägnantere Syntax zum Schreiben von Funktionen. Sie werden mit dem Befehl => definiert. Betreiber.
  • Vorlagenliterale: Mit Vorlagenliteralen können Sie Ausdrücke in Zeichenfolgen einbetten. Sie sind in Backticks (`) eingeschlossen und können zum Erstellen mehrzeiliger Zeichenfolgen verwendet werden.
  • Destrukturierende Zuweisung: Durch die destrukturierende Zuweisung können Sie Werte aus Arrays oder Objekten extrahieren und sie Variablen zuweisen. Dies geschieht mit dem =-Operator.
  • Spread-Operator: Mit dem Spread-Operator können Sie ein Array oder ein Objekt in einzelne Elemente erweitern. Es wird verwendet, um mehrere Argumente an eine Funktion zu übergeben.
  • Klassen: Klassen bieten eine Möglichkeit, Objekte mit Eigenschaften und Methoden zu definieren. Sie werden mit dem Schlüsselwort class definiert.
  • Module: Mit Modulen können Sie Ihren Code in separate Dateien aufteilen und Funktionen zwischen ihnen importieren/exportieren. Sie werden mithilfe der Schlüsselwörter import und export definiert.
  • Versprechen: Versprechen bieten eine Möglichkeit, asynchrone Vorgänge in JavaScript abzuwickeln. Sie werden verwendet, um den eventuellen Abschluss oder Misserfolg eines asynchronen Vorgangs darzustellen.
  • Generatoren: Mit Generatoren können Sie Funktionen definieren, die angehalten und fortgesetzt werden können. Sie werden mit dem Funktionsschlüsselwort definiert.
  • Maps und Sets: Maps und Sets sind Datenstrukturen, mit denen Sie Schlüssel-Wert-Paare speichern können. Sie werden mithilfe der Map- und Set-Konstruktoren definiert.

Warum diese Fragen wichtig sind

Diese Fragen spiegeln die Kernkonzepte wider, die mir während meiner Interviews begegnet sind. Sie sollen Ihr Verständnis von JavaScript in realen Szenarien testen.

Bereiten Sie sich auf ein JavaScript-Interview vor? Gehen Sie diese Fragen noch einmal durch und üben Sie Ihre Antworten. Für eine tiefergehende Lernerfahrung schauen Sie sich meine Kurse auf quicknxt.com an, um praktisches Wissen zu erwerben und Ihre Programmierkenntnisse zu verbessern. Lasst uns gemeinsam weiter lernen!

Das obige ist der detaillierte Inhalt vonWichtige Fragen im JavaScript-Interview, die Sie kennen sollten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn