筆試總結(HTTP(S)/虛擬內存/xhr)

同花順的筆試完虐我這種渣渣,沒有選擇填空,只有問答和編程題,且大部分C++/JAVA,完全懵逼,
陌陌的算法題60分,也懵到題目都搞不清楚
完美世界的比較均衡,選擇很基礎,編程題也不難,只是我的編譯一直不通過很傷
下面總結一下不太清楚的知識點

1.虛擬內存

虛擬內存是計算機系統內存管理的一種技術。它使得應用程序認爲它擁有連續的可用的內存(一個連續完整的地址空間),而實際上,它通常是被分隔成多個物理內存碎片,還有部分暫時存儲在外部磁盤存儲器上,在需要時進行數據交換。
虛擬內存是Windows 爲作爲內存使用的一部分硬盤空間,可以解決執行的程序佔用內存很大或很多,則會導致內存消耗殆盡的問題,若計算機運行程序或操作所需的隨機存儲器不足時,則 Windows 會用虛擬存儲器進行補償。但是,計算機從RAM讀取數據的速率要比從硬盤讀取數據的速率快,因而擴增RAM容量是最佳選擇。

虛存的大小要同時滿足2個條件:
1.虛存的大小 ≤ 內存容量和外存容量之和。
2.虛存的大小 ≤ 計算機的地址位數能容納的最大容量

因爲計算機所支持的最大內存是由該計算機的地址位數決定的,也就是計算機的最大尋址能力。例如,32位機的尋址能力爲2的32次方,大約爲4G。所以虛擬內存的大小也受計算機地址位數的限制。

2.XmlHttpRequest對象的狀態

readystate是一個只讀屬性,表示XHR對象當前的狀態

0,對應常量UNSENT,表示XMLHttpRequest實例已經生成,但是open()方法還沒有被調用。
1,對應常量OPENED,表示send()方法還沒有被調用,仍然可以使用setRequestHeader(),設定HTTP請求的頭信息。
2,對應常量HEADERS_RECEIVED,表示send()方法已經執行,並且頭信息和狀態碼已經收到。
3,對應常量LOADING,表示正在接收服務器傳來的body部分的數據,如果responseType屬性是text或者空字符串,responseText就會包含已經收到的部分信息。
4,對應常量DONE,表示服務器數據已經完全接收,或者本次接收已經失敗了。

state:表示請求所得的HTTP狀態

200, OK,訪問正常
301, Moved Permanently,永久移動
302, Move temporarily,暫時移動
304, Not Modified,未修改
307, Temporary Redirect,暫時重定向
401, Unauthorized,未授權
403, Forbidden,禁止訪問
404, Not Found,未發現指定網址
500, Internal Server Error,服務器發生錯誤

HTTP狀態碼詳解:

Http狀態碼
Http狀態碼

3.HTTP協議

3.1 HTTP1.1與1.0相比的優化:
  • 緩存處理
    header裏引入了更多的緩存控制策略
  • 帶寬優化及網絡連接的使用
    在請求頭引入了range頭域,它允許只請求資源的某個部分,即返回碼是206
  • 錯誤通知的管理
    新增了24個錯誤狀態響應碼
  • Host頭處理
    請求消息和響應消息都應支持Host頭域,且請求消息中如果沒有Host頭域會報告一個錯誤(400 Bad Request)
  • 長連接
    支持長連接(PersistentConnection)和請求的流水線(Pipelining)處理,在一個TCP連接上可以傳送多個HTTP請求和響應,減少了建立和關閉連接的消耗和延遲
3.2 HTTPS與HTTP的一些區別

1.HTTPS協議需要到CA申請證書
2.HTTP協議運行在TCP之上,所有傳輸的內容都是明文,HTTPS運行在SSL/TLS之上,SSL/TLS運行在TCP之上,所有傳輸的內容都經過加密的。
3.HTTP和HTTPS使用的是完全不同的連接方式,用的端口也不一樣,前者是80,後者是443
4.HTTPS可以有效的防止運營商劫持,解決了防劫持的一個大問題

3.3 SPDY:HTTP1.x的優化
  • 降低延遲
    針對HTTP高延遲的問題,SPDY優雅的採取了多路複用(multiplexing)。多路複用通過多個請求stream共享一個tcp連接的方式,解決了HOL blocking的問題,降低了延遲同時提高了帶寬的利用率
  • 請求優先級
    多路複用帶來一個新的問題是,在連接共享的基礎之上有可能會導致關鍵請求被阻塞。SPDY允許給每個request設置優先級,這樣重要的請求就會優先得到響應
  • header壓縮
    前面提到HTTP1.x的header很多時候都是重複多餘的。選擇合適的壓縮算法可以減小包的大小和數量
  • 基於HTTPS的加密協議傳輸
    大大提高了傳輸數據的可靠性
  • 服務端推送
    採用了SPDY的網頁,例如我的網頁有一個sytle.css的請求,在客戶端收到sytle.css數據的同時,服務端會將sytle.js的文件推送給客戶端,當客戶端再次嘗試獲取sytle.js時就可以直接從緩存中獲取到,不用再發請求了
3.4 HTTP2.0性能驚人

HTTP2.0可以說是SPDY的升級版
HTTP2.0和SPDY的區別

  • HTTP2.0 支持明文 HTTP 傳輸,而 SPDY 強制使用 HTTPS
  • HTTP2.0 消息頭的壓縮算法採用 HPACK,而非 SPDY 採用的 DEFLATE
    HTTP2.0和HTTP1.X相比的新特性
  • 新的二進制格式
    HTTP1.x的解析是基於文本,HTTP2.0的協議解析採用二進制格式,實現方便且健壯
  • 多路複用
  • header壓縮
  • 服務端推送

HTTP2.0的多路複用和HTTP1.X中的長連接複用有什麼區別?
HTTP/1.* 一次請求-響應,建立一個連接,用完關閉;每一個請求都要建立一個連接;
HTTP/1.1 Pipeling解決方式爲,若干個請求排隊串行化單線程處理,後面的請求等待前面請求的返回才能獲得執行機會,一旦有某請求超時等,後續請求只能被阻塞,毫無辦法,也就是人們常說的線頭阻塞;
HTTP/2多個請求可同時在一個連接上並行執行。某個請求任務耗時嚴重,不會影響到其它連接的正常執行;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章