黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) Java常見的面試題及答案

Java常見的面試題及答案

更新時間:2020-01-19 13:54:28 來源:動力節(jié)點 瀏覽2852次


Java常見的面試題及答案


  什么是 Busy spin?我們?yōu)槭裁匆褂盟?


  Busy spin 是一種在不釋放 CPU 的基礎(chǔ)上等待事件的技術(shù)。它經(jīng)常用于避免丟失 CPU 緩存中的數(shù)據(jù)(如果線程先暫停,之后在其他CPU上運行就會丟失)。所以,如果你的工作要求低延遲,并且你的線程目前沒有任何順序,這樣你就可以通過循環(huán)檢測隊列中的新消息來代替調(diào)用 sleep() 或 wait() 方法。它唯一的好處就是你只需等待很短的時間,如幾微秒或幾納秒。LMAX 分布式框架是一個高性能線程間通信的庫,該庫有一個 BusySpinWaitStrategy 類就是基于這個概念實現(xiàn)的,使用 busy spin 循環(huán) EventProcessors 等待屏障。


  Java 中怎么獲取一份線程 dump 文件?


  在 Linux 下,你可以通過命令 kill -3 PID (Java 進程的進程 ID)來獲取 Java 應(yīng)用的 dump 文件。在 Windows 下,你可以按下 Ctrl + Break 來獲取。這樣 JVM 就會將線程的 dump 文件打印到標(biāo)準(zhǔn)輸出或錯誤文件中,它可能打印在控制臺或者日志文件中,具體位置依賴應(yīng)用的配置。如果你使用Tomcat。


  Swing 是線程安全的?


  不是,Swing 不是線程安全的。你不能通過任何線程來更新 Swing 組件,如 JTable、JList 或 JPanel,事實上,它們只能通過 GUI 或 AWT 線程來更新。這就是為什么 Swing 提供 invokeAndWait() 和 invokeLater() 方法來獲取其他線程的 GUI 更新請求。這些方法將更新請求放入 AWT 的線程隊列中,可以一直等待,也可以通過異步更新直接返回結(jié)果。你也可以在參考答案中查看和學(xué)習(xí)到更詳細的內(nèi)容。


  什么是線程局部變量?


  當(dāng)使用ThreadLocal維護變量時,ThreadLocal為每個使用該變量的線程提供獨立的變量副本,每個線程都可以獨立地改變自己的副本,而不會影響其它線程所對應(yīng)的副本,是線程隔離的。線程隔離的秘密在于ThreadLocalMap類(ThreadLocal的靜態(tài)內(nèi)部類)


  線程局部變量是局限于線程內(nèi)部的變量,屬于線程自身所有,不在多個線程間共享。Java 提供 ThreadLocal 類來支持線程局部變量,是一種實現(xiàn)線程安全的方式。但是在管理環(huán)境下(如 web 服務(wù)器)使用線程局部變量的時候要特別小心,在這種情況下,工作線程的生命周期比任何應(yīng)用變量的生命周期都要長。任何線程局部變量一旦在工作完成后沒有釋放,Java 應(yīng)用就存在內(nèi)存泄露的風(fēng)險。


  ThreadLocal的方法:void set(T value)、T get()以及T initialValue()。


  ThreadLocal是如何為每個線程創(chuàng)建變量的副本的:


  首先,在每個線程Thread內(nèi)部有一個ThreadLocal.ThreadLocalMap類型的成員變量threadLocals,這個threadLocals就是用來存儲實際的變量副本的,鍵值為當(dāng)前ThreadLocal變量,value為變量副本(即T類型的變量)。初始時,在Thread里面,threadLocals為空,當(dāng)通過ThreadLocal變量調(diào)用get()方法或者set()方法,就會對Thread類中的threadLocals進行初始化,并且以當(dāng)前ThreadLocal變量為鍵值,以ThreadLocal要保存的副本變量為value,存到threadLocals。然后在當(dāng)前線程里面,如果要使用副本變量,就可以通過get方法在threadLocals里面查找。


  總結(jié):


  a、實際的通過ThreadLocal創(chuàng)建的副本是存儲在每個線程自己的threadLocals中的


  b、為何threadLocals的類型ThreadLocalMap的鍵值為ThreadLocal對象,因為每個線程中可有多個threadLocal變量,就像上面代碼中的longLocal和stringLocal;


  c、在進行g(shù)et之前,必須先set,否則會報空指針異常;如果想在get之前不需要調(diào)用set就能正常訪問的話,必須重寫initialValue()方法


  用 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() 意味著條件等待,這就是為什么該方法要釋放鎖,因為只有這樣,其他等待的線程才能在滿足條件時獲取到該鎖。


  什么是不可變對象(immutable object)?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 類型?


  String接收bytes的構(gòu)造器轉(zhuǎn)成String,再Long.parseLong


  我們能將 int 強制轉(zhuǎn)換為 byte 類型的變量嗎?如果該值大于 byte 類型的范圍,將會出現(xiàn)什么現(xiàn)象?


  是的,我們可以做強制轉(zhuǎn)換,但是 Java 中 int 是 32 位的,而 byte 是 8 位的,所以,如果強制轉(zhuǎn)化是,int 類型的高 24 位將會被丟棄,byte 類型的范圍是從 -128 到 127。


  存在兩個類,B 繼承 A,C 繼承 B,我們能將 B 轉(zhuǎn)換為 C 么?如 C = (C) B;


  可以,向下轉(zhuǎn)型。但是不建議使用,容易出現(xiàn)類型轉(zhuǎn)型異常.


  哪個類包含 clone 方法?是 Cloneable 還是 Object?


  java.lang.Cloneable 是一個標(biāo)示性接口,不包含任何方法,clone 方法在 object 類中定義。并且需要知道 clone() 方法是一個本地方法,這意味著它是由 c 或 c++ 或 其他本地語言實現(xiàn)的。


  Java 中 ++ 操作符是線程安全的嗎?


  不是線程安全的操作。它涉及到多個指令,如讀取變量值,增加,然后存儲回內(nèi)存,這個過程可能會出現(xiàn)多個線程交差。


Java常見的面試題及答案


      以上就是動力節(jié)點Java培訓(xùn)機構(gòu)小編介紹的“Java常見的面試題及答案”的內(nèi)容,希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。


相關(guān)推薦


最新最全java面試題及答案(初級到高級)


史上最全的中高級JAVA工程師面試題及答案匯總


Java高級開發(fā)工程師面試題


2019史上最全java面試題題庫大全800題


哪有資深java工程師面試題


提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 国产日韩欧美另类 | 成人在线激情视频 | 激情综合久久 | 色偷偷综合网 | 欧美日本韩国国产 | 一级视频在线免费观看 | 国产在线天堂a v | 日日摸夜夜添欧美一区 | 欧美在线视频网 | 香蕉久久夜色精品国产小优 | 国产成人精品综合在线 | 欧美疯狂xxxx乱大交视频 | 一级a毛片免费 | 国产在播放一区 | 精品一区二区三区在线观看 | 亚洲国产高清一区二区三区 | 欧美综合区自拍亚洲综合图区 | 外国黄色毛片 | 免费在线视频你懂的 | 精品九九人人做人人爱 | 欧美一区二区三区四区在线观看 | 国产干美女 | 免费男女视频 | 日韩精品免费一区二区三区 | 天天看天天摸天天操 | 国产日韩精品在线 | 日本三级香港三级国产三级 | 黄视频网站在线观看 | 国产成人深夜福利在线观看 | 欧美五月激情 | 精品一区二区三区高清免费观看 | 中国一级特黄视频 | 国产成人在线视频播放 | 特一级黄 | 成人深夜福利在线播放不卡 | 91aaa免费免费国产在线观看 | 国产黄色一级大片 | 午夜黄色毛片 | 激情性爽三级成人 | 999热在线精品观看全部 | 日本国产成人精品视频 |