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