更新時間:2020-09-29 17:01:37 來源:動力節點 瀏覽3556次
JDK是學好java編程的第一步,也是零基礎的新手們為以后學習java需要打下的扎實基礎,在各大公司的java面試中,更是少不了對JDK相關知識的考察,所以今天總結了10道 JDK面試題,都是常考常見的基礎知識,大家可以來學習下面的內容,為面試做好準備。
1、Java JDK是什么?
答:JDK全稱Java Development ToolKit,是Java語言開發工具包。JDK是整個JAVA的核心,包括了Java運行環境(Java Runtime Envirnment),一堆Java工具(daojavac/java/jdb等)和Java基礎的類庫(即Java API 包括rt.jar)。
2、java中有幾種類型的流?JDK為每種類型的流提供了一些抽象類以供繼承,請說出他們分別是哪些類?
答:字節流,字符流。字節流繼承于InputStream OutputStream,字符流繼承于Reader Writer。在java.io包中還有許多其他的流,低層流與調層流,高層流主要是為了提高性能和使用方便。
3、String為什么用final修飾?
答:主要是為了”安全性“和”效率“的緣故,由于String類不能被繼承,所以就不會被修改,這就避免了因為繼承引起的安全隱患;String類在程序中出現的頻率比較高,如果為了避免安全隱患,在它每次出現時都用final來修飾,這無疑會降低程序的執行效率,所以干脆直接將其設為final一提高效率;常量池的使用,大量使用字符串之后,可以共享字符串的內容,提高效率,節省存儲空間。
4、序列化ID有什么用?為什么要進行序列化操作?
答:java的序列化機制是通過在運行時判斷類的serialVersionUID來驗證版本一致性的。原因:在進行反序列化時,JVM會把傳來的字節流中的serialVersionUID與本地實體類中的serialVersionUID進行比較,如果相同則認為是一致的,便可以進行反序列化,否則就會報序列化版本不一致的異常。
5、JDK與JRE的區別是什么?
答:Jdk是整個java開發的核心,包括java運行環境,java工具和java基礎類,比如我們開發中用到的jar包。安裝了jdk,電腦就擁有了支持java語言的功能,不僅可以開發java程序,也擁有了運行java程序的平臺,jdk的安裝是包含jre的。Jdk主要是開發人員在軟件開發時使用的SDK,SDK提供了java的開發環境和運行環境。JRE包含了JVM標準實現及java核心類庫。它包括了java虛擬機、java平臺核心類和支持文件,但是jre是不包含開發工具的,比如編譯器和調試器這些jre是沒有的。但是它包含編譯java源碼的編譯器javac,還包含了console等java調試和分析的工具軟件,同時也包含了java程序編寫所需的文檔和demo例子程序。Jre的主要使用者是程序,也就是說,如果你的電腦只安裝了jre,那么電腦就只能運行java程序,如果想從事java開發,那就需要安裝jdk了,因為jre是可以獨立安裝的,它不包含jdk。
6、java JDK的版本都有什么?并簡要加以說明。
答:(1)Java SE(Java Platform,Standard Edition)。Java SE 以前稱為 J2SE。它允許開發和部署在桌面、服務器、嵌入式環境和實時環境中使用的 Java 應用程序。Java SE 包含了支持 Java Web 服務開發的類,并為 javaPlatform,Enterprise Edition(Java EE)提供基礎。
(2)Java EE(Java Platform,Enterprise Edition)。這個版本以前稱為 J2EE。企業版本幫助開發和部署可移植、健壯、可伸縮且安全的服務器端 Java 應用程序。Java EE 是在 Java SE 的基礎上構建的,它提供 Web 服務、組件模型、管理和通信 API,可以用來實現企業級的面向服務體系結構(service-oriented architecture,SOA)和 Web 2.0 應用程序。
(3)Java ME(Java Platform,Micro Edition)。這個版本以前稱為J2ME。Java ME 為在移動設備和嵌入式設備(比如手機、PDA、電視機頂盒和打印機)上運行的應用程序提供一個健壯且靈活的環境。Java ME 包括靈活的用戶界面、健壯的安全模型、許多內置的網絡協議以及對可以動態下載的連網和離線應用程序的豐富支持。基于Java ME規范的應用程序只需編寫一次,就可以用于許多設備,而且可以利用每個設備的本機功能。
7、在 jdk1.5 中,引入了泛型,泛型的存在用來解決什么問題?
答:泛型的本質是參數化類型,也就是說所操作的數據類型被指定為一個參數,泛型的好處是在編譯的時候檢查類型安全,并且所有的強制轉換都是自動和隱式的,以提高代碼的重用率。
8、Spring事務注解@Transactional可以作用在哪些地方?
答:@Transactional可以作用于接口、接口方法、類以及類方法上。當作用于類上時,該類的所有public方法將都具有該類型的事務屬性,同時,我們也可以在方法級別使用該標注來覆蓋類級別的定義。
雖然@Transactional 注解可以作用于接口、接口方法、類以及類方法上,但是 Spring 建議不要在接口或者接口方法上使用該注解,因為這只有在使用基于接口的代理時它才會生效。另外, @Transactional 注解應該只被應用到 public 方法上,這是由 Spring AOP 的本質決定的。如果你在 protected、private 或者默認可見性的方法上使用 @Transactional 注解,這將被忽略,也不會拋出任何異常。
默認情況下,只有來自外部的方法調用才會被AOP代理捕獲,也就是,類內部方法調用本類內部的其他方法并不會引起事務行為,即使被調用方法使用@Transactional注解進行修飾。
9、ThreadLocal是什么?有哪些使用場景?
答:ThreadLocal是線程本地存儲,在每個線程中都創建了一個 ThreadLocalMap對象,每個線程可以訪問自己內部ThreadLocalMap 對象內的value。
應用場景:經典的使用場景是為每個線程分配一個JDBC連接Connection。這樣就可以保證每個線程的都在各自的Connection上進行數據庫的操作,不會出現A線程關了B線程正在使用的Connection; 還有Session管理等問題。
10、常用的JDK類有哪些?請說出5個。
答:String、StringBuffer、Integer、ArrayList、HashMap、Date、Object。
以上就是今天我們學習的JDK面試題,JDK是學習java的基礎,是java零基礎的小伙伴們在初期就需要學習的內容。希望這10道 JDK面試題大家可以好好學習,并順利通過面試。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習