亚洲国产日韩欧美在线a乱码,国产精品路线1路线2路线,亚洲视频一区,精品国产自,www狠狠,国产情侣激情在线视频免费看,亚洲成年网站在线观看

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

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

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

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

騰訊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ù)網(wǎng)站。"; 

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

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

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

info=info.split(","); 

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

    alert(info[i]); 

}

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

  如var info=["騰訊拍拍網(wǎng)(www.paipai.com)是騰訊旗下知名電子商務(wù)網(wǎng)站。","拍拍網(wǎng)于2005年9月12日上線發(fā)布,","2006年3月13日宣布正式運營,","是目前國內(nèi)第二大電子商務(wù)平臺。"] ?墒呛髞硐肴绻莾(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ù)網(wǎng)站。"); 

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

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

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

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

temp.join(""); 

alert(temp);

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

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

  異步加載方式:

  (1) defer,只支持IE

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

  (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 請設(shè)計一套方案,用于確保頁面中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)友的描述猜測,這應(yīng)該是QQ招聘的題目,既考查了ECMAScript知識,又需要被面試者的應(yīng)用實踐,題目本身無標(biāo)準答案,在不同瀏覽器下表現(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;}

  })();

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

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

  f = function() {return true;};

  g = function() {return false;};

  (function() {

  alert(g());

  if (true) {

  function g() {return true;}

  }

  })();

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

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

  到此為止,已經(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,這正是我們想要的結(jié)果。

  然后稍作改變(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

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

  最后大整合。

  我們不僅知道結(jié)果,而且知道為啥是這結(jié)果了(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ā)筆試題和答案】相關(guān)文章:

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

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

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

騰訊前端筆試題目01-15

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

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

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

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

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

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