[21屆]web前端開發實習生崗位面試準備----計算機網絡

一、從地址欄輸入URL到頁面加載完成發生了什麼?

  1. 瀏覽器開啓一個線程來處理這個請求,對URL判斷如果是http協議就按照web方式處理
  2. 瀏覽器先查看瀏覽器緩存-系統緩存-路由器緩存,如果緩存中有,會直接在屏幕中顯示頁面內容(此時沒有向服務端發請求)。若沒有,則進行下一步操作(後面需要向服務端發送請求)
  3. 過DNS解析獲取網址的IP地址
  4. 向真實IP地址服務器發起tcp連接,與瀏覽器建立tcp三次握手
  5. 握手成功後,進行HTTP協議會話,瀏覽器發送報頭(請求報頭)
  6. 進入到web服務器上的 Web Server,如 Apache、Tomcat、Node.JS 等服務器
  7. 進入部署好的後端應用,如 PHP、Java、JavaScript、Python 等,找到對應的請求處理
  8. 處理結束回饋報頭,將數據返回至瀏覽器
  9. 瀏覽器開始下載html文檔(響應報頭,狀態碼200),同時設置緩存
  10. 之後瀏覽器對整個 HTML 結構進行解析,形成 DOM 樹;與此同時,它還需要對相應的 CSS 文件進行解析,形成 CSS 樹(CSSOM)。接下來,需要結合 DOM + CSSOM,渲染形成一個繪製樹(Render Tree)
  11. 得到繪製樹之後,需要計算每個結點在頁面中的位置,這一個過程稱爲layout
  12. layout的過程是在一個連續的二維平面上進行的,接下來,需要將這些結果柵格化,映射到屏幕的離散二維平面上,這一過程稱爲 paint ; 現代瀏覽器爲提升性能,將頁面劃分多個 layer,各自進行 paint 然後組合成一個頁面(composite layers)

二、TCP和UDP

  1. TCP是面向連接的運輸層協議;UDP是無連接的,即發送數據之前不需要建立鏈接,因此減少了開銷和發送數據的時延
  2. TCP提供可靠交付的服務,通過TCP連接傳送的數據,無差錯、不丟失、不重複、並且按時到達;UDP使用最大努力交付,即不保證可靠性交付,因此主機不需要維持複雜的連接狀態
  3. TCP面向字節流,TCP中的“流”指的是流入到進程或從進程流出的字節序列;UDP是面向報文的,發送方的UDP對應用程序交下來的報文,在添加首部後就向下交付IP層
  4. UDP沒有擁塞控制,因此網絡出現的擁塞不會使源主機的發送速率降低,符合很多實時應用(如IP電話、實時視頻會議等)的要求
  5. 每一條TCP連接只能有兩個端點,每一條TCP連接只能是點對點的;UDP支持一對一、一對多、多對一和多對多的交互通信
  6. UDP的首部開銷小,只有8個字節,比TCP的20個字節的首部短
  7. TCP提供可靠的全雙工通信(雙向實時通信),TCP允許通信雙方的應用進程在任何時候都能發送數據;UDP是不可靠信道

三、請求方式

  1. GET請求在瀏覽器回退時是無害的,POST會再次提交請求
  2. GET請求產生的URL地址可以被收藏,而POST不可以
  3. GET請求會被瀏覽器主動緩存,而POST不會,除非手動設置
  4. GET請求只能進行URL編碼,而POST支持多種編碼方式
  5. GET請求參數會被完整的保留在瀏覽器歷史記錄裏,而POST中的參數不會被保留
  6. GET請求在URL中傳遞的參數是有長度限制的(不固定,因瀏覽器決定),而POST沒有限制
  7. GET請求只接受ASC2字符,而對參數的數據類型POST沒有限制
  8. GET請求比POST更不安全,因爲參數直接暴露在URL上,所以不能用來傳遞敏感數據
  9. GET請求參數通過URL傳遞,而POST放在request.body上

四、cookie、localStorage、sessionStorage區別

  1. 從數據生命週期上來說
    • cookie:一般由服務器端生成,可設置失效時間,如果在瀏覽器端生成cookie,則默認關閉瀏覽器後失效。
    • localStorage: 永久保存,除非被清除。
    • sessionStorage: 僅在當前會話下有效,關閉頁面或者瀏覽器被清除。
  2. 從數據存儲方面來說
    • cookie大小爲4KB左右
    • storage一般爲5MB
  3. 從與服務器端通信方面
    • cookie每次都會攜帶在HTTP頭中,如果cookie保存過多會帶來性能問題
    • storage僅在客戶端保存,不參與和服務器的通信
  4. 從易用性方面來說
    • cookie原生接口不友好
    • storage原生接口友好,也可自行封裝

五、CDN

六、問題

  1. 請詳細介紹一下TCP三次握手機制,爲什麼要三次握手?
    1.1 爲什麼要有握手?
    1.2 爲什麼是三次?
    可靠性、需要同步序列號,所以需要握手
  2. 簡單介紹下HTTP協議中緩存的處理流程?
    2.1 緩存的應用流程是什麼?
    2.2 與緩存相關的HTTP頭部有哪些?
  3. 在地址欄鍵入URL後,網絡世界發生麼什麼?
  4. 使用HTTP長連接有哪些優點?
  5. CLOSE_WAIT狀態產生的原因?
  6. 介紹下多播是怎樣實現的?
  7. 服務器的最大併發連接數是多少?
  8. TCP和UDP協議該如何選擇?
  9. TLS/SSL協議是如何保障信息安全的?
  10. HTTP2協議有哪些優點?
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章