Java程式設計師的筆試題10道

Web開發者發表於2012-10-02

  中軟國際不久前出了10道對於java程式設計師基本功時候紮實的考題,不妨你也來測測看吧。看下會幾道題目。

  1、HashMap和Hashtable的區別。

  都屬於Map介面的類,實現了將惟一鍵對映到特定的值上。HashMap 類沒有分類或者排序。它允許一個null 鍵和多個null 值。Hashtable 類似於HashMap,但是不允許null 鍵和null 值。它也比HashMap 慢,因為它是同步的,是執行緒安全的。

  2、sleep() 和wait() 有什麼區別?

  sleep是執行緒類(Thread)的方法,導致此執行緒暫停執行指定時間,給執行機會給其他執行緒,但是監控狀態依然保持,到時後會自動恢復。呼叫sleep不會釋放物件鎖。wait是Object類的方法,對此物件呼叫wait方法導致本執行緒放棄物件鎖,進入等待此物件的等待鎖定池,只有針對此物件發出notify方法(或notifyAll)後本執行緒才進入物件鎖定池準備獲得物件鎖進入執行狀態。

  3、Collection 和Collections的區別。

  Collections是個java.util下的類,它包含有各種有關集合操作的靜態方法。

  Collection是個java.util下的介面,它是各種集合結構的父介面。

  4、什麼時候用assert.

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

  5、&和&&的區別

  & 是兩個數相與,是位運算子,&&是布林邏輯運算子,連線兩個條件表示式的,兩個條件表示式都為真時,整個才為真

  6、談談final, finally, finalize的區別

  final:修飾符(關鍵字)如果一個類被宣告為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個類不能既被宣告為abstract的,又被宣告為final的。將變數或方法宣告為final,可以保證它們在使用中不被改變。被宣告為final的變數必須在宣告時給定初值,而在以後的引用中只能讀取,不可修改。被宣告為final的方法也同樣只能使用,不能過載。

  finally:在異常處理時提供finally 塊來執行任何清除操作。如果丟擲一個異常,那麼相匹配的catch 子句就會執行,然後控制就會進入finally 塊(如果有的話)。

  finalize:方法名。Java 技術允許使用finalize() 方法在垃圾收集器將物件從記憶體中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個物件沒有被引用時對這個物件呼叫的。它是在Object 類中定義的,因此所有的類都繼承了它。子類覆蓋finalize() 方法以整理系統資源或者執行其他清理工作。finalize() 方法是在垃圾收集器刪除物件之前對這個物件呼叫的。

  7、Anonymous Inner Class (匿名內部類) 是否可以extends(繼承)其它類,是否可以implements(實現)interface(介面)?

  匿名的內部類是沒有名字的內部類。不能繼承其它類,但一個內部類可以作為一個介面,由另一個內部類實現。

  8、Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

  Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;因為返回最接近引數的long.通過加上1/2 將該結果舍入為整數,取結果的基數並將其強制轉換為long 型別。換句話說,結果等於以下表示式的值:(long)Math.floor(a + 0.5d)

  9、Static Nested Class 和Inner Class的不同,說得越多越好(面試題有的很籠統)

  Static nested class(巢狀類)是將內部類宣告為static.普通內部類物件隱式地儲存了一個引用,指向建立它的外圍類物件,不能有static資料和static欄位。巢狀類意味著:1> 要建立巢狀類的物件,並不需要其外圍類的物件;2>不能從巢狀類的物件中訪問非靜態的外圍類的物件。

  10、ArrayList和Vector的區別

  1>同步性:Vector是執行緒安全的,也就是說是同步的,而ArrayList是執行緒序不安全的,不是同步的2>資料增長:當需要增長時,Vector預設增長為原來一培,而ArrayList卻是原來的一半。

相關文章