先の面接問題のまとめ(一)


面接問題のまとめ
1.JS基本データの種類は何がありますか?参照データの種類は何がありますか?
JSには、7つの元の値が存在し、それぞれは、bolean null undefined number string smbol参照データの種類:オブジェクトObject(一般的なオブジェクト-Object、配列オブジェクト-Aray、正規のオブジェクト-RegExp、日付オブジェクト-Date、数学関数-Math、関数オブジェクト-Functを含む)
2.nullとundefinedの違いは何ですか?
(1)nullは「無」を示す対象で、私の数値を0にします.undefinedは「無」を表す元の値です.数値にするとNaNです.宣言された変数が初期化されていない場合、エネルギーのデフォルト値はundefined(2)Nullであり、まだ存在していないオブジェクトを表しています.一般的には、関数が存在しないオブジェクト(3)を返したいという意味で使われています.典型的な使い方は、a、変数が宣言されていますが、値が与えられていない場合はundefined、関数が呼び出されていない場合に提供すべきパラメータが提供されていません.このパラメータはundefined c、オブジェクトに値属性が与えられていません.この属性の値はundefined、関数が返されていない場合は、デフォルトはundefined(4)nullに戻ります.典型的な使い方は、a、関数としてのパラメータは、この関数のパラメータがオブジェクトbではなく、対象プロトタイプチェーンの終点であることを表しています.
3.クローズドとは何ですか?
私の理解では、クローズドとは他の関数の内部変数を読み取ることができる関数です.Javascript言語では、関数内部のサブ関数だけが局所変数を読み取ることができるので、クローズドを単に「関数の内部に定義された関数」と理解することができます.したがって、本質的には、クローズドとは、関数の内部と関数の外部をつなぐ橋のことである.
4.プロトタイプチェーンの理解について話してください.
JavaScriptでは、関数データタイプ(一般関数、クラス)を定義するたびに、プロトタイプの属性が持ち出されます.この属性は関数のプロトタイプを指します.関数がnewを介して呼び出されると、この関数は構造関数となり、新しいインスタンスオブジェクトを返します.プロト.属性とは、構造関数のプロトタイプオブジェクトを指します._; JavaScript対象は__プロト.親類のオブジェクトを指し、Objectオブジェクトを指すまで、プロトタイプが指すチェーン、すなわちプロトタイプチェーンが形成されます.
5.関数addを定義し、add(2、3)/5 add(2、3)(5)/10を実現する.
const add = (...args) => {
     
    let sum = args.reduce((pre, crt) => pre + crt);
    const accu = (...args2) => {
     
    sum += args2.reduce((pre, crt) => pre + crt);
        return accu;
    }
    accu.valueOf = () => sum;
    return accu;
}

console.log(add(2, 3)(5)) //10
6.配列の消去
es 6:
function unique(arr){
     
	return Array.from(new Set(arr));
}
再帰:
function unique(arr) {
     
        var array= arr;
        var len = array.length;

    array.sort(function(a,b){
        //         
        return a - b;
    })

    function loop(index){
     
        if(index >= 1){
     
            if(array[index] === array[index-1]){
     
                array.splice(index,1);
            }
            loop(index - 1);    //  loop,      
        }
    }
    loop(len-1);
    return array;
}
7.call、bind、appyの違い
  callとapplyは基本的に一致しています.唯一の違いは、伝達方式にあります.applyは必要な引数を配列(または配列)に入れて伝達します.bind文法はcallと同じです.直ちに実行するかそれとも実行するか、bindは互換性がないです.
8.CSS水平垂直中央揃えを実現
弾性配置
/*   */
.father{
     
    display: flex;
    justify-content: center;
    align-items: center;
}
   
absoute+transform
.father{
     position:relative}
.son{
     
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}
vertical-align
.father{
     
    line-height: 300px;
    text-align: center;
    font-size: 0px;
}
.son{
     
    font-size: 16px;
    display: inline-block;
    vertical-align: middle;
    line-height: initial;
    text-align: left; 
}
9.「1」「2」「3」map(parseInt)は何を得ますか?
  答えは:[1,NaN,NaN]です.
理由:主に次の3点です.
  1.map関数伝達パラメータの定義
   2.parseInt関数は、radixというパラメータに対する理解
  3.バイナリには「3」という数字がありません.
10.一つのURL(統一資源経路アドレス)はどの部分を含みますか?
たとえば「https://editor.csdn.net/md?articleId=105535050この例では六つの部分に分けられます.
  1、転送プロトコル:http、https
ドメイン名:例www.baidu.comはウェブサイトの名前です.baidu.comは一級ドメイン名で、wwwはサーバーです.
記入しないとデフォルトで行くのは80ポート番号です.
  4、経路editor.csdn.net/md.ルートディレクトリを表示
  5、携帯のパラメータ:?articaleId=10535050
   6、ハッシュ値:あってもなくてもいいです.単一ページのアプリケーション開発において、フロントエンドとしてのルーティングとして使用されます.(Vue Router、React Router)
11.入力URLからページローディング完了までの間に何を経験しましたか?
1.ブラウザは要求のURLに基づいてDNSドメイン解析に渡し、真実のIPを見つけます.2.ブラウザがIPアドレスに基づいてサーバにTCP接続を開始し、ブラウザとTCP 3回の握手を行う3、HTTP要求を送信し、HTTP応答5.サーバ処理要求を受け付けてコンテンツに戻る.6、HTTP要求の内容によって、対応するHTMLファイルの取得方法を決定し、ブラウザでHTMLコードを解析し、js、cssなどのリソースを要求し、最後にページレンダリングを行い、ユーザー7に表示し、TCP接続を切断する(四つの手を振る).
12.ドメインをまたぐ発生と解決方法
  はサイバーセキュリティのために、ブラウザに同じソースポリシーを設定しています.ドメイン名、ポートだけを規定しています.プロトコルは全部同じです.同源といいます.ページがスクリプトを実行すると、アクセスしたリソースが同じソースかどうかを確認します.そうでないとエラーが発生します.しかし、実際の開発では、しばしばドメインを越えてリソースをロードする必要があります.  解決方法 1、JSONP–原理はscriptタグを利用して、ラベルコートに殻を作って、ラベルの特性を利用してドメインを越えて資源をロードする効果があります._; 2、CORS–クロスステーション資源共有は、クロスドメインの公式ソリューションで、アップグレード版のJSONPです.原理は、カスタマイズされたHTTPヘッダを使用して、ブラウザとサーバとのコミュニケーションを行い、要求または応答が成功するべきか失敗するべきかを決定することである.要求と応答は、クッキー情報を含まない._; 3、webSockets–同源戦略の影響を受けない.原理は、HTTPプロトコルを使用しないで、カスタムプロトコルを使用して、特に高速でデータを転送するために設計されているからです._; 4、NRGIX–エージェントクロスドメイン.ドメインをまたぐ逆エージェント.
13.web Socketsは知っていますか?
  WebsocketはHTML 5における協議であり、持久的な接続をサポートしています.httpプロトコルは持久的な接続をサポートしていません.Http 1.0とHTTP 1.1は耐久性のリンクをサポートしていません.  その利点は、接続を確立すると、サーバーからのメッセージを継続的に取得し、帯域幅とサーバー側の圧力を節約することができるということです.
14.イベントサイクル
(1)すべての同期タスクは、メインスレッド上で実行され、一つの「実行スタック」(2)のメインラインを形成するほか、「タスクキュー」(task queue)が存在する.非同期タスクに実行結果がある限り、「タスクキュー」にイベントを配置します.(3)一旦「実行スタック」の中のすべての同期タスクが実行されると、システムは「タスクキュー」を読み込み、中にどのようなイベントがあるかを確認します.これらの対応する非同期タスクは、待ち状態を終了し、実行スタックに入り、実行を開始する.(4)メインスレッドは上記の第3ステップを繰り返します.メインスレッドが「タスクキュー」からイベントを読み込みます.このプロセスは繰り返します.したがって、全体のこのような運行メカニズムはEvent Loop(イベントサイクル)とも呼ばれます.
15.イベントモデル
イベントキャプチャ:ある要素がイベントをトリガすると、最上階のオブジェクトdocumentはイベントフローを発行し、DOMツリーのノードに従って、イベントが本当に発生したターゲット要素に到達するまで、ターゲットノードに流れる.このプロセスでは、イベントの対応する傍受関数はトリガされない.
イベントターゲット:ターゲット要素に到達した後、ターゲット要素のイベントに対応する処理関数を実行します.バインドされた待ち受け関数がない場合は、実行しません.
イベント泡:ターゲット要素から始まり、最上階の元素に伝播する.途中、対応するイベントハンドラ関数がノードによって結合されると、これらの関数は一度にトリガされます.イベント依頼:親要素をモニターすることで、異なるサブ要素にイベントをバインドし、待ち受け回数を減らし、速度を上げる.