17張思維導圖,2021年作為一名前端開發者需要掌握這些,前端面試複習資料參考大綱
本文首發於17張思維導圖,2021年作為一名前端開發者需要掌握這些,前端面試複習資料參考大綱,轉載請聯絡作者
前言
2020年最後一個月了,熬夜多天整理出17張思維導圖,對前端面試複習知識點進行了最全的總結,分享給大家。每個知識點都儘量找到最好的文章來解釋,通過思維導圖的形式進行展示。
給大家準備了高清的思維導圖和食用更加方便的PDF文件,全部聚合思維導圖一張,分類思維導圖17張,涉及前端開發的方方面面面,JS基礎,工程化,效能優化,安全,框架等。如果您是準備面試,或者享擴充套件前端知識,都可以通過這個目錄進行學習。
廢話不多說,下面分類展開來說,收藏起來吧
完整思維導圖實在太大,可關注公眾號「前端複習課」回覆“思維導圖”獲取高清大圖,總共18張,還有整理好的PDF哦。
1-Javascript
內建型別
-
介紹一下JS內建型別有哪些
-
介紹一下typeof區分型別的原理
-
介紹一下型別轉換
作用域
-
說說你對javascript的作用域的理解
-
什麼是作用域鏈
-
解釋下 let 和 const 的塊級作用域
執行上下文
-
說說你對執行上下文的理解
閉包
-
對閉包的看法,為什麼要用閉包?說一下閉包原理以及應用場景
-
閉包問題及優化
this指向
-
如何確定this指向
-
改變 this 指向的方式都有哪些
-
介紹箭頭函式的 this
原型/繼承
-
說一下對原型鏈的理解,畫一個經典的原型鏈圖示
-
舉例說明js如何實現繼承
-
ES5/ES6 的繼承除了寫法以外還有什麼區別
事件迴圈
-
你對事件迴圈有了解嗎?說說看!
-
微任務和巨集任務有什麼區別
-
瀏覽器和Node 事件迴圈的區別
非同步程式設計
-
非同步解決方案有哪些
-
Promise
- 實現一個Promise
- 實現Promise.all,race,allSeleted等
- async/await
2-DOM
事件
-
事件冒泡、捕獲等理解
-
介紹下瀏覽器事件委託
-
實現一個自定義事件
dom操作
位置與大小
-
JavaScript獲取DOM元素位置和尺寸大小
3-CSS
BFC
-
BFC 是什麼?觸發 BFC 的條件是什麼?有哪些應用場景?
1px
-
如何解決移動端 Retina 屏 1px 畫素問題
position
-
position 有哪些屬性
-
position: sticky 用過沒,有啥效果
flex
-
flex:1 的完整寫法是?分別是什麼意思?
重繪迴流
-
介紹下重繪和迴流(Repaint & Reflow),以及如何進行優化
-
說說你對GPU的理解,舉例說明哪些元素能觸發GPU硬體加速?
常見佈局
-
居中
-
單列布局
-
兩列自適應佈局
-
三欄佈局
-
粘連佈局
動畫實現
-
css 如何實現動畫
-
使用純CSS程式碼實現動畫的暫停與播放
-
使用css3動畫代替js的動畫有什麼好處?
盒模型
4-瀏覽器
跨域
-
跨域通訊有哪些方式
-
表單可以跨域嗎
從輸入URL到頁面展示,這中間發生了什麼?
- 一文摸透從輸入URL到頁面渲染的過程
- 從輸入 URL 到頁面展示到底發生了什麼?看完吊打面試官!
- 從輸入 URL 到頁面展示,這中間發生了什麼?
- 從輸入URL到頁面展示,這中間發生了什麼?
- 前端經典面試題: 從輸入URL到頁面載入發生了什麼?
HTML、CSS和JavaScript,是如何變成頁面的?
chrome僅僅打開了1個頁面,為什麼有4個程序?
localstorage
cookie
5-網路
HTTP
-
你知道哪些http頭部
-
說一下 Http 快取策略,有什麼區別,分別解決了什麼問題
TCP
-
請描述處TCP的三次握手和四次揮手
-
為什麼瀏覽器要限制tcp的連線最大個數?
HTTP2
-
HTTP2.0 特點
-
說一下 HTTP2.0 多路複用原理,多路復⽤有哪些優勢?
HTTPS
-
簡述https原理,以及與http的區別
CDN
-
CDN 是什麼?描述下 CDN 原理?為什麼要用 CDN?
DNS
-
DNS 查詢的過程,分為哪兩種,是怎麼一個過程
6-框架
vue
-
你知道Vue響應式資料原理嗎?Proxy 與 Object.defineProperty 優劣對比
-
Vue2.x元件通訊有哪些方式
-
Vue 中的 computed 和 watch 的區別在哪裡
-
元件中的data為什麼是一個函式
-
nextTick的實現原理是什麼
-
說說你對keep-alive元件的瞭解
-
你都做過哪些Vue的效能優化
-
vue3.0介紹
-
Composition API 的出現帶來哪些新的開發體驗,為啥需要這個
-
vuex
-
什麼情況下使用 Vuex
-
可以直接修改state的值麼
-
為什麼 Vuex 的 mutation 中不能做非同步操作
-
v-model和vuex有衝突麼
-
-
router
-
路由懶載入是什麼意思?如何實現路由懶載入
-
Vue-router 導航守衛有哪些
-
vue路由hash模式和history模式實現原理分別是什麼,他們的區別是什麼
-
react
-
React 事件繫結原理
-
React中的setState缺點是什麼呢
-
React元件通訊如何實現
-
類元件和函式元件的區別
-
請你說說React的路由是什麼
-
React有哪些效能優化的手段
-
React hooks用過嗎,為什麼要用
vue/react
-
虛擬DOM的優劣如何
-
v-for迴圈中key有什麼作用?
-
React 和 Vue 的 diff 時間複雜度從 O(n^3) 優化到 O(n) ,那麼 O(n^3) 和 O(n) 是如何計算出來的
-
聊聊 Redux 和 Vuex 的設計思想
7-工程化
腳手架
-
你知道什麼是腳手架嗎?
-
你們公司有自己的腳手架工具麼,他是怎麼工作的
構建工具
-
webpack
-
webpack的核心思想是什麼
-
Loader和Plugin的區別
-
有哪些常見的Loader和Plugin,簡單聊一聊各自的作用
-
說一下 Webpack 的熱更新原理吧
-
如何優化 Webpack 的構建速度
-
自己寫過Loader和Plugin麼
-
程式碼分割的本質是什麼?有什麼意義呢
-
說下 tree-shaking 的原理
-
babel原理
-
專案部署
-
你們公司專案釋出流程是什麼樣的
-
前端資源釋出路徑怎麼實現非覆蓋式釋出(平滑升級)?
-
SSR專案是如何釋出的
內部包
-
你有釋出過自己的npm包嗎?流程是怎樣的?
-
介紹下 npm 模組安裝機制,為什麼輸入 npm install 就可以自動安裝對應的模組?
-
你會搭建私有的npm倉庫嗎?怎麼搭建?
開發規範
- eslint
運維
- nginx
- cdn
git
構建優化
-
Webpack 為什麼慢,如何進行優化
8-效能
頁面是否可以快速載入
-
網路優化
- http2
- CDN
-
程式碼大小
- 程式碼分割
- 程式碼壓縮
- tree-shaking
-
SSR
-
離線
-
快取
是否允許使用者快速開始與之互動
-
渲染優化
-
web worker
滾動和動畫是否流暢
-
如何優化大資料列表(10萬+)的效能?說說你的方案
-
requestAnimationFrame
-
動畫效能如何檢測
-
js動畫和css動畫有什麼區別
-
分離圖層做動畫有什麼好處呢
-
重繪重排
圖片優化
-
圖片壓縮
-
圖片懶載入
骨架屏+合理的loading
9-監控
異常
-
專案中如何進行異常捕獲
-
為什麼會有那麼多Script Error錯誤
效能
-
前端是如何監控效能的
埋點
-
頁面埋點怎麼實現
為什麼通常在傳送資料埋點請求的時候使用的是 1x1 畫素的透明 gif 圖片
sendbeacon
10-安全
- [2020全網最全前端安全綜述](https://mp.weixin.qq.com/s/Qm_YI9pxfWQJpSLwbSFKbw)
xss
csrf
網路傳輸安全
- 一次安全可靠的通訊——HTTPS原理000046a5fdc7802a15f7508b556413
- HTTPS中間人攻擊實踐(原理·實踐)
介面加簽
介面加密
介面防重放
環境檢測
程式碼加密混淆
無處不在的驗證碼s
瀏覽器為什麼要阻止跨域請求?如何解決跨域?每次跨域請求都需要到達服務端嗎?
11-Node
node 事件迴圈
談談 node 的記憶體洩漏
node 中間層怎樣做的請求合併轉發
pm2 怎麼做程序管理,程序掛掉怎麼處理
SSR
-
SSR解決了什麼問題?有做過SSR嗎?你是怎麼做的?
-
SSR這麼好為啥不大規模使用了,基本公司專案還走的是前端渲染
GraphQL
-
使用過GraphQL麼,解決了什麼問題
-
和普通介面相比GraphQL有什麼優勢呢
12-跨端
Hybrid App
-
說一下H5和native之間是如何進行互動的,知道jsbridge麼
Weex
-
weex實現大致原理
RN
Flutter
13-微信開發
公眾號
-
微信授權流程
小程式
-
瞭解微信小程式的底層實現嗎
-
h5跟小程式有什麼區別
-
五花八門的小程式框架實現原理知道麼
14-新主題
微前端
-
你瞭解什麼是微前端嗎?說說你對它的理解?
serverless
-
說說你對serverless的理解,它對前端有什麼影響?
邊緣計算
-
你聽過邊緣計算嗎?說說你對它的理解?
WebAssembly
15-手寫
Promise
-
手寫一個Promise
-
使用Promise實現紅綠燈交替重複亮
-
Promise.all,race,allSeleted
-
sendRequests(urls, max, callback),同一時間最多發起max個請求,請求全部完成後執行callback
-
maxRequest(fn, maxNum),實現maxRequest,成功後resolve結果,失敗後重試,嘗試超過一定次數才真正的reject
-
頁面上有一個輸入框,兩個按鈕,A按鈕和B按鈕,點選A或者B分別會發送一個非同步請求,請求完成後,結果會顯示在輸入框中。使用者隨機點選A和B多次,要求輸出顯示結果時,按照使用者點選的順序顯示
this
-
call/apply
-
bind
-
new
-
鏈式呼叫4.add(1).add(2).add(3)
原型鏈
-
instanceof
-
各種繼承
閉包
-
修改函式正確執行
-
柯里化
防抖節流
-
debounce
-
throttle
網路請求
-
手寫AJAX
-
手寫JSONP
設計模式
-
eventEmiter
-
singleton
深拷貝
16-高頻演算法
字串
陣列
連結串列
二叉樹
棧/佇列
排序
- 氣泡排序
- 選擇排序
- 插入排序
- 希爾排序
- 歸併排序
- 快速排序
- 堆排序
遞迴
二分法
動態規劃
貪心與分治
滑動視窗
位運算
17-專案/技術之外
專案開發中有遇到什麼挑戰沒?
對哪個專案印象比較深刻深刻,遇到最難的專案是啥?
專案研發流程中作為前端開發一般扮演的啥角色?
現在有的專案中覺得哪些專案可以繼續優化,為啥沒有優化?
平時寫專案總結麼,一般總結哪些東西?
工作中能夠持續學習麼?
學習的動力怎麼來的,如何維持?
未來會有什麼樣的規劃?
對於加班你是怎麼看的?
說下你學習前端的歷程吧?
前端未來展望?
最後希望大家都能找到好的工作
完整思維導圖實在太大,可關注公眾號「前端複習課」回覆“思維導圖”獲取高清大圖,總共18張,還有整理好的PDF哦。