阿里前端筆試題目


1.有一個長度未知的數組a,如果它的長度為0就把數字1添加到數組里面,否則按照先進先出的隊列規則讓第一個元素出隊。

  按照我的理解,肯定是要使用js原生的方法,這里比較容易混的應該是先進先出(shift),先進后出(pop)這2個方法

 

2.考閉包和自執行函數

 1 var test = (function(a) {
 2     this.a = a;
 3     return function(b) {
 4         return this.a + b;
 5     }
 6 } (function(a, b) {
 7     return a;
 8 }(1, 2))); 
 9 
10 console.log(test(4)); //輸出什么

答案:5

 

3.往頁面添加10個<ul><li>i</li></ul>,i從1到10,采用性能比較好的方法

對於大的DOM更改,使用innerHTML要比使用標准的DOM方法創建同樣的DOM結構快得多。

1 var html = [],i;
2 for (i = 0; i < 10; i++) {
3       html.push('<ul><li>' + i + '</li></ul>');
4 }
5 document.body.innerHTML = html.join('');

 不建議使用以下這種方法,因為appendChild()性能不太好

1  var i;    //由於js會先變量提升,所以將i放在循環外面會減少出錯的可能
2  for (i = 0; i < 10; i++) {
3          var ul = document.createElement('ul'),
4        li = document.createElement('li');
5           li.innerHTML = i;
6         ul.appendChild(li);
7          document.body.appendChild(ul);
8 }

 

4.亂序一個數組

1 array.sort(function() {
2     return Math.random() - 0.5
3 });

 

5.雅虎前端優化的方法

減少http請求,使用css sprites,減少DNS查詢次數,緩存ajax,避免404,Gzip壓縮傳輸文件,

避免空的圖片src-------   空的圖片src仍然會使瀏覽器發送請求到服務器,這樣完全是浪費時間

減少cookie大小,詳細介紹:雅虎35條黃金准則

 

6.使用自動化功能實現上面雅虎優化的功能

使用gulp自動構建化工具

 

7.請寫個正則表達式匹配所有二級域名是9game.cn和其目錄下的網址, 比如:http://abc.9game.cn/sname/view/
如果這個非常重要的話,怎么保護他呢?

正則這個感覺是筆試必備佳餚

 

8.本地測試沒有問題,上線了之后卻又問題,如何找到錯誤?

緩存問題?

 

9.不使用loop循環,創建一個長度為100的數組,並且每個元素的值等於它的下標。

 

10.有一個長度為100的數組,請以優雅的方式求出該數組的前10個元素之和

1 var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
2 sum = 0;
3  
4 sum = a.slice(0, 10).reduce(function(pre, current) {
5   return pre + current;
6 });
7  
8 console.log(sum); //55

 

11.當項目的某個模塊發生問題了,你是怎么定位錯誤的?你常用的調試工具是什么?

 

額外附加:

發現面試題目很多都是和循環有關的,順便說一下如何優化循環

在JavaScript中,我們可以使用 for(;;),  while(),  for(in)  三種循環,事實上,這三種循環中for(in)的效率極差,因為他需要查詢散列鍵,只要可以,就應該盡量少用。

for(;;)和while循環,while循環的效率要優於for(;;),可能是因為for(;;)結構的問題,需要經常跳轉回去。比如

 1  var arr = [1, 2, 3, 4, 5, 6, 7];
 2  var sum = 0;
 3  for (var i = 0, l = arr.length; i < l; i++) {
 4       sum += arr[i];
 5  }
 6 
 7  //可以考慮替換為:
 8 
 9  var arr = [1, 2, 3, 4, 5, 6, 7];
10  var sum = 0, l = arr.length;
11  while (l--) {
12      sum += arr[l];
13  }

 

 

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM