Java面試題及答案第一波襲來!

問:JDK和JRE的區別是什麼?他們各自有什麼用?

答:JDK是Java開發工具,它不僅提供了Java程序運行所需的JRE,還提供了一系列的編譯,運行等工具,如javac、Java、Javaw等。JRE只是Java程序的運行環境,它最核心的內容就是JVM(Java虛擬機)及核心類庫。


問:如何利用JDK編譯和運行程序?

答:利用JDK提供的javac來編譯源文件,然後利用Java命令來運行Java程序。


問:環境變量classpath作用是什麼?

答:classpath環境變量保存的是一些目錄和jar文件地址,這些路徑是爲Java程序在編譯和運行時搜索類而用的。


問:Java與C++程序在編譯和運行上有什麼區別?

答:C++源碼編譯以後生成的是可以在特定機器上運行的文件,而Java源碼經過編譯後生成的是中間的字節碼文件,這些字節碼是需要放在JVM中運行的,而JVM是有多個平臺版本的,所以Java具有跨平臺性,而C++沒有。


問:什麼事JVM及其工作原理?

答:JVM(Java虛擬機)是一種用軟件模擬出來的計算機,它用於執行Java程序,有一套非常嚴格的技術規範,是Java跨平臺特性的依賴基礎,Java虛擬機有自己想象中的硬件,如處理器、堆棧、寄存器等,還具有相應的指令系統,它運行Java程序就好像一臺計算機運行C或C++程序一樣。


問:Java程序爲什麼無須delete語句進行內存回收?

答:Java的堆內存數據的釋放功能是由垃圾回收器自動進行的,無須程序員顯式的調用delete方法。該機制有效的避免了因爲程序員忘記釋放內存而造成的內存溢出的錯誤,相對於C++等需要顯式釋放內存的語言,是一種巨大的改進。


問:如何利用命令提示符把Java程序打包成jar文件?

答:可以利用JDK的bin目錄下的jar命令實現程序打jar包。


問:war和jar的區別?

答:Java web應用程序也可以打成jar包,只不過它的後綴名爲war而不是jar,但是jar和war的打包原理是一樣的,都是通過JDK提供的jar命令進行。


問:jsp與servlet?

答:jsp是參考其他的動態語言而設計,腳本語言就是Java,但它的本質也是Servlet。


問:applet和Java web開發?

答:applet是在瀏覽器中運行Java程序,這項技術使用已經非常少了,Java Web開發均指的是Java服務器端技術的開發。


問:變量及作用範圍?

答:Java變量可以分爲:靜態變量、成員變量和局部變量3種。靜態變量是指在類中用static修飾的變量,它的生存週期是由類來決定的,成員變量則是在類中沒用static修飾的變量,他的生存週期是由對象來決定的。局部變量則是定義在方法裏的變量。它的作用範圍是用方法的大括號來界定的。


問:Java變量分那兩種大的數據類型?

答:基本數據類型和引用數據類型,基本數據類型byte、short、int、long、float、double、boolean、char。引用數據類型值得是除開基本數據類型以外的數據類型。


問:如何理解Java中的裝箱和拆箱?

答:Java中的裝箱和拆箱指的是基本數據類型和包裝類型的自動相互轉換。


問:Java的引用和C++的指針有什麼區別?

答:本質上它們兩者都是想通過一個叫做引用或者指針的東西找到想要操作的目標,方便程序中操作。所不同的是Java的辦法更安全、方便一些,但失去了C++的靈活度,也算是對指針的一種包裝和改進。


問:請簡述Java中的main方法?

答:main()方法是Java程序的執行入口,他是一個定義在類中的、公開的、靜態的、無返回值的、參數爲一個字符串數組的方法,並且一個類裏面只能有一個main()方法。


問:Java中equals和==的區別?

答:==運用在基本數據類型的時候,通過==來比較它們的值是否相同,而equals則用於引用類型,用來比較它們的地址是否相同。


問:Java提供了哪幾種循環?它們的各自特點是什麼?

答:Java提供了3種循環結構,即for、while、和do...while語句。for循環用於能確定循環次數的循環語句。while語句則適合單條件循環,do....while語句在執行某段代碼之後,在循環的時候更適合一些。


問:Java的三元運算符?

答:Java中唯一一個三元運算符爲”表達式一?表達式二:表達式三“在問好之前是一個布爾表達式,他只能返回true或false,如果表達式一返回的是true則執行表達式二,否則執行表達式三。


問:Java中註釋有哪些?

答://行註釋,/* */塊註釋,/** */文檔註釋,但如果把Annotation也算作Java註釋的話,Java就有4種註釋,Annotation與其他註釋本質的區別就在於它會進入到編譯層,並對程序的結果產生影響。


問:類和對象有什麼區別?

答:類通過class關鍵字進行定義,它裏面可以有多重屬性和方法,而對象必須從屬與某一個類,通過new關鍵字進行創建,並且可以被多次創建。簡而言之類是一種抽象,而對象是類的實現。


問:Java中如何使用繼承來重用代碼?

答:Java採用的是單繼承製,使用extend關鍵字。通過繼承以後自雷就擁有了父類除開私有成員意外的所有成員,從而達到代碼重用的目的。在繼承的過程中,可以通過方法的覆蓋來實現多態,讓子類擁有自己獨特的方法實現方式。


問:簡述Java中的多態?

答:多態的本質是,發送消息給某個對象,讓該對象自行決定響應何種行爲。它是建立在繼承的基礎上的,通過子類對象來實現超類對象的方法或變量來實現多態。


問:請介紹Java中靜態成員的特點?

答:靜態成員通過static關鍵字修飾,主要包括靜態成員變量、靜態方法、和靜態代碼塊,他們都具有以下一些特點:

1:在類加載的時候,就進行創建和初始化

2:他對於一個類來說,都只有一份

3:類的所有實例都可以訪問到它們


問:簡述Java派生類中的構造方法如何爲父類傳遞參數?

答:通過super關鍵字加括號的形式來爲父類構造方法提供參數,如果調用父類的無參構造方法則可以不必顯式調用super()。super()的使用必須放在子類構造方法的第一行,否則會有語法錯誤。


問:簡述接口和抽象類的區別?

答:接口是一種特殊形式的抽象類,一個類智能繼承一個抽象類,而一個類卻可以實現多個接口。兩者都不能實例化,並且抽象類可以有非抽象方法。也可以定義成員變量。接口就不能這樣了,接口定義的只能是抽象方法,不能定義變量,只能定義常量。 


問:簡述一下內部類的實質是什麼?

答:內部類根據定義的情況可以分爲以下4種、

1:靜態內部類、它相當於外部類的靜態成員一樣,使用static修飾的內部類,使用起來相當於一個獨立的外部類。

2:成員內部類、它相當於外部類普通的成員一樣,隸屬於外部類的具體對象,在定義它的時候,需要先創建外部類對象,在創建它的實例。

3:局部內部類、它定義在一個方法的方法體中,它往往僅作爲方法短暫的使用,只能訪問用final修飾的局部變量。

4:匿名內部類、他也定義在方法體中,但它沒有一個具體的名字,具有非常大的靈活性,工作本質與局部內部類類似。

發佈了41 篇原創文章 · 獲贊 39 · 訪問量 30萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章