中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      JAVA認(rèn)證面試試題

      時(shí)間:2024-10-07 08:38:50 JAVA認(rèn)證 我要投稿

      2017年JAVA認(rèn)證面試試題

        Sun認(rèn)證Java程序員考試旨在考察您通過(guò)應(yīng)用軟件分配進(jìn)行復(fù)雜編程的能力。之后還要測(cè)試您完成編程所需的知識(shí)。下面是小編整理的關(guān)于JAVA認(rèn)證面試試題,歡迎大家參考!

      2017年JAVA認(rèn)證面試試題

        1) Java中什么是Exception?

        這個(gè)問(wèn)題經(jīng)常在第一次問(wèn)有關(guān)異常的時(shí)候或者是面試菜鳥的時(shí)候問(wèn)。我從來(lái)沒見過(guò)面高級(jí)或者資深工程師的

        時(shí)候有人問(wèn)這玩意,但是對(duì)于菜鳥,是很愿意問(wèn)這個(gè)的。簡(jiǎn)單來(lái)說(shuō),異常是Java傳達(dá)給你的系統(tǒng)和程序錯(cuò)誤的方

        式。在java中,異常功能是通過(guò)實(shí)現(xiàn)比如Throwable,Exception,RuntimeException之類的類,然后還有一

        些處理異常時(shí)候的關(guān)鍵字,比如throw,throws,try,catch,finally之類的。 所有的異常都是通過(guò)Throwable

        衍生出來(lái)的。Throwable把錯(cuò)誤進(jìn)一步劃分為 java.lang.Exception 和 java.lang.Error. java.lang.Error 用

        來(lái)處理系統(tǒng)錯(cuò)誤,例如java.lang.StackOverFlowError 或者 Java.lang.OutOfMemoryError 之類的。然后

        Exception用來(lái)處理程序錯(cuò)誤,請(qǐng)求的資源不可用等等。

        2) Java中的檢查型異常和非檢查型異常有什么區(qū)別?

        這又是一個(gè)非常流行的Java異常面試題,會(huì)出現(xiàn)在各種層次的Java面試中。檢查型異常和非檢查型異常的

        主要區(qū)別在于其處理方式。檢查型異常需要使用try, catch和finally關(guān)鍵字在編譯期進(jìn)行處理,否則會(huì)出現(xiàn)編譯

        器會(huì)報(bào)錯(cuò)。對(duì)于非檢查型異常則不需要這樣做。Java中所有繼承自java.lang.Exception類的異常都是檢查型

        異常,所有繼承自RuntimeException的異常都被稱為非檢查型異常。你也可以查看下一篇文章來(lái)了解

        更多關(guān)于檢查型異常和非檢查型異常之間的區(qū)別。

        3) Java中的NullPointerException和ArrayIndexOutOfBoundException之間有什么相同之處?

        在Java異常面試中這并不是一個(gè)很流行的問(wèn)題,但會(huì)出現(xiàn)在不同層次的初學(xué)者面試中,用來(lái)測(cè)試應(yīng)聘者對(duì)檢查

        型異常和非檢查型異常的概念是否熟悉。順便說(shuō)一下,該題的答案是,這兩個(gè)異常都是非檢查型異常,都繼承自RuntimeException。該問(wèn)題可能會(huì)引出另一個(gè)問(wèn)題,即Java和C的數(shù)組有什么不同之處,因?yàn)镃里面的數(shù)組是沒有

        大小限制的,絕對(duì)不會(huì)拋出ArrayIndexOutOfBoundException。

        4)在Java異常處理的過(guò)程中,你遵循的那些最好的實(shí)踐是什么?

        這個(gè)問(wèn)題在面試技術(shù)經(jīng)理是非常常見的一個(gè)問(wèn)題。因?yàn)楫惓L幚碓陧?xiàng)目設(shè)計(jì)中是非常關(guān)鍵的,所以精通異常處

        理是十分必要的。異常處理有很多最佳實(shí)踐,下面列舉集中,它們提高你代碼的健壯性和靈活性:

        1) 調(diào)用方法的時(shí)候返回布爾值來(lái)代替返回null,這樣可以 NullPointerException。由于空指針是java異常里最惡

        心的異常。

        2) catch塊里別不寫代碼。空catch塊是異常處理里的錯(cuò)誤事件,因?yàn)樗皇遣东@了異常,卻沒有任何處理或者

        提示。通常你起碼要打印出異常信息,當(dāng)然你最好根據(jù)需求對(duì)異常信息進(jìn)行處理。

        3)能拋受控異常(checked Exception)就盡量不拋受非控異常(checked Exception)。通過(guò)去掉重復(fù)的異常處

        理代碼,可以提高代碼的可讀性。

        4) 絕對(duì)不要讓你的數(shù)據(jù)庫(kù)相關(guān)異常顯示到客戶端。由于絕大多數(shù)數(shù)據(jù)庫(kù)和SQLException異常都是受控異常,在Java中,

        你應(yīng)該在DAO層把異常信息處理,然后返回處理過(guò)的能讓用戶看懂并根據(jù)異常提示信息改正操作的異常信息。

        5) 在Java中,一定要在數(shù)據(jù)庫(kù)連接,數(shù)據(jù)庫(kù)查詢,流處理后,在finally塊中調(diào)用close()方法。

        5) 既然我們可以用RuntimeException來(lái)處理錯(cuò)誤,那么你認(rèn)為為什么Java中還存在檢查型異常?

        這是一個(gè)有爭(zhēng)議的問(wèn)題,在回答該問(wèn)題時(shí)你應(yīng)當(dāng)小心。雖然他們肯定愿意聽到你的觀點(diǎn),但其實(shí)他們最感興

        趣的還是有說(shuō)服力的理由。我認(rèn)為其中一個(gè)理由是,存在檢查型異常是一個(gè)設(shè)計(jì)上的決定,受到了諸如C++等比

        Java更早的編程語(yǔ)言設(shè)計(jì)經(jīng)驗(yàn)的影響。絕大多數(shù)檢查型異常位于java.io包內(nèi),這是合乎情理的,因?yàn)樵谀阏?qǐng)求了

        不存在的系統(tǒng)資源的時(shí)候,一段強(qiáng)壯的程序必須能夠優(yōu)雅的處理這種情況。通過(guò)把IOException聲明為檢查型異

        常,Java 確保了你能夠優(yōu)雅的對(duì)異常進(jìn)行處理。另一個(gè)可能的理由是,可以使用catch或finally來(lái)確保數(shù)量受限

        的系統(tǒng)資源(比如文件描述符)在你使用后盡早得到釋放。

        6) throw 和 throws這兩個(gè)關(guān)鍵字在java中有什么不同?

        一個(gè)java初學(xué)者應(yīng)該掌握的面試問(wèn)題。 throw 和 throws乍看起來(lái)是很相似的尤其是在你還是一個(gè)java初學(xué)者的時(shí)

        候。盡管他們看起來(lái)相似,都是在處理異常時(shí)候使用到的。但在代碼里的使用方法和用到的地方是不同的。throws

        總是出現(xiàn)在一個(gè)函數(shù)頭中,用來(lái)標(biāo)明該成員函數(shù)可能拋出的各種異常, 你也可以申明未檢查的異常,但這不是編譯

        器強(qiáng)制的。如果方法拋出了異常那么調(diào)用這個(gè)方法的時(shí)候就需要將這個(gè)異常處理。另一個(gè)關(guān)鍵字 throw 是用來(lái)

        拋出任意異常的,按照語(yǔ)法你可以拋出任意 Throwable (i.e. Throwable 或任何Throwable的衍生類) , throw

        可以中斷程序運(yùn)行,因此可以用來(lái)代替return . 最常見的例子是用 throw 在一個(gè)空方法中需要return的地方拋出 UnSupportedOperationException 代碼如下 :

        1 private static voidshow() {

        2 throw new UnsupportedOperationException(“Not yet implemented”);

        3 }

        7) 什么是“異常鏈”?

        “異常鏈”是Java中非常流行的異常處理概念,是指在進(jìn)行一個(gè)異常處理時(shí)拋出了另外一個(gè)異常,由此產(chǎn)生

        了一個(gè)異常鏈條。該技術(shù)大多用于將“ 受檢查異常” ( checked exception)封裝成為“非受檢查異常”

        (unchecked exception)或者RuntimeException。順便說(shuō)一下,如果因?yàn)橐驗(yàn)楫惓D銢Q定拋出一個(gè)新的異常,

        你一定要包含原有的異常,這樣,處理程序才可以通過(guò)getCause()和initCause()方法來(lái)訪問(wèn)異常最終的根源。

        8) 你曾經(jīng)自定義實(shí)現(xiàn)過(guò)異常嗎?怎么寫的?

        很顯然,我們絕大多數(shù)都寫過(guò)自定義或者業(yè)務(wù)異常,像AccountNotFoundException。在面試過(guò)程中詢問(wèn)

        這個(gè)Java異常問(wèn)題的主要原因是去發(fā)現(xiàn)你如何使用這個(gè)特性的。這可以更準(zhǔn)確和精致的去處理異常,當(dāng)然這也跟

        你選擇checked 還是unchecked exception息息相關(guān)。通過(guò)為每一個(gè)特定的情況創(chuàng)建一個(gè)特定的異常,你就為

        調(diào)用者更好的處理異常提供了更好的選擇。相比通用異常(general exception),我更傾向更為精確的異常。大

        量的創(chuàng)建自定義異常會(huì)增加項(xiàng)目class的個(gè)數(shù),因此,在自定義異常和通用異常之間維持一個(gè)平衡是成功的關(guān)鍵。

        9) JDK7中對(duì)異常處理做了什么改變?

        這是最近新出的Java異常處理的面試題。JDK7中對(duì)錯(cuò)誤(Error)和異常(Exception)處理主要新增加了2個(gè)特性,

        一是在一個(gè)catch塊中可以出來(lái)多個(gè)異常,就像原來(lái)用多個(gè)catch塊一樣。另一個(gè)是自動(dòng)化資源管理(ARM), 也稱為

        try-with-resource塊。這2個(gè)特性都可以在處理異常時(shí)減少代碼量,同時(shí)提高代碼的可讀性。對(duì)于這些特性了解,

        不僅幫助開發(fā)者寫出更好的異常處理的代碼,也讓你在面試中顯的更突出。我推薦大家讀一下Java 7攻略,這樣

        可以更深入的了解這2個(gè)非常有用的特性。

        10) 你遇到過(guò) OutOfMemoryError 錯(cuò)誤嘛?你是怎么搞定的?

        這個(gè)面試題會(huì)在面試高級(jí)程序員的時(shí)候用,面試官想知道你是怎么處理這個(gè)危險(xiǎn)的OutOfMemoryError錯(cuò)誤的。

        必須承認(rèn)的是,不管你做什么項(xiàng)目,你都會(huì)碰到這個(gè)問(wèn)題。所以你要是說(shuō)沒遇到過(guò),面試官肯定不會(huì)買賬。要是

        你對(duì)這個(gè)問(wèn)題不熟悉,甚至就是沒碰到過(guò),而你又有3、4年的Java經(jīng)驗(yàn)了,那么準(zhǔn)備好處理這個(gè)問(wèn)題吧。在回答

        這個(gè)問(wèn)題的同時(shí),你也可以借機(jī)向面試秀一下你處理內(nèi)存泄露、調(diào)優(yōu)和調(diào)試方面的牛逼技能。我發(fā)現(xiàn)掌握這些技

        術(shù)的人都能給面試官留下深刻的印象。

        11) 如果執(zhí)行finally代碼塊之前方法返回了結(jié)果,或者JVM退出了,finally塊中的代碼還會(huì)執(zhí)行嗎?

        這個(gè)問(wèn)題也可以換個(gè)方式問(wèn):“如果在try或者finally的代碼塊中調(diào)用了System.exit(),結(jié)果會(huì)是怎樣”。

        了解finally塊是怎么執(zhí)行的,即使是try里面已經(jīng)使用了return返回結(jié)果的情況,對(duì)了解Java的異常處理都非常

        有價(jià)值。只有在try里面是有System.exit(0)來(lái)退出JVM的情況下finally塊中的代碼才不會(huì)執(zhí)行。

        12)Java中final,finalize,finally關(guān)鍵字的區(qū)別

        這是一個(gè)經(jīng)典的Java面試題了。我的一個(gè)朋友為Morgan Stanley招電信方面的核心Java開發(fā)人員的時(shí)候就

        問(wèn)過(guò)這個(gè)問(wèn)題。final和finally是Java的關(guān)鍵字,而finalize則是方法。final關(guān)鍵字在創(chuàng)建不可變的類的時(shí)候

        非常有用,只是聲明這個(gè)類是final的。而finalize()方法則是垃圾回收器在回收一個(gè)對(duì)象前調(diào)用,但也Java規(guī)

        范里面沒有保證這個(gè)方法一定會(huì)被調(diào)用。finally關(guān)鍵字是唯一一個(gè)和這篇文章討論到的異常處理相關(guān)的關(guān)鍵字。

        在你的產(chǎn)品代碼中,在關(guān)閉連接和資源文件的是時(shí)候都必須要用到finally塊。

        13)下面的代碼都有哪些錯(cuò)誤:

        01 public static void start() throws IOException, RuntimeException{

        02

        03 throw new RuntimeException(“Not able to Start”);

        04 }

        05

        06 public static void main(String args[]) {

        07 try {

        08 start();

        09 } catch (Exception ex) {

        10 ex.printStackTrace();

        11 } catch (RuntimeException re) {

        12 re.printStackTrace();

        13 }

        14 }

        這段代碼會(huì)在捕捉異常代碼塊的RuntimeException類型變量“re”里拋出編譯異常錯(cuò)誤。因?yàn)镋xception是RuntimeException的超類,在start方法中所有的RuntimeException會(huì)被第一個(gè)捕捉異常塊捕捉,這樣就無(wú)法到

        達(dá)第二個(gè)捕捉塊,這就是拋出“exception java.lang.RuntimeException has already been caught”的編譯錯(cuò)誤原因。

        14)下面的Java代碼都有哪些錯(cuò)誤:

        01 public classSuperClass {

        02 public void start() throws IOException{

        03 throw new IOException(“Not able to open file”);

        04 }

        05 }

        06

        07 public class SubClass extendsSuperClass{

        08 public void start() throws Exception{

        09 throw new Exception(“Not able to start”);

        10 }

        11 }

        這段代碼編譯器將對(duì)子類覆蓋start方法產(chǎn)生不滿。因?yàn)槊總(gè)Java中方法的覆蓋是有規(guī)則的,一個(gè)覆蓋的方法

        不能拋出的異常比原方法繼承關(guān)系高。因?yàn)檫@里的start方法在超類中拋出了IOException,所有在子類中的start

        方法只能拋出要么是IOExcepition或是其子類,但不能是其超類,如Exception。

        15)下面的Java異常代碼有什么錯(cuò)誤:

        01 public static void start(){

        02 System.out.println(“Java Exception interivew question Answers for Programmers”);

        03 }

        04

        05 public static void main(String args[]) {

        06 try{

        07 start();

        08 }catch(IOException ioe){

        09 ioe.printStackTrace();

        10 }

        11 }

        上面的Java異常例子代碼中,編譯器將在處理IOException時(shí)報(bào)錯(cuò),因?yàn)镮OException是受檢查異常,而start

        方法并沒有拋出IOException,所以編譯器將拋出“異常, java.io.IOException 不會(huì)在try語(yǔ)句體中拋出”,但

        是如果你將IOException改為Exception,編譯器報(bào)錯(cuò)將消失,因?yàn)镋xception可以用來(lái)捕捉所有運(yùn)行時(shí)異常,這樣

        就不需要聲明拋出語(yǔ)句。我喜歡這樣帶有迷惑性的Java異常面試題,因?yàn)樗粫?huì)讓人輕易的找出是IOException還

        是Exception。你也可以在 Joshua Bloach和Neil Gafter的Java謎題中找到一些有關(guān)Java錯(cuò)誤和異常的具有迷惑

        性問(wèn)題。

      【JAVA認(rèn)證面試試題】相關(guān)文章:

      Java認(rèn)證經(jīng)典面試題目07-02

      NIIT認(rèn)證Java面試題及答案07-01

      java認(rèn)證考試試題及答案07-21

      sun認(rèn)證java基礎(chǔ)模擬試題10-26

      2016年Java認(rèn)證考試題09-23

      NIIT認(rèn)證Java基礎(chǔ)全真模擬試題09-17

      2016最新Java認(rèn)證筆試題及答案01-21

      2016年Java認(rèn)證筆試題及答案06-04

      2017年Java認(rèn)證考試試題07-23

      NIIT認(rèn)證Java考試題庫(kù)07-20

      主站蜘蛛池模板: 同心县| 亚洲视频在线播放免费视频| 日韩av在线不卡观看| 人妻少妇精品无码系列| 永寿县| 蜜臀久久人妻一区二区| 国产精品久久国产三级| 日本精品在线观看免费| 午夜不卡亚洲视频| 岳阳市| 在线观看精品视频一区二区三区| 国产成人福利av一区二区三区| 色偷偷亚洲第一综合网| 天堂av在线免费播放| 国产欧美久久久精品影院| 巴青县| 国产中文久久精品| 亚洲中文字幕乱码免费| 无码中文字幕av免费放| 亚洲人成18禁网站| 亚洲AV日韩Av无码久久| 日本一区二区三区四区不卡视频 | 久久人妻av无码中文专区| 日韩在线手机专区av| 亚洲高清国产品国语在线观看| 日韩丝袜人妻中文字幕| 石景山区| 极品诱惑一区二区三区| 敖汉旗| 亚洲伊人免费综合网站| 男女好痛好深好爽视频一区| 新丰县| 长子县| 国产亚洲精品综合99久久| 在线观看亚洲视频一区二区三区| 手游| 2020久久精品亚洲热综合一本| 亚洲一区二区三区四区三级视频| 国产经典免费视频在线观看| 一二三四中文字幕日韩乱码| 国产午夜激无码AV毛片不卡 |