- 面向對象的三大特性:
封裝:把數據和操作數據的方法綁定起來,暴露出想要暴露的方法,供其他類調用。
繼承:是從已有類中獲得信息創建新類的過程,提供信息的類叫做父類(超類,基類),繼承的類爲子類(派生類), 繼承具有傳遞性。
多態(最精髓的東西):不同類型的對象對同一消息做出的不同的響應,條件:方法重寫,父類引用指向子類對象 - java中多態的機制:運行時綁定,只有到需要的時候纔會決定具體使用哪個類的哪個方法,並不是聲明該類的方法
- java異常:
編譯時異常:運行前的異常,都必須要顯示處理;處理方式有兩種(1)利用trycatch語句(2)定義方法時拋出異常
運行時異常:數組下標越界異常,類型轉換異常,空指針異常,除數是0異常,IO異常,FilenotExist異常 - 下面的語句執行的結果是:3。 因爲異常機制有一個原則,當try或者catch語句中有返回語句,會先執行finally語句,然後繼續執行返回語句(防止一些流打開了沒有關閉就返回,導致程序異常),可是當執行到第八行的時候語句已經返回,所以不會在執行catch中的語句
-
java基礎類型所佔字節數:
byte:1 short:2 char:2 int:4 float:4 double:8 long:8 boolean:1(有時多個boolean也只佔一個字節) -
linkedhashmap有序
-
ArrayList 、HashSet、 HashMap都不是線程安全的,都沒有加鎖,使用下列方法可以變成線程安全的
-
java創建多線程的三種方式:(1)new thread對象(無參),重寫run方法 ,並調用start方法;(2)new thread對象(參數爲new runnable)(3)實現runnable接口,重寫run方法;
-
java中wait()和sleep()的不同之處在於:wait會釋放鎖,而sleep會持有鎖,wait通常用於線程間交互,sleep用於暫停執行
- synchronized 和volatile:
volatile:(1)保證了不同線程對這個變量操作的可見性,即一個線程修改這個變量的值,其他線程立即可見
(2)只能作用於變量
(3)不會造成線程阻塞
(4)不能被編譯器優化
synchronized :(1)鎖定當前變量,只有當前線程可以修改
(2)可作用於變量,方法,類
(3)可能造成線程阻塞
(4)可以被編譯器優化 - 下面的代碼的輸入結果是:
輸出結果一定小於1000,每一個線程運行時都有一個線程棧,線程棧中保存了線程運行時的變量的信息,但線程運行時,首先通過變量的引用找到變量在堆內存中的值,然後複製到線程棧中,當線程運行時修改的是線程棧中的值,線程運行完畢,會將線程棧中的值在傳回到堆內存中,所以在圖中的程序中就會出現線程安全問題,因此結果一般小於1000; -
線程池:事先將多個線程放到一個容器中,當使用的時候就不是去new線程,而是直接去線程池中拿線程即可,節省了開闢子線程的時間,提高代碼執行效率
有點:(1)通過重複使用已創建的線程降低線程創建和銷燬帶來的消耗
(2)提高響應速度,當任務到達時,不需要等待線程創建就能立即執行
(3)提高線程的可管理性,線程是稀缺資源,如果無限制的創建,不僅消耗系統資源,還會降低系統的穩 定性,使用線程池可以進行統一分配,調優和監控。
頻率較高的Java面試題
頻率較高的Java面試題
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.