近期小編根據多年豐富的面試經歷和崗位分析,對前端面試的技術棧,各大公司面試特色,進行了簡要的分析 ,隨着個人秀髮愈來愈少能夠說咱們積累的經驗愈來愈多,在此給你們進行一個簡要的分享。javascript
先說前端必備的技能,html,css,JavaScript, jQuery(源碼部分) , nodejs , vue , react ,設計模式, 這些技術棧仍是要具有的。css
如今大公司的要求絕大多數以原生JavaScript爲根本,例如騰訊,阿里等互聯網頭部企業,在面試前端時對原生的要求很是之高,並且以騰訊爲表明的一系列公司很是喜歡讓你在面試過程之中手寫代碼,因此若是準備面試騰訊的小兄弟們,必定要提早作好準備。html
列舉咱們最熟悉的騰訊吧,咱們先看一下qq音樂前端工程師招聘的要求:前端
至少三年以上從事JavaScript開發的經歷;vue
紮實的 javascript 基礎知識;java
可以熟練運用 HTML、CSS、JavaScript 開發高性能的web應用程序;node
熟悉Web性能優化, 有性能優化實踐經驗;react
具備良好的代碼風格、接口設計與程序架構意識;git
具備良好的溝通能力和團隊合做精神;github
思路清晰,優秀的分析問題和解決問題的能力;
加分項:計算機專業或軟件工程等相關專業;
掌握服務器端編程語言並有實踐經驗;
持續堅持寫技術博客1年以上;
對開源項目有貢獻;
github我的原創項目有50個星以上;
在著名業界技術大會有過度享
良好的借力意識(站在巨人的肩膀上);
良好的軟件工程意識;
對技術有持續的熱忱和激情;
熱愛音樂。
咱們能夠根據需求分析出哪些東西?
首先聊一下騰訊的背景, 騰訊前端是以原生JavaScript爲主,因此對JavaScript的要求必定會很高, 那麼這個高要求和高標準大概有多高呢?
面試官一般會以豐富的經驗給你各類各樣的組合拳, 這一套又一套的組合拳着實打的新手摸不着頭腦 ? 咱們先來分析一套原生組合拳 :
原生 javaScript組合拳
問 : 基本類型和引用類型的區別。
答 : 基本類型是存儲在棧之中的值,引用類型是存儲在堆中數據的地址。
問 : 能夠舉例說明一下JavaScript之中的引用類型有哪些麼?
答 : Object , function , Array , Set , Map
固然了,面試JavaScript 確定離不開原型鏈和做用域鏈,那麼什麼是做用域鏈那 ?這個實際上是說來話長的一個話題,由於在這裏給你們闡述下我我的的一些理解 :
函數在執行的過程之中會產生一個臨時存儲數據的對象, 這個對象咱們稱之爲activeObject, 簡稱AO , 每一個函數在執行時都會在棧裏面存上這麼一個東西,以便於儲存期中的局部變量。可是js有全局變量的概念,也就是在局部中能夠訪問全局的數據,怎麼訪問那? 固然是由內自外的冒泡訪問,可是如何由內自外,這個以包含關係決定訪問順序就是傳說中的做用域鏈。
接着來講原型鏈, 這個是實例對象訪問方法和共用數據的一個順序,也是由內自外的。
接着會順着繼續向下問一些關於閉包,內存泄漏的問題。
閉包問題, 其實就是兩個函數嵌套,產生了兩個嵌套的活動對象,子活動對象存儲了父級活動對象的屬性,從而致使外部函數的局部變量被子活動對象保存的一種JavaScript特性。
用代碼表示一下:
function outer(){
var freeVar = 「hello」
}
這是一個外部函數會產生一個 AO , 這個AO是由於outer 函數執行而建立出來的,因此咱們暫時命名爲 AO(outer).
閉包天然少不了函數的嵌套 :
function outer(){
var freeVar = 「hello」;
function inner(){
console.log(freeVar);
}
return inner;
}
但凡是在AO(outer)內部建立的函數引用了外部的變量那麼妥了,閉包就產生了。
收起你的黑人問號臉,來看一下個人解釋 :
Inner函數執行時固然也會產生AO ,那麼這個AO咱們取名叫作AO(inner), ok 在這個ao中咱們幹了些啥? 是否是引用了外部函數的變量 freeVar ?
對啊,確定用了,可是你只是用了freeVar 這麼簡單麼 ? no,no,no , 其實在內部函數之中咱們引用的是 AO(outer).freeVar。
好了咱們這個時候來看一下,AO是個啥 ? 是個對象啊, 既然是對象那這貨是否是一個引用類型,引用類型存在於內存之中不? 存在,那麼恭喜你,這個AO.freeVar 不會想普通的局部變量在函數結尾被刪除了, 而是被保留在了內存之中。 這,就是閉包。
基本上這一套下來,你對JavaScript的理解,對JavaScript原理和機制的理解面試官也就瞭解的比較透徹了 , 接下來會考察一些知識的廣度,固然這些問題都是比較簡單隨意也是比較容易獲得答案的,因此在後面的部分我就只列舉問題。
佈局和頁面性能 :
這個就是考察基本功的時候了, 佈局能夠說是一個前端最經常使用的技能,因此會根據各類需求提問,固然一樣重要的還有一些優化細節,好比:
重繪和迴流分別都是什麼 , 哪一個性能消耗的多? 應該如何去提升性能 ?
各類居中。
命名空間和命名方式。
移動端rem佈局,百分比佈局,響應式佈局。
HTML標籤的語義化
JavaScript多線程。
http請求優化
算法設計模式
基本排序算法的理解,好比快排,冒泡等排序算法總要知道一個吧 , 這種東西提早準備老是沒壞處 。
設計模式這種東西就是一個沒啥卵用的大框框, 可是有寫設計模式確實頗有借鑑的意義,好比觀察者模式,策略模式,可讓代碼更加優(zhuang)雅(bi)清晰。
Ok , 今天的面試分析暫時就進行到這裏,其實在面試過程當中問到項目業務的狀況也很是多見,由於前端面試的多樣性,每次大公司的面試其實都是對咱們技術棧和學習能力的一次挑戰,在不斷的進步和學習之中,完善自我,持續進步,豐富本身的經驗,願世界和平,秀髮長存。