高階前端常見面試題

2021-10-18 14:21:39 字數 2364 閱讀 7859

1、請介紹一下回流(reflow)與重繪(repaint)

回流:當我們對 dom 的修改引發了 dom 幾何尺寸的變化(比如修改元素的寬、高或隱藏元素

等)時,瀏覽器需要重新計算元素的幾何屬性(其他元素的幾何屬性和位置也會因此受到影

響),然後再將計算的結果繪製出來。這個過程就是回流(也叫重排)。

重繪:當我們對 dom 的修改導致了樣式的變化、卻並未影響其幾何屬性(比如修改了顏色或背

景色)時,瀏覽器不需重新計算元素的幾何屬性、直接為該元素繪製新的樣式(跳過了上圖所示

的回流環節)。這個過程叫做重繪。

重繪不一定導致回流,回流一定會導致重繪

2、1rem、1em、1vh、1px各自代表的含義?

rem :是全部的長度都相對於根元素元素。通常做法是給html元素設定乙個字型大小,然後其他

元素的長度單位就為rem。

em:子元素字型大小的em是相對于父元素字型大小

元素的width/height/padding/margin用em的話是相對於該元素的font-size

vw/vh :全稱是 viewport width 和 viewport height,視窗的寬度和高度,相當於 螢幕寬度和高度的

1%,不過,處理寬度的時候%單位更合適,處理高度的 話 vh 單位更好。

px:px畫素(pixel)。相對長度單位。畫素px是相對於顯示器螢幕解析度而言的。

一般電腦的解析度有等不同的解析度

你好! 這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器, 可以仔細閱讀這篇文章,了解一下markdown的基本語法知識。

3、tcp 傳輸的三次握手、四次揮手策略

(1)三次握手: 為了準確無誤地吧資料送達目標處,tcp協議採用了三次握手策略。用tcp協議把資料

包送出去後,tcp不會對傳送後的情況置之不理,他一定會向對方確認是否送達,握手過程中使用

tcp的標誌:syn和ack

(2)傳送端首先傳送乙個帶syn的標誌的資料報給對方

接收端收到後,回傳乙個帶有syn/ack標誌的資料報 以示傳達確認資訊

(3)最後,傳送端再回傳乙個帶ack的標誌的資料報,代表「握手」結束

如在握手過程中某個階段莫明中斷,tcp協議會再次以相同的順序傳送相同的資料報

斷開乙個tcp連線需要「四次揮手

第一次揮手:主動關閉方傳送乙個fin,用來關注主動方到被動關閉方的資料傳送,也即是主動關閉方告誡被動關閉方:我已經不會再給你發資料了(在fin包之前傳送的資料,如果沒有收到對應的ack確認報文,主動關閉方依然會重發這些資料)。但是,此時主動關閉方還可以接受資料

第二次揮手:被動關閉方收到fin包後,傳送乙個ack給對方,確認序號收到序號 +1(與syn相同,乙個 fin占用乙個序號)

第三次揮手:被動關閉方傳送乙個 fin。用來關閉被動關閉方到主動關閉方的資料傳送,也就是告訴主動關閉方,我的資料也傳送完了,不會給你傳送資料了

第四次揮手:主動關閉方收到fin後,傳送乙個ack給被動關閉方,確認序號為收到序號+1,

至此,完成四次揮手

原型:

所有的函式資料型別都天生自帶乙個prototype屬性,該屬性的屬性值是乙個物件 prototype的屬性值中天生自帶乙個constructor屬性,

其constructor屬性值指向當前原型所屬的類 所有的物件資料型別,都天生自帶乙個proto屬性,該屬性的屬性值指向當前例項所屬類的原型

三個方面來說明前端效能優化

一: webapck優化與開啟gzip壓縮

1.babel-loader用 include 或 exclude來幫我們避免不必要的轉譯,不轉譯node_moudules中的js檔案 其次在快取當前轉譯的js檔案,設定loader: 'babel-loader?cachedirectory=true'

2.檔案採用按需載入等等

3.具體的做法非常簡單,只需要你在你的 request headers 中加上這麼一句: accept-encoding:gzip

4.優化採用svg或者字型圖示

5.瀏覽器快取機制,它又分為強快取和協商快取

二:本地儲存——從 cookie 到 web storage、

indexeddb 說明一下sessionstorage和localstorage還有cookie的區別和優缺點

三:**優化

1.事件**

2.事件的節流和防抖

3.頁面的回流和重繪

4.eventloop事件迴圈機制

5.**優化等等

前端常見面試題一

js事件委託就是利用冒泡的原理,把本應該新增到某個元素上的事件委託給他的父級,從而減少dom互動達到網頁優化 var ulobj document.getelementbyid list ulobj.onclick function e nodename 屬性可依據節點的型別返回其名稱。如果節點是乙...

前端開發常見面試題

1.盒子模型 所謂盒子模型 box model 就是把html頁面中的元素看作是乙個矩形的盒子,也就是乙個盛裝內容的容器。每個矩形都由元素的內容 content 內邊距 padding 邊框 border 和外邊距 margin 組成。2.html5新特性 3.div垂直水平居中 child 1 f...

前端js常見面試題

not a number 不是乙個數字,但是數值型別 nan 與其他數值進行比較的結果總是不相等的,包括它自身在內 var宣告的變數會掛載在window上,而let和const宣告的變數不會 var宣告變數存在變數提公升,let和const不存在變數提公升 let和const宣告形成塊作用域 同一作...