百萬java面試題整理(3.0)

59、final, finally, finalize 的區別?

final 用於宣告屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼

承。

finally 是異常處理語句結構的一部分,表示總是執行。

finalize 是Object 類的一個方法,在垃圾收集器執行的時候會呼叫被回收物件的此方法,可以覆蓋此方法提供垃圾收集時的其他資源回收,例如關閉檔案等。

算符可以用來決定某物件的類是否實現了介面。

62、heap

stack

有什麼區別?

棧是一種線性集合,其新增和刪除元素的操作應在同一段完成。棧按照後進先出的方式進行處理。

堆是棧的一個組成元素

63、Static Nested Class 和 Inner Class 的不同?

Static Nested Class 是被宣告為靜態(static)的內部類,它可以不依賴於外部類例項被例項化。而通常的內部類需要在外部類例項化後才能例項化。

64、什麼時候用assert?

assertion (斷言)在軟體開發中是一種常用的除錯方式,很多開發語言中都支援這種機制。在實現中,assertion 就是在程式中的一條語句,它對一個 boolean 表示式進行檢查,一個正確程式必須保證這個boolean 表示式的值為true;如果該值為 false,說明程式已經處於不正確的狀態下,系統將給出警告或退出。一般來說,assertion 用於保證程式最基本、關鍵的正確性。assertion 檢查通常在開發和測試時開啟。為了提高效能,在軟體釋出後,assertion 檢查通常是關閉的。

65、GC 是什麼? 為什麼要有 GC?

GC 是垃圾收集的意思(Gabage Collection),記憶體處理是程式設計人員容易出現問題的地方,忘記或者錯誤的記憶體回收會導致程式或系統的不穩定甚至崩潰,Java 提供的 GC 功能可以自動監測物件是否超過作用域從而達到自動回收記憶體的目的, Java 語言沒有提供釋放已分配記憶體的顯示操作方法。

66、short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯?

short s1 = 1; s1 = s1 + 1; (s1+1 運算結果是 int 型,需要強制轉換型別) short s1 = 1; s1 += 1;(可以正確編譯)

67、Math。round(11。5)等於多少? Math。round(-11。5)等於多少?

Math。round(11。5)==12 Math。round(-11。5)==-11 round 方法返回與引數最接近的長整數,引數加 1/2 後求其floor。

68、Java 有沒有 goto?

java 中的保留字,現在沒有在 java 中使用。

69、給我一個你最常見到的runtime

exception

ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException,

UnsupportedOperationException

一般異常:

IOException FileNotFoundException SqlException

70、介面是否可繼承介面? 抽象類是否可實現(implements)介面? 抽象類是否可繼承實體類(concrete class)?

介面可以繼承介面。抽象類可以實現(implements)介面,抽象類是否可繼承實體類。

71、abstract 的 method 是否可同時是 static,是否可同時是 native ,是否可同時是

synchronized?

都不能

72、陣列有沒有length()這個方法? String 有沒有 length()這個方法?

陣列沒有length()這個方法,有 length 這個屬性

String 有length()這個方法。

73、構造器Constructor 是否可被 override?

構造器 Constructor 不能被繼承, 因此不能重寫 Overriding , 但可以被過載Overloading。

74、是否可以繼承String

類?

String 類是 final 類故不可以繼承。

75、swtich 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上?

switch(expr1)中,expr1 是一個整數表示式。因此傳遞給 switch 和 case 語句的引數應該是 int、 short、 char 或者 byte。long,string 都不能作用於swtich。

76、try {}裡有一個 return 語句,那麼緊跟在這個 try 後的 finally {}裡的 code 會不會被執行,什麼時候被執行,在return

前還是後?

會執行,在return 前執行。

77、程式設計題: 用最有效率的方法算出 2 乘以 8 等於幾?

2 << 3

78、兩個物件值相同(x。equals(y) == true),但卻可有不同的hash

code,這句話對不對 ?

對,有相同的 hash code。

79、當一個物件被當作引數傳遞到另一個方法後,此方法可改變這個物件的屬性,並 可返回變化後的結果,那麼這裡到底是引用傳遞還是引用傳遞?

是引用傳遞

基本資料型別

值物件: 引用

80、四種會話跟蹤技術

Cookie Session Hidden url 重寫

81、程式設計題:

寫一個

Singleton

出來。

Singleton 模式主要作用是保證在Java 應用程式中,一個類Class 只有一個例項存在。一般 Singleton 模式通常有幾種形式:

第一種形式: 定義一個類,它的建構函式為 private 的,它有一個 static 的 private 的該類變數,在類初始化時例項化,透過一個 public 的getInstance 方法獲取對它的引用,繼而呼叫其中的方法。

public class Singleton { private Singleton(){}

//在自己內部定義自己一個例項,是不是很奇怪?

//注意這是 private 只供內部呼叫

private static Singleton instance = new Singleton();

//這裡提供了一個供外部訪問本class 的靜態方法,可以直接訪問

public static Singleton getInstance() {

return instance;

}

}

第二種形式:

public class Singleton {

private static Singleton instance = null;

public static synchronized Singleton getInstance() {

//這個方法比上面有所改進,不用每次都進行生成物件,只是第一次

//使用時生成例項,提高了效率! if (instance==null)

instance=new Singleton(); return instance; }

}

其他形式:

定義一個類,它的建構函式為private 的,所有方法為static 的。一般認為第一種形式要更加安全些

83、Java 中的異常處理機制的簡單原理和應用。

原理

有錯直接轉到異常處理部分或向上丟擲。應用:

JAVA 異常就是錯誤,有兩種一種是執行時,編碼可以不用捕捉。一種是一般異常,如果throws 聲明瞭,必須進行處理。

84、垃圾回收的優點和原理。並考慮 2 種回收機制。

優點:

程式設計師不用管記憶體,jvm 自動完成,開發方便。執行優先非常低,程式無法清楚例項什麼時候被銷燬。

85、描述一下JVM

載入

class 檔案的原理機制?

JVM 中類的裝載是由ClassLoader 和它的子類來實現的,Java ClassLoader 是一個重要

的 Java 執行時系統元件。它負責在執行時查詢和裝入類檔案的類。

86、char 變數中能不能存貯一箇中文漢字?為什麼?

能夠被定義成為一箇中文的,因為 java 中以 unicode 編碼,一個 char 佔 16 四個位元組,所以放一箇中文是沒問題的

百萬java面試題整理(3.0)

相關文章