Java網路程式設計面試總結

2021-09-02 05:05:36 字數 3388 閱讀 1939

1.get 和 post 的區別?

get 請求可被快取

get 請求保留在瀏覽器歷史記錄中

get 請求可被收藏為書籤

get 請求不應在處理敏感資料時使用

get 請求有長度限制

post 請求不會被快取

post 請求不會保留在瀏覽器歷史記錄中

post 不能被收藏為書籤

post 請求對資料長度沒有要求

2.dns使用的協議

既使用tcp又使用udp,首先了解一下tcp與udp傳送位元組的長度限制:

udp報文的最大長度為512位元組,而tcp則允許報文長度超過512位元組。當dns查詢超過512位元組時,協議的tc標誌出現刪除標誌,這時則使用tcp傳送。通常傳統的udp報文一般不會大於512位元組。

區域傳送時使用tcp,主要有一下兩點考慮:

輔網域名稱伺服器會定時(一般時3小時)向主網域名稱伺服器進行查詢以便了解資料是否有變動。如有變動,則會執行一次區域傳送,進行資料同步。區域傳送將使用tcp而不是udp,因為資料同步傳送的資料量比乙個請求和應答的資料量要多得多。

tcp是一種可靠的連線,保證了資料的準確性。

網域名稱解析時使用udp協議:

客戶端向dns伺服器查詢網域名稱,一般返回的內容都不超過512位元組,用udp傳輸即可。不用經過tcp三次握手,這樣dns伺服器負載更低,響應更快。雖然從理論上說,客戶端也可以指定向dns伺服器查詢的時候使用tcp,但事實上,很多dns伺服器進行配置的時候,僅支援udp查詢包。

3.cookies和session區別

cookies是一種能夠讓**伺服器把少量資料儲存到客戶端的硬碟或記憶體,或是從客戶端的硬碟讀取資料的一種技術。

session: 當使用者請求來自應用程式的 web 頁時,如果該使用者還沒有會話,則 web 伺服器將自動建立乙個 session 物件。當會話過期或被放棄後,伺服器將終止該會話。

cookie機制:採用的是在客戶端保持狀態的方案,而session機制採用的是在服務端保持狀態的方案。同時我們看到由於伺服器端保持狀態的方案在客戶端也需要儲存乙個標識,所以session機制可能需要借助cookie機制來達到儲存標識的目的。

session是伺服器用來跟蹤使用者的一種手段,每個session都有乙個唯一標識:session id。當伺服器建立了session時,給客戶端傳送的響應報文包含了set-cookie欄位,其中有乙個名為sid的鍵值對,這個鍵值session id。

客戶端收到後就把cookie儲存瀏覽器,並且之後傳送的請求報表都包含sessionid。http就是通過session和cookie這兩個傳送一起合作來實現跟蹤使用者狀態,session用於服務端,cookie用於客戶端

4.三次握手

第一次握手:建立連線時,客戶端傳送syn包(syn=j)到伺服器,並進入syn_send狀態,等待伺服器確認;

第二次握手:伺服器收到syn包,必須確認客戶的syn(ack=j+1),同時自己也傳送乙個syn包(syn=k),即syn+ack包,此時伺服器進入syn_recv狀態;

第三次握手:客戶端收到伺服器的syn+ack包,向伺服器傳送確認包ack(ack=k+1),此包傳送完畢,客戶端和伺服器進入established狀態,完成三次握手。

完成三次握手,客戶端與伺服器開始傳送資料

5.一次完整的http請求過程

網域名稱解析 --> 發起tcp的3次握手 --> 建立tcp連線後發起http請求 --> 伺服器響應http請求,瀏覽器得到html** --> 瀏覽器解析html**,並請求html**中的資源(如js、css、等) --> 瀏覽器對頁面進行渲染呈現給使用者

6.tcp如何保證可靠傳輸?

三次握手。

將資料截斷為合理的長度。應用資料被分割成 tcp 認為最適合傳送的資料塊(按位元組編號,合理分片)

超時重發。當 tcp 發出乙個段後,它啟動乙個定時器,如果不能及時收到乙個確認就重發

對於收到的請求,給出確認響應

校驗出包有錯,丟棄報文段,不給出響應

對失序資料進行重新排序,然後才交給應用層

對於重複資料 , 能夠丟棄重複資料

流量控制。tcp 連線的每一方都有固定大小的緩衝空間。tcp 的接收端只允許另一端傳送接收端緩衝區所能接納的資料。這將防止較快主機致使較慢主機的緩衝區溢位。

擁塞控制。當網路擁塞時,減少資料的傳送。

7.詳細介紹http

http協議是hyper text transfer protocol(超文字傳輸協議)的縮寫,是用於從全球資訊網(www:world wide web )伺服器傳輸超文字到本地瀏覽器的傳送協議。

特點靈活:http允許傳輸任意型別的資料物件。正在傳輸的型別由content-type加以標記。

無連線:無連線的含義是限制每次連線只處理乙個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即斷開連線。採用這種方式可以節省傳輸時間。

無狀態:http協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的資訊,則它必須重傳,這樣可能導致每次連線傳送的資料量增大。另一方面,在伺服器不需要先前資訊時它的應答就較快。

支援b/s及c/s模式。

8.uri和url的區別

uri一般由三部組成:

訪問資源的命名機制

存放資源的主機名

資源自身的名稱,由路徑表示,著重強調於資源。

url是uniform resource locator,統一資源定位器,它是一種具體的uri,即url可以用來標識乙個資源,而且還指明了如何locate這個資源。url是internet上用來描述資訊資源的字串,主要用在各種www客戶程式和伺服器程式上,特別是著名的mosaic。採用url可以用一種統一的格式來描述各種資訊資源,包括檔案、伺服器的位址和目錄等。

url一般由三部組成:

協議(或稱為服務方式)

存有該資源的主機ip位址(有時也包括埠號)

主機資源的具體位址。如目錄和檔名等

9.https和http的區別

https協議需要到ca申請證書,一般免費證書很少,需要交費。

http是超文字傳輸協議,資訊是明文傳輸;https 則是具有安全性的ssl加密傳輸協 議。

http和https使用的是完全不同的連線方式,用的埠也不一樣,前者是80,後者是443。

http的連線很簡單,是無狀態的;https協議是由ssl+http協議構建的可進行加密傳輸、身份認證的網路協議,比http協議安全。

http預設使用80埠,https預設使用443埠

Java網路程式設計總結

tcp transmission control protocol 和udp user datagram protocol 協議屬於 傳輸層協議。其中tcp提供ip環境下的資料 可靠傳輸 它提供的服務包括 資料流傳送 可靠性 有效流控 全雙工操作和多路復用。通過面向連線 端到端和可靠的 資料報傳送。...

Java面試總結

需要分開處理一些wait notify,reentrantlock裡面的condition應用,能夠控制notify哪個執行緒,鎖可以繫結多個條件。具有公平鎖功能,每個到來的執行緒都將排隊等候。經常與其他表進行連線的表,在連線欄位上應該建立索引 經常出現在where子句中的字段 經常出現用作查詢選擇...

Java面試總結

大資料量資料庫 1.mybatis如何實現pojo類字段和資料庫欄位的對映。2.mybatis如何傳入多個引數。1.springboot啟動做了哪些事情。2.dubbo和springcloud的核心原理。3.springaop的原理。1.jvm有哪些優化點。2.gc 演算法。3.強引用和弱引用虛引用...