【秋招必備】TCP,UDP,Socket,Http網絡編程面試題(2021最新版)


前言

網絡通訊在系統交互中是必不可少的一部分,無論是職場面試還是工作中都是繞不過去的,本節我們來談談 Java 網絡編程中的一些知識和網絡編程面試題。

小編分享的這份Java后端開發面試總結包含了JavaOOP、Java集合容器、Java異常、並發編程、Java反射、Java序列化、JVM、Redis、Spring MVC、MyBatis、MySQL數據庫、消息中間件MQ、Dubbo、Linux、ZooKeeper、 分布式&數據結構與算法等26個專題技術點,都是小編在各個大廠總結出來的面試真題,已經有很多粉絲靠這份PDF拿下眾多大廠的offer,今天在這里總結分享給到大家!【已完結】

完整版Java面試題地址:2021最新面試題合集集錦

序號 專題 內容 鏈接
1 中間件 【秋招必備】Java中間件面試題(2021最新版) https://www.cnblogs.com/QLCZ/p/14851355.html
2 微服務 【秋招必備】Java微服務面試題(2021最新版) https://www.cnblogs.com/QLCZ/p/14893883.html
3 並發編程 【秋招必備】Java並發編程面試題(2021最新版) https://www.cnblogs.com/QLCZ/p/14893914.html
4 Java基礎 【秋招必備】Java基礎知識面試題(2021最新版) https://www.cnblogs.com/QLCZ/p/14968925.html
5 Spring Boot 【秋招必備】Spring Boot面試題(2021最新版) https://www.cnblogs.com/QLCZ/p/14968927.html
6 Redis 【秋招必備】Redis面試題(2021最新版) https://www.cnblogs.com/QLCZ/p/14968935.html
7 Spring MVC 【秋招必備】Spring MVC面試題(2021最新版) https://www.cnblogs.com/QLCZ/p/14977235.html
8 Spring Cloud 【秋招必備】Spring Cloud面試題(2021最新版) https://www.cnblogs.com/QLCZ/p/14977264.html
9 MySQL優化 【秋招必備】MySQL優化面試題(2021最新版) https://www.cnblogs.com/QLCZ/p/14977264.html
10 JVM 【秋招必備】JVM性能調優面試題(2021最新版) https://www.cnblogs.com/QLCZ/p/14981629.html
11 Linux 【秋招必備】Linux面試題(2021最新版) https://www.cnblogs.com/QLCZ/p/15004102.html
12 Mybatis 【秋招必備】Mybatis面試題(2021最新版) https://www.cnblogs.com/QLCZ/p/15004110.html
13 網絡編程 【秋招必備】TCP,UDP,Socket,Http網絡編程面試題(2021最新版) https://www.cnblogs.com/QLCZ/p/15012942.html
14 設計模式 【秋招必備】設計模式面試題(2021最新版) https://www.cnblogs.com/QLCZ/p/15012953.html
15 大數據 【秋招必備】大數據面試題100道(2021最新版) https://www.cnblogs.com/QLCZ/p/15012984.html
16 Tomcat 【秋招必備】Tomcat面試題(2021最新版) https://www.cnblogs.com/QLCZ/p/15017627.html
17 多線程 【秋招必備】多線程面試題(2021最新版) https://www.cnblogs.com/QLCZ/p/15017638.html
18 Nginx 【秋招必備】Nginx_BIO_NIO_AIO面試題(2021最新版) https://www.cnblogs.com/QLCZ/p/15032145.html
19 memcache 【秋招必備】memcache面試題(2021最新版) https://www.cnblogs.com/QLCZ/p/15032231.html
20 java異常 【秋招必備】java異常面試題(2021最新版) https://www.cnblogs.com/QLCZ/p/15035951.html
21 Java虛擬機 【秋招必備】Java虛擬機面試題(2021最新版) https://www.cnblogs.com/QLCZ/p/15036517.html
22 Java集合 【秋招必備】Java集合面試題(2021最新版) https://www.cnblogs.com/QLCZ/p/15041523.html
23 Git常用命令 【秋招必備】Git常用命令(2021最新版) https://www.cnblogs.com/QLCZ/p/15041786.html
24 Elasticsearch 【秋招必備】Elasticsearch面試題(2021最新版) https://www.cnblogs.com/QLCZ/p/15044301.html
25 Dubbo 【秋招必備】Dubbo面試題(2021最新版) https://www.cnblogs.com/QLCZ/p/15044434.html

1.先看一天面試的經驗:

2.什么是網絡編程

3.網絡編程中兩個主要的問題

4.網絡協議是什么

在計算機網絡要做到井井有條的交換數據,就必須遵守一些事先約定好的規則,比如交換數據的格式、是否需要發送一個應答信息。這些規則被稱為網絡協議。

5.為什么要對網絡協議分層

  • 簡化問題難度和復雜度。由於各層之間獨立,我們可以分割大問題為小問題。
  • 靈活性好。當其中一層的技術變化時,只要層間接口關系保持不變,其他層不受影響。
  • 易於實現和維護。
  • 促進標准化工作。分開后,每層功能可以相對簡單地被描述

6.計算機網絡體系結構

TCP/IP參考模型

TCP/IP四層協議(數據鏈路層、網絡層、傳輸層、應用層)

  • 應用層 應用層最靠近用戶的一層,是為計算機用戶提供應用接口,也為用戶直接提供各種網絡服務。我們常見應用層的網絡服務協議有:HTTP,HTTPS,FTP,TELNET等。
  • 傳輸層 建立了主機端到端的鏈接,傳輸層的作用是為上層協議提供端到端的可靠和透明的數據傳輸服務,包括處理差錯控制和流量控制等問題。該層向高層屏蔽了下層數據通信的細節,使高層用戶看到的只是在兩個傳輸實體間的一條主機到主機的、可由用戶控制和設定的、可靠的數據通路。我們通常說的,TCP UDP就是在這一層。端口號既是這里的“端”。
  • 網絡層 本層通過IP尋址來建立兩個節點之間的連接,為源端的運輸層送來的分組,選擇合適的路由和交換節點,正確無誤地按照地址傳送給目的端的運輸層。就是通常說的IP層。這一層就是我們經常說的IP協議層。IP協議是Internet的基礎。
  • 數據鏈路層 通過一些規程或協議來控制這些數據的傳輸,以保證被傳輸數據的正確性。實現這些規程或協議的 硬件 和軟件加到物理線路,這樣就構成了數據鏈路,

1 TCP / UDP

1.1 什么是TCP/IP和UDP

1.2 TCP與UDP區別:

1.3 TCP和UDP的應用場景:

對某些實時性要求比較高的情況使用UDP,比如游戲,媒體通信,實時直播,即使出現傳輸錯誤也可以容忍;其它大部分情況下,HTTP都是用TCP,因為要求傳輸的內容可靠,不出現丟失的情況

1.4 形容一下TCP和UDP

1.5 運行在TCP 或UDP的應用層協議分析。

1.5.1 什么是ARP協議 (Address Resolution Protocol)?

1.5.2 什么是NAT (Network Address Translation, 網絡地址轉換)?

1.5.3 從輸入址到獲得頁面的過程?

1.6 TCP的三次握手

1.6.1 什么是TCP的三次握手

在網絡數據傳輸中,傳輸層協議TCP是要建立連接的可靠傳輸,TCP建立連接的過程,我們稱為三次握手。

1.6.2 三次握手的具體細節

1.6.3 用現實理解三次握手的具體細節

1.6.4 建立連接可以兩次握手嗎?為什么?

1.6.5 可以采用四次握手嗎?為什么?

這個肯定可以。三次握手都可以保證連接成功了,何況是四次,但是會降低傳輸的效率。

1.6.6 第三次握手中,如果客戶端的ACK未送達服務器,會怎樣?

1.6.7 如果已經建立了連接,但客戶端出現了故障怎么辦?

服務器每收到一次客戶端的請求后都會重新復位一個計時器,時間通常是設置為2小時,若兩小時還沒有收到客戶端的任何數據,服務器就會發送一個探測報文段,以后每隔75秒鍾發送一次。若一連發送10個探測報文仍然沒反應,服務器就認為客戶端出了故障,接着就關閉連接。

1.6.8 初始序列號是什么?

TCP連接的一方A,隨機選擇一個32位的序列號(Sequence Number)作為發送數據的初始序列號(Initial Sequence Number,ISN),比如為1000,以該序列號為原點,對要傳送的數據進行編號:1001、1002...三次握手時,把這個初始序列號傳送給另一方B,以便在傳輸數據時,B可以確認什么樣的數據編號是合法的;同時在進行數據傳輸時,A還可以確認B收到的每一個字節,如果A收到了B的確認編號(acknowledge number)是2001,就說明編號為1001-2000的數據已經被B成功接受。

1.7 TCP的四次揮手

1.7.1 什么是TCP的四次揮手

在網絡數據傳輸中,傳輸層協議斷開連接的過程我們稱為四次揮手

1.7.2 四次揮手的具體細節

1.7.3 用現實理解三次握手的具體細節TCP的四次揮手

1.7.4 為什么不能把服務器發送的ACK和FIN合並起來,變成三次揮手(CLOSE_WAIT狀態意義是什么)?

因為服務器收到客戶端斷開連接的請求時,可能還有一些數據沒有發完,這時先回復ACK,表示接收到了斷開連接的請求。等到數據發完之后再發FIN,斷開服務器到客戶端的數據傳送。

1.7.5 如果第二次揮手時服務器的ACK沒有送達客戶端,會怎樣?

客戶端沒有收到ACK確認,會重新發送FIN請求。

1.7.6 客戶端TIME_WAIT狀態的意義是什么?

2 Socket

2.1 什么是Socket

  • 網絡上的兩個程序通過一個雙向的通訊連接實現數據的交換,這個雙向鏈路的一端稱為一個Socket。Socket通常用來實現客戶方和服務方的連接。Socket是TCP/IP協議的一個十分流行的編程界面,一個Socket由一個IP地址和一個端口號唯一確定。
  • 但是,Socket所支持的協議種類也不光TCP/IP、UDP,因此兩者之間是沒有必然聯系的。在Java環境下,Socket編程主要是指基於TCP/IP協議的網絡編程。
  • socket連接就是所謂的長連接,客戶端和服務器需要互相連接,理論上客戶端和服務器端一旦建立起連接將不會主動斷掉的,但是有時候網絡波動還是有可能的
  • Socket偏向於底層。一般很少直接使用Socket來編程,框架底層使用Socket比較多,

2.2 socket屬於網絡的那個層面

2.3 Socket通訊的過程

2.4 TCP協議Socket代碼示例:

先運行服務端,在運行客戶端 ,

  1. 服務端:
package com.test.io; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream;

2.5 UDP協議Socket代碼示例:

2.6 Socket的常用類

3. HTTP

3.1什么是Http協議?

3.2 Socket和http的區別和應用場景

  • Socket連接就是所謂的長連接,理論上客戶端和服務器端一旦建立起連接將不會主動斷掉;
  • Socket適用場景:網絡游戲,銀行持續交互,直播,在線視屏等。
  • http連接就是所謂的短連接,即客戶端向服務器端發送一次請求,服務器端響應后連接即會斷開等待下次連接
  • http適用場景:公司OA服務,互聯網服務,電商,辦公,網站等等等等

3.3 什么是http的請求體?

3.4 http的響應報文有哪些?

3.5 http和https的區別?

3.6 HTTPS工作原理

3.7 一次完整的HTTP請求所經歷幾個步驟?

3.8 常用HTTP狀態碼是怎么分類的,有哪些常見的狀態碼?

3.9 Http協議中有那些請求方式

3.10 GET方法與POST方法的區別

3.11 http版本的對比

3.12 什么是對稱加密與非對稱加密

3.13 cookie和session對於HTTP有什么用?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM