記錄一下最近碰上的面試題
js篇
- 介紹一下Array的API/方法,具體到返回值和引數
join / slice / splice / sort / push一類 / reverse
經驗總結:要講出來能夠擴充的API,擴充話題;要能夠牢記不同API的返回值,例如reverse是否返回陣列?pop返回值是什麼? - Array的map與forEach的區別?可用程式碼實現輔助解釋
區別在於map返回一個新的陣列,而forEach則時在原陣列的基礎上進行修改(允許對原陣列進行修改)。
forEach適合你不需要改變資料的時候,如列印、存入資料庫,而map適合於你需要對資料進行修改等操作,還可以結合filter、reduce進行操作 - 介紹一下事件繫結
事件繫結是指將子元素上的事件繫結到父元素上,利用事件冒泡將子元素事件冒泡到父元素進行處理,當有多個子元素同時繫結時,可以利用e.target進行區分 -
如何檢測物件中是否存在某個屬性
- 使用in關鍵字,該方法會拿到原型鏈上的屬性
- 使用物件的hasOwnProperty方法,該方法只能判定自有屬性
- 用undefined判斷
-
頁面效能優化
- 減少Http請求數
- 非同步載入js檔案(動態建立script標籤、async、defer),主意async和defer區別
- 瀏覽器快取(強快取、協商快取)
- 使用CDN
-
DNS預解析
預解析相關標籤 ``` <!--第一個標籤是強制開啟所有a標籤的預解析(包含https)--> <meta http-equiv="x-dns-prefetch-control" content="on"> <!--開啟DNS預解析--> <link rel="dns-prefetch" href="//somewhere.com"> ```
-
寫出以下程式輸出內容
var n = 1; var a = { n: 10, fn: function () { var n = 100; return n + this.n; } } var fn = a.fn; console.log(a.fn()); // 110 console.log(fn()); // 101 console.log(a.fn.call(this)); // 101 console.log(a.fn.call(a)); // 110
-
寫出程式輸出內容
var a = {n: 10, m: 20}; var b = a; var c = b; var d = {...b}; b.n = 30; c = {n: 40}; console.log(a.n); // 30 console.log(b); // {n: 30, m: 20} console.log(c); // {n: 40} console.log(d); // {n: 10, m: 20} console.log(a === b); // true console.log(a === d); // false console.log(b === c); // false console.log(a === c); // false
- 如何獲取一個頁面上的所有元素
- 圖片懶載入/預載入,同時有10000張圖片怎麼辦?
目前思路:利用onscroll+scrollTop
追問:onscroll在什麼情況下觸發?
- ES5和ES6的繼承有什麼區別
- Web動畫的幾種常見方式?
- POST提交資料的幾種常見Content-Type
- 如何定義一個方法,通過呼叫把視訊的一幀生成預覽圖?(可以考慮Canvas相關)
- 什麼是重放攻擊,列舉幾種常見的防禦手段?
CSS篇
-
介紹一下position: sticky和fixed的區別
定位型別:相對定位(relative)、絕對定位(absolute、fixed)、粘性定位(sticky)
該屬性還在實驗階段
position: sticky(此段引用MDN)粘性定位可以被認為是相對定位和固定定位的混合。元素在跨越特定閾值前為相對定位,之後為固定定位。
- 介紹一下Flex佈局
Flex佈局即Flexible Box,彈性佈局,目前主要應用場景在移動端,也有部分PC端場景應用,Flex能夠很好解決佈局的問題,有效解決了以往垂直居中難的問題,可以簡便、完整、響應式的實現各種佈局。
任何一個容器都可以設定為flex佈局,設定了之後,子元素的float、clear和vertical-align屬性將會失效。
- Reflow和Repaint
簡單介紹Reflow和Repaint,哪個會觸發哪個?(觸發順序),哪個能夠避免,哪個時儘量減少而不可能避免,css哪些操作會觸發Reflow/Repaint - CSS3動畫/CSS動畫與js動畫區別?(效能區別?)/CSS效能優化/CSS動畫效能優化/js動畫介紹
後續還會繼續進行面試題的積累~