java網路編程面試題

來源:互聯網
上載者:User

標籤:伺服器   異常   技術分享   serial   磁碟   分配   應對   tcp   分類   

1.網路編程時的同步、非同步、阻塞、非阻塞?

同步:函數調用在沒得到結果之前,沒有調用結果,不返回任何結果。
非同步:函數調用在沒得到結果之前,沒有調用結果,返回狀態資訊。
阻塞:函數調用在沒得到結果之前,當前線程掛起。得到結果後才返回。
非阻塞:函數調用在沒得到結果之前,當前線程不會掛起,立即返回結果。

2.Java如何?無阻塞方式的Socket編程?

NIO有效解決了多線程伺服器存在的線程開銷問題。

在NIO中使用多線程主要目的不是為了應對每個用戶端請求而分配獨立的服務線程,

而是通過多線程充分利用多個CPU的處理能力和處理中的等待時間,達到提高服務能力的目的。

3.什麼是java 的序列化(序列化)?

簡單說就是為了儲存在記憶體中的各種對象的狀態(也就是執行個體變數,不是方法),

並且可以把儲存的對象狀態再讀出來。雖然你可以用你自己的各種各樣的方法來儲存object states,但是Java給你提供一種應該比你自己好的儲存對象狀態的機制,那就是序列化。

4.什麼情況下需要序列化?序列化的注意事項,如何?java 序列化(序列化)?

· 當你想把的記憶體中的對象狀態儲存到一個檔案中或者資料庫中時候;

· 當你想用通訊端在網路上傳送對象的時候;

· 當你想通過RMI傳輸對象的時候;

序列化注意事項

1、如果子類實現Serializable介面而父類未實現時,父類不會被序列化,但此時父類必須有個無參構造方法,否則會拋InvalidClassException異常。

2、靜態變數不會被序列化,那是類的“菜”,不是對象的。序列化儲存的是對象的狀態,即非靜態屬性,即執行個體變數。不能儲存類變數。

3、transient關鍵字修飾變數可以限制序列化。對於不需要或不應該儲存的屬性,應加上transient修飾符。要序列化的對象的類必須是公開的(public)。

4、虛擬機器是否允許還原序列化,不僅取決於類路徑和功能代碼是否一致,一個非常重要的一點是兩個類的序列化 ID是否一致,就是 private static final long serialVersionUID = 1L。

5、Java 序列化機製為了節省磁碟空間,具有特定的儲存規則,當寫入檔案的為同一對象時,並不會再將對象的內容進行儲存,而只是再次儲存一份引用。還原序列化時,恢複參考關聯性。

6、序列化到同一個檔案時,如第二次修改了相同對象屬性值再次儲存時候,虛擬機器根據參考關聯性知道已經有一個相同對象已經寫入檔案,因此只儲存第二次寫的引用,所以讀取時,都是第一次儲存的對象。

5.java中有幾種類型的流?JDK為每種類型的流提供了一些抽象類別以供繼承,請說出他們分別是哪些類?

JDK提供的流繼承了四大類:

InputStream(位元組輸入資料流),OutputStream(位元組輸出資料流),Reader(字元輸入資料流),Writer(字元輸出資料流)。

按流向分類:

輸入資料流: 程式可以從中讀取資料的流。
輸出資料流: 程式能向其中寫入資料的流。

按資料轉送單位分類:

位元組流:以位元組(8位二進位)為單位進行處理。主要用於讀寫諸像或聲音的位元據。
字元流:以字元(16位二進位)為單位進行處理。
都是通過位元組流的方式實現的。字元流是對位元組流進行了封裝,方便操作。在最底層,所有的輸入輸出都是位元組形式的。
尾碼是Stream是位元組流,而尾碼是Reader,Writer是字元流。

按功能分類:

節點流:從特定的地方讀寫的流類,如磁碟或者一塊記憶體地區。
過濾流:使用節點流作為輸入或輸出。過濾流是使用一個已經存在的輸入資料流或者輸出資料流串連建立的。

6.用JAVA SOCKET 編程,讀伺服器幾個 字元,再寫入本地顯示。

用戶端向伺服器端發送串連請求後,就被動地等待伺服器的響應。

典型的TCP用戶端要經過下面三步操作:

1、建立一個Socket執行個體:建構函式向指定的遠程主機和連接埠建立一個TCP串連;
2、通過通訊端的I/O流與服務端通訊;
3、使用Socket類的close方法關閉串連。

 

服務端的工作是建立一個通訊終端,並被動地等待用戶端的串連。

典型的TCP服務端執行如下兩步操作:

1、建立一個ServerSocket執行個體並指定本地連接埠,用來監聽用戶端在該連接埠發送的TCP串連請求;
2、重複執行:
1)調用ServerSocket的accept()方法以擷取用戶端串連,並通過其傳回值建立一個Socket執行個體;
2)為返回的Socket執行個體開啟新的線程,並使用返回的Socket執行個體的I/O流與用戶端通訊;
3)通訊完成後,使用Socket類的close()方法關閉該用戶端的通訊端串連。

7.TCP/IP在串連時有幾次握手?釋放時有幾次握手?

TCP三向交握串連的建立過程:

 

TCP四次揮手的釋放過程:

java網路編程面試題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.