lz
最近剛剛找到工作,一直想找一個機會寫下自己的面試總結,所以趁著空閒的時間就把在面試過程中遇到的一些問題給梳理出來。對自己的知識進行查漏補缺,也希望可以幫助到正在找工作的你,話不多說,我們直接看面試
宣告:本文只是對知識點進行梳理,
lz
會在關鍵地方給出具體連結,不會給出具體答案,具體的答案需要靠自己去搜尋去總結,
1.HTML&CSS
- 語義化標籤
- 冒泡和捕獲
- 三欄佈局(浮動、定位、
flex
、BFC
) - 垂直居中、水平居中(這個至少得說出四種實現方式)
- 盒模型和如何更改盒模型(
box-sizing
)(當時面我的面試官說我這兩種模型說反了?) - css選擇器及優先順序
- BFC
- position:inherit、static、relative、fixed、absolute
- z-index
- transition、animation、transform
面試題
①:如何使用CSS實現滑鼠滑過一個元素控制另一個元素的顯示與否
②:給你三個巢狀標籤,如何實現中間的點選事件先觸發,然後最裡面一個最後是最外面的觸發
2.JavaScript
null
和undefined
的區別let
、const
、var
比較push
、slice
、filter
、map
等常用API的使用和內部實現(面試題見①)- 必須掌握
__proto__
和prototype
並能畫出原型圖(面試題見②) - 閉包的理解,閉包帶來的好處和影響以及閉包的使用場景(可結合防抖節流來說)
JavaScript
繼承:原型繼承和class
繼承(面試題見③)- 箭頭函式的作用以及什麼情況下不能使用箭頭函式
JavaScript
的事件執行機制JavaScript
隱式轉換及規則call
、apply
、bind
的異同以及內部實現new
的模擬實現ES5
模擬實現const
Promise
實現1、Promise
實現2、Promise.all
實現、Promise.race
實現async await
的實現原理(需要介紹Iterator、Generator
)(面試題見④)async await promise
的執行順序- 實現ES6的
class extends
(要考慮靜態屬性方法)
①舉個?,在往陣列中插入某一項方法有哪些?答:push
、shift
、slice
、splice
,這些API
的執行速度是怎麼樣的?這就需要我們知道它們的內部是如何實現的
②求下面程式碼的值,並畫出原型圖解釋原因
var F = new Function()
var obj = new F()
F.prototype.a = 1
obj.prototype.b = 2
obj.a = ???
obj.b = ???
複製程式碼
③介紹幾種原型繼承以及他們的優缺點,請卸車class extend
繼承的內部實現,擴充套件如何實現class
內的靜態方法
④這一道題開放性很大,需要實現同步非同步以及結合閉包巢狀執行
瀏覽器
- 程式和執行緒
- 瀏覽器由哪些程式組成
- 瀏覽器核心執行緒組成
- 瀏覽器多程式到JS單執行緒全面梳理
- 瀏覽器重繪(repaint)重排(reflow)與優化
- 瀏覽器的跨域方式
- 跨域-JSONP、CORS、NGINX反向代理
- V8的垃圾回收機制
- HTTP握手
- HTTP快取
- HTTP狀態碼
- HTTP1.0 1.1 2.0做了哪些改進
- localStorage、sessionStorage、cookie、session
面試題
①狀態碼為304時的資料處理過程?
②HTTP為什麼需要三次握手四次揮手
資料結構和演算法
- 連結串列結構特點
- 連結串列的插入刪除和雙向連結串列實現以及如何判斷閉環
- 二叉樹的遞迴和非遞迴實現
- 求二叉樹的高度和寬度(遞迴和非遞迴實現)
- 斐波那契數列第幾項以及前幾項的和(遞迴和非遞迴實現),摸這裡
- 陣列去重,此問題可升級為1、陣列中物件去重2、陣列中物件屬性相同值不同去重
- 無序陣列第k大數字(分資料量大小討論)
- 目標數字在陣列中排第幾
- 求陣列中最大的兩個值
- 字串匹配(
[](){}
這種型別)(面試題見①) - 實現一個EventBus包含
on
、emit
、once
、off
- 常見的陣列操作
- 只出現一次的數字Ⅰ/Ⅱ/Ⅲ
- 重建二叉樹
①?:
(1){}
返回 false ,(){}
返回true
,思路:
let obj = {
'[': -1,
']': 1,
'(': -2,
')': 2,
'{': -3,
'}': 3,
}
判斷執行過程中,只要出現了字元不存在或者字元對應的值大於0就返回 false,否則返回 true
複製程式碼
Vue
- 為什麼使用v-for時必須新增唯一的key?
- Vue的雙向繫結原理(必問感覺這已經是面Vue的開場白)
- Vue單向資料流(結合props討論)
- Vue元件間通訊(父子元件,兄弟元件)
- Vue computed在什麼時候初始化以及在什麼時候開始計算的(需要了解原始碼)
- Vuex的工作原理
- Vue與React的區別
- Vue高階元件(這個還是有難度的)
其他
- 效能優化(可以從
DOM
操作、JS
程式碼書寫、webpack
懶載入CDN
配置資源快取Hash
值、HTTP
快取以及你在專案中優化的任何點都可以說) Git
操作(工作區、暫存區和版本庫以及各種狀態之間的切換,merge
與rebase
的區別)webpack
(webpack
懶載入、CDN
配置、資源快取、Hash
值等方面)
工程
推薦
暫時先想這麼多吧,以後想到了再更新,大家面試如果在面試中遇到了什麼問題可以留言討論
tips
①:如果面試官提問問題的時候一定不要沒在有聽懂題意就直接回答問題
②:在面試官提問出問題當你把基礎部分都回答過之後,一定要對問題中的一些點進行擴充套件回答,這是你能拿到offer
的充分不必要條件謹記謹記謹記