前幾天幫一個兩年多前端學長做面試復盤,崗位要求三年經驗,薪資20-30/月,問到的題目及追問的面試風格給我留下了深刻印象,面試時長1h左右。整理了下,面試問題及追問問題大致如下:
1. Vue的技術棧有哪些?
看具體項目:vue+typescript+scss+vue-router
2. UI框架用什么?
移動端用Vant,PC端用Element-UI
自己封裝UI組件,造輪子
3. JS基礎--防抖和節流
節流,用於后台的數據請求,flag控制用戶請求頻率,設置時間,flag初始為true,點擊為false,下此true之前請求無效,防止過於頻繁的請求
防抖,送外賣舉例
4. 數組常用的API
filter、sort排序和高階數組如map、foreach、reduce。
追問:sort有什么缺陷?使用需要注意的點?
使用時function中傳兩個值,兩個進行比較。
追問:不傳函數,直接傳數組會有什么問題?
排序規則問題,優先級
5. 函數的this?
理解,指向。根據調用動態決定動態指向。
call、bind、this指向
追問:具體場景中this的指向?
兩種情況全局調用
new怎么實現它。
追問:如何去實現一個new
new的過程中會把this指向函數返回的值(對象)
6. JS繼承
es6語法:class定義一個父類,再class定義一個子類 extends 父類,在子類中使用關鍵字super。
追問:super做了一個什么事?
super把父類中的屬性方法拷貝過來
追問:constructor是什么東西?
構造器
追問:除了es6繼承,還有哪些繼承方法?
原型繼承,es6基於原型繼承。
追問:不用XX轉化實現繼承?(沒聽清,大約在20'48'前)
方法:類名.prototype.方法
屬性:
7. JS原型鏈是什么,代碼執行時原型鏈如何執行?
8. Vue中常用的特性有哪些?
雙向數據綁定,v-model,watch,computed,生命周期函數。
追問:生命周期函數有哪些?
8種生命周期鈎子,及keep-alive相關的兩個生命周期鈎子:active和deactive,子組件中發生錯誤進行上報的生命周期鈎子catch error。
9. Vue中常用的一些指令。
v-bind、v-clock、v-for、v-model。
追問:v-bind和v-model的語法糖
追問:v-model如何實現語法糖的效果?即v-modle解析時和v-bind有什么區別?如何通過v-bind實現雙向綁定?
追問:v-show和v-if區別?
v-show會生成DOM節點,但隱藏了
v-if不會生成DOM節點
追問:display:none和opacity設置透明度的區別?
10. Button按鈕封裝是怎么做的,考量的點有哪些?
loading、button-group、樣式需求,click事件點擊的時候傳出去,size參數調節做進去,disabled屬性,根據傳入參數綁定相應CSS。
追問:封裝中的input雙向綁定如何實現的?
追問:Button彈出如何做的?
彈出框放到body最外層,避免遮擋
追問:什么類型的遮擋問題?
設置index,以及影響文檔流問題
追問:如何定位及計算button位置?獲取坐標注意什么點?
使用fixed定位,找到按鈕元素坐標
追問:滾動條獲取位置