Http 面试知识点
一、從URL輸入到頁面顯示發(fā)生了什么?
首先進行DNS查詢,查詢到域名對應的IP
接下來是TCP的三次握手,
當 TCP 握手結束后就會進行 TLS 握手,然后就開始正式的傳輸數(shù)據(jù)
數(shù)據(jù)在進入服務端之前,可能還會先經(jīng)過負責負載均衡的服務器,它的作用就是將請求合理的分發(fā)到多臺服務器上,這時假設服務端會響應一個 HTML 文件。
首先瀏覽器會判斷狀態(tài)碼是什么,如果是 200 那就繼續(xù)解析,如果 400 或 500 的話就會報錯,如果 300的話會進行重定向,這里會有個重定向計數(shù)器,避免過多次的重定向,超過次數(shù)也會報錯。
瀏覽器開始解析文件,如果是 gzip 格式的話會先解壓一下,然后通過文件的編碼格式知道該如何去解碼文件。
文件解碼成功后會正式開始渲染流程,先會根據(jù) HTML 構建 DOM 樹,有 CSS 的話會去構建 CSSOM 樹。如果遇到 script 標簽的話,會判斷是否存在 async 或者 defer ,前者會并行進行下載并執(zhí)行 JS,后者會先下載文件,然后等待 HTML 解析完成后順序執(zhí)行。
CSSOM 樹和 DOM 樹構建完成后會開始生成 Render 樹,這一步就是確定頁面元素的布局、樣式等等諸多方面的東西
在生成 Render 樹的過程中,瀏覽器就開始調(diào)用 GPU 繪制,合成圖層,將內(nèi)容顯示在屏幕上了。
二、緩存相關,例如 no-cache 和 no-store的區(qū)別
no-store:不緩存任何響應 no-cache: 資源會被緩存,但會立即失效,下次會發(fā)起請求驗證資源是否過期
三、瀏覽器有幾種緩存,什么時候使用緩存?
Service Worker
Memory Cache 內(nèi)存中的緩存
Disk Cache 硬盤中的緩存
Push Cache
網(wǎng)絡請求
四、cookie/session的區(qū)別,cookie的參數(shù)有哪些,http-only關注下
瀏覽器的同源政策規(guī)定,兩個網(wǎng)址只要域名相同和端口相同,就可以共享 Cookie(參見《同源政策》一章)。注意,這里不要求協(xié)議相同。也就是說,example.com設置的 Cookie,可以被https://example.com讀取。
- path屬性必須為絕對路徑,默認為當前路徑。
- domain屬性值必須是當前發(fā)送 Cookie,的域名的一部分。比如,當前域名是example.com,就不能將其設為foo.com。該屬性默認為當前的一級域名(不含二級域名)。
- max-age屬性的值為秒數(shù)。
- expires屬性的值為 UTC,格式,可以使用Date.prototype.toUTCString()進行日期格式轉換。
五、CDN能為什么可以做到性能優(yōu)化?
六、狀態(tài)碼,301和302的區(qū)別
七、web安全機制,XSS/CSRF
xss跨站腳本攻擊
csrf跨站輕輕偽造
xss最常見的就是評論功能,不要相信用戶的任何輸入,這里做下替換
const filterXss = (str) => {if (typedef str !== 'string') {return str}str = str.replace(/\</g, '>').replace(/\>/, '<').replace(/\"/, '"')return str } 復制代碼八、TCP三次握手,四次揮手原理
九、http2.0有哪些新特性?解決了什么問題? http3.0呢?
參考:juejin.im/post/5a4dfb…
- 二進制分幀
- 首部壓縮
- 流量控制
- 多路復用
- 請求優(yōu)先級
- 服務器推送
在 HTTP/1 中,為了性能考慮,我們會引入雪碧圖、將小圖內(nèi)聯(lián)、使用多個域名等等的方式。這一切都是因為瀏覽器限制了同一個域名下的請求數(shù)量(Chrome 下一般是限制六個連接),當頁面中需要請求很多資源的時候,隊頭阻塞(Head of line blocking)會導致在達到最大請求數(shù)量時,剩余的資源需要等待其他資源請求完成后才能發(fā)起請求。
HTTP/2 中引入了多路復用的技術,這個技術可以只通過一個 TCP 連接就可以傳輸所有的請求數(shù)據(jù)。多路復用很好的解決了瀏覽器限制同一個域名下的請求數(shù)量的問題,同時也間接更容易實現(xiàn)全速傳輸,畢竟新開一個 TCP 連接都需要慢慢提升傳輸速度。
十、瀏覽器跨域請求有哪些解決方式?
轉載于:https://juejin.im/post/5cf773526fb9a07eda03062f
總結
以上是生活随笔為你收集整理的Http 面试知识点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “不厚道”的程序员:年后第一天上班就提辞
- 下一篇: 如何为SFP光模块搭配对应的光纤跳线?