2019年228道Java中高級面試題(8),你會的有多少?

2019年Java面試題中高級系列228道java

Java面試題(一)程序員

第一篇更新1~20題的答案解析面試

第二篇更新21~50題答案解析正則表達式

第三篇更新51~95題答案解析設計模式

Java面試題(二)安全

第四篇更新1~20題答案解析網絡

第五篇更新21~50題答案解析app

第六篇更新51~80題答案解析ide

第七篇更新81~115題答案解析函數

v2-656ca803d46698b9d8a8e9ae2f9edd54_b.jpg

Java面試題(二)

11六、何時使用訪問者模式?

11七、何時使用組合模式?

11八、繼承和組合之間有什麼不一樣?

11九、描述 Java 中的重載和重寫?

120、Java 中,嵌套公共靜態類與頂級類有什麼不一樣?

12一、 OOP 中的 組合、聚合和關聯有什麼區別?

12二、給我一個符合開閉原則的設計模式的例子?

12三、抽象工廠模式和原型模式之間的區別?

12五、嵌套靜態類與頂級類有什麼區別?

12六、你能寫出一個正則表達式來判斷一個字符串是不是一個數字嗎?

12七、Java 中,受檢查異常 和 不受檢查異常的區別?

12八、Java 中,throw 和 throws 有什麼區別

12九、Java 中,Serializable 與 Externalizable 的區別?

130、Java 中,DOM 和 SAX 解析器有什麼不一樣?

13一、說出 JDK 1.7 中的三個新特性?

13二、說出 5 個 JDK 1.8 引入的新特性?

13三、Java 中,Maven 和 ANT 有什麼區別?

v2-9afd7bb77aa16cb209c12559d621b295_b.png

本次更新116~133題的答案解析

11六、何時使用訪問者模式?

訪問者模式用於解決在類的繼承層次上增長操做,可是不直接與之關聯。這種模式採用雙派發的形式來增長中間層。

11七、何時使用組合模式?

組合模式使用樹結構來展現部分與總體繼承關係。它容許客戶端採用統一的形式來對待單個對象和對象容器。當你想要展現對象這種部分與總體的繼承關係時採用組合模式。

11八、繼承和組合之間有什麼不一樣?

雖然兩種均可以實現代碼複用,可是組合比繼承共靈活,由於組合容許你在運行時選擇不一樣的實現。用組合實現的代碼也比繼承測試起來更加簡單。

11九、描述 Java 中的重載和重寫?

重載和重寫都容許你用相同的名稱來實現不一樣的功能,可是重載是編譯時活動,而重寫是運行時活動。你能夠在同一個類中重載方法,可是隻能在子類中重寫方法。重寫必需要有繼承。

120、Java 中,嵌套公共靜態類與頂級類有什麼不一樣?

類的內部能夠有多個嵌套公共靜態類,可是一個 Java 源文件只能有一個頂級公共類,而且頂級公共類的名稱與源文件名稱必須一致。

12一、 OOP 中的 組合、聚合和關聯有什麼區別?

若是兩個對象彼此有關係,就說他們是彼此相關聯的。組合和聚合是面向對象中的兩種形式的關聯。組合是一種比聚合更強力的關聯。組合中,一個對象是另外一個的擁有者,而聚合則是指一個對象使用另外一個對象。若是對象 A 是由對象 B組合的,則 A 不存在的話,B 必定不存在,可是若是 A 對象聚合了一個對象 B,則即便 A 不存在了,B 也能夠單獨存在。

12二、給我一個符合開閉原則的設計模式的例子?

開閉原則要求你的代碼對擴展開放,對修改關閉。這個意思就是說,若是你想增長一個新的功能,你能夠很容易的在不改變已測試過的代碼的前提下增長新的代碼。有好幾個設計模式是基於開閉原則的,如策略模式,若是你須要一個新的策略,只須要實現接口,增長配置,不須要改變核心邏輯。一個正在工做的例子是Collections.sort() 方法,這就是基於策略模式,遵循開閉原則的,你不需爲新的對象修改 sort() 方法,你須要作的僅僅是實現你本身的 Comparator 接口。

12三、抽象工廠模式和原型模式之間的區別?

抽象工廠模式:一般由工廠方法模式來實現。但一個工廠中每每含有多個工廠方法生成一系列的產品。這個模式強調的是客戶代碼一次保證只使用一個系列的產品。當要切換爲另外一個系列的產品,換一個工廠類便可。原型模式:工廠方法的最大缺點就是,對應一個繼承體系的產品類,要有一個一樣複雜的工廠類的繼承體系。咱們能夠把工廠類中的工廠方法放到產品類自身之中嗎?若是這樣的話,就能夠將兩個繼承體系爲一個。這也就是原型模式的思想,原型模式中的工廠方法爲 clone,它會返回一個拷貝(能夠是淺拷貝,也能夠是深拷貝,由設計者決定)。爲了保證用戶代碼中到時能夠經過指針調用 clone 來動態綁定地生成所需的具體的類。這些原型對象必須事先構造好。原型模式想對工廠方法模式的另外一個好處是,拷貝的效率通常對構造的效率要高。

12四、何時使用享元模式?

享元模式經過共享對象來避免建立太多的對象。爲了使用享元模式,你須要確保你的對象是不可變的,這樣你才能安全的共享。JDK 中 String 池、Integer 池以及 Long 池都是很好的使用了享元模式的例子。

12五、嵌套靜態類與頂級類有什麼區別?

一個公共的頂級類的源文件名稱與類名相同,而嵌套靜態類沒有這個要求。一個嵌套類位於頂級類內部,須要使用頂級類的名稱來引用嵌套靜態類,如HashMap.Entry 是一個嵌套靜態類,HashMap 是一個頂級類,Entry 是一個嵌套靜態類。

12六、你能寫出一個正則表達式來判斷一個字符串是不是一個數字嗎?

一個數字字符串,只能包含數字,如 0 到 9 以及 +、- 開頭,經過這個信息,你能夠下一個以下的正則表達式來判斷給定的字符串是否是數字。 首先要 import java.util.regex.Pattern 和 java.util.regex.Matcher

public Boolean isNumeric(String str){
	Pattern pattern = Pattern.compile("[0-9]*");
	Matcher isNum = pattern.matcher(str);
	if( !isNum.matches() ){
		return false;
	}
	return true;}

12七、Java 中,受檢查異常 和 不受檢查異常的區別?

受檢查異常編譯器在編譯期間檢查。對於這種異常,方法強制處理或者經過throws 子句聲明。其中一種狀況是 Exception 的子類但不是RuntimeException 的子類。非受檢查是 RuntimeException 的子類,在編譯階段不受編譯器的檢查。

12八、Java 中,throw 和 throws 有什麼區別

throw 用於拋出 java.lang.Throwable 類的一個實例化對象,意思是說你能夠經過關鍵字 throw 拋出一個 Error 或者 一個 Exception,如:throw new IllegalArgumentException(「size must be multiple of 2″)而 throws 的做用是做爲方法聲明和簽名的一部分,方法被拋出相應的異常以便調用者能處理。Java 中,任何未處理的受檢查異常強制在 throws 子句中聲明。

12九、Java 中,Serializable 與 Externalizable 的區別?

Serializable 接口是一個序列化 Java 類的接口,以便於它們能夠在網絡上傳輸或者能夠將它們的狀態保存在磁盤上,是 JVM 內嵌的默認序列化方式,成本高、脆弱並且不安全。Externalizable 容許你控制整個序列化過程,指定特定的二進制格式,增長安全機制。歡迎你們關注個人公種浩【程序員追風】,2019年多家公司java面試題整理了1000多道400多頁pdf文檔,文章都會在裏面更新,整理的資料也會放在裏面。

v2-1d474625674235303fff10197468627f_b.png

130、Java 中,DOM 和 SAX 解析器有什麼不一樣?

DOM 解析器將整個 XML 文檔加載到內存來建立一棵 DOM 模型樹,這樣能夠更快的查找節點和修改 XML 結構,而 SAX 解析器是一個基於事件的解析器,不會將整個 XML 文檔加載到內存。因爲這個緣由,DOM 比 SAX 更快,也要求更多的內存,不適合於解析大 XML 文件。

13一、說出 JDK 1.7 中的三個新特性?

雖然 JDK 1.7 不像 JDK 5 和 8 同樣的大版本,可是,仍是有不少新的特性,如 try-with-resource 語句,這樣你在使用流或者資源的時候,就不須要手動關閉,Java 會自動關閉。Fork-Join 池某種程度上實現 Java 版的 Map-reduce。容許 Switch 中有 String 變量和文本。菱形操做符(<>)用於類型推斷,再也不須要在變量聲明的右邊申明泛型,所以能夠寫出可讀寫更強、更簡潔的代碼。另外一個值得一提的特性是改善異常處理,如容許在同一個 catch 塊中捕獲多個異常。

13二、說出 5 個 JDK 1.8 引入的新特性?

Java 8 在 Java 歷史上是一個開創新的版本,下面 JDK 8 中 5 個主要的特性:

(1)Lambda 表達式,容許像對象同樣傳遞匿名函數

(2)Stream API,充分利用現代多核 CPU,能夠寫出很簡潔的代碼

(3)Date 與 Time API,最終,有一個穩定、簡單的日期和時間庫可供你使用

(4)擴展方法,如今,接口中能夠有靜態、默認方法。

(5)重複註解,如今你能夠將相同的註解在同一類型上使用屢次。

13三、Java 中,Maven 和 ANT 有什麼區別?

雖然二者功能上都是構建工具,都用於建立 Java 應用,可是 Maven 作的事情更多,在基於「約定優於配置」的概念下,提供標準的Java 項目結構,同時能爲應用自動管理依賴(應用中所依賴的 JAR 文件)。Ant僅僅是軟件構建工具,而Maven的定位是軟件項目管理和理解工具。Maven除了具有Ant的功能外,有如下主要的功能:

(1)使用Project Object Model來對軟件項目管理;
(2)內置了更多的隱式規則,使得構建文件更加簡單;
(3)內置依賴管理和Repository來實現依賴的管理和統一存儲;
(4)內置了軟件構建的生命週期;

最後

歡迎你們一塊兒交流,喜歡文章記得關注我點個贊喲,感謝支持!

相關文章
相關標籤/搜索