<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • 騰訊web前端開發(fā)筆試題和答案

    時間:2020-12-04 17:27:03 筆試題目 我要投稿

    騰訊web前端開發(fā)筆試題和答案

       1 請實現(xiàn),鼠標點擊頁面中的任意標簽,alert該標簽的名稱.(注意兼容性)

    騰訊web前端開發(fā)筆試題和答案

    1

    2

    3

    4

    5

    6

    7

    <script type="text/javascript"> 

    document.onclick=function(e){ 

         var e=(e||event); 

         var o=e["target"]||e["srcElement"]; 

         alert(o.tagName.toLowerCase()); 

    </script>

      2 請指出一下代碼的性能問題,并經(jīng)行優(yōu)化。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    var info="騰訊拍拍網(wǎng)(www.paipai.com)是騰訊旗下知名電子商務網(wǎng)站。"; 

    info +="拍拍網(wǎng)于2005年9月12日上線發(fā)布,"; 

    info +="2006年3月13日宣布正式運營,"; 

    info +="是目前國內(nèi)第二大電子商務平臺。"; 

    info=info.split(","); 

    for(var i=0; i<info.length; i++) 

        alert(info[i]); 

    }

      這題初看純屬折騰,因為后面要根據(jù)逗號分隔再alert每項,何不構造一個數(shù)組對象來存放文本內(nèi)容,而要用個臨時變量info才存放。

      如var info=["騰訊拍拍網(wǎng)(www.paipai.com)是騰訊旗下知名電子商務網(wǎng)站。","拍拍網(wǎng)于2005年9月12日上線發(fā)布,","2006年3月13日宣布正式運營,","是目前國內(nèi)第二大電子商務平臺。"] 。可是后來想如果是優(yōu)化的話這個題目就出的沒意義了。

      仔細觀察info這個變量,發(fā)現(xiàn)它每次都要自加字符串,如果字符串很大的又很多的話會非常影響性能的。

      對于js中的string類型,屬于基本類型,因此一般情況下他們是存放在棧上的。如果字符串很大,info會每次變成一個很長的字符串,會很慢。

      如果用引用類型數(shù)組來存放則好很多,如:

    1

    2

    3

    4

    5

    6

    7

    8

    var temp=[]; 

    temp.push("騰訊拍拍網(wǎng)(www.paipai.com)是騰訊旗下知名電子商務網(wǎng)站。"); 

    //temp只是一個指向堆上數(shù)組的指針 

    temp.push("拍拍網(wǎng)于2005年9月12日上線發(fā)布,"); 

    temp.push("2006年3月13日宣布正式運營,"); 

    temp.push("是目前國內(nèi)第二大電子商務平臺。"); 

    temp.join(""); 

    alert(temp);

      最后一招temp.join(“”)搞定。對處理大字符串連接問題都可以采取這種思路。

      3 請給出異步加載js方案,不少于兩種。

      異步加載方式:

      (1) defer,只支持IE

      (2) async:html5中script標簽才有的屬性

      (3) 創(chuàng)建script,插入到DOM中,加載完畢后callBack,見代碼:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    function loadScript(url, callback){ 

       var script = document.createElement("script") 

       script.type = "text/javascript"; 

       if (script.readyState){ //IE 

          script.onreadystatechange = function(){ 

             if (script.readyState == "loaded" || 

                script.readyState == "complete"){ 

                script.onreadystatechange = null; 

                callback(); 

             } 

          }; 

       } else { //Others: Firefox, Safari, Chrome, and Opera 

          script.onload = function(){ 

              callback(); 

          }; 

       } 

       script.src = url; 

       document.body.appendChild(script); 

    }

      4 請寫出jQuery綁定事件的方法,不少于兩種。

    1

    2

    3

    4

    5

    6

    7

    $("#obj").click(function(){}); 

      

    $("#obj").change(function(){}); 

      

    $("#obj").bind("click",function(){}); 

      

    $("#obj").live("submit",function(){});

      5 請設計一套方案,用于確保頁面中JS加載完全。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    var n = document.createElement("script"); 

    n.type = "text/javascript"; 

    //以上省略部分代碼 

    //ie支持script的readystatechange屬性 

    if(ua.ie){ 

       n.onreadystatechange = function(){ 

           var rs = this.readyState; 

           if('loaded' === rs || 'complete'===rs){ 

               n.onreadystatechange = null; 

               f(id,url); //回調(diào)函數(shù) 

           } 

    }; 

    //省略部分代碼 

    //safari 3.x supports the load event for script nodes(DOM2) 

       n.addEventListener('load',function(){ 

           f(id,url); 

       }); 

    //firefox and opera support onload(but not dom2 in ff) handlers for 

    //script nodes. opera, but no ff, support the onload event for link 

    //nodes. 

    }else{ 

       n.onload = function(){ 

           f(id,url); 

       }; 

    }

      6 請優(yōu)化某網(wǎng)頁的加載速度。

      7 對string對象經(jīng)行擴展,使其具有刪除前后空格的.方法。

    1

    2

    3

    4

    5

    String.prototype.trim =function(){ 

      

        return this.replace(/(^\s*)|(\s*$)/g,''); 

      

    }

      8 完成一個正則表達式,驗證用戶輸入是否身份證號碼。

      var Expression=/\d{17}[\d|X]|\d{15}/;

      var objExp=new RegExp(Expression);

      一道騰訊js面試題

      題目如下:

      f = function() {return true;};

      g = function() {return false;};

      (function() {

      if (g() && [] == ![]) {

      f = function f() {return false;};

      function g() {return true;}

      }

      })();

      alert(f()); // true or false ?

      按網(wǎng)友的描述猜測,這應該是QQ招聘的題目,既考查了ECMAScript知識,又需要被面試者的應用實踐,題目本身無標準答案,在不同瀏覽器下表現(xiàn)不同。

      這是一道難度較大,并且出題角度比較刁鉆的面試題。

      正趕上最近在研究Javascript這部分的內(nèi)容,便對該題目涉及的考察點進行了更深入的研究。以下給出簡單分析。

      考察點

      對作用域鏈(scope chain)、執(zhí)行環(huán)境(execution context)、變量對象(variable object)的理解

      命名函數(shù)表達式,參見這里

      以上知識點在不同瀏覽器(主要為:IE和Firefox)的實現(xiàn)差異

      相等操作符的隱式類型轉(zhuǎn)換規(guī)則

      首先,代碼簡化為(1):

      f = function() {return true;};

      g = function() {return false;};

      (function() {

      alert(g());

      function g() {return true;}

      })();

      上面的例子中,當控制器進入匿名函數(shù)的執(zhí)行環(huán)境后,初始化活動對象,函數(shù)聲明g被放到了執(zhí)行環(huán)境的變量對象集合中,property為g,值為g函數(shù)對象,當執(zhí)行g(),返回true。

      將上面的代碼稍加改變(2):

      f = function() {return true;};

      g = function() {return false;};

      (function() {

      alert(g());

      if (true) {

      function g() {return true;}

      }

      })();

      上面代碼,結果應該與(1)相同,但Firefox處理結果出現(xiàn)了不同返回false,暫且把這看作是Firefox的bug(雖然Firefox不認為這是個Bug)。

      分析:在Firefox中,出現(xiàn)在條件語句中的代碼塊不做活動對象初始化的處理(Firefox把它當作塊作用域??),即把上例的if (true) 修改為 if (false) 結果是一樣的。

      到此為止,已經(jīng)可以確定g()執(zhí)行后的值是true還是false了。

      整合一下(3):

      f = function() {return true;};

      g = function() {return false;};

      (function() {

      if (g()) {

      alert("能看到這個警告框,說明你的瀏覽器不是Firefox");

      function g() {return true;}

      }

      })();

      繼續(xù)分解代碼(4):

      f = function() {return true;};

      g = function() {return false;};

      (function() {

      f = function() {return false;};

      })();

      alert(f());

      代碼運行,無一例外的返回false,這正是我們想要的結果。

      然后稍作改變(5):

      f = function() {return true;};

      g = function() {return false;};

      (function() {

      f = function f() {return false;};

      })();

      alert(f());

      經(jīng)過稍加修改后,這次掉鏈子的輪到IE了,IE竟然返回了true!!!這是IE的Bug,參見:

      http://www.cn-cuckoo.com/main/wp-contenthttps://p.9136.com/28/l/2009/12/named-function-expressions-demystified.html#named-expr

      http://www.w3help.org/zh-cn/causes/SJ9001

      至于[]==![]的結果,請參考本人《Javascript類型轉(zhuǎn)換規(guī)則》一文,回過頭來你就會輕易得出結論。

      最后大整合。

      我們不僅知道結果,而且知道為啥是這結果了(6):

      f = function() {return true;};

      g = function() {return false;};

      (function() {

      if (g() && [] == ![]) {

      f = function f() {return false;};

      function g() {return true;}

      }

      })();

      alert(f());

      沒有問題的瀏覽器會返回:false

      Firefox不會執(zhí)行到if條件內(nèi)部,返回:true

      IE會執(zhí)行到if條件內(nèi)部(但把if內(nèi)部的f作為局部變量處理了),最后返回:true

    【騰訊web前端開發(fā)筆試題和答案】相關文章:

    騰訊WEB前端筆試題和面試題答案06-26

    如何面試Web前端開發(fā)12-12

    web前端開發(fā)簡歷范文08-23

    騰訊前端筆試題目01-15

    web前端開發(fā)崗位職責范文06-16

    芒果Web前端開發(fā)的面試經(jīng)歷12-12

    Web前端開發(fā)個人求職簡歷11-20

    芒果Web前端開發(fā)面試經(jīng)歷11-13

    Web前端開發(fā)css基礎樣式總結11-11

    web前端開發(fā)工程師簡介11-08

    主站蜘蛛池模板: 国产在线精品一区二区高清不卡 | 国产成人精品电影在线观看| 国产精品婷婷午夜在线观看| 成人区人妻精品一区二区不卡网站| 久久精品亚洲欧美日韩久久| 成人午夜精品视频在线观看| 亚洲精品无码专区久久同性男| 国产乱人伦偷精品视频| 国产精品黄网站| 国产精品美女久久久m| 在线亚洲欧美中文精品| 国产精品无码素人福利不卡| 国产成人精品久久免费动漫| 久久国产乱子伦免费精品| 中文字幕精品一区二区三区视频| 国产偷窥熟女高潮精品视频| 日本一区精品久久久久影院 | 国产亚洲精品成人a v小说| 欧美精品亚洲精品日韩| 精品福利资源在线| 91精品成人免费国产| 国产精品特级毛片一区二区三区| 久久青青草原精品国产| 亚洲高清专区日韩精品| 欧美久久久久久午夜精品 | 91人前露出精品国产| 精品一区二区三区在线视频| 国产成人精品免费视频大全麻豆 | 免费短视频软件精品一区二区| 国产亚洲精品影视在线产品| 国产叼嘿久久精品久久| 国产成人无码精品一区在线观看| 2023国产精品自拍| 99久久精品国产综合一区| jizz国产精品| 国产精品视频全国免费观看| 国産精品久久久久久久| 精品视频在线观看你懂的一区| 久久精品成人一区二区三区| 女人高潮内射99精品| 四虎国产精品永久在线无码|