最近在面試,做爲一個前端菜鳥面了好幾家公司,大概有十幾天的時間。下面就面試當中的一些技術點作一個回顧和整理,供你們交流和參考。javascript
vue
中MVVM
的實現原理vue
的源碼,因此能夠清楚的說明這其中的原理。這道題也是被問到最多的一道題。能夠參考:剖析Vue實現原理 - 如何實現雙向綁定mvvmObject.defineProperty
方法有什麼做用?有哪些參數?能夠經過描述對象來設置哪些特性?Object.defineProperty
方法能夠給一個對象設置相關的屬性,這個方法一共有三個參數,第一個參數是目標對象,第二個參數是屬性名,第三個參數能夠是一個描述對象。描述對象一個有以下特性:value
-- 設置屬性值、configurable
-- 表示是否可刪除屬性,可否修改屬性的特性、writable
-- 是不是隻讀屬性、enumerable
-- 是不是可枚舉屬性、get
-- 讀取屬性時調用的函數、set
-- 設置屬性時調用的函數。for in
能夠遍歷原型鏈上的屬性嗎?能夠遍歷不可枚舉屬性嗎?Object.keys
能夠遍歷到不可枚舉屬性嗎?怎麼遍歷到對象的不可枚舉屬性?for in
能夠遍歷到原型鏈上的屬性,可是遍歷不到不可枚舉屬性。Object.keys
不能遍歷到原型鏈上的屬性也不能遍歷到不可枚舉屬性。能夠經過Object.getOwnPropertyNames()
方法訪問到不可枚舉屬性(這一問沒有回答出來)。react
中的事件跟js
原生的事件有什麼區別?react
中的事件是合成事件,經過事件冒泡的原理綁定在根元素上。普通的事件時綁定在目標元素上。Promise
的理解。Promise
有哪些經常使用的靜態方法?Promise.all()
方法的做用是什麼?能夠傳入哪些類型的參數?Promise
是一個構造函數,實例化的過程當中能夠傳入一個函數,這個函數有兩個參數。在函數內部能夠經過resolve
、reject
來修改Promise
的狀態,狀態發生變化後會在當前事件隊列的末尾去執行then
或者catch
裏面的方法。經常使用的靜態方法有Promise.all
、Promise.race
、Promise.resolve
、Promise.reject
等。Promise.all
方法能夠傳入一個數組,數組中的每一項都是一個Promise
實例,只有數組中全部的Promise
的狀態都是成功時纔會去改變Promise.all
方法對應的Promise
狀態。Promise.all
方法除了能夠傳入數組還能夠傳入全部具備iterator
的對象。具體能夠參考阮老師的es6入門Promise。for of
能夠遍歷哪些數據類型?iterator
接口的對象。能夠參考阮老師的es6入門Iterator 和 for...of 循環overflow
有哪些屬性值?分別是什麼做用?默認值是什麼?webpack
中有哪些經常使用的loader
?css-loader
與style-loader
的做用分別是什麼?css-loader
、babel-loader
、vue-loader
、style-loader
、url-loader
等。css-loader
是用來解析css文件的,由於webpack
會將全部的東西都當成是模塊,可是沒有辦法去解析css文件以及分析css文件中的依賴項因此須要css-loader
去進行分析。style-loader
會將經過css-loader
編譯好的模塊提取出來經過style
標籤的形式插入到html文件中。webpack
中有哪些經常使用的plugin
?怎麼作代碼分割?webpack3.x
的版本,因此回答的也是該版本中一些經常使用的plugin
。經常使用的有htmlWebpackPlugin
、extractTextPlugin
、commonChunkPlugin
等。http1.0
與http1.1
中關於緩存有些什麼區別?websocket
的理解。有哪些替代方案?webscoket
的理解比較有限,只知道是用來作全雙工通信的,是一個持久鏈接。創建鏈接的過程實際上是經過http協議進行的,鏈接完成以後經過upgrade字段進行了協議升級,修改成websocket
協議,該協議的請求頭數據量比較少。當時回答的替代方案是ajax
輪詢和服務端推送,具體的推送方案不清楚。後來查了一些資料作了一點了解。能夠參考《圖解HTTP》這本書和《JavaScript高級程序設計》的第二十一章,裏面提到了comet
、SSE
兩種方案。TCP
與UDP
的區別。TCP
是可靠傳輸UDP
是不可靠傳輸http
請求和頁面渲染兩個方面作得解答,http請求上主要是將代碼分割,進行代碼壓縮,gZip編碼,路由懶加載等一些手段來完成優化。頁面渲染上主要涉及到DOM操做,減小重排、讀寫分離、動畫上幀率跟瀏覽器的刷新頻率保持一致。能夠參考一下阮老師的博客網頁性能管理詳解0.1 + 0.2 === 0.3
是false
?jQuery
中生成jQuery
對象的例子。你們能夠專門作個總結。localstorage
存儲?XSS
、CSRF
let
和var
有哪些區別?new
關鍵字有什麼做用?如何實現一個new
關鍵字的方法?express
和koa
有什麼區別?window.onload
和document.ready
有什麼區別?window.onload
是頁面多有的元素的已經渲染完成包括image
等。document.ready
是DOM
元素渲染完成,一些圖片請求並不必定已經完成。html
元素這是fontSize
。其餘的方案主要說了一下響應式、vw、vh、百分比佈局等。click
事件會延遲300ms?如何禁止屏幕的縮放?iPhone
爲了判斷用戶是否發生了雙擊。禁止縮放經過設置視口的縮放比例。SSR
嗎?有什麼好處?SEO
Object.property.toString.call(obj)
vue-router
有哪些鉤子?優先級是怎麼樣的?Promise
、generator
、async/await
onclick
和 addEventListener
。前者只能綁定一次,屢次綁定會發生覆蓋,後者能夠綁定多個事件處理函數,不會發生覆蓋。