1.解釋 RuntimeException。例舉它的1-2個之類,並用一個小程序驗證捕獲並處理異常的過程。編程
錯運行時異常都是 RuntimeException 類及其子類異常。這些異常是不檢查異常,程序中能夠選擇捕獲處理,也能夠不處理,但 程序應該從邏輯角度儘量避免這類異常的發生。小程序
如NullPointerException 、 IndexOutOfBoundsException 等設計模式
2.在生產實踐中,每一個業務模塊都會定義一個異常基類,例如 Account 模塊定義 AccountException 繼承 Exception,而後在定義各類業務異常 如 OutOfMoneyException 繼承 AccountException。請使用 UML 繪圖工具 UMLet 繪製這些類及其關係。服務器
3.類的方法中,若是拋出一個異常類型,方法聲明中可否不申明?例如 public void transfer(double amount) throws OutOfMoney 去掉 throws OutOfMoney。去掉的後果是什麼?網絡
不行,在方法聲明時throws的意思時將異常的拋出交給方法來作,若想要在類的方法中拋出異常就必須聲明,若去掉則會報錯。併發
4.Socket是兩個進程聯繫的虛擬通道。若是服務器程序不啓動,僅運行客戶端,客戶端會阻塞仍是出錯?在那條語句?工具
會出錯。spa
在new Socket(args[0], Integer.parseInt(args[1]))處出錯。操作系統
5.若是程序運行到一半,服務端意外退出,客戶端會表現出什麼行爲?線程
沒有任何表現。通訊無反應。
6.(!)BufferedReader in=new BufferedReader(new InputStreamReader(server.getInputStream())); 語句是典型的設計模式「裝飾模式」,請檢索自學「Decorator Pattern」,請使用 UML 繪圖工具 UMLet 繪製涉及的類及其關係。
7.案例中 ServerSocket 可否支持兩個或以上客戶端?爲何?
不能。
由於Socket是由機器地址和端口號來區分/識別的,那麼在一個特定的計算機網 絡上,每個Socket都是以此方式被惟一識別的。這就使得應用程序能夠惟一地去定位網絡上的另一個位置的Socket。只能連一個客戶端。
8.線程與進程的區別?
進程是一個具備獨立功能的程序關於某個數據集合的一次運行活動。它能夠申請和擁有系統資源。
一般在一個進程中能夠包含若干個線程,它們能夠利用進程所擁有的資源。在引入線程的操做系統中,一般都是把進程做爲分配資源的基本單位,而把線程做爲獨立運行和獨立調度的基本單位。
因爲線程比進程更小,基本上不擁有系統資源,故對它的調度所付出的開銷就會小得多,能更高效的提升系統內多個程序間併發執行的程度。
線程和進程的區別在於,子進程和父進程有不一樣的代碼和數據空間,而多個線程則共享數據空間,每一個線程有本身的執行堆棧和程序計數器爲其執行上下文。
9.Java 兩個啓動線程方法各有哪些優勢、缺點?
優勢:繼承Thread類和實現Runnable接口。
缺點:繼承是單繼承,實現接口能夠多繼承,若是用繼承Thread類的方式,就不能夠繼承其餘類了,而實現接口的方式編程複雜,若訪問當前線程,必須使用Thread。currentThread()方法。
10.(!)簡述 Java 中 synchronized 的用法。
線程阻塞是實現線程之間通訊與同步的基礎,Java 語言爲線程提供了多種阻塞機制,其中 由 synchronized 標識的同步代碼段與 wait()/notify()機制是最重要的兩類線程阻塞形式。
同步模塊:
同步對象:
同步方法:
11.對象序列化二進制流中可否存在指針值(內存地址引用)?爲何?
能夠存在指針值,可是通常序列化數據,由於序列化通常用於文件的讀寫以及數據的傳輸,而儲存指針值在關閉程序後指針值就失效了沒有意義。
12.(!)爲了使序列化和反序列化變得易於理解,人們提出了使用 Json,XML,Yaml等格式的文本表示對象。請寫一個小程序,選擇其中一種格式,在控制檯輸出Account對象
13.instanceof 很好用,爲何須要反射技術呢?請結合案例簡述反射的必要性。
Instanceof 用於判斷對象是否爲某一類或接口的實例,避免轉換異常,可是放射技術能夠用來傳遞類型,好比說遠程方法的調用,服務器不知道客戶端傳過來的參數的類型,利用反射技術就能夠經過字符串的形式告訴客戶端參數類型。
14.代理模式(proxy pattern)的特徵是代理類與委託類有一樣的接口。請使用 UML 繪圖工具 UMLet 繪製案例代理模式的 UML 圖(圖8),並用天然語言簡單描述靜態代理類 StaticServiceProxy 的工做過程。
StaticServiceProxy 初始化時傳入用於鏈接的主機號以及端口,當調用getAccount方法並傳入須要發送的數據時,開始鏈接服務器,鏈接成功則將數據打包並調用connector中的方法來進行遠程調用。
15.簡述靜態代理和動態代理的區別。
靜態代理所要調用的遠程方法是已經肯定的用戶沒法自定義的,而動態代理須要用戶提供他們所想要調用的方法名稱。