更新時間:2020-03-10 10:05:13 來源:動力節(jié)點 瀏覽2637次
什么是線程局部變量?
線程局部變量是局限于線程內(nèi)部的變量,屬于線程自身所有,不在多個線程間共享。Java提供ThreadLocal類來支持線程局部變量,是一種實現(xiàn)線程安全的方式。但是在管理環(huán)境下(如web服務(wù)器)使用線程局部變量的時候要特別小心,在這種情況下,工作線程的生命周期比任何應(yīng)用變量的生命周期都要長。任何線程局部變量一旦在工作完成后沒有釋放,Java應(yīng)用就存在內(nèi)存泄露的風(fēng)險。
用wait-notify寫一段代碼來解決生產(chǎn)者-消費者問題?
請參考答案中的示例代碼。只要記住在同步塊中調(diào)用wait()和notify()方法,如果阻塞,通過循環(huán)來測試等待條件。
用Java寫一個線程安全的單例模式(Singleton)?
請參考答案中的示例代碼,這里面一步一步教你創(chuàng)建一個線程安全的Java單例類。當(dāng)我們說線程安全時,意思是即使初始化是在多線程環(huán)境中,仍然能保證單個實例。Java中,使用枚舉作為單例類是最簡單的方式來創(chuàng)建線程安全單例模式的方式。
Java中sleep方法和wait方法的區(qū)別?
雖然兩者都是用來暫停當(dāng)前運行的線程,但是sleep()實際上只是短暫停頓,因為它不會釋放鎖,而wait()意味著條件等待,這就是為什么該方法要釋放鎖,因為只有這樣,其他等待的線程才能在滿足條件時獲取到該鎖。
什么是不可變對象(immutableobject)?Java中怎么創(chuàng)建一個不可變對象?
不可變對象指對象一旦被創(chuàng)建,狀態(tài)就不能再改變。任何修改都會創(chuàng)建一個新的對象,如String、Integer及其它包裝類。詳情參見答案,一步一步指導(dǎo)你在Java中創(chuàng)建一個不可變的類。
我們能創(chuàng)建一個包含可變對象的不可變對象嗎?
是的,我們是可以創(chuàng)建一個包含可變對象的不可變對象的,你只需要謹慎一點,不要共享可變對象的引用就可以了,如果需要變化時,就返回原對象的一個拷貝。最常見的例子就是對象中包含一個日期對象的引用。
數(shù)據(jù)類型和Java基礎(chǔ)面試問題
Java中應(yīng)該使用什么數(shù)據(jù)類型來代表價格?
如果不是特別關(guān)心內(nèi)存和性能的話,使用BigDecimal,否則使用預(yù)定義精度的double類型。
怎么將byte轉(zhuǎn)換為String?
可以使用String接收byte[]參數(shù)的構(gòu)造器來進行轉(zhuǎn)換,需要注意的點是要使用的正確的編碼,否則會使用平臺默認編碼,這個編碼可能跟原來的編碼相同,也可能不同。
Java中怎樣將bytes轉(zhuǎn)換為long類型?
這個問題你來回答:-)
我們能將int強制轉(zhuǎn)換為byte類型的變量嗎?如果該值大于byte類型的范圍,將會出現(xiàn)什么現(xiàn)象?
是的,我們可以做強制轉(zhuǎn)換,但是Java中int是32位的,而byte是8位的,所以,如果強制轉(zhuǎn)化是,int類型的高24位將會被丟棄,byte類型的范圍是從-128到128。

以上就是動力節(jié)點Java培訓(xùn)機構(gòu)小編介紹的“不得不會的Java程序員面試題”的內(nèi)容,希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。
相關(guān)閱讀