02.26 Java 最常見的 208 道面試題:第八模塊答案網絡

網絡


79. http 響應碼 301 和 302 代表的是什麼?有什麼區別?


答:301,302 都是HTTP狀態的編碼,都代表著某個URL發生了轉移。


區別:


  • 301 redirect: 301 代表永久性轉移(Permanently Moved)。
  • 302 redirect: 302 代表暫時性轉移(Temporarily Moved )。


80. forward 和 redirect 的區別?


Forward和Redirect代表了兩種請求轉發方式:直接轉發和間接轉發。


直接轉發方式(Forward),客戶端和瀏覽器只發出一次請求,Servlet、HTML、JSP或其它信息資源,由第二個信息資源響應該請求,在請求對象request中,保存的對象對於每個信息資源是共享的。


間接轉發方式(Redirect)實際是兩次HTTP請求,服務器端在響應第一次請求的時候,讓瀏覽器再向另外一個URL發出請求,從而達到轉發的目的。


舉個通俗的例子:

  

直接轉發就相當於:“A找B借錢,B說沒有,B去找C借,借到借不到都會把消息傳遞給A”;

  

間接轉發就相當於:"A找B借錢,B說沒有,讓A去找C借"。


81. 簡述 tcp 和 udp的區別?


  • TCP面向連接(如打電話要先撥號建立連接);UDP是無連接的,即發送數據之前不需要建立連接。
  • TCP提供可靠的服務。也就是說,通過TCP連接傳送的數據,無差錯,不丟失,不重複,且按序到達;UDP盡最大努力交付,即不保證可靠交付。
  • Tcp通過校驗和,重傳控制,序號標識,滑動窗口、確認應答實現可靠傳輸。如丟包時的重發控制,還可以對次序亂掉的分包進行順序控制。
  • UDP具有較好的實時性,工作效率比TCP高,適用於對高速傳輸和實時性有較高的通信或廣播通信。
  • 每一條TCP連接只能是點到點的;UDP支持一對一,一對多,多對一和多對多的交互通信。
  • TCP對系統資源要求較多,UDP對系統資源要求較少。


82. tcp 為什麼要三次握手,兩次不行嗎?為什麼?


為了實現可靠數據傳輸, TCP 協議的通信雙方, 都必須維護一個序列號, 以標識發送出去的數據包中, 哪些是已經被對方收到的。 三次握手的過程即是通信雙方相互告知序列號起始值, 並確認對方已經收到了序列號起始值的必經步驟。


如果只是兩次握手, 至多隻有連接發起方的起始序列號能被確認, 另一方選擇的序列號則得不到確認。


83. 說一下 tcp 粘包是怎麼產生的?


①. 發送方產生粘包


採用TCP協議傳輸數據的客戶端與服務器經常是保持一個長連接的狀態(一次連接發一次數據不存在粘包),雙方在連接不斷開的情況下,可以一直傳輸數據;但當發送的數據包過於的小時,那麼TCP協議默認的會啟用Nagle算法,將這些較小的數據包進行合併發送(緩衝區數據發送是一個堆壓的過程);這個合併過程就是在發送緩衝區中進行的,也就是說數據發送出來它已經是粘包的狀態了。


Java 最常見的 208 道面試題:第八模塊答案網絡


②. 接收方產生粘包


接收方採用TCP協議接收數據時的過程是這樣的:數據到底接收方,從網絡模型的下方傳遞至傳輸層,傳輸層的TCP協議處理是將其放置接收緩衝區,然後由應用層來主動獲取(C語言用recv、read等函數);這時會出現一個問題,就是我們在程序中調用的讀取數據函數不能及時的把緩衝區中的數據拿出來,而下一個數據又到來並有一部分放入的緩衝區末尾,等我們讀取數據時就是一個粘包。(放數據的速度 > 應用層拿數據速度)


Java 最常見的 208 道面試題:第八模塊答案網絡


84. OSI 的七層模型都有哪些?


  1. 應用層:網絡服務與最終用戶的一個接口。
  2. 表示層:數據的表示、安全、壓縮。
  3. 會話層:建立、管理、終止會話。
  4. 傳輸層:定義傳輸數據的協議端口號,以及流控和差錯校驗。
  5. 網絡層:進行邏輯地址尋址,實現不同網絡之間的路徑選擇。
  6. 數據鏈路層:建立邏輯連接、進行硬件地址尋址、差錯校驗等功能。
  7. 物理層:建立、維護、斷開物理連接。


85. get 和 post 請求有哪些區別?


  • GET在瀏覽器回退時是無害的,而POST會再次提交請求。
  • GET產生的URL地址可以被Bookmark,而POST不可以。
  • GET請求會被瀏覽器主動cache,而POST不會,除非手動設置。
  • GET請求只能進行url編碼,而POST支持多種編碼方式。
  • GET請求參數會被完整保留在瀏覽器歷史記錄裡,而POST中的參數不會被保留。
  • GET請求在URL中傳送的參數是有長度限制的,而POST麼有。
  • 對參數的數據類型,GET只接受ASCII字符,而POST沒有限制。
  • GET比POST更不安全,因為參數直接暴露在URL上,所以不能用來傳遞敏感信息。
  • GET參數通過URL傳遞,POST放在Request body中。


86. 如何實現跨域?


方式一:圖片ping或script標籤跨域


圖片ping常用於跟蹤用戶點擊頁面或動態廣告曝光次數。 script標籤可以得到從其他來源數據,這也是JSONP依賴的根據。


方式二:JSONP跨域


JSONP(JSON with Padding)是數據格式JSON的一種“使用模式”,可以讓網頁從別的網域要數據。根據 XmlHttpRequest 對象受到同源策略的影響,而利用 ...


分享到:


相關文章: