前端面接試験問題集と解答-JS編


JavaScript
この問題集は近年の面接問題と答えをまとめました.間違いがあれば、ご指摘ください.
1 jsのプロトタイプチェーンとプロトタイプは分かりますか?
Jsプロトタイプとプロトタイプチェーン(スタンプ本リンク)をどうやって理解しますか?
2  JSの基本タイプは何がありますか?
String、Number、Null、Unidefined、Boolean
(補足:引用の種類はObjectがあります)
3 thisの指摘問題?
jsの中のthisは問題を指します(このリンクを突き止めます).
4正規表現がありますか?正規オブジェクトの作成方法は?
(1)正規表現(reglar expression)は、ある種の列が含まれているかどうかを確認するために使用され、一致するサブストリングを置換したり、ある条件に合うサブストリングをストリングから取り出したりするために使用されます.正規表現は一般に「regex」と略されます.
まず、簡単な例を二つあげます.
^ 入力文字列にマッチする開始位置です.
[0-9]+複数の数字にマッチし、 [0-9] 単一の数字にマッチする、+ 一つまたは複数にマッチします.
abc$マッチング文字 abc を選択して abc 締めくくり 入力文字列にマッチする終了位置です.
たとえば、                                                                             
ルノオ+bは、ルノオ、ルノオ、ルノオ、ルノオなどにマッチすることができます.+号は前の文字を表しています.少なくとも一回(1回以上)は現れないといけません.
runoo*bは、runob、runoob、runoob、runooooooo obなどにマッチングできます.*号の代表文字は現れなくてもいいです.一回または何回も出現できます.
colou?r カラーやカラーにマッチできますか?号は前の文字を表しています.最大一回(0回、または1回)しか現れません.
(2)正規オブジェクトの作成方法
a.暗黙的な作成(すなわち文字量方式)
var正則オブジェクト=/正規表現/マッチングモード
b.直接的な実用化(構造関数方法)
var正則オブジェクト=new RegExp(「正規表現」、「整合モード」)(補足:Javascriptの正規表現では、マッチングモードは2つだけです.小文字g:globalの略語、大域一致;小文字i:ignoreの略語、大文字小文字小文字は無視します.)
5グローバルマッチングと複数行マッチはどうなりますか?
グローバルマッチング:表式にパラメータgを加えた後、グローバルマッチング(var regx=/user\d/g)が可能であることを示します.
マルチラインマッチング:パラメータmを付加して、複数行のマッチングが可能であることを示していますが、これは^と$のモードを使用する場合にのみ機能し、他のモードではmを加えずに複数行のマッチングが可能です.
6 js配列の作成方法は何ですか?
    a.字面量隠式で作成する
var arr = [];//       
var arr2 = [1,2,3];//            
    b.構造関数を用いて作成する(直接的な実用化)
var arr1 = new Array();//     
var arr2 = new Array(10);//       10   
var arr3 =  new Array(5,4,3,2,1);//        
7配列要素を削除する方法?
jsには全部で7つの方法があります.配列要素を削除できます.
(1)length属性 
 JavaScriptの中でArayのlength属性は非常に特徴があります.いちいち読み取り専用ではありません.したがって、この属性を設定することにより、配列の最後から項目を削除したり、新しい項目を追加したりすることができます.以下の例を参照してください.
1 var colors = ["red", "blue", "grey"];   //      3       
2 colors.length = 2;
3 console.log(colors[2]);  //undefined
(2)deleteキーワード
注意すべきは、deleteを使って要素を削除した後、配列長は不変です.削除された要素はundefinedに置かれました.
1 var arr = [1, 2, 3, 4];
2 delete arr[0];
3 console.log(arr);   //[undefined, 2, 3, 4]
(3)ポップ()スタック方法
JavaScript内のArayオブジェクトは、ポップアップとして配列の最後のエントリに戻り、ある程度は削除用として利用できるポップスタック方法を提供している.
1 var colors = ["red", "blue", "grey"];
2 var item = colors.pop();
3 console.log(item);      //"grey"
4 console.log(colors.length);    //2
(4)シフト()待ち方
JavaScriptのArayオブジェクトは、ポップアップとして配列の最初のエントリに戻り、ある程度は削除用としても利用できるシフト()のキュー方法を提供する.
1 var colors = ["red", "blue", "grey"];
2 var color = colors.shift();
3 console.log(color); // "red"
4 console.log(colors.length); // 2
(5)splice()の操作方法 
JavaScriptのArayオブジェクトには配列を特定するためのsplice()方法が提供されている.配列要素を削除するときは、任意の数の項目を削除します.2つのパラメータのみを指定します.削除する最初の項目の索引と削除する長さ.
1 var colors = ["red", "blue", "grey"];
2 var color = colors.splice(0, 1); 
3 console.log(color); // "red"
4 console.log(colors); // ["blue", "grey"]
splice(0,1)メソッドを呼び出したとき、配列は最初の項目から一つ削除されたことが分かります.
(6)反復方法
反復方法とは、循環反復配列要素を用いて、削除すべき項目に該当すると削除することである.最も多く使われているところは、配列中の要素が対象の場合、オブジェクトのある属性(例えばID)に従って配列要素を削除することができます.
a.最初の種類は、最も一般的なForEachサイクルで要素を見つけたら削除します.
var colors = ["red", "blue", "grey"];
 
colors.forEach(function(item, index, arr) {
    if(item === "red") {
        arr.splice(index, 1);
    }
});
ここではsplice()の方法に合わせて削除を実現することも見られます.サイクルは特定の要素を見つけるためだけです.もう一つの考えは、削除する必要がない要素を循環的に新しい配列に押し込むことであり、特定の要素を削除するための仮説を達成することができるということです.
b.第二の循環中のfilter方法
var colors = ["red", "blue", "grey"]; 
colors = colors.filter(function(item) {
    return item != "red"
});
 
console.log(colors); // ["blue", "grey"]
要素を見つけるのはredではない首数をcolorsに返します.特定の要素を削除する目的はある程度達成されています.
(7)プロトタイプの原型方法
Array.prototype.remove = function(dx) {
  if(isNaN(dx) || dx > this.length){
    return false;
  }
 
  for(var i = 0, n = 0; i < this.length; i++) {
    if(this[i] != this[dx]) {
      this[n++] = this[i];
    }
  }
  this.length -= 1;
};
 
var colors = ["red", "blue", "grey"];
colors.remove(1);
 
console.log(colors); // ["red", "grey"]
この方法は、削除されたロジックを自分で実現して、Arayのプロトタイプのオブジェクトに削除方法を追加すると、この環境のすべてのArayオブジェクトがこの方法を使用することができます.このようにしてもいいですが、製品化の手順で元のオブジェクトの原型を修正することは勧められません.道理は簡単で、ある実現の中にある方法が欠けているだけで、元のオブジェクトのプロトタイプにこの方法を追加すると、別のサポート方法の実現の中でコードを実行すると、ネーミングが衝突する可能性があります.また、このようにすると、意外にも原生方法が書き換えられてしまうかもしれません.
8 jsの長さは10の配列で、インデックスが15の位置に要素を追加するとエラーが発生しますか?なぜですか
undefinedエラーを報告します.配列が境界を越えるため、範囲を超えました.
9 DOMの添削はどのような方法がありますか?
a.検査
getElementById-指定されたIDを持つノード(要素)を取得する.
document.getElementsByTagName-指定されたラベル付き署名を取得する のノード
 document.getElementsByName-指定されたnameを持つノードを取得する
結び目:document.getElemenntByIdはオブジェクトを返します.document.getElementsByNameとdocument.getElements ByClaasNameはオブジェクト配列を返します.
b.増加
apendChild(node)-新しいサブノード(要素)を挿入する
createElement(「div」)-指定されたラベルを入力することにより、名来で要素を作成します.
(createElementを使用して注意してください.createelementによって作成された要素は)文書ではなく、作成されたものであり、添付されていません.ドキュメントでは、apendChildやinsertBeforeなどを呼び出してHTMLファイルツリーに追加します.
c.削除
 removeChild(node)-サブノード削除(要素)
d.変更
  • apendChild(サブ要素に追加)
  • insertBefore(前面に挿入)
  • RemoveChild(サブ要素を削除)
  • リプラクティル
  • 10 JSのイベントバインディングとイベント依頼
    a.イベント依頼:他の要素であって、イベントの目的要素ではなく、イベントの発生する行為に応答する思想である.ボタンを操作するためのdocument要素のクリック行為は、イベント依頼の一例であり、もう一つは、そのサブ要素liのイベントをul要素で処理する場合が多い.これは親要素上のイベントモニターを子要素にも影響させるテクニックです.domのアクセス数を減らすことで性能を向上させることができます.通常、イベントの普及(捕獲と発泡)により、イベント依頼を実現することができます.発泡体は、DOMバインディングの元のモニター(現在のターゲット)に触れるまで、層ごとにこのサブ要素の親要素をトリガすることができることを意味する.捕獲属性はイベント段階を捕獲段階に変換し、イベントを要素に移動させる.したがって,トリガ方向は発泡段階とは逆である.
    b.イベントバインディング:Javascriptでは、イベントバインディングは全部で3つの方式があります.①行内バインディング;②動的バインディング;③事件傍受
    11 ダイナミックページの一つの後に追加されたボタンは、イベントをバインドしますか?
    12  json形式のデータが先端に伝わったらどうやって解析しますか?
    13  jsのタイプの判断は何種類ありますか?違い、原理、使用シーンは全部言いますか?
    https://blog.csdn.net/weixin_44427784/articale/details/10530103(スタンプ本リンク)
    14 JSイベントモデル
    https://blog.csdn.net/weixin_44427784/articale/details/10471597(スタンプリンク)
    15どのようにイベントの捕獲段階でイベントが発生しますか?
    16  JSの関数の手ぶれ防止と関数節流の違いは?
    17 flashとjsはどんな種類を通してどうやって相互作用しますか?
    ExternalInterface
    Flashは、External InterfaceインターフェースとJavaScriptとの通信を提供します.
    二つの方法:
    a.External Interface.addCallback(「jsで使えるflashメソッド名」、flash内の方法)       //jsでflashの中の方法を呼び出します.
    b.External Interface.call(「js方法」、jsのパラメータに伝える)                                                     //flashでjsを呼び出す方法
    18 js文は何種類の値を定義できますか?
    2種類です.混合値と変数値
    混合値は文字通りの量です.
    19はjsごみの回収の構造を言います.
    https://blog.csdn.net/weixin_44427784/articale/details/105554(スタンプリンク)
    20 let、const、varの違い
    constで定義されている変数は変更できず、初期化が必要です.
    var定義は通常グローバル変数を定義し、変更できます.初期化しなくても大丈夫です.undefinedに報告しますが、エラーが発生しません.変数のアップグレードがあります.
    letはブロックレベルのスコープであり、関数内部でletを使用して定義された後、関数の外部に影響がなく、変数の昇格はありません.
    21変数のアップグレードは何ですか?
    https://blog.csdn.net/weixin_44427784/articale/details/10790169(スタンプリンク)
    22 jsのマルチスレッド
    jsのworkerクラスでインスタンスを作成します.
    varワーカー=newワーカー(パラメータ)     //パラメータはjsファイルのパスを記入します.
    worker.onmessageはメインスレッドデータを受信する.
    worker.postMessageはメインスレッドにデータを送信します.