《java面試題集合》word版_第1頁
已閱讀1頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1JAVA 面試題集 基礎知識:1.C++或 Java 中的異常處理機制的簡單原理和應用。當 JAVA 程序違反了 JAVA 的語義規(guī)則時,JAVA 虛擬機就會將發(fā)生的錯誤表示為一個異常。違反語義規(guī)則包括 2 種情況。一種是 JAVA 類庫內置的語義檢查。例如數(shù)組下標越界,會引發(fā)IndexOutOfBoundsException;訪問 null 的對象時會引發(fā) NullPointerException。另一種情況就是 JAVA 允許程序

2、員擴展這種語義檢查,程序員可以創(chuàng)建自己的異常,并自由選擇在何時用throw 關鍵字引發(fā)異常。所有的異常都是 java.lang.Thowable 的子類。2. Java 的接口和 C++的虛類的相同和不同處。由于 Java 不支持多繼承,而有可能某個類或對象要使用分別在幾個類或對象里面的方法或屬性,現(xiàn)有的單繼承機制就不能滿足要求。與繼承相比,接口有更高的靈活性,因為接口中沒有任何實現(xiàn)代碼。當一個類實現(xiàn)了接口以后,該類要實現(xiàn)接口里面所有的

3、方法和屬性,并且接口里面的屬性在默認狀態(tài)下面都是 public static,所有方法默認情況下是 public.一個類可以實現(xiàn)多個接口。3. 垃圾回收的優(yōu)點和原理。并考慮 2 種回收機制。Java 語言中一個顯著的特點就是引入了垃圾回收機制,使 c++程序員最頭疼的內存管理的問題迎刃而解,它使得 Java 程序員在編寫程序的時候不再需要考慮內存管理。由于有個垃圾回收機制,Java 中的對象不再有“作用域“的概念,只有對象的引用才有“作

4、用域“。垃圾回收可以有效的防止內存泄露,有效的使用可以使用的內存。垃圾回收器通常是作為一個單獨的低級別的線程運行,不可預知的情況下對內存堆中已經(jīng)死亡的或者長時間沒有使用的對象進行清楚和回收,程序員不能實時的調用垃圾回收器對某個對象或所有對象進行垃圾回收?;厥諜C制有分代復制垃圾回收和標記垃圾回收,增量垃圾回收。4. 請說出你所知道的線程同步的方法。wait():使一個線程處于等待狀態(tài),并且釋放所持有的對象的 lock。sleep():使一

5、個正在運行的線程處于睡眠狀態(tài),是一個靜態(tài)方法,調用此方法要捕捉InterruptedException 異常。notify():喚醒一個處于等待狀態(tài)的線程,注意的是在調用此方法的時候,并不能確切的喚醒某一個等待狀態(tài)的線程,而是由 JVM 確定喚醒哪個線程,而且不是按優(yōu)先級。Allnotity():喚醒所有處入等待狀態(tài)的線程,注意并不是給所有喚醒線程一個對象的鎖,而是讓它們競爭。5. 請講一講析構函數(shù)和虛函數(shù)的用法和作用。6. Error

6、 與 Exception 有什么區(qū)別?Error 表示系統(tǒng)級的錯誤和程序不必處理的異常,Exception 表示需要捕捉或者需要程序進行處理的異常。7. 在 java 中一個類被聲明為 final 類型,表示了什么意思?表示該類不能被繼承,是頂級類。8. 描述一下你最常用的編程風格。 9. heap 和 stack 有什么區(qū)別。棧是一種線形集合,其添加和刪除元素的操作應在同一段完成。棧按照后進先出的方式進行處理。堆是棧的一個組成元素10

7、. 如果系統(tǒng)要使用超大整數(shù)(超過 long 長度范圍) ,請你設計一個數(shù)據(jù)結構來存儲這種超大型數(shù)字以及設計一種算法來實現(xiàn)超大整數(shù)加法運算) 。316,Collection 和 Collections 的區(qū)別。Collections 是個 java.util 下的類,它包含有各種有關集合操作的靜態(tài)方法。Collection 是個 java.util 下的接口,它是各種集合結構的父接口。 17,什么時候用 assert。斷言是一個包含布爾表

8、達式的語句,在執(zhí)行這個語句時假定該表達式為 true。如果表達式計算為 false,那么系統(tǒng)會報告一個 Assertionerror。它用于調試目的:assert(a > 0); // throws an Assertionerror if a <= 0 斷言可以有兩種形式:assert Expression1 ; assert Expression1 : Expression2 ; Expression1 應該總是產(chǎn)生一個

9、布爾值。Expression2 可以是得出一個值的任意表達式。這個值用于生成顯示更多調試信息的 String 消息。斷言在默認情況下是禁用的。要在編譯時啟用斷言,需要使用 source 1.4 標記:javac -source 1.4 Test.java 要在運行時啟用斷言,可使用 -enableassertions 或者 -ea 標記。要在運行時選擇禁用斷言,可使用 -da 或者 -disableassertions 標記。要系統(tǒng)類

10、中啟用斷言,可使用 -esa 或者 -dsa 標記。還可以在包的基礎上啟用或者禁用斷言。 可以在預計正常情況下不會到達的任何位置上放置斷言。斷言可以用于驗證傳遞給私有方法的參數(shù)。不過,斷言不應該用于驗證傳遞給公有方法的參數(shù),因為不管是否啟用了斷言,公有方法都必須檢查其參數(shù)。不過,既可以在公有方法中,也可以在非公有方法中利用斷言測試后置條件。另外,斷言不應該以任何方式改變程序的狀態(tài)。 18,GC 是什么? 為什么要有 GC? (基礎)。G

11、C 是垃圾收集器。Java 程序員不用擔心內存管理,因為垃圾收集器會自動進行管理。要請求垃圾收集,可以調用下面的方法之一:System.gc() Runtime.getRuntime().gc() 19,String s = new String(“xyz“);創(chuàng)建了幾個 String Object? 兩個對象,一個是“xyx“,一個是指向“xyx“的引用對象 s。 20,Math.round(11.5)等於多少? Math.roun

12、d(-11.5)等於多少? Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11; 21,short s1 = 1; s1 = s1 + 1;有什么錯? short s1 = 1; s1 += 1;有什么錯? short s1 = 1; s1 = s1 + 1;有錯,s1 是 short 型,s1+1 是 int 型,不能顯式轉化為 short型??尚薷臑?s1 =(short)

13、(s1 + 1) 。short s1 = 1; s1 += 1 正確。 22,sleep() 和 wait() 有什么區(qū)別? 搞線程的最愛sleep()方法是使線程停止一段時間的方法。在 sleep 時間間隔期滿后,線程不一定立即恢復執(zhí)行。這是因為在那個時刻,其它線程可能正在運行而且沒有被調度為放棄執(zhí)行,除非(a)“醒來“的線程具有更高的優(yōu)先級 (b)正在運行的線程因為其它原因而阻塞。wait()是線程交互時,如果線程對一個同步對象

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論