1. 程式人生 > >某大型公司Java面試題

某大型公司Java面試題


    找工作要面試,有面試就有對付面試的辦法。以下一些題目來自我和我朋友痛苦的面試經歷,提這些問題的公司包括IBM, E*Trade, Siebel, Motorola, SUN, 以及其它大小公司。 

  面試是沒什麼道理可講的,它的題目有的不合情理、脫離實際。有在紙上寫的,有當面考你的,也有在電話裡問的,給你IDE的估計很少(否則你趕快去買彩票, 說不定中)。所以如果你看完此文後,請不要抱怨說這些問題都能用IDE來解決。你必須在任何情況下準確回答這些問題,在面試中如果出現一兩題回答不準確很有可能你就被拒之門外了。 

  當然這些都是Java的基本題,那些面試的人大多數不會問你Hibernate

有多先進,Eclipse的三個組成部分,或command design pattern,他們都是老一輩了,最喜歡問的就是基礎知識。別小看了這些基礎,我朋友水平一流,結果就栽在一到基礎知識的問題下,和高薪無緣。 

  好了廢話少說,開始正題。 

  第一,談談final, finally, finalize的區別。 

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

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

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

 
  第二,Anonymous Inner Class (匿名內部類是否可以extends(繼承)其它類,是否可以implements(實現)interface(介面)? 
可以繼承其他類或完成其他介面,在swing程式設計中常用此方式。
  第三,Static Nested Class 和 Inner Class的不同,說得越多越好(面試題有的很籠統)。 
Static Nested Class是被宣告為靜態(static)的內部類,它可以不依賴於外部類例項被例項化。而通常的內部類需要在外部類例項化後才能例項化。
  第四,&&&的區別。 
&是位運算子,表示按位與運算,

&&是邏輯運算子,表示邏輯與(and.
  第五,HashMapHashtable的區別。 
HashMapHashtable的輕量級實現(非執行緒安全的實現),他們都完成了Map介面,主要區別在於HashMap允許空(null)鍵值(key,由於非執行緒安全,效率上可能高於Hashtable.


  第六,Collection 和 Collections的區別。 

  Collection是集合類的上級介面,繼承與他的介面主要有Set List.

Collections是針對集合類的一個幫助類,他提供一系列靜態方法實現對各種集合的搜尋、排序、執行緒安全化等操作。

  第七,什麼時候用assert。 
1.4新增關鍵字(語法),用於測試boolean表示式狀態,可用於除錯程式。

使用方法 assert <boolean表示式>,表示如果表示式為真(true,則下面的語句執行,否則丟擲AssertionError

另外的使用方式assert < boolean表示式>:<other表示式>,表示如果表示式為真,後面的表示式忽略,否則後面表示式的值用於AssertionError的構建引數。

注意編譯時要增加-source 1.4 引數,否則報錯。]執行時要增加 –ea引數,否則assert行被忽略

  第八,GC是什麼為什麼要有GC? 

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

  第九,String s = new String("xyz");建立了幾個String Object? 
兩個
  第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少
Math.round(11.5)==12

Math.round(-11.5)==-11

round方法返回與引數最接近的長整數,引數加1/2後求其floor.
  第十一,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;(可以正確編譯)
  第十二,sleep() 和 wait() 有什麼區別
sleep是執行緒類(Thread)的方法,導致此執行緒暫停執行指定時間,給執行機會給其他執行緒,但是監控狀態依然保持,到時後會自動恢復。呼叫sleep不會釋放物件鎖。

waitObject類的方法,對此物件呼叫wait方法導致本執行緒放棄物件鎖,進入等待此物件的等待鎖定池,只有針對此物件發出notify方法(或notifyAll)後本執行緒才進入物件鎖定池準備獲得物件鎖進入執行狀態。

  第十三,Java有沒有goto? 
沒有
  很十三的問題,如果哪個面試的問到這個問題,我勸你還是別進這家公司。(完)