前言
大家平時在面試開發(fā)崗位的時候,是不是總覺得面試官問的問題,都感覺是在刁難自己呢?明明自己準備的知識都很充足,為什么偏偏問的都不是自己所掌握的?小編在這里告訴大家,你們就是缺少對應的面試題做指導,沒有一個方向。面試造火箭,入職擰螺絲,所以說,面試對大家來說是非常重要的。
小編應大家的考慮,給大家分享清華畢業(yè)大佬所整理的Java網(wǎng)絡編程面試題。因為內(nèi)容實在是有點多,小編在這里只給大家把部分內(nèi)容截圖出來介紹,每小節(jié)都有更加細化的內(nèi)容。
首先給大家分享Java網(wǎng)絡編程面試題的問題大全目錄
其次呢,是幾個小知識點問題及答案的介紹
1、tcp和udp的區(qū)別
TCP:是面向連接的流傳輸控制協(xié)議,具有高可靠性,確保傳輸數(shù)據(jù)的正確性,有驗證重發(fā)機制,因此不會出現(xiàn)丟失或亂序。
UDP:是無連接的數(shù)據(jù)報服務,不對數(shù)據(jù)報進行檢查與修改,無須等待對方的應答,會出現(xiàn)分組丟失、重復、亂序,但具有較好的實時性,UDP段結構比TCP的段結構簡單,因此網(wǎng)絡開銷也小。
2、tcp連接建立的時候3次握手,斷開連接的4次握手的具體過程
1. 建立連接采用的3次握手協(xié)議,具體是指:
l 第一次握手是客戶端connect連接到server
l 第二次server accept client的請求之后,向client端發(fā)送一個消息,相當于說我都準備好了,你連接上我了
l 第三次 就是client向server發(fā)送的,就是對第二次握手消息的確認。之后client和server就開始通訊了。
2.斷開連接的4次握手,具體如下:
l 斷開連接的一端發(fā)送close請求是第一次握手
l 另外一端接收到斷開連接的請求之后需要對close進行確認,發(fā)送一個消息,這是第二次握手
l 發(fā)送了確認消息之后還要向?qū)Χ税l(fā)送close消息,要關閉對對端的連接,這是第3次握手
l 而在最初發(fā)送斷開連接的一端接收到消息之后,進入到一個很重要的狀態(tài)time_wait狀態(tài),這個狀態(tài)也是面試官經(jīng)常問道的問題,最后一次握手是最初發(fā)送斷開連接的一端接收到消息之后。對消息的確認。
3、什么是阻塞IO?什么是非阻塞IO?
在了解阻塞IO和非阻塞IO之前,先看下一個具體的IO操作過程是怎么進行的。
通常來說,IO操作包括:對硬盤的讀寫、對socket的讀寫以及外設的讀寫。
當用戶線程發(fā)起一個IO請求操作(本文以讀請求操作為例),內(nèi)核會去查看要讀取的數(shù)據(jù)是否就緒,對于阻塞IO來說,如果數(shù)據(jù)沒有就緒,則會一直在那等待,直到數(shù)據(jù)就緒;對于非阻塞IO來說,如果數(shù)據(jù)沒有就緒,則會返回一個標志信息告知用戶線程當前要讀的數(shù)據(jù)沒有就緒。當數(shù)據(jù)就緒之后,便將數(shù)據(jù)拷貝到用戶線程,這樣才完成了一個完整的IO讀請求操作,也就是說一個完整的IO讀請求操作包括兩個階段:
1)查看數(shù)據(jù)是否就緒;
2)進行數(shù)據(jù)拷貝(內(nèi)核將數(shù)據(jù)拷貝到用戶線程)。
那么阻塞(blocking IO)和非阻塞(non-blocking IO)的區(qū)別就在于第一個階段,如果數(shù)據(jù)沒有就緒,在查看數(shù)據(jù)是否就緒的過程中是一直等待,還是直接返回一個標志信息。
Java中傳統(tǒng)的IO都是阻塞IO,比如通過socket來讀數(shù)據(jù),調(diào)用read()方法之后,如果數(shù)據(jù)沒有就緒,當前線程就會一直阻塞在read方法調(diào)用那里,直到有數(shù)據(jù)才返回;
而如果是非阻塞IO的話,當數(shù)據(jù)沒有就緒,read()方法應該返回一個標志信息,告知當前線程數(shù)據(jù)沒有就緒,而不是一直在那里等待。
10、Nio buffer 的內(nèi)部結構是什么?
15、網(wǎng)絡編程的一般步驟
對于TCP連接:
1.服務器端
32、簡單說一下http協(xié)議?
HTTP協(xié)議是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫,是用于從萬維網(wǎng)(WWW:World Wide Web )服務器傳輸超文本到本地瀏覽器的傳送協(xié)議。
HTTP是一個基于TCP/IP通信協(xié)議來傳遞數(shù)據(jù)(HTML 文件, 圖片文件, 查詢結果等)。
HTTP 工作原理
HTTP協(xié)議工作于客戶端-服務端架構上。瀏覽器作為HTTP客戶端通過URL向HTTP服務端即WEB服務器發(fā)送所有請求。
Web服務器有:Apache服務器,Nginx,IIS服務器(Internet Information Services)等。
Web服務器根據(jù)接收到的請求后,向客戶端發(fā)送響應信息。
HTTP默認端口號為80,但是你也可以改為8080或者其他端口。
HTTP三點注意事項:
l HTTP是無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,并收到客戶的應答后,即斷開連接。采用這種方式可以節(jié)省傳輸時間。
l HTTP是媒體獨立的:這意味著,只要客戶端和服務器知道如何處理的數(shù)據(jù)內(nèi)容,任何類型的數(shù)據(jù)都可以通過HTTP發(fā)送??蛻舳艘约胺掌髦付ㄊ褂眠m合的MIME-type內(nèi)容類型。
l HTTP是無狀態(tài):HTTP協(xié)議是無狀態(tài)協(xié)議。無狀態(tài)是指協(xié)議對于事務處理沒有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數(shù)據(jù)量增大。另一方面,在服務器不需要先前信息時它的應答就較快。
34、描述一下http協(xié)議服務器響應報文有哪些?
HTTP響應也由四個部分組成,分別是:
l 狀態(tài)行
l 消息報頭
l 空行
l 響應正文
HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain
最后呢,分享的是Java網(wǎng)絡編程面試題
由于篇幅限制,小編在這里就不做過多的介紹拉,需要文檔的小伙伴,就可以轉(zhuǎn)發(fā)關注一下小編,點此即可免費領取。
感謝大家的配合與信任,努力成就更好的自己。