2018先端経典面接問題(js)を抜粋する.

9032 ワード

先端の知識点の面接試験問題を書いてください.筆記試験問題でもいいですし、面と向かって聞いてもいいです.もちろん全部ではないので、多くの面接問題を検索して補足してもいいです.今回の面接問題は全部js方面です.
javascript
一、JavaScriptではどのように一つの変数がStringタイプであるかを検出しますか?関数がtypeof(obj)===stringを実現することを書き出してください.typeof obj==「string」obj.com nstructor==String;
二、文字列のスペースはjsで消してください.方法の1:replace正則を使ってマッチングする方法/すべての空白のstr=str.replace(/s/g)//////.両端の空白のstr=str.replace(/^s𞓜s*)/gを取り除く、「」)
strはスペースを削除する文字列です.例は以下の通りです.
var str=" 23 23 ";
var str2=str.replace(/s*/g,"");
console.log(str2);//2323
方法2:str.trim()を使用する方法str.trim()の限界:中間のスペースを削除できません.例は以下の通りです.
var str=" xiao ming ";
var str2=str.trim();
console.log(str2);//xiao ming
同じように、str.trimLeft()、str.trimRight()は、文字列の左右のスペースを取り除くために使用されます.
方法3:jqueryを使用して、trim(str)の限界:中間のスペースを削除できません.例は以下の通りです.
var str=" xiao ming ";
var str2=$.trim(str);
console.log(str2);//xiao ming
ブラウザurlで文字列のパラメータを調べるにはどうやって行けばいいですか?テストアドレス
実例は以下の通りです
function showWindowHref(){
    var sHref = window.location.href;
    var args = sHref.split('?');
    if(args[0] == sHref){
        return "";
    }
    var arr = args[1].split('&');
    var obj = {};
    for(var i = 0;i< arr.length;i++){
        var arg = arr[i].split('=');
        obj[arg[0]] = arg[1];
    }
    return obj; 
}
var href=showWindowHref();//obj
console.log(href['name']);//xiaoming
三、js文字列方法でよく使われる文字列方法1)concat()-2つ以上の文字のテキストを組み合わせて、新しい文字列を返します.2)indexOf()-文字列のうちの1つのサブストリングの最初のインデックスを返します.マッチしていない場合は-1.3)charAt()-指定された位置の文字を返します.4)lastIndexOf()-文字列の最後の部分列に現れるインデックスを返します.マッチしていない場合は-1.5)match()-文字列が正規表現にマッチするかどうかを確認します.6)substr()-stringのstartPos位置から、lengthの文字列を返します.7)substring()-文字列のサブストリングを返します.着信パラメータは開始位置と終了位置です.8)slice()-文字列の一部を抽出し、新しい文字列を返します.9)replace()-正規表現にマッチする文字列を検索し、マッチする文字列の代わりに新しい文字列を使用します.10)search()-正規表現のマッチング検索を行います.検索が成功すると、文字列にマッチする索引の値が返されます.さもないと-1を返します11)スプリット()-文字列をサブストリングに分割することにより、1つの文字列を1つの文字列配列にします.12)length-文字列の長さを返します.文字列の長さとは、その中に含まれる文字の個数です.13)LowerCase()-文字列全体を小文字に変換します.14)toUpperCase()-文字列全体を大文字に変換します.
四、ノードの追加、削除、移動、コピー、作成、検索はどうやって行いますか?1)新しいノードを作成する
createDockment Fragment()//DOMセグメントcreateElementを作成します()//具体的な要素を作成します.テキストノードを作成
2)追加、除去、置換、挿入
apped Child()///removeChildを追加します.replacceChildを除去する()//置換insertBefore()//挿入
3)検索
getElements ByTagName()//ラベル名getElementsByName()//要素のName属性の値からgetElementById()//元素IDを通して、唯一のgetElements ByClass Name()//元素類名を通して、ieは知らない.
五、三つのthisを使用した典型的な応用1)を書き出して、html元素のイベント属性の中で使用します.

2)コンストラクタ
function Animal(name,color){
    this.name=name;
    this.color=color;
}
3)inputをクリックし、値を取得する


    var btn=document.getElementById("text");
    btn.onclick=function(){
        alert(this.value);//   this     
    }
</code></pre> 
 <p>4)apply()/call()     </p> 
 <pre><code>var  numbers = [5, 458 , 120 , -215 ]; 
var  maxInNumbers = Math.max.apply(this, numbers);  
console.log(maxInNumbers);  // 458
var maxInNumbers = Math.max.call(this,5, 458 , 120 , -215); 
console.log(maxInNumbers);  // 458
</code></pre> 
 <p> 、  typeof instanceof?<br>    :js typeof instanceof             ,        。 typeof      :         ,           。   :</p> 
 <p>1)typeof            :number,boolean,string,function,object,undefined。</p> 
 <p>2)typeof           , if(typeof a!="undefined"){alert("OK")},      if(a),    a   (   )    。</p> 
 <p>3)  Array,Null       typeof    object,   typeof    。 Instanceof     :instanceof                   。</p> 
 <p>    : a instanceof b?alert("true"):alert("false");//a b   ?  :  </p> 
 <pre><code>var a = new Array(); 
alert(a instanceof Array);  // true
alert(a instanceof Object)  // true
</code></pre> 
 <p>  ,   true,  alert(a instanceof Object)    true;    Array object   。</p> 
 <pre><code>function test(){};
var a = new test();
alert(a instanceof test)   // true
</code></pre> 
 <p>  :</p> 
 <p>1)  ,      'N',   instanceof   object  js    object,   dom    。</p> 
 <pre><code>if (window instanceof Object){ alert('Y')} else {  alert('N');}  // 'N'
</code></pre> 
 <p>      ?<br> 1)     :                ,                        ,               ,      。</p> 
 <p>2)    :                  。</p> 
 <p>3)    :</p> 
 <p>         ,            ,      ,     ,       ,  window     ,     undefined。    count      flag2   count。</p> 
 <pre><code>var count=10;   //         flag1
function add(){
    var count=0;    //           flag2
    return function(){
        count+=1;   //        
        alert(count);
    }
}
var s = add()
s();//  1
s();//  2
</code></pre> 
 <p>4)      </p> 
 <p>     ,      js        。</p> 
 <p>        :         。</p> 
 <p>  :</p> 
 <p>1)                 ;                 </p> 
 <p>2)                var  。      ,             !</p> 
 <p>5)        </p> 
 <p>    ,       :                     ,      ,        ,            , IE         。     ,       ,             。</p> 
 <p>            。  ,           (object)  ,           (Public Method),             (private value),       ,               。</p> 
 <p> 、     ?            ?<br> 1)     ?</p> 
 <p>         ,      url   、  、                      。       :</p> 
 <p>      , http    https  。</p> 
 <p>    , 80    8080  。</p> 
 <p>    , qianduanblog.com  baidu.com。</p> 
 <p>     , abc.qianduanblog.com  def.qianduanblog.com。</p> 
 <p>       IP, www.a.com  20.205.28.90.</p> 
 <p>2)         :</p> 
 <p>porxy  </p> 
 <p>     :proxy               ,          ,             。</p> 
 <p>    :  nginx  ;</p> 
 <p>   :1、       https     ,    proxy         (        )        ,          。</p> 
 <p>CORS 【Cross-Origin Resource Sharing】</p> 
 <p>     :                       。</p> 
 <p>    :                  ,           。  :</p> 
 <pre><code>res.writeHead(200, {
    "Content-Type": "text/html; charset=UTF-8",
    "Access-Control-Allow-Origin":'http://localhost',
    'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
    'Access-Control-Allow-Headers': 'X-Requested-With, Content-Type'
});
</code></pre> 
 <p>jsonp</p> 
 <p>     :        script  。    script           ,               (        )。</p> 
 <p>  :     ,      script          ,        json  。</p> 
 <p>    :</p> 
 <pre><code><script>
    function testjsonp(data) {
       console.log(data.name); //        
    }


    var _script = document.createElement('script');
    _script.type = "text/javascript";
    _script.src = "http://localhost:8888/jsonp?callback=testjsonp";
    document.head.appendChild(_script);

短所:
1、このような方法では、postリクエストを送信できません.(ここで)
2、また、jsonpの要求が失敗したかどうかを確認するのは容易ではない.多くのフレームの実現はタイムアウト時間に合わせて判定される.
八、ゴミ回収メカニズムとメモリ管理回収メカニズムの方式1)の定義と使い方について話します.ゴミ回収メカニズム(GC:Garbage Collection)は、環境管理コードの実行中に使用されるメモリを実行します.
2)原理:ゴミ収集器は定期的に(周期的に)使用しない変数を探し出し、メモリを解放します.しかし、このプロセスはリアルタイムではなく、その出費が大きいため、ゴミ回収器は一定の時間間隔で周期的に実行されます.
3)例は以下の通りである
function fn1(){
    var obj={
        name:'hanzichi',
        age:'10'
    }
}
function fn2(){
    var obj={
        name:'hanzichi',
        age:10
    }    
    return obj;
}
var a=fn1();
var b=fn2();
fn 1()で定義されたobjは局所変数であり、呼出が終わった後、fn 1の環境が出たら、その高速メモリはjsエンジンのゴミ回収期間によって自動的に解放される.fn 2が呼び出されている間に、戻るオブジェクトはグローバル変数bに向けられているので、この高速メモリは解放されない.
4)ゴミ回収戦略:マーククリア(比較的一般的)と参照カウント.
マーククリア:定義と使用法:変数が環境に入ると、変数を環境に入ると、変数が環境から離れると「環境から離れる」とマークします.ある時点で、ゴミ回収機会は環境内の変数をフィルタリングし、環境変数によって参照される変数は、残りは回収準備変数と見なされます.
これまでIE、Firefox、Opera、Chrome、Safariのjsで使用されてきたのはすべてクリアマークのゴミ回収戦略または類似の策略です.ただ、ゴミ携帯の時間間隔は互いに違います.
参照カウント:定義と使用法:参照技術は、各値が参照される回数を追跡記録することである.
基本原理とは、変数の参照回数であり、一度参照すると1を加算し、この参照が0とカウントされると、回収の準備の対象とされます.
メモリ管理1)いつごみの回収をトリガしますか?
ゴミ回収器は周期的に運行しています.もし割り当てられたメモリが非常に多いなら、回収作業も大変です.ゴミ回収イベントの間隔を確認することは考えるべき問題になります.
IE 6のゴミ回収はメモリ割当量によって実行され、環境内の変数、対象、文字列が一定数に達した時にゴミ回収をトリガする.ゴミの回収期间はずっと仕事の状态にあります.ブラウザの性能に深刻な影响を与えます.
IE 7では、ゴミ回収器はメモリ割当量とプログラム占有メモリの割合に応じて動的に調整し、回収作業を開始する.
2)合理的なGC方案:
(1)アクセス可能なすべてのオブジェクトを巡回
(2)アクセスできないオブジェクトを回収する
3)GC欠陥:
他の操作に応答しない
4)GC最適化戦略:
(1)ジェネレーション回収(Generation GC)
(2)増分GC
面接の時だけではないです.これらの知識は先端開発として必要です.私達のペンギンの群れに参加してください.829568767、千鋒無料公開課に行って先生と相談してもいいです.