前端每次面試,基礎知識是必問,但是拉開薪資的差距就是一些稍微有點技術深度和一些技術廣度比較了解的同學。
WebSocket 的實現(xiàn)和應用
參考回答:
(1)什么是WebSocket?
WebSocket是HTML5中的協(xié)議,支持持久連續(xù),http不支持持久性連接。Http1.0和HTTP1.1都不支持持久性的鏈接,HTTP1.1中的keep-alive,將多個http請求合并為1個。
(2) WebSocket是什么樣的協(xié)議,具體有什么優(yōu)點?
HTTP的生命周期通過Request來界定,也就是Request一個Response,那么在HTTP1.0協(xié)議中,這次HTTP請求就結束了 。在HTTP1.1中進行了改進,其中有一個connection:Keep-alive,也就是說,在一個http連接中,可以發(fā)送多個Request,接收多個Response。但是必須記住,在HTTP中一個Request只能對應有一個Response,而且這個Response是被動的,不能主動去發(fā)起。
WebSocket是基于HTTP協(xié)議的,或者說是借用了HTTP協(xié)議來完成一部分握手,在握手階段與HTTP是相同的。我們來看一個WebSocket握手協(xié)議 的實現(xiàn),基本是2個屬性,upgrade,connection。
基本請求如下:
GET /chat HTTP/1.1
Host: server.example.com
Upgrade:websocket
Connection:Upgrade
Sec-WebSocket-Key:asdasdasd
Sec-WebSocket-Protocol:chat ,superChat
Sec-WebSocket-Version:13
Origin:http://example.com
多了下面2個屬性:
1 | Upgrade:webSocket |
2 | Connection:Upgrade |
告訴服務器發(fā)送的是WebSocket
1 | Sec-WebSocket-Key:asdasdasdasdas= |
2 | Sec-WebSocket-Protocol:chat,superchat |
3 | Sec-WebSocket-Version:13 |
HTTP請求的方式,HEAD方式
參考回答:
head:類似于get請求,只不過返回的響應中沒有具體的內容,用戶獲取報頭options:允許客戶端查看服務器的性能,比如說服務器支持的請求方式等等。
一個圖片url訪問后直接下載是怎樣實現(xiàn)的?
參考回答:
請求的返回頭里面,用于瀏覽器解析的重要參數(shù)就是OSS的API文檔李阿敏返回http請求頭。決定用戶下載行為的參數(shù)。
下載的情況下:
1.X-oss-object-type:Normal
2.x-oss-request-id: 598asdasdasdas
3.x-oss-storage-class:Standard
說一下http2.0
參考回答:
首先補充一下,http和https的區(qū)別,我上一篇文章詳細介紹了之前的區(qū)別,大家可以再看下,https和http的區(qū)別。
簡要概括:
http2.0是基于1999年發(fā)布的http1.0后的首次更新。
提升了訪問速度(相對于之前,請求資源所需時間更少,訪問速度更快),允許多路復用:多路復用允許同事通過單一的HTTP/2連接發(fā)送多重請求-響應信息。
改善了在http1.1中瀏覽器在同一時間,針對同一域名下的請求有一定數(shù)量限制(連接數(shù)量),超過限制會被阻塞。二進制分幀:在HTTP2.0會將所有的傳輸信息分割為更小的信息或者幀,并且他們進行二進制編碼。首部壓縮,服務端進行推送。