前言:
馬上就要過完年了,又要開始面試找作業了,面試少不了面試題的復習,今天分享的這份寶典由位元組大佬推薦,261頁的前端面試題寶典,幫助你復習鞏固,
主要內容包括CSS,JavaScript,HTTP,TCP協議,瀏覽器,資料結構和演算法
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實作

注:篇幅有限,部分內容由截圖代替,需要更詳細的內容可以點擊這里獲取完整版《前端面試題寶典》PDF檔案
計算機網路篇
HTTP
- HTTP 報文結構是怎樣的?
- HTTP有哪些請求方法?
- GET 和 POST 有什么區別?
- 如何理解 URI?
- 如何理解 HTTP 狀態碼?
- 簡要概括一下 HTTP 的特點和缺點?
- 對 Accept 系列欄位了解多少?
- 對于定長和不定長的資料,HTTP 是怎么傳輸的?
- HTTP 如何處理大檔案的傳輸?
- HTTP 中如何處理表單資料的提交?
- HTTP1.1 如何解決 HTTP 的隊頭阻塞問題?
- 對 Cookie 了解多少?
- 如何理解 HTTP 快取及快取代理?
- 為什么產生代理快取?
- 源服務器的快取控制
- 客戶端的快取控制
- 什么是跨域?瀏覽器如何攔截回應?如何解決?
- TLS1.2 握手的程序是怎樣的?
- 傳統 RSA 握手
- RSA 和 ECDHE 握手程序的區別
- TLS 1.3 做了哪些改進?
- HTTP/2 有哪些改進?
- HTTP/2 中的二進制幀是如何設計的?

TCP協議
- TCP 和 UDP 的區別?
- TCP 三次握手的程序?
- 為什么是三次而不是兩次、四次?
- 三次握手程序中可以攜帶資料么?
- 說說 TCP 四次揮手的程序
- 為什么是四次揮手而不是三次?
- 半連接佇列和 SYN Flood 攻擊的關系
- 如何應對 SYN Flood 攻擊?
- 介紹一下 TCP 報文頭部的欄位
- TCP 快速打開的原理(TFO)
- 說說TCP報文中時間戳的作用?
- TCP 的超時重傳時間是如何計算的?
- TCP 的流量控制
- TCP 的擁塞控制
- 說說 Nagle 演算法和延遲確認?
- 如何理解 TCP 的 keep-alive?

瀏覽器篇
- 瀏覽器快取?
- 說一說瀏覽器的本地存盤?各自優劣如何?
- 說一說從輸入URL到頁面呈現發生了什么?
- 談談你對重繪和回流的理解
- XSS攻擊
- CSRF攻擊
- HTTPS為什么讓資料傳輸更安全?
- 實作事件的防抖和節流?
- 實作圖片懶加載?

資料結構和演算法
鏈表
- 簡單的反轉鏈表
- 區間反轉
- 兩個一組翻轉鏈表
- K個一組翻轉鏈表
- 如何檢測鏈表形成環?
- 如何找到環的起點
- 合并兩個有序鏈表
- 合并 K 個有序鏈表
- 判斷回文鏈表

堆疊和佇列
- 有效括號
- 多維陣列 flatten
- 普通的層次遍歷
- 二叉樹的鋸齒形層次遍歷
- 二叉樹的右視圖
- 完全平方數
- 單詞接龍
- 優先佇列
- 關于堆的說明
- 實作一個最大堆
- 實作優先佇列
- 前 K 個高頻元素
- 合并 K 個排序鏈表
- 什么是雙端佇列?
- 滑動視窗最大值
- 堆疊實作佇列
- 佇列實作堆疊

二叉樹
- 遍歷
- 給定一個二叉樹,找出其最大深度
- 給定一個二叉樹,找出其最小深度
- 對稱二叉樹
- 二叉樹的最近公共祖先
- 二叉搜索樹的最近公共祖先
- 二叉樹的直徑
- 二叉樹的所有路徑
- 二叉樹的最大路徑和
- 將有序陣列轉換為二叉搜索樹
- 二叉樹展開為鏈表
- 不同的二叉搜索樹II

注:篇幅有限,部分內容由截圖代替,需要更詳細的內容可以點擊這里獲取完整版《前端面試題寶典》PDF檔案
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/261063.html
標籤:其他
