? ? ? ? 看完某網(wǎng)的前端面試后總結(jié),總的來說知識體系還是對我有幫助的目代,下面列出常見一些問題并解決
? Es6
問:ES6 模塊化如何使用屈梁,開發(fā)環(huán)境如何打包?
答:import 導入 ,export 導出 榛了,開發(fā)環(huán)境可用webpack ,rollup.js 模塊打包工具
問: Es6的常用功能
答:let/const? ? 多行字符串/模板變量? ? 解構(gòu)賦值? 塊級作用域? 函數(shù)默認參數(shù)? ? 箭頭函數(shù) (this)Promise: new Promise 實例在讶,而且要return, new Promise 時要傳入函數(shù)霜大,函數(shù)有resolve reject 兩個參數(shù)构哺, 成功時執(zhí)行 resolve() 失敗時執(zhí)行reject(), then 監(jiān)聽結(jié)果
? ? 原型
問:原型的實際應用
答:jQuery的原型應用
問:原型如何體現(xiàn)它的擴展性
答:$.fn.getNode = function() {......}4
? 異步
問: 什么是單線程曙强,和異步有什么關(guān)系
答: 單線程 - 只有一個線程,只能做一件事
? ? ? ? 單線程原因 : 避免 DOM 渲染的沖突 (即兩段js不能同時執(zhí)行)
? ? ? ? 單線程的解決方案: 異步
問: 什么是 event-loop
答: 事件輪詢途茫,JS實現(xiàn)異步的具體解決方案:
? ? ? ? 同步代碼碟嘴,直接執(zhí)行
? ? ? ? 異步函數(shù)先放在 異步隊列 中
? ? ? ? 待同步函數(shù)執(zhí)行完畢,輪詢執(zhí)行 異步隊列 的函數(shù)
問:如何只用jQuery解決異步
答:jQuery 的 Deferred
問:Promise 的基本使用和原理
答:常用語法及Promise.race()和Promise.all()的使用
問:async 囊卜,await的使用
答: 同步promise使用娜扇,可用try catch 捕獲異常
? ? vdom
問:vdom是什么错沃?為何會存在vdom?
答:1? virtual dom 雀瓢, 虛擬 DOM
? ? ? ? 用 JS 模擬 DOM 結(jié)構(gòu)
? ? ? 2? DOM 變化的對比枢析,放在 JS 層來做(圖靈完備語言)
? ? ? ? 提高重繪性能
問:vdom的使用
答:snabbdom 庫 (vdom 的實現(xiàn))
? ? ? 核心API:h函數(shù)? patch函數(shù)
問:diff算法
答: 知道什么是 diff 算法,是 linux的基礎命令
? ? ? ? vdom 中應用 diff算法是為了找出需要更新的節(jié)點
? ? ? ? 實現(xiàn)致燥,patch(container,vnode) 和 patch(vnode, newVnode)
? ? ? ? 核心邏輯登疗,createElement 和updateChildren
vdom 找出本次 DOM 必須更新的節(jié)點來更新,其他的不更新
這個“找出”的過程嫌蚤,就需要 diff 算法
? ? React組件化
問:說一下對組件化的理解
答: 組件的封裝:封裝視圖辐益、數(shù)據(jù)、變化邏輯
? ? ? ? 組件的復用:props 傳遞脱吱、復用
問:jsx的本質(zhì)
答:JSX 其實是語法糖智政,開發(fā)環(huán)境會將 JSX 編譯成 JS 代碼, JSX 的寫法大大降低了學習成本和編碼工作量箱蝠, 同時续捂,JSX 也會增加 debug 成本? (React.createElement )
? ? ? JSX 是獨立的標準,可被其他項目使用
問:jsx和vdom的關(guān)系
答: 為何需要 vdom : JSX 需要渲染成 html宦搬,還有 rerender
? ? ? ? React.createElement 和 h 牙瓢,都生成 vnode
? ? ? ? 何時 patch: React.render(…) 和 setState? ?
? ? ? ? 自定義組件的解析:初始化實例,然后執(zhí)行 render
問:setState 的過程
答: 每個組件實例间校,都有 renderComponent 方法 (繼承Component)矾克, 執(zhí)行 renderComponent? 會重新執(zhí)行實例的 render, render 函數(shù)返回 newVnode 憔足,然后拿到 preVnode胁附, 執(zhí)行 patch(preVnode, newVnode)
setState 是異步的
問:React vs vue
答:本質(zhì)區(qū)別: vue - 本質(zhì)是 MVVM 框架,由 MVC 發(fā)展而來滓彰,
? ? ? ? ? ? ? ? ? React - 本質(zhì)是前端組件化框架控妻,由后端組件化發(fā)展而來
? ? ? 模板區(qū)別: vue - 使用模板(最初由 angular 提出)
? ? ? ? ? ? ? ? ? ? ? ? React - 使用 JSX
? ? ? ? 組件化的區(qū)別: React 本身就是組件化,沒有組件化就不是 React揭绑, vue 也支持組件化弓候,不過是在 MVVM 上的擴展
? ? ? ? 共同點:都支持組件化,都支持組件化
----國內(nèi)使用他匪,首推 vue 弓叛。文檔更易讀、易學诚纸、社區(qū)夠大撰筷,如果團隊水平較高,推薦使用 React 畦徘。組件化和 JSX
?
? ? hybrid
問:hybrid 是什么毕籽,為何會用 hybrid
答: hybrid 即“混合”抬闯,即前端和客戶端的混合開發(fā)
? ? ? ? hybrid 存在的核心意義在于快速迭代,無需審核