憑著印象,寫幾個筆試題目,順便當攢攢人品
1.對一個數組進行判斷,如果長度為0,則新增加一個1,否則,按照先進先出的順序去除一個值
按照我的理解,肯定是要使用js原生的方法,這裡比較容易混的應該是先進先出(shift),先進後出(pop)這2個方法。相信大家都是大神~不細說啦
2.考閉包和自執行函數
3.往頁面添加10個<ul><li>i</li></ul>,i從1到10,采用性能比較好的方法
這道題想了一下,使用下面這種方法
對於大的DOM更改,使用innerHTML要比使用標准的DOM方法創建同樣的DOM結構快得多。
var i; //由於js會先變量提升,所以將i放在循環外面會減少出錯的可能 for (i = 0; i < 10; i++) { var ul = document.createElement('ul'), li = document.createElement('li'); li.innerHTML = i; ul.appendChild(li); document.body.appendChild(ul); }
//可以替換為:
var html = [],i; for (i = 0; i < 10; i++) { html.push('<ul><li>' + i + '</li></ul>'); } document.body.innerHTML = html.join('');
4.亂序一個數組~~
這道題當時腦子比較亂,傻傻逼逼的。竟然沒有想到原生的sort排列…………
array.sort(function() { return Math.random() - 0.5 });
上面這個方法應該算比較優雅把…………
5.雅虎前端優化的方法
(噼裡啪啦什麼合並壓縮呀…………)
6.使用自動化功能實現上面雅虎優化的功能
平時使用gulp,也憑著印象寫了一些東西,哎……
7.用正則匹配一個二級域名為…………的……
正則這個感覺是筆試必備佳肴(哭瞎)
8.本地測試沒有問題,上線了之後卻又問題,如何找到錯誤?
額外附加:
發現面試題目很多都是和循環有關的,順便說一下如何優化循環
在JavaScript中,我們可以使用for(;;),while(),for(in)三種循環,事實上,這三種循環中for(in)的效率極差,因為他需要查詢散列鍵,只要可以,就應該盡量少用。for(;;)和while循環,while循環的效率要優於for(;;),可能是因為for(;;)結構的問題,需要經常跳轉回去。比如
var arr = [1, 2, 3, 4, 5, 6, 7]; var sum = 0; for (var i = 0, l = arr.length; i < l; i++) { sum += arr[i]; } //可以考慮替換為: var arr = [1, 2, 3, 4, 5, 6, 7]; var sum = 0, l = arr.length; while (l--) { sum += arr[l]; }
考試時間是1個半小時……
一些常見的數組操作是必考的!所以親們一定要好好准備
然後如果有好的答案也麻煩共享一下,讓我開開眼界o(∩_∩)o
僅僅只是分享一下面試的題目。希望能幫到大家o(∩_∩)o 祝大家好運