搜人2013筆試題(java)

今天應該又不少同學去ZD參加搜狗的筆試,由於時間衝突,我選擇了去三星。回來看看搜狗的筆試題,總體上感覺還好,不是很“難”(純粹馬後炮)。現奉上題(只關注java部分和DS部分)。

字符串問題


分析:

A:s1==s2爲false,前者定義是對象的引用,"abc"存儲在堆內存中,而s2中的“abc”存儲在常量池中,用s1的棧內存地址和“abc”比較自然是否。

B:String是final類,故是正確的。

C、D:StringBuffer 與 StringBuilder 中的方法和功能完全是等價的,只是StringBuffer 中的方法大都採用了 synchronized 關鍵字進行修飾,因此是線程安全的,而 StringBuilder 沒有這個修飾,可以被認爲是線程不安全的。
StringBuffer 始於 JDK 1.0
StringBuilder 始於 JDK 1.5
從 JDK 1.5 開始,帶有字符串變量的連接操作(+),JVM 內部採用的是StringBuilder 來實現的,而之前這個操作是採用 StringBuffer 實現的。

故BC爲正確答案。

java內存管理


解析:

A:gc()建議jvm執行垃圾回收,可行

B:可行,避免

C:可行,在JVM垃圾收集器收集一個對象之前 ,一般要求程序調用適當的方法釋放資源,但在沒有明確釋放資源的情況下,Java提供了缺省機制來終止化該對象心釋放資源,這個方法就是finalize()。http://blog.csdn.net/yu422560654/article/details/7326852

D:避免堆內存溢出,可行

E:可行。

runFinalization
public static void runFinalization()調用Finalize()釋放資源
運行處於掛起終止狀態的所有對象的終止方法。  
調用該方法說明 Java 虛擬機做了一些努力運行已被丟棄對象的 finalize 方法,但是這些對象的 finalize 方法至今尚未運行。當控制權從方法調用中返回時,Java 虛擬機已經盡最大努力去完成所有未執行的終止方法。  
調用 System.runFinalization() 實際上等效於調用:  Runtime.getRuntime().runFinalization()

線程問題



解析:t2喚醒t1時,此時obj是同步狀態,必須t2執行完後,纔到t1,所以選擇B。

(該題不確定,希望比較懂的人給點意見)

字節數


解析:

writeInt寫入四個字節,writeChar寫入兩個字節。故6

參見:http://blog.csdn.net/androidbluetooth/article/details/6430797

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章