js面試問題總結

2021-10-10 06:45:21 字數 2095 閱讀 2305

1.虛擬dom

虛擬dom為什麼能夠提高效能

js物件的結構樹表示dom樹的結構,用這個樹構建乙個真正的dom樹,插到文件中記錄狀態變更,重新構造乙個新的物件樹,然後用新的樹和舊的樹去做比較,記錄兩者之間的差異,將差異的部分更新到真正的dom樹上面,只會渲染差異部分並不會渲染全部

2.cookie localstorage sessionstorage

3.什麼是閉包

閉包就是能使得外部變數獲取內部變數的函式,在本質上閉包就是將內部函式和外部函式連線起來的乙個橋梁,最大的用處有兩個: 可以讀取函式內部的變數;讓這些變數的值始終保持在記憶體中

閉包的好處
延長變數的生命週期

避免全域性汙染

私有成員存在

安全性提高

4.從輸入url到顯示頁面都經歷了什麼

瀏覽器輸入url這一過程詳解

1.在瀏覽器中輸入url

2.瀏覽器先在快取中查詢快取中有的話從快取中拿取,沒有的話傳送http請求

3.在傳送http請求之前 解析網域名稱

4.瀏覽器想服務端傳送tcp請求與瀏覽器建立三次握手

5.握手成功傳送http請求,請求資料報

6.服務端接收到請求並且將資料返回給瀏覽器

7.瀏覽器接收到資料

8.讀取頁面內容,瀏覽器渲染,解析 html原始碼

9.生成dom樹 解析css樣式 js互動

10.客戶端與服務端互動

11.ajax查詢

如果你需要傳遞的引數不多可以使用call

如果引數很多可以整理成陣列 進行傳遞

如果想生成乙個新的函式長期繫結給某個函式給某個物件使用都可以用bind

6.為什麼jsonp不是真正的ajax
jsonp是根據動態插入這一特點來進行的

真正的ajax是通過xmlhttprequest來讀取本頁內容的

不同點:實質不同,ajax是通過跨域,jsonp是通過script標籤並不遵循同源策略。jsonp只支援get請求,ajax既支援get也支援post put delete

7.如何進行**的效能優化
1.減少http請求

2.css選擇器優化

3.當資料量很大時使用懶載入

4.對瀏覽器使用優雅降級和漸進增強的方案( 優雅降級是指:一開始針對瀏覽器的版本進行頁面構建,然後再根據高階瀏覽器進行互動,追加更好的使用體驗。漸進增強是指:一開始就構建站點的完整功能。然後針對瀏覽器進行測試和修復)

5.使用壓縮的js css包

6.減少請求的數量

7.優化網路連線

8.優化資源載入

9.減少重繪回流

10.效能更好的api

11.webpack優化

8.new操作符幹了什麼
1.new建立了乙個空物件並且用this引用這個空物件,同時還繼承了函式的原型

2. 屬性和方法都被加入到this引用的物件中

3.物件由this引用,並且在最後隱式返回了this

9.dom選擇器優先順序以及權重值計算
行內樣式:1000

id選擇器:0100

類選擇器 偽類選擇器 屬性選擇器:0010

標籤選擇器 偽元素選擇器 :0001

萬用字元 子選擇器 相鄰選擇器 :0000

10.foreach 和 map之間的區別
map會產生乙個陣列 foreach不會 map可以進行鏈式操作 foreach不能

前端面試必備

面試問題總結

學了一年多的語言還沒有真正的搞清楚什麼是面向過程什麼是物件導向,今天整理一下,還希望大家可以提出自己的寶貴意見,謝謝。第一大問題面向過程和物件導向的理解 向過程的概念 面向過程就是分析出我們完成一件事情所需要的步驟,然後用函式把這些步驟一步一步的實現,使用的時候在一步一步的按順序的呼叫。就像是洗臉 ...

面試問題總結

參考 字首表示式的計算機求值 波蘭式 從右至左掃瞄表示式,遇到數字時,將數字壓入堆疊,遇到運算子時,彈出棧頂的兩個數,用運算子對它們做相應的計算 棧頂元素 op 次頂元素 並將結果入棧 重複上述過程直到表示式最左端,最後運算得出的值即為表示式的結果。字尾表示式的計算機求值 逆波蘭式 與字首表示式類似...

面試問題總結

1.兩個軟體如何傳送訊息的?底層就是通過socket實現的 基於socket實現客戶端向伺服器 socket scoket new socket 目標ip或網域名稱,目標埠 建立連線,如果網域名稱解析不了會拋unknownhostexception的異常 讀取從伺服器返回的資訊 流 buffered...