1、http 回應碼 301 和 302 代表的是什麼?有什麼區別?
答:301,302 都是HTTP狀態的編碼,都代表某個URL發生了轉移。
區別:
301 redirect: 301 代表永久性轉移(Permanently Moved)。
302 redirect: 302 代表暫時性轉移(Temporarily Moved )。
(推薦教學:java入門程式)
#2、forward 與 redirect 的差異?
Forward和Redirect代表了兩種請求轉送方式:直接轉送和間接轉送。
直接轉發方式(Forward),客戶端和瀏覽器只發出一次請求,Servlet、HTML、JSP或其它資訊資源,由第二個資訊資源回應該請求,在請求物件request中,保存的物件對於每個資訊資源是共享的。
間接轉發方式(Redirect)實際上是兩次HTTP請求,伺服器端在回應第一次請求的時候,讓瀏覽器再向另外一個URL發出請求,從而達到轉發的目的。
舉個通俗的例子:
直接轉發就相當於:「A找B借錢,B說沒有,B去找C借,借到借不到都會把訊息傳遞給A」;
間接轉發就相當於:「A找B借錢,B說沒有,讓A去找C借」。
(相關影片教學推薦:java影片教學)
#3、簡述 tcp 和 udp的差別?
TCP面向連線(如打電話要先撥號建立連線);UDP是無連線的,也就是在傳送資料之前不需要建立連線。
TCP提供可靠的服務。也就是說,透過TCP連接傳送的數據,無差錯,不遺失,不重複,且按序到達;UDP盡最大努力交付,即不保證可靠交付。
Tcp透過校驗和,重傳控制,序號標識,滑動視窗、確認應答實現可靠傳輸。如丟包時的重發控制,還可以對次序亂掉的分包進行順序控制。
UDP具有較好的即時性,工作效率比TCP高,適用於對高速傳輸和即時性有較高的通訊或廣播通訊。
每一條TCP連線只能是點到點的;UDP支援一對一,一對多,多對一和多對多的互動通訊。
TCP對系統資源需求較多,UDP對系統資源要求較少。
4、tcp 為什麼要三次握手,兩次不行嗎?為什麼?
為了實現可靠資料傳輸, TCP 協定的通訊雙方, 都必須維護一個序號, 以標識發送出去的資料包中, 哪些是已經被對方收到的。三次握手的過程即是通訊雙方互相告知序號起始值, 並確認對方已經收到了序號起始值的必經步驟。
如果只是兩次握手, 至多只有連接發起方的起始序號能被確認, 另一方選擇的序號則得不到確認。
5、說一下 tcp 黏包是怎麼產生的?
(1)發送方產生黏包
採用TCP協定傳輸資料的客戶端與伺服器經常是保持一個長連接的狀態(一次連線發送一次資料不存在粘包),雙方在連接不斷開的情況下,可以一直傳輸資料;但當發送的資料包過於的小時,那麼TCP協定預設的會啟用Nagle演算法,將這些較小的資料包進行合併發送(緩衝區資料發送是一個堆壓的過程);這個合併過程就是在發送緩衝區中進行的,也就是說資料發送出來它已經是黏包的狀態了。
(2)接收方產生黏包
接收方採用TCP協定接收資料時的過程是這樣的:資料到底接收方,從網絡模型的下方傳遞至傳輸層,傳輸層的TCP協定處理是將其放置接收緩衝區,然後由應用層來主動獲取(C語言用recv、read等函數);這時會出現一個問題,就是我們在程式中呼叫的讀取資料函數不能及時的把緩衝區中的資料拿出來,而下一個資料又到來並有一部分放入的緩衝區末尾,等我們讀取資料時就是一個黏包。 (放資料的速度> 應用層拿資料速度)
#如果您想知道更多面試題,可以存取java面試題。
以上是2020全新Java面試題-網絡的詳細內容。更多資訊請關注PHP中文網其他相關文章!