前言
昨天有幸去字節面試了,順便拿到了offer,把還記得的東西寫下來,供大家參考一下。
CSS篇
- 讓一個元素水平垂直居中,到底有多少種方案?
- 浮動布局的優點,缺點?清除浮動的方式?
- 使用display:inline-block會產生的問題?解決方法?
- 布局題:div垂直居中,左右10px,高度始終為寬度一半
- CSS如何進行布局
- 什么是BFC?
- 觸發條件
- BFC渲染規則
- 應用場景
- …
JavaScript篇
- JS原始數據類型有哪些?引用數據類型有哪些?
- null是對象嗎?為什么?
- ‘1’.toString()為什么可以調用?
- 0.1+0.2為什么不等于0.3?
- 什么是BigInt?
- 為什么需要BigInt?
- 如何創建并使用BigInt?
- typeof 是否能正確判斷類型?
- instanceof能否判斷基本數據類型?
- 能不能手動實現一下instanceof的功能?
- Object.is和===的區別?
- [] == ![]結果是什么?為什么?
- JS中類型轉換有哪幾種?
- == 和 ===有什么區別?
- 對象轉原始類型是根據什么流程運行的?
- 對閉包的理解
- 原型對象和構造函數有何關系?
- 能不能描述一下原型鏈?
- JS如何實現繼承?
- 函數的arguments為什么不是數組?如何轉化成數組?
- forEach中return有效果嗎?如何中斷forEach循環?
- JS判斷數組中是否包含某個值
- JS中flat—數組扁平化
- 數組中的高階函數
- 實現數組map方法 ?
- 實現數組reduce方法 ?
- 實現數組 push、pop 方法 ?
- 實現數組filter方法 ?
- 實現數組splice方法 ?
- 實現數組splice方法 ?
- 實現數組sort方法?
- 模擬實現一個new的效果?
- 模擬實現一個 bind 的效果?
- 實現一個 call/apply 函數?
- 談談你對JS中this的理解
- JS中淺拷貝的手段有哪些?
- 寫一個完整的深拷貝
進階
- 數據是如何存儲的?
- V8 引擎如何進行垃圾內存的回收?
- 描述一下 V8 執行一段JS代碼的過程?
- 宏任務(MacroTask)引入
- 微任務(MicroTask)引入
- 理解EventLoop
- nodejs 和 瀏覽器關于eventLoop的主要區別
- 關于process.nextTick的一點說明
- nodejs中的異步、非阻塞I/O是如何實現的?
- JS異步編程有哪些方案?為什么會出現這些方案?
- 簡單實現一下 node 中回調函數的機制?
- Promise 憑借什么消滅了回調地獄?
- 為什么Promise要引入微任務?
- Promise 如何實現鏈式調用?
- 實現Promise的 resolve、reject 和 finally
- 實現Promise的 all 和 race
- 談談你對生成器以及協程的理解
- 如何讓 Generator 的異步代碼按順序執行完畢?
- 解釋一下async/await的運行機制。
- forEach 中用 await 會產生什么問題?怎么解決這個問題?
- 關于JS中一些重要的api實現
最后:
總結來說,面試成功=基礎知識+項目經驗+表達技巧+運氣。我們無法控制運氣,但是我們可以在別的地方花更多時間,每個環節都提前做好準備。
面試一方面是為了找到工作,升職加薪,另一方面也是對于自我能力的考察。能夠面試成功不僅僅是來自面試前的臨時抱佛腳,更重要的是在平時學習和工作中不斷積累和堅持,把每個知識點、每一次項目開發、每次遇到的難點知識,做好積累,實踐和總結。
點擊這里領取Web前端開發經典面試題
目開發、每次遇到的難點知識,做好積累,實踐和總結。
點擊這里領取Web前端開發經典面試題