JavaScript-Entwickler waren in der IT-Welt schon immer sehr gefragt. Wenn Sie die Sprache Gottes sehr gut beherrschen, haben Sie viele Möglichkeiten, den Job zu wechseln und Ihr Gehalt zu erhöhen. Doch bevor ein Unternehmen Sie einstellen kann, müssen Sie ein Vorstellungsgespräch erfolgreich bestehen und Ihre Fähigkeiten unter Beweis stellen. In diesem Artikel zeige ich Ihnen 5 Frontend-bezogene Fragen, um die JavaScript-Kenntnisse des Kandidaten und seine Fähigkeiten zur Problemlösung zu testen . Es wird eine Menge Spaß machen!
Frage1: UmfangUmfang
Betrachten Sie den folgenden Code:
(function() {
var a = b = 5;
})();
console.log(b);
Was wird auf der Konsole gedruckt?
antwortet
Der obige Code gibt 5 aus.
Der Trick bei diesem Problem besteht darin, dass es hier zwei Variablendeklarationen gibt, aber a das Schlüsselwort var verwenden erklärt. Zeigt an, dass es sich um eine lokale Variable einer Funktion handelt. Im Gegensatz dazu wird b zu einer globalen Variablen.
Ein weiterer Trick für dieses Problem besteht darin, dass kein strikter Modus verwendet wird („strikt verwenden“;) . Wenn der strikte Modus aktiviert ist, löst der Code den Fehler ReferenceError aus: B ist nicht definiert (b ist nicht definiert). Denken Sie daran, dass der strikte Modus eine explizite Angabe erfordert, um globale Variablendeklarationen zu implementieren. Beispielsweise sollten Sie schreiben:
(function() {
'use strict';
var a = window.b = 5;
})();
console.log(b);
Frage2: „native“ erstellen (native) Methode
definiert eine repeatify-Funktion für das String-Objekt. Wenn eine Ganzzahl n übergeben wird, wird das Ergebnis der n Wiederholung der Zeichenfolge zurückgegeben. Zum Beispiel:
console.log('hello'.repeatify(3));
sollte hellohellohello ausgeben .
Antwort
Eine mögliche Implementierung sieht so aus:
String.prototype.repeatify = String.prototype.repeatify ||. function(times) {
var str = '';
for (var i = 0; i < mal; ;
};
Die aktuelle Frage für Testentwickler dreht sich um
JavaScript
Vererbung und Wissenspunkte von
Prototyp
. Dadurch wird auch überprüft, ob der Entwickler weiß, wie integrierte Objekte erweitert werden (auch wenn dies nicht getan werden sollte).
Ein weiterer wichtiger Punkt hier ist, dass Sie wissen müssen, wie Sie möglicherweise bereits definierte Funktionen nicht überschreiben. Testen Sie, ob die Funktionsdefinition vorher nicht existiert: String.prototype.repeatify = String.prototype.repeatify || function(times) {/* code here */};Diese Technik ist besonders nützlich, wenn Sie
JavaScript
-Funktionen kompatibel machen müssen.
Problem
3
: Deklaration Heben (Heben)
Führen Sie diesen Code aus und welches Ergebnis wird ausgegeben.
function test() {
console.log(a);
console. log(foo());
var a = 1;
function foo() {
return 2;
}
}
test();
Antwort
Das Ergebnis dieses Codes ist undefiniert und 2.
Der Grund dafür ist, dass sowohl die Variablen- als auch die Funktionsdeklaration nach vorne verschoben (an den Anfang der Funktion verschoben) werden, den Variablen jedoch kein Wert zugewiesen wird. Beim Drucken ist die Variable also in der Funktion vorhanden (sie ist deklariert), aber immer noch undefiniert . Mit anderen Worten, der obige Code entspricht dem Folgenden:
function test() {
var a;
function foo() {
return 2;
}
console.log(a);
console.log(foo());
a = 1;
}
test();
Frage4: dieses in JavaScript Wie funktioniert in
Was wird der folgende Code ausgeben? Geben Sie Ihre Antwort.
var fullname = 'John Doe';
var obj = {
fullname: 'Colin Ihrig',
prop: {
vollständiger Name: 'Aurelio De Rosa',
getFullname: function() {
return this.fullname;
}
}
};
console.log(obj.prop.getFullname() );
var test = obj.prop.getFullname;
console.log(test());
Antwort
Die Antwort ist Aurelio De Rosa und John Doe. Der Grund dafür ist, dass das Verhalten dieser in einer Funktion davon abhängt, wie die JavaScript-Funktion aufgerufen und definiert wird, und nicht nur davon hängt davon ab, wie es definiert ist.
Im ersten console.log() Aufruf getFullname() A Funktion, die als obj.prop-Objekt aufgerufen wird. Daher bezieht sich der Kontext auf Letzteres und die Funktion gibt den vollständigen Namen des Objekts zurück. Wenn dagegen getFullname() der Variablen test zugewiesen wird, bezieht sich der Kontext auf das globale Objekt (Fenster). Dies liegt daran, dass test eine Eigenschaft ist, die implizit als globales Objekt festgelegt ist. Aus diesem Grund gibt die Funktion den vollständigen Namen von Fenster zurück, bei dem es sich um den in der ersten Zeile definierten Wert handelt.
Frage5: call() und gelten ()
Jetzt können Sie das vorherige Problem lösen, sodass die endgültige console.log() Aurelio De Rosa ausgibt .
Antworten
Diese Frage kann durch die Verwendung von call() oder apply() Funktionskontext ändern. Im Folgenden verwende ich call(), aber in diesem Fall gibt apply() das gleiche Ergebnis aus:
console.log(test.call(obj.prop));
Fazit
In diesem Artikel Wir haben fünf klassische Fragen zum Testen von JavaScript-Entwicklern besprochen. Die in Vorstellungsgesprächen behandelten Konzepte und Themen sind in der Regel sehr ähnlich. Wenn Sie die Antworten auf einige Fragen nicht kennen, machen Sie sich keine Sorgen: Lernen und Erfahrungen können langsam vonstatten gehen. Wenn Sie weitere interessante Fragen haben, zögern Sie nicht, diese mit uns zu teilen. Es wird vielen Entwicklern helfen.
Kostenlos erhaltenLAMPE
Band of BrothersOriginalPHPVideo-TutorialCD/《Details PHP》Essential-Version, bitte wenden Sie sich für weitere Informationen an den offiziellen Website-Kundendienst: http://www.lampbrother.net
PHPCMSSekundärentwicklung
http://yun.itxdl.cn/online/phpcms/index.php?u=5WeChat-Entwicklung
http://yun.itxdl.cn/online/weixin/index.php?u =5Serverseitige Entwicklung des mobilen Internets
http://yun.itxdl.cn/online/ server/index.php?u =5JavascriptKurs
http:/ /yun.itxdl.cn/ online/js/index.php?u=5CTOTrainingslager
http://yun.itxdl.cn/online/cto/index.php?u=5
Das Obige stellt fünf klassische Front-End-Interviewfragen vor, einschließlich relevanter Inhalte. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.