此異常最初是在此調用堆棧中引發的:_【8】進大廠必須掌握的面試題Java面試異常和線程...

點擊上方“全棧程序員社區”,星標公眾號

重磅干貨,第一時間送達

Q1。錯誤和異常有什么區別?

錯誤是在運行時發生的不可恢復的情況。如OutOfMemory錯誤。這些JVM錯誤無法在運行時修復。盡管可以在catch塊中捕獲錯誤,但是應用程序的執行將停止并且無法恢復。

而異常是由于輸入錯誤或人為錯誤等原因而發生的情況。例如,如果指定的文件不存在,則將拋出FileNotFoundException。否則,如果嘗試使用null引用,則會發生NullPointerException。在大多數情況下,有可能從異常中恢復(可能是通過向用戶提供輸入正確值的反饋等)。

Q2。您如何處理Java異常?

Java中有五個關鍵字用于處理異常:

  1. try

  2. catch

  3. finally

  4. throw

  5. throws

Q3。Checked Exception和Unchecked Exception有什么區別?

檢查異常

  • 擴展Throwable類的類(RuntimeException和Error除外)被稱為檢查異常。

  • 被檢查的異常在編譯時被檢查。

  • 示例:IOException,SQLException等。

未經檢查的異常

  • 擴展RuntimeException的類稱為未檢查的異常。

  • 未檢查的異常不會在編譯時檢查。

  • 例如:ArithmeticException,NullPointerException等。

Q4。關鍵字final,finally和finalize有什么目的?

final:**

Final用于對類,方法和變量施加限制。不能繼承final類,不能覆蓋final方法,并且不能更改final變量值。讓我們看下面的示例,以更好地理解它。

class FinalVarExample {
public static void main( String args[]){
final int a=10; // Final variable
a=50; //Error as value can't be changed
}
}

finally

最后用于放置重要代碼,無論是否處理異常,都將執行該代碼。讓我們看下面的示例,以更好地理解它。

class FinallyExample {
public static void main(String args[]){
try {
int x=100;
}catch(Exception e) {
System.out.println(e);
}finally {
System.out.println("finally block is executing");
}
}
}

finalize

Finalize用于在垃圾回收之前就執行清理處理。讓我們看下面的示例,以更好地理解它。

class FinalizeExample {
public void finalize() {
System.out.println("Finalize is called");
}
public static void main(String args[]){
FinalizeExample f1=new FinalizeExample();
FinalizeExample f2=new FinalizeExample();
f1= NULL;
f2=NULL;
System.gc();
}
}

Q5。throw和throws有什么區別?

throwthrows
引發用于顯式引發異常。引發用于聲明異常。
已檢查的異常不能僅通過throw傳播。可以使用throws傳播檢查的異常。
引發后跟一個實例。投擲之后是上課。
在方法中使用了throw。拋出與方法簽名一起使用。
您不能拋出多個異常您可以聲明多個異常,例如public void method()引發IOException,SQLException。

Q6。什么是Java中的異常層次結構?

層次結構如下:

Throwable是所有Exception類的父類。異常有兩種類型:檢查的異常和UncheckedExceptions或RunTimeExceptions。兩種類型的異常都擴展了Exception類,而錯誤又進一步分為虛擬機錯誤和斷言錯誤。

Q7。如何創建自定義異常?

要創建您自己的異常,請擴展Exception類或其任何子類。

  • class New1Exception extends Exception {} //這將創建Checked Exception

  • 類NewException擴展了IOException {} //這將創建Checked異常

  • 類NewException擴展了NullPonterExcpetion {} //這將創建UnChecked異常

Q8。Java異常類的重要方法有哪些?

異常及其所有子類均未提供任何特定方法,并且所有方法均在基類Throwable中定義。

  1. String getMessage() –此方法返回Throwable消息字符串,并且可以在通過其構造函數創建異常時提供該消息。

  2. String getLocalizedMessage()–提供此方法,以便子類可以重寫它以向調用程序提供特定于語言環境的消息。此方法的可拋出類實現僅使用getMessage()方法即可返回異常消息。

  3. Synchronized Throwable getCause() –此方法返回異常原因,或者返回null id,原因未知。

  4. String toString() –此方法以String格式返回有關Throwable的信息,返回的String包含Throwable類的名稱和本地化消息。

  5. void printStackTrace() –此方法將堆棧跟蹤信息打印到標準錯誤流,此方法已重載,我們可以傳遞PrintStream或PrintWriter作為參數,以將堆棧跟蹤信息寫入文件或流。

Q9。進程和線程之間有什么區別?

ProcessThread
定義程序的執行實例稱為進程。線程是進程的子集。
通訊進程必須使用進程間通信與同級進程進行通信。線程可以直接與其進程中的其他線程通信。
控制進程只能控制子進程。線程可以對同一進程的線程行使相當大的控制權。
變化父進程中的任何更改都不會影響子進程。主線程中的任何更改都可能影響該進程其他線程的行為。
記憶在單獨的內存空間中運行。在共享內存空間中運行。
受控制于進程由操作系統控制。線程由程序中的程序員控制。
依存關系流程是獨立的。線程是依賴的。

Q10。什么是finally塊?有沒有什么情況下最終將不會執行?

最終塊是始終執行一組語句的塊。它始終與try塊相關聯,無論是否發生任何異常。是的,如果程序通過調用System.exit()或導致致命錯誤(導致進程中止)退出,則最終將不會執行。

Q11。什么是同步?

同步是指多線程。同步的代碼塊一次只能由一個線程執行。由于Java支持執行多個線程,因此兩個或多個線程可以訪問相同的字段或對象。同步是使所有并發線程在執行中保持同步的過程。同步避免了由于共享內存視圖不一致而導致的內存一致性錯誤。當一個方法被聲明為已同步時,線程將保持該方法對象的監視器。如果另一個線程正在執行同步方法,則該線程將被阻塞,直到該線程釋放監視器。

efba066d6e97cc3f0ed4cbd0ba044375.png

Q12。我們可以在單個try塊下寫入多個catch塊嗎?

是的,我們可以在單個try塊下包含多個catch塊,但是方法應從特定到一般。讓我們通過一個編程示例來理解這一點。

public class Example {
public static void main(String args[]) {
try {
int a[] = new int[10];
a[10] = 10 / 0;
} catch (ArithmeticException e) {
System.out.println("Arithmetic exception in first catch block");
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Array index out of bounds in second catch block");
} catch (Exception e) {
System.out.println("Any exception in third catch block");
}
}
}

Q13。Java異常類的重要方法有哪些?

方法在基類Throwable中定義。Java異常類的一些重要方法如下所述。

  1. String getMessage() –此方法返回有關異常的消息String。可以通過其構造函數提供消息。

  2. public StackTraceElement [] getStackTrace()–此方法返回一個數組,其中包含堆棧跟蹤中的每個元素。索引0處的元素表示調用堆棧的頂部,而數組中的最后一個元素表示調用堆棧底部的方法。

  3. 同步的Throwable getCause() –此方法返回Throwable對象表示的異常原因或null ID。

  4. String toString() –此方法以String格式返回信息。返回的字符串包含Throwable類的名稱和本地化消息。

  5. void printStackTrace() –此方法將堆棧跟蹤信息打印到標準錯誤流。

Q14。什么是Java中的OutOfMemoryError?

OutOfMemoryError是java.lang.Error的子類,通常在我們的JVM內存不足時發生。

Q15。什么是線程?

線程是可以由調度程序獨立執行的最小編程指令。在Java中,所有程序都將至少具有一個線程,該線程稱為主線程。當程序開始執行時,此主線程由JVM創建。主線程用于調用程序的main()。

Q16。創建線程的兩種方法是什么?

在Java中,可以通過以下兩種方式創建線程:

  • 通過實現Runnable接口。

  • 通過擴展線程

Q17。Java中有哪些不同類型的垃圾收集器?

Java中的垃圾收集程序,可以幫助進行隱式內存管理。由于在Java中,可以使用new關鍵字動態創建對象,一旦創建對象,該對象將消耗一些內存。一旦工作完成,并且不再有對象的引用,使用垃圾回收的Java將破壞該對象并釋放其占用的內存。Java提供了四種類型的垃圾收集器:

  • 串行垃圾收集器

  • 并行垃圾收集器

  • CMS垃圾收集器

  • G1垃圾收集器

往期推薦

【7】進大廠必須掌握的面試題-Java面試-Jsp

【6】進大廠必須掌握的面試題-Hibernate

【5】進大廠必須掌握的面試題-Java面試-spring

【4】進大廠必須掌握的面試題-Java面試-jdbc

e4c451b773e8a30e2edd077c4ad226bf.gif

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/271058.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/271058.shtml
英文地址,請注明出處:http://en.pswp.cn/news/271058.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

高仿帶感魔性病毒源碼+成品(最近很火的)

高仿帶感魔性病毒源碼成品(最近很火的)娛樂使用。沒破壞性 會改壁紙和打亂桌面圖標順序 自己改回來就好 演示地址: 下載地址:鏈接: http://pan.baidu.com/s/1dF2ZlU5 密碼: m95p轉載于:https://www.cnblogs.com/blogwy/p/5804711.…

數據庫設計:數據庫設計的基本步驟介紹

數據庫設計主要包括用戶需求分析、概念結構設計、邏輯結構設計、物理結構設計、數據庫實施階段、數據庫運行和維護階段等六個階段。1、用戶需求分析 數據庫設計人員采用相應的輔助工具對應用對象的功能、性能、限制等要求進行科學實際的分析。2、概念結構設計 概念結構設計主要…

Hashcode 的作用

java 的集合有兩類,一類是 List,還有一類是 Set。前者有序可重復,后者無序不重復。當我們在 set 中插入的時候怎么判斷是否已經存在該元素呢,可以通過 equals 方法。但是如果元素太多,用這樣的方法就會比較滿。 于是有…

坎蒂雷賦權法 matlab,干貨 | 利用MATLAB實現FMCW雷達中的常用角度估計方法

其中在介紹角度估計中,通過對接收差頻信號在快慢時間維度的擴展,增加了空域的信息。擴展后的接收差頻信號可以表示為其中k表示接收天線的個數,d為天線間距。在“干貨|利用MATLAB實現FMCW雷達的角度估計”中,已經介紹了如何理解目標…

vscode 使用筆記

https://code.visualstudio.com/docs/setup/setup-overview#_proxy-server-support 如果使用代理上網時,需要配置: 在 settings.json 中這樣設定: // 將設置放入此文件中以覆蓋默認設置{"http.proxy": "http://用戶名:密碼IP:…

數據庫設計基礎:需求分析相關知識筆記

系統需求分析是用戶和相關設計人員對數據庫應用系統所涉及的內容和功能描述,主要是以用戶角度來了解系統,是數據庫邏輯設計和物理設計以及應用程序的涉及都根據系統分析的內容作為基礎。該階段是非常重要的環節,如果該階段設計的不好&#xf…

matlab 康托爾集,康托爾集的性質特點

康托爾集的性質特點康托三分集中有無窮多個點,所有的點處于非均勻分布狀態。此點集具有自相似性,其局部與整體是相似的,所以是一個分形系統。康托三分集具有(1)自相似性;(2)精細結構;(3)無窮操作或迭代過程&#xff1b…

String、StringBuuffer、StringBuilder三者的區別

可變性 String 類中使用 ?nal 關鍵字字符數組保存字符串, private final char value[] ,所以 String 對象是不可變的。 StringBuilder 與 StringBu?er 都繼承自 AbstractStringBuilder 類,在 AbstractStringBuilder 中也是使用字符數組保存…

運算符和類型轉換

1.類型轉換: 分為自動轉換和強制轉換,一般用強制轉換。 其他類型轉換為整數:parseInt(); 其他類型轉換為小數:parseFloat(); 判斷是否是一個合法的數字類型&a…

數據庫設計基礎:數據字典相關知識筆記

1、數據字典的定義 數據字典(Data Dictionary ,DD)是各類數據描述的集合,它是關于數據庫中數據的描述,即元數據,而不是數據本身。2、數據字典的組成數據字典主要包括數據項、數據結構、數據流、數據存儲、處理過程等內…

用符號方法求下列極限或導數matlab,matlab實驗

3,設有矩陣A 和B 1234530166789101769A ,111213141502341617181920970212223242541311B ????????-????????-????????????????1、求它們的乘積C ;2、將矩陣C 的右下角3*2子矩陣賦給D ;3、察看matlab 工作空間…

Java基本數據類型及所占字節大小

一、Java基本數據類型 基本數據類型有8種:byte、short、int、long、float、double、boolean、char 分為4類:整數型、浮點型、布爾型、字符型。 整數型:byte、short、int、long 浮點型:float、double 布爾型:boolean 字…

事務管理:事務的基本概念筆記

1、事務的意義事務管理是對于一系列數據庫操作進行操作。針對多個事務并發執行的數據庫當中,如果對共享的數據進行更新操作不進行控制,很有可能會產生數據的不一致性,造成數據庫存儲無效甚至錯誤的數據。數據庫在運行過程中會受到很多方面的因…

從零開始攻略PHP(8)——面向對象(下)

8.編寫代碼類 每個分離的函數可以執行一個明確的任務。任務越簡單,編寫與測試這個函數就越簡單,當然也不要將這個函數分得太小——若將程序分成太多的小個體,讀起來就會很困難。 使用繼承可以重載操作。我們可以替換成一個大的Display()函數&…

vb treeview 展開子節點_C# / VB.NET 在PPT中創建、編輯PPT SmartArt圖形

本文介紹通過C#和http://VB.NET程序代碼來創建和編輯PPT文檔中的SmartArt圖形。文中將分兩個操作示例來演示創建和編輯結果。使用工具:Spire.Presentation for .NET hotfix 5.9.5dll文件引用:方式1:下載包;Spire.Presentation for…

mysql安裝教程8.0.21安裝,Windows系統下MySQL8.0.21安裝教程(圖文詳解)

安裝建議:盡量不要用.exe進行安裝,用壓縮包安裝,對日后的卸載/版本升級更為方便下載地址:https://dev.mysql.com/downloads/mysql/1、點擊上面的下載地址得到zip壓縮包2、解壓到要安裝的目錄我這里是E:\database\mysql8\mysql-8.0…

Java中 a+=b和a=a+b有什么區別?

一:性能方面 aab是加法運算 需要兩次尋找地址而ab是增量運算有寄存器優先時 只有一次地址查找。效率方面后者略高于前者 基于現在計算機的發展可忽略不計。 二:對于不同類型的a,b來說 1:不同類型的兩個變量在進行運算的時候,我們經常說到的…

事務管理:事務的狀態相關知識筆記

1、事務的幾個概念中止事務:事務在執行過程中發生故障,不能執行完成的事務。可以進行事務回滾,保持數據庫的一致性。事務回滾:將中止事務對數據庫的更新操作撤銷稱為事務回滾。已提交事務:成功執行完成的事務稱為已提交…

centos7 時間設置

安裝完成centos7后,雖然時區選擇的是上海,但是最終的時間還是不對,因為沒有開啟自動同步NTP功能,所以需要自動手動設置。 首先輸入timedatectl命令,查看當前機器的時間: Local time: 四 2016-08-25 18:52:5…

mysql符合安可要求嗎,安可是什么意思?演唱太過精彩,粉絲要求返場(再唱一個)...

解答:安可是指再唱一個的意思,最早是源自英語“Encore”,常被用在演唱會上,當最后一輪表演或演唱結束之后,粉絲就會開始大喊“安可”,就是想要再聽一場,這時歌手也會應粉絲的要求返場。安可是什…