前端面試題

1.輸入一個URL到頁面過程中發(fā)生了什么?

1.首先在瀏覽器中輸入URL
2.查找緩存,首先先查看瀏覽器緩存-系統(tǒng)緩存-路由緩存這個順序中查找是否有該地址,如果有則顯示頁面內(nèi)容,沒有則進(jìn)行下一步
3.DNS域名解析:瀏覽器向DNS服務(wù)器發(fā)起請求,解析該URL種域名對應(yīng)的IP地址(DNS服務(wù)器基于UDP,因此會用到UDP協(xié)議)
4.建立TCP連接:解析出IP地址后,根據(jù)IP地址和默認(rèn)80端口,和服務(wù)器建立TCP連接
5.發(fā)起HTTP請求:瀏覽器發(fā)起讀取文件的HTTP請求,該請求報文作為TCP三次握手的第三次數(shù)據(jù)發(fā)送給服務(wù)器
6.服務(wù)器響應(yīng)請求并返回結(jié)果:服務(wù)器對瀏覽器請求做出響應(yīng),并把對應(yīng)的html文件發(fā)送給瀏覽器
7.關(guān)閉TCP連接:通過四次揮手釋放TCP連接
8.瀏覽器渲染:瀏覽器解析HTML內(nèi)容并渲染出來,瀏覽器接收到數(shù)據(jù)包后的解析流程為

  • 構(gòu)建DOM樹:詞法分析然后解析成DOM樹,由dom元素及屬性節(jié)點(diǎn)組成,樹的根是document對象
  • 構(gòu)建css規(guī)則樹:生成css規(guī)則樹
  • 構(gòu)建render樹:瀏覽器將DOM和CSSOM結(jié)合,并構(gòu)建出渲染樹
    *布局:計算出每個節(jié)點(diǎn)在屏幕中的位置
  • 繪制:遍歷render樹,并使用UI后端層繪制每個節(jié)點(diǎn)
2.vue生命周期

create階段:vue實(shí)例被創(chuàng)建 beforeCreate:創(chuàng)建前,此時data和methods中的數(shù)據(jù)都還沒有初始化;created:創(chuàng)建完畢,data中有值,未掛載
mount階段:vue實(shí)例被掛載到真實(shí)DOM節(jié)點(diǎn) beforeMount:可以發(fā)起服務(wù)器請求;mounted:此時可以操作DOM
update階段:當(dāng)vue實(shí)例里面的data數(shù)據(jù)發(fā)生變化時,觸發(fā)組件的重新渲染(beforeUpdate updated)
destory階段:vue實(shí)例被銷毀 beforeDestroy:實(shí)例被銷毀前 destroyed

3.vue2.0和vue3.0有什么區(qū)別

1.響應(yīng)式系統(tǒng)的重新配置,雙向數(shù)據(jù)綁定的原理不同,使用es6的ProxyAPI(代理)替換對象.define屬性。使用代理優(yōu)勢

  • 可直接監(jiān)控列類型的數(shù)據(jù)變化
    *監(jiān)聽的對象是對象本身,不需要像Object.defineProperty那樣遍歷每個屬性,有一定的性能提升
  • 省去for循環(huán),閉包等內(nèi)容來提升效率
  • 直接添加對象屬性/刪除
  • 直接監(jiān)聽數(shù)組,不需要再去單獨(dú)對數(shù)組做特異性操作

2.支持碎片(多個根節(jié)點(diǎn))
vue2不支持碎片,而vue3支持

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容