1. 程式人生 > >java常見面試題:Java程式設計師面試題(六)

java常見面試題:Java程式設計師面試題(六)

不知不覺中,已經將面試題更新到第六篇了,龐大的java面試題庫,想要刷完似乎不大可能,需要一點一點的積累。

1、java 中會存在記憶體洩漏嗎,請簡單描述。

 

答:會;存在無用但可達的物件,這些物件不能被GC 回收,導致耗費記憶體資源。

2、靜態變數和例項變數的區別?

答:靜態變數也稱為類變數,歸全類共有,它不依賴於某個物件,可通過類名直接訪問;而例項變數必須依存於某一例項,只能通過物件才能訪問到它。

3、是否可以從一個static 方法內部發出對非static 方法的呼叫?

答:不可以,如果其中包含物件的method(),不能保證物件初始化。

4、寫clone()方法時,通常都有一行程式碼,是什麼?

答:Clone 有預設行為:super.clone(),他負責產生正確大小的空間,並逐位複製。

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

答:GC 是垃圾收集的意思(Gabage Collection),記憶體處理是程式設計人員容易出現問題的地方,忘記或者錯誤的記憶體回收會導致程式或系統的不穩定甚至崩潰,Java 提供的GC 功能可以自動監測物件是否超過作用域從而達到自動回收記憶體的目的,Java 語言沒有提供釋放已分配記憶體的顯示操作方法。Java 程式設計師不用擔心記憶體管理,因為垃圾收集器會自動進行管理。要請求垃圾收集,可以呼叫下面的方法之一:System.gc() 或Runtime.getRuntime().gc() 。

6、說出資料連線池的工作機制是什麼?

答:J2EE 伺服器啟動時會建立一定數量的池連線,並一直維持不少於此數目的池連線。客戶端程式需要連線時,池驅動程式會返回一個未使用的池連線並將其表記為忙。如果當前沒有空閒連線,池驅動程式就新建一定數量的連線,新建連線的數量有配置引數決定。當使用的池連線呼叫完成後,池驅動程式將此連線表記為空閒,其他呼叫就可以使用這個連線。

7、EJB 的啟用機制?

答:以Stateful Session Bean 為例:其Cache 大小決定了記憶體中可以同時存在的Bean 例項的數量,根據MRU 或NRU 演算法,例項在啟用和去啟用狀態之間遷移,啟用機制是當客戶端呼叫某個EJB 例項業務方法時,如果對應EJB Object發現自己沒有繫結對應的Bean 例項則從其去啟用Bean 儲存中(通過序列化機制儲存例項)回覆(啟用)此例項。狀態變遷前會呼叫對應的ejbActive 和ejbPassivate 方法.

未完待續~~