Exception 和 Error 有什么區(qū)別?
Exception 和 Error 都是繼承了 Throwable 類,在 Java 中只有 Throwable 類型的實例才可以被拋出或者捕獲,它是異常處理機制的基本組成類型。Exception 和 Error 體現(xiàn)了 Java 平臺設(shè)計者對不同異常情況的分類。Exception 是程序正常運行中,可以預(yù)料的意外情況,可能并且應(yīng)該被捕獲,進行相應(yīng)處理。Error 是指在正常情況下,不大可能出現(xiàn)的情況,絕大部分的 Error 都會導(dǎo)致程序(比如 JVM 自身)處于非正常的、不可恢復(fù)狀態(tài)。既然是非正常情況,所以不便于也不需要捕獲,常見的比如 OutOfMemoryError 之類,都是 Error 的子類。
Hashtable、HashMap、TreeMap 有什么不同?
Hashtable 是早期 Java 類庫提供的一個哈希表實現(xiàn),本身是同步的,不支持 null 鍵和值,由于同步導(dǎo)致的性能開銷,所以已經(jīng)很少被推薦使用。HashMap 是應(yīng)用更加廣泛的哈希表實現(xiàn),行為上大致上與 HashTable 一致,主要區(qū)別在于 HashMap 不是同步的,支持 null 鍵和值等。通常情況下,HashMap 進行 put 或者 get 操作,可以達到常數(shù)時間的性能,所以它是絕大部分利用鍵值對存取場景的首選。TreeMap 則是基于紅黑樹的一種提供順序訪問的 Map,和 HashMap 不同,它的 get、put、remove 之類操作都是 O(log(n))的時間復(fù)雜度,具體順序可以由指定的 Comparator 來決定,或者根據(jù)鍵的自然順序來判斷。
什么情況下 Java 程序會產(chǎn)生死鎖?
死鎖是一種特定的程序狀態(tài),在實體之間,由于循環(huán)依賴導(dǎo)致彼此一直處于等待之中,沒有任何個體可以繼續(xù)前進。死鎖不僅僅是在線程之間會發(fā)生,存在資源獨占的進程之間同樣也可能出現(xiàn)死鎖。通常來說,我們大多是聚焦在多線程場景中的死鎖,指兩個或多個線程之間,由于互相持有對方需要的鎖,而永久處于阻塞的狀態(tài)。
大部分死鎖本身并不難定位,掌握基本思路和工具使用,理解線程相關(guān)的基本概念,比如各種線程狀態(tài)和同步、鎖、Latch 等并發(fā)工具,就已經(jīng)足夠解決大多數(shù)問題了。
Java 并發(fā)類庫提供的線程池有哪幾種?
通常開發(fā)者都是利用 Executors 提供的通用線程池創(chuàng)建方法,去創(chuàng)建不同配置的線程池,主要區(qū)別在于不同的 ExecutorService 類型或者不同的初始參數(shù)。Executors 目前提供了 5 種不同的線程池創(chuàng)建配置:newCachedThreadPool()、newFixedThreadPool(int nThreads)、newSingleThreadExecutor()、newSingleThreadScheduledExecutor() 和 newScheduledThreadPool(int corePoolSize)、newWorkStealingPool(int parallelism)。
如何監(jiān)控和診斷 JVM 堆內(nèi)和堆外內(nèi)存使用?
了解 JVM 內(nèi)存的方法有很多,具體能力范圍也有區(qū)別,可以使用綜合性的圖形化工具,如 JConsole、VisualVM 等。這些工具具體使用起來相對比較直觀,直接連接到 Java 進程,然后就可以在圖形化界面里掌握內(nèi)存使用情況。以 JConsole 為例,其內(nèi)存頁面可以顯示常見的堆內(nèi)存和各種堆外部分使用狀態(tài)。也可以使用命令行工具進行運行時查詢,如 jstat 和 jmap 等工具都提供了一些選項,可以查看堆、方法區(qū)等使用數(shù)據(jù)?;蛘撸部梢允褂?jmap 等提供的命令,生成堆轉(zhuǎn)儲文件,然后利用 jhat 或 Eclipse MAT 等堆轉(zhuǎn)儲分析工具進行詳細分析。
以上就是天津卓眾教育Java培訓(xùn)機構(gòu)小編介紹的“Java高級工程師常見面試題”的內(nèi)容,希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。
相關(guān)推薦
最新最全java面試題及答案(初級到高級)
史上最全的中高級JAVA工程師面試題及答案匯總
Java高級開發(fā)工程師面試題
2019史上最全java面試題題庫大全800題
哪有資深java工程師面試題
Java筆試題