Heim > Web-Frontend > js-Tutorial > 5 Typische JavaScript -Interviewübungen

5 Typische JavaScript -Interviewübungen

Joseph Gordon-Levitt
Freigeben: 2025-02-21 09:23:10
Original
251 Leute haben es durchsucht

5 Typical JavaScript Interview Exercises

Kernpunkte

  • Fragen zu JavaScript -Interviews drehen sich normalerweise darum, Schlüsselkonzepte wie Umfang zu verstehen, native Methoden, Promotion, this Schlüsselwörter und call() und apply() -Funktionen zu erstellen.
  • In JavaScript ist es entscheidend, den Kontext einer Funktion zu verstehen und wie man sie nennt. Das Schlüsselwort this bezieht sich auf den Kontext, der je nach Funktion als Teil eines Objekts oder als eigenständige Funktion variiert.
  • Erhöhung im JavaScript bezieht sich auf den Prozess, in dem Variablen und Funktionen auf die Spitze ihres Containment -Bereichs verschoben werden. Während die Funktion ihren Anfangswert beibehält, ist die Variable nicht und wird zunächst auf undefined eingestellt.

JavaScript -Entwickler sind im IT -Bereich sehr beliebt. Wenn diese Rolle Ihr Wissen am besten widerspiegelt, haben Sie viele Möglichkeiten, Ihr Arbeitsunternehmen zu verändern und Ihr Gehalt zu steigern. Bevor Sie jedoch vom Unternehmen eingestellt werden, müssen Sie Ihre Fähigkeiten demonstrieren, um den Interviewprozess zu bestehen. In diesem Artikel werde ich Ihnen fünf gemeinsame Testkandidaten JavaScript-Fähigkeiten und ihre damit verbundenen Lösungen in Front-End-Vorstellungsgesprächen zeigen. Das wird Spaß machen!

Frage 1: Scope

Betrachten Sie den folgenden Code:

(function() {
   var a = b = 5;
})();

console.log(b);
Nach dem Login kopieren
Nach dem Login kopieren

Was wird die Konsole drucken?

Antwort

Der obige Code druckt 5. Der Trick dieses Problems ist, dass es in der sofortigen Ausführungsfunktion Ausdruck (IIFE) zwei Zuweisungsanweisungen gibt, die Variable a mit dem Schlüsselwort var deklariert wird. Dies bedeutet, dass a eine lokale Variable der Funktion ist. Stattdessen wird b dem globalen Bereich zugeordnet. Ein weiterer Trick bei diesem Problem ist, dass es in der Funktion kein strenger Muster ('use strict';) verwendet. Wenn der strenge Modus aktiviert ist, werfen der Code einen Fehler "Uncaught ReferenceError: b is not defined". Denken Sie daran, dass ein strenger Muster erforderlich ist, dass Sie explizit auf globale Bereiche verweisen, wenn dies das erwartete Verhalten ist. Deshalb sollten Sie Folgendes schreiben:

(function() {
   'use strict';
   var a = window.b = 5;
})();

console.log(b);
Nach dem Login kopieren
Nach dem Login kopieren

Frage 2: Erstellen Sie eine "native" Methode

Definieren Sie eine String -Funktion auf dem repeatify -Objekt. Diese Funktion akzeptiert eine Ganzzahl, die angibt, wie oft die Zeichenfolge wiederholt werden muss. Diese Funktion gibt eine Zeichenfolge zurück, die für eine bestimmte Anzahl von Male wiederholt wird. Zum Beispiel:

console.log('hello'.repeatify(3));
Nach dem Login kopieren
Nach dem Login kopieren

sollte gedruckt werden. hellohellohello

Antwort

Eine mögliche Implementierung ist wie folgt:

String.prototype.repeatify = String.prototype.repeatify || function(times) {
   var str = '';

   for (var i = 0; i < times; i++) {
       str += this;
   }

   return str;
};
Nach dem Login kopieren
Nach dem Login kopieren
Diese Frage testet das Verständnis der Entwickler für JavaScript -Vererbung und

Eigenschaften. Es prüft auch, dass Entwickler die Funktionalität nativer Datentypen erweitern können (obwohl dies nicht erledigt werden sollte). Ein weiterer wichtiger Punkt hier besteht darin, zu beweisen, dass Sie verstehen, wie Sie überschreiben können, wie Sie überschreiben können, die möglicherweise definiert wurden. Dies geschieht durch Testen, ob die Funktion nicht vorhanden ist, bevor Sie Ihre eigene Funktion definieren: prototype

String.prototype.repeatify = String.prototype.repeatify || function(times) {/* code here */};
Nach dem Login kopieren
Diese Technik ist besonders nützlich, wenn Sie aufgefordert werden, eine JavaScript -Funktion zu simulieren.

Frage 3: Verbesserung

Was ist das Ergebnis der Ausführung dieses Codes? Warum?

(function() {
   var a = b = 5;
})();

console.log(b);
Nach dem Login kopieren
Nach dem Login kopieren

Antwort

Das Ergebnis dieses Code ist undefined und 2. Der Grund dafür ist, dass sowohl die Variable als auch die Funktion gefördert werden (bewegt auf die Oberseite der Funktion), aber die Variable behält keine zugewiesenen Werte bei. Wenn Sie also die variable a in der Funktion existieren (es wird deklariert), ist es immer noch undefined. Mit anderen Worten, der obige Code entspricht dem folgenden Code:

(function() {
   'use strict';
   var a = window.b = 5;
})();

console.log(b);
Nach dem Login kopieren
Nach dem Login kopieren

Frage 4: this Wie funktioniert es in JavaScript

Was ist das Ergebnis des folgenden Code? Erklären Sie Ihre Antwort.

console.log('hello'.repeatify(3));
Nach dem Login kopieren
Nach dem Login kopieren

Antwort

Code druckt Aurelio De Rosa und John Doe. Der Grund dafür ist, dass der Kontext der Funktion (worauf bezieht sich das Schlüsselwort this) in JavaScript davon ab, wie die Funktion aufgerufen wird, nicht wie sie definiert ist. Im ersten console.log() -Anruf wird getFullname() als Funktion des obj.prop -Objekts aufgerufen. Daher bezieht sich der Kontext auf letztere, und die Funktion gibt die fullname Eigenschaft des Objekts zurück. Im Gegenteil, wenn getFullname() der Variablen test zugewiesen wird, bezieht sich der Kontext auf das globale Objekt (window). Dies geschieht, weil test implizit als Eigenschaft des globalen Objekts festgelegt wird. Daher gibt die Funktion den Wert des Attributs mit dem Namen window zurück, in dem in diesem Fall der Wert vom Code in der ersten Zeile des Code -Snippets festgelegt wird. fullname

Frage 5: und call() apply() habe den Fehler in der vorherigen Ausgabe so behoben, dass der letzte

gedruckt wird.

console.log() Aurelio De Rosa Antwort

Dieses Problem kann mit der Funktion oder

behoben werden, um den Kontext der Funktion zu erzwingen. Wenn Sie sie und ihre Unterschiede nicht verstehen, schlage ich vor, dass Sie den Artikel "den Unterschied zwischen

und call()" lesen. Im folgenden Code werde ich apply() verwenden, aber in diesem Fall erzeugt function.call das gleiche Ergebnis: function.apply call() apply()

Schlussfolgerung
String.prototype.repeatify = String.prototype.repeatify || function(times) {
   var str = '';

   for (var i = 0; i < times; i++) {
       str += this;
   }

   return str;
};
Nach dem Login kopieren
Nach dem Login kopieren

In diesem Artikel diskutieren wir fünf gängige Fragen, die zum Testen von JavaScript -Entwicklern während der Interviews verwendet werden. Die tatsächlichen Fragen können von Interview zu Interview variieren, aber die behandelten Konzepte und Themen sind oft sehr ähnlich. Ich hoffe, Sie haben Spaß und testen Ihr Wissen. Wenn Ihnen während des Interviews andere interessante Fragen gestellt wird, können Sie uns gerne mit uns teilen. Dies wird vielen Entwicklern helfen.

FAQs (FAQ)

Welche häufigen Fehler sollten in JavaScript -Codierungsinterviews vermieden werden?

Einer der häufigsten Fehler ist, das Problem nicht vollständig zu verstehen, bevor er anfängt, zu codieren. Nehmen Sie sich Zeit, um das Problem zu verstehen, und bitten Sie gegebenenfalls Klärung. Ein weiterer Fehler ist, dass der Rand -Fall nicht berücksichtigt wird. Betrachten Sie immer potenzielle Kantenfälle und wie Ihr Code mit ihnen umgeht. Vermeiden Sie auch hartcodierte Werte. Ihre Lösung sollte für alle Eingaben funktionieren, nicht nur für die angegebenen Beispiele. Denken Sie schließlich daran, Ihren Denkprozess zu kommunizieren. Der Interviewer interessiert sich für Ihre Lösung für Ihr Problem, nicht nur für die endgültige Lösung.

Wie bereite ich mich auf das JavaScript -Codierungsinterview vor?

Zunächst müssen Sie das Grundwissen von JavaScript gründlich verstehen. Dies umfasst Verständniskonzepte wie Schließungen, Versprechen, async/await und ES6 -Funktionen. Üben Sie Codierungsprobleme auf Plattformen wie Leetcode, Hackerrank und Codewars. Lesen Sie auch Fragen des gemeinsamen JavaScript -Interviews und versuchen Sie, sie selbst zu lösen. Verstehen Sie schließlich das zugrunde liegende Arbeitsprinzip von JavaScript. Dies beinhaltet das Verständnis der nicht blockierenden Funktionen von Ereignisschleifen, Call Stacks und JavaScript.

Was sind Schließungen in JavaScript und warum sind sie wichtig?

Verschlüsse in JavaScript sind Funktionen, die Zugriff auf übergeordnete Bereiche haben, auch wenn die übergeordnete Funktion geschlossen wurde. Sie sind wichtig, weil sie Datenschutz ermöglichen und in Funktionsfabrik- und Modulmustern verwendet werden. Das Verständnis von Schließungen ist entscheidend, da sie der grundlegende Teil von JavaScript sind.

Können Sie das Konzept von "this" in JavaScript erklären?

"this" in JavaScript ist ein spezielles Schlüsselwort, das sich auf den Kontext des Aufrufens einer Funktion bezieht. Sein Wert hängt davon ab, wie die Funktion aufgerufen wird. Es kann sich auf ein globales Objekt beziehen, ein Objekt, das derzeit von einer Funktion verarbeitet wird, ein von einem Konstruktor erstellter Objekt oder ein Objekt, das bei Verwendung der Methoden call, apply oder bind angegeben ist.

Wie geht JavaScript mit asynchronen Operationen aus?

JavaScript verwendet Rückrufe, Versprechen und async/await, um asynchrone Operationen zu verarbeiten. Ein Rückruf ist eine Funktion, die als Argument an andere Funktionen übergeben wird und nach Abschluss einiger Vorgänge aufgerufen wird. Versprechen ist ein Objekt, das angibt, dass die asynchrone Operation schließlich abgeschlossen oder fehlgeschlagen ist. async/await ist der Syntaxzucker für Versprechen, der den asynchronen Code aussehen und sich wie Synchroncode verhalten.

Was ist ein Prototyp in JavaScript?

Der Prototyp in JavaScript ist ein Mechanismus für JavaScript -Objekte, um Merkmale voneinander zu erben. JavaScript wird oft als prototypbasierte Sprache bezeichnet, und das Verständnis von Prototypen ist der Schlüssel zum Verständnis von JavaScript.

Können Sie den Unterschied zwischen "==" und "===" in JavaScript erklären?

"==" ist ein loser Gleichheitsoperator, der Operanden in denselben Typ konvertiert, bevor Vergleiche vorgenommen werden. "===" ist ein strenger Gleichheitsoperator, der keine Typumwandlung durchführt, sondern Operanden wie sie ist.

Was ist eine Ereignisschleife in JavaScript?

Ereignisschleife ist ein Mechanismus in JavaScript, der ständig prüft, ob der Anrufstapel leer ist. Wenn ja, nimmt es die erste Aufgabe aus der Task -Warteschlange und drückt sie zum Anrufstapel. Es ermöglicht es JavaScript, nicht blockiert zu werden und asynchrone Operationen zu behandeln.

Was ist JavaScript -Versprechen?

Versprechen in JavaScript ist ein Objekt, das angibt, dass der asynchrone Betrieb schließlich abgeschlossen oder fehlgeschlagen ist. Sie können in einem von drei Staaten sein: Warten, Fertigstellung oder Ablehnung. Versprechen wird verwendet, um asynchrone Operationen auf flexiblere Weise zu behandeln als Rückrufe.

Was sind einige gemeinsame JavaScript -Designmuster?

Einige gemeinsame JavaScript -Designmuster umfassen den Modulmodus, den Prototypenmodus, den Beobachtermodus und den Singleton -Modus. Das Verständnis dieser Muster kann Ihnen helfen, effizienter, leichter zu pflegen und einen erweiterbaren Code zu erhalten.

Das obige ist der detaillierte Inhalt von5 Typische JavaScript -Interviewübungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage