對於JavaScript,掌握其語法和特性是最基本的,可是這些只是應用能力,最終仍舊考量仍然是計算機體系的理論知識,因此數據結構,算法,軟件工程,設計模式等基礎知識對前端工程師一樣重要,這些知識的理解程度,能夠決定你在前端工程師這條路上能走多遠,是時候進行一波自檢了,查漏補缺,只有全面發展,纔會使你更強,如下會進行自問的形式按照圖片裏面的知識點進行自我checkcss
知識點在面試過不下50人後進行的一波總結前端
可能不全,有新增的點能夠放在評論區討論
1.你關於性能優化是否只知道js文件擺放順序、減小請求、雪碧圖等等,卻連衡量指標window.performance.timing都不清楚是幹什麼的?node
2.請你描述下一個網頁是如何渲染出來的,dom樹和css樹是如何合併的,瀏覽器的運行機制是什麼,什麼是否會形成渲染阻塞?webpack
3.請簡述下js引擎的工做原理,js是怎樣處理事件的eventloop,宏任務源tasks和微任務源jobs分別有哪些?js是如何構造抽象語法書(AST)的?nginx
4.你是否考慮全面你編寫的整個函數,或者整個功能的容錯性與擴展性?怎樣構建一個組件是最合理最科學的,對於錯誤的處理是否有統一的方式方法?git
5.瀏覽器緩存的基本策略,何時該緩存何時不應緩存,以及對於控制緩存的字段的相關設置是否清楚?github
6.你是否能夠利用面向對象的思惟去抽象你的功能,你會構建一個class(ES6)嗎?你對於前端架構的理解?web
7.你會用VUE,你會用React,你讀得懂這兩個架構的源碼嗎?你懂他倆的基本設計模式嗎?讓你去構建一個相似的框架你如何下手?面試
8.你瞭解的ES6只是const、let、promise嗎?你考慮過ES6提出的真正趨勢嗎?算法
9.你會用less,那麼讓你去寫一個loader你能夠嗎?
10.webpack你也會用,你瞭解其中原理嗎?你知道分析打包依賴的過程嗎?你知道tree-shakeing是如何幹掉無用重複的代碼的嗎?
11.你真的熟練使用css嗎,那你知道position有幾個屬性嗎,具體參考https://github.com/wintercn/b...
12.你瞭解js的數據結構嗎?基本數據類型有哪些?複雜數據類型有哪些?在內存是如何表現的?
13.你能夠用js去實現一個單向、雙向、循環鏈表嗎?你能夠實現查找、插入、刪除操做嗎?
14.你瞭解基本常見算法嗎?快速排序寫一個?要是限制空間利用你該如何寫?
15.你瞭解貪心算法、動態規劃、分治算法、回溯算法等常見的算法嗎?
16.你是如何理解前端架構的?你瞭解持續集成嗎?
17.你瞭解基本的設計模式嗎?舉例單例模式、策略模式、代理模式、迭代模式、發佈訂閱模式。。。?
18.寫一個事件監聽函數唄?實現once、on、remove、emit功能
19.node.js的實現層是什麼?
20.node的事件循環機制是怎樣的?
21.node的child_process模塊有幾個api,分別的做用是什麼?
22.http1.0與1.1協議的區別?
23.node是如何實現http模塊的?
24.如何構建一個主從模式?
25.nginx相關配置瞭解過嗎?
26.你真的理解前端嗎?
雖然有些方面還未補足,可是能夠做爲參考~