Heim >Web-Frontend >js-Tutorial >7 JavaScript-Interviewfragen, um die Fälschung loszuwerden und die Realität beizubehalten
Die folgenden 7 JavaScript-Interviewfragen, die Sie vor dem Interview stellen sollten. Andernfalls wird Ihre Zeit höchstwahrscheinlich verschwendet.
1. Welche zwei Möglichkeiten gibt es, JavaScript-Objekte zu erstellen?
Dies ist eine sehr einfache Frage, wenn Sie jemals JavaScript verwendet haben. Man muss mindestens einen Weg kennen. Aber trotzdem gibt es meiner Erfahrung nach auch viele Leute, die behaupten, JavaScript-Programmierer zu sein, die sagen, sie wüssten nicht, wie sie diese Frage beantworten sollen.
Verwenden Sie das Schlüsselwort „new“, um die Funktion aufzurufen.
geschweifte Klammern öffnen/schließen.
var o = {};
Sie können auch weiterhin fragen: „Wann erstellt das neue Schlüsselwort ein Objekt?“ Da ich jedoch nur einige Personen eliminieren möchte, Deshalb werde ich bis zum eigentlichen Interview warten, um diese Fragen zu stellen.
Empfohlene verwandte Artikel: Die umfassendste Sammlung von js-Interviewfragen im Jahr 2020 (aktuell)
2. Wie ein Array erstellen?
Dies ist die gleiche Frageebene wie „Wie erstellt man ein Objekt?“. Allerdings gibt es auch einige Leute, die die erste Frage beantworten können, diese Frage aber nicht beantworten können.
Verwenden Sie den folgenden Code, um einfach ein Array zu erstellen:
var myArray = new Array();
Das Erstellen eines Arrays ist ein sehr komplizierter Prozess. Aber ich würde gerne Antworten von Kandidaten hören, die eckige Klammern verwenden.
var myArray = [];
Natürlich können wir weiterhin andere Fragen stellen, z. B. wie man doppelte Elemente in JavaScript-Arrays usw. effizient entfernt, aber da müssen wir nur wissen, ob der Kandidat würdig ist Nach weiteren Beobachtungen werde ich die Frage der Arrays hier beenden.
Lassen Sie uns darüber sprechen, wie Sie doppelte Elemente in JavaScript-Arrays effizient löschen: 5 Methoden zur Implementierung der Array-Deduplizierung in js.
Spezifische Methodeneinführung:
1). Array-Traversal-Methode
Die einfachste Methode zum Entfernen von Duplikaten: Erstellen Sie ein neues Array, durchlaufen Sie das eingehende Array und fügen Sie den Wert hinzu, falls dies nicht der Fall ist im neuen Array. Hinweis: Die Methode „indexOf“ zur Bestimmung, ob sich der Wert im Array befindet, wird unter IE8 nicht unterstützt Der Quellcode lautet wie folgt:
// 最简单数组去重法 function unique1(array){ var n = []; //一个新的临时数组 //遍历当前数组 for(var i = 0; i < array.length; i++){ //如果当前数组的第i已经保存进了临时数组,那么跳过, //否则把当前项push到临时数组里面 if (n.indexOf(array[i]) == -1) n.push(array[i]); } return n; } // 判断浏览器是否支持indexOf ,indexOf 为ecmaScript5新方法 IE8以下(包括IE8, IE8只支持部分ecma5)不支持 if (!Array.prototype.indexOf){ // 新增indexOf方法 Array.prototype.indexOf = function(item){ var result = -1, a_item = null; if (this.length == 0){ return result; } for(var i = 0, len = this.length; i < len; i++){ a_item = this[i]; if (a_item === item){ result = i; break; } } return result; } }
2). Diese Methode wird schneller ausgeführt als jede andere Methode, benötigt jedoch mehr Speicher Idee: Erstellen Sie ein neues JS-Objekt und ein neues Array und beurteilen Sie beim Durchlaufen des eingehenden Arrays, ob der Wert der Schlüssel des JS-Objekts ist. Wenn nicht, fügen Sie den Schlüssel zum Objekt hinzu und fügen Sie ihn in ein neues Array ein. Hinweis: Bei der Feststellung, ob es sich um einen js-Objektschlüssel handelt, wird „toString()“ automatisch für den eingehenden Schlüssel ausgeführt. Verschiedene Schlüssel können mit demselben verwechselt werden, zum Beispiel: a[1], a[„1“]. Um das obige Problem zu lösen, müssen Sie noch „indexOf“ aufrufen.
// 速度最快, 占空间最多(空间换时间) function unique2(array){ var n = {}, r = [], len = array.length, val, type; for (var i = 0; i < array.length; i++) { val = array[i]; type = typeof val; if (!n[val]) { n[val] = [type]; r.push(val); } else if (n[val].indexOf(type) < 0) { n[val].push(type); r.push(val); } } return r; }3). Die Array-Index-Beurteilungsmethode
muss weiterhin „indexOf“ aufrufen. Die Implementierungsidee ist: wenn das i-te Element von Das aktuelle Array befindet sich im aktuellen Array. Wenn die einmal angezeigte Position nicht i ist, bedeutet dies, dass das i-te Element wiederholt und ignoriert wird. Andernfalls speichern Sie das Ergebnisarray.
function unique3(array){ var n = [array[0]]; //结果数组 //从第二项开始遍历 for(var i = 1; i < array.length; i++) { //如果当前数组的第i项在当前数组中第一次出现的位置不是i, //那么表示第i项是重复的,忽略掉。否则存入结果数组 if (array.indexOf(array[i]) == i) n.push(array[i]); } return n; }4). Methode zum Entfernen benachbarter Arrays nach dem Sortieren
Obwohl die Sortierergebnisse der „Sort“-Methode nativer Arrays nicht sehr zuverlässig sind, gibt es keinen Nachteil bei der Deduplizierung, die dies nicht tut Achten Sie auf die Reihenfolge. Implementierungsidee: Sortieren Sie das eingehende Array so, dass nach dem Sortieren dieselben Werte nebeneinander liegen, und fügen Sie dann beim Durchlaufen nur Werte zum neuen Array hinzu, die keine Duplikate des vorherigen Werts sind.
// 将相同的值相邻,然后遍历去除重复值 function unique4(array){ array.sort(); var re=[array[0]]; for(var i = 1; i < array.length; i++){ if( array[i] !== re[re.length-1]) { re.push(array[i]); } } return re; }5). Die Methode zur Optimierung des Array-Durchlaufs
stammt aus ausländischen Blog-Beiträgen. Die Implementierungsidee dieser Methode ist ziemlich cool in ein neues Array. (Wenn doppelte Werte erkannt werden, wird die aktuelle Schleife beendet und die nächste Beurteilungsrunde der obersten Ebene beginnt.)
// 思路:获取没重复的最右一值放入新数组 function unique5(array){ var r = []; for(var i = 0, l = array.length; i < l; i++) { for(var j = i + 1; j < l; j++) if (array[i] === array[j]) j = ++i; r.push(array[i]); } return r; }3 Was ist Variable Hoisting?
Diese Frage ist etwas schwieriger und ich verlange nicht, dass die andere Partei sie beantwortet. Mit dieser Frage lassen sich jedoch schnell die technischen Kenntnisse eines Kandidaten feststellen: Versteht er die Programmiersprache wirklich so gut, wie er behauptet?
Variablenheraufstufung bedeutet, dass die JavaScript-Engine diese Deklaration unabhängig davon, wo eine Variable in einem Bereich deklariert wird, an die Spitze des Bereichs verschiebt. Wenn Sie eine Variable mitten in einer Funktion deklarieren, beispielsweise indem Sie eine Variable in einer bestimmten Zeile zuweisen:
function foo() { // 此处省略若干代码 var a = "abc"; }, läuft der Code tatsächlich so ab:
function foo() { var a; // 此处省略若干代码 a = "abc"; }4. Welche Risiken bergen globale Variablen und wie kann ich meinen Code vor Störungen schützen?
Die Gefahr bei globalen Variablen besteht darin, dass jemand anderes eine Variable mit demselben Namen erstellen und dann die von Ihnen verwendete Variable überschreiben kann. Das bereitet in jeder Sprache Kopfschmerzen.
Es gibt viele Möglichkeiten, dies zu verhindern. Die gebräuchlichste Methode besteht darin, eine globale Variable zu erstellen, die alle anderen Variablen enthält:
var applicationName = {};
Wenn Sie dann eine globale Variable erstellen müssen, hängen Sie sie einfach an das Objekt an.
applicationName.myVariable = "abc";
Eine andere Methode besteht darin, den gesamten Code in eine automatisch ausgeführte Funktion zu kapseln, sodass alle deklarierten Variablen innerhalb des Gültigkeitsbereichs der Funktion deklariert werden.
(function(){ var a = "abc"; })();
在现实中,这两种方法你可能都会用到。
5.如何通过JavaScript对象中的成员变量迭代?
for(var prop in obj){ // bonus points for hasOwnProperty if(obj.hasOwnProperty(prop)){ // do something here } }
6.什么是闭包(Closure)?
闭包允许一个函数定义在另一个外部函数的作用域内,即便作用域内的其他东西都消失了,它仍可以访问该外部函数内的变量。如果应聘者能够说明,在for/next循环中使用闭包却不声明变量来保存迭代变量当前值的一些风险,那就应该给对方加分。
7.请描述你经历过的JavaScript单元测试。
关于这个问题,其实我们只是想看看应聘人员是否真的做过JavaScript单元测试。这是一个开放式问题,没有特定的正确答案,不过对方至少得能讲述进程中的一些事情。
相关学习推荐:javascript视频教程