更新時間:2020-03-10 10:05:13 來源:動力節點 瀏覽2343次
什么是線程局部變量?
線程局部變量是局限于線程內部的變量,屬于線程自身所有,不在多個線程間共享。Java提供ThreadLocal類來支持線程局部變量,是一種實現線程安全的方式。但是在管理環境下(如web服務器)使用線程局部變量的時候要特別小心,在這種情況下,工作線程的生命周期比任何應用變量的生命周期都要長。任何線程局部變量一旦在工作完成后沒有釋放,Java應用就存在內存泄露的風險。
用wait-notify寫一段代碼來解決生產者-消費者問題?
請參考答案中的示例代碼。只要記住在同步塊中調用wait()和notify()方法,如果阻塞,通過循環來測試等待條件。
用Java寫一個線程安全的單例模式(Singleton)?
請參考答案中的示例代碼,這里面一步一步教你創建一個線程安全的Java單例類。當我們說線程安全時,意思是即使初始化是在多線程環境中,仍然能保證單個實例。Java中,使用枚舉作為單例類是最簡單的方式來創建線程安全單例模式的方式。
Java中sleep方法和wait方法的區別?
雖然兩者都是用來暫停當前運行的線程,但是sleep()實際上只是短暫停頓,因為它不會釋放鎖,而wait()意味著條件等待,這就是為什么該方法要釋放鎖,因為只有這樣,其他等待的線程才能在滿足條件時獲取到該鎖。
什么是不可變對象(immutableobject)?Java中怎么創建一個不可變對象?
不可變對象指對象一旦被創建,狀態就不能再改變。任何修改都會創建一個新的對象,如String、Integer及其它包裝類。詳情參見答案,一步一步指導你在Java中創建一個不可變的類。
我們能創建一個包含可變對象的不可變對象嗎?
是的,我們是可以創建一個包含可變對象的不可變對象的,你只需要謹慎一點,不要共享可變對象的引用就可以了,如果需要變化時,就返回原對象的一個拷貝。最常見的例子就是對象中包含一個日期對象的引用。
數據類型和Java基礎面試問題
Java中應該使用什么數據類型來代表價格?
如果不是特別關心內存和性能的話,使用BigDecimal,否則使用預定義精度的double類型。
怎么將byte轉換為String?
可以使用String接收byte[]參數的構造器來進行轉換,需要注意的點是要使用的正確的編碼,否則會使用平臺默認編碼,這個編碼可能跟原來的編碼相同,也可能不同。
Java中怎樣將bytes轉換為long類型?
這個問題你來回答:-)
我們能將int強制轉換為byte類型的變量嗎?如果該值大于byte類型的范圍,將會出現什么現象?
是的,我們可以做強制轉換,但是Java中int是32位的,而byte是8位的,所以,如果強制轉化是,int類型的高24位將會被丟棄,byte類型的范圍是從-128到128。
以上就是動力節點Java培訓機構小編介紹的“不得不會的Java程序員面試題”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習