大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) 來自銀行的10個Java面試題

來自銀行的10個Java面試題

更新時間:2019-11-23 11:42:31 來源:動力節(jié)點(diǎn) 瀏覽2573次



  問題一:在多線程環(huán)境中使用HashMap會有什么問題?在什么情況下使用get()方法會產(chǎn)生無限循環(huán)?


  HashMap本身沒有什么問題,有沒有問題取決于你是如何使用它的。比如,你在一個線程里初始化了一個HashMap然后在多個其他線程里對其進(jìn)行讀取,這肯定沒有任何問題。有個例子就是使用HashMap來存儲系統(tǒng)配置項(xiàng)。當(dāng)有多于一個線程對HashMap進(jìn)行修改操作的時候才會真正產(chǎn)生問題,比如增加、刪除、更新鍵值對的時候。因?yàn)閜ut()操作可以造成重新分配存儲大小(re-sizeing)的動作,因此有可能造成無限循環(huán)的發(fā)生,所以這時需要使用Hashtable或者ConcurrentHashMap,而后者更優(yōu)。


  問題二:不重寫B(tài)ean的hashCode()方法是否會對性能帶來影響?


  這個問題非常好,每個人可能都會有自己的體會。按照我掌握的知識來說,如果一個計算hash的方法寫得不好,直接的影響是,當(dāng)向HashMap中添加元素的時候會更頻繁地造成沖突,因此最終增加了耗時。但是自從Java8開始,這種影響不再像前幾個版本那樣顯著了,因?yàn)楫?dāng)沖突的發(fā)生超出了一定的限度之后,鏈表類的實(shí)現(xiàn)將會被替換成二叉樹(binarytree)實(shí)現(xiàn),這時你仍可以得到O(logN)的開銷,優(yōu)于鏈表類的O(n)。


  問題三:對于一個不可修改的類,它的每個對象是不是都必須聲明成final的?


  不盡然,因?yàn)槟憧梢酝ㄟ^將成員聲明成非final且private,并且不要在除了構(gòu)造函數(shù)的其他地方來修改它。不要為它們提供setter方法,同時不會通過任何函數(shù)泄露出對此成員的引用。需要記住的是,把對象聲明成final僅僅保證了它不會被重新賦上另外一個值,你仍然可以通過此引用來修改引用對象的屬性。這一點(diǎn)是關(guān)鍵,面試官通常喜歡聽到你強(qiáng)調(diào)這一點(diǎn)。


  問題四:String的substring()方法內(nèi)部是如何實(shí)現(xiàn)的?


  又一個Java面試的好問題,你應(yīng)該答出“substring方法通過原字符串創(chuàng)建了一個新的對象”,否則你的回答肯定是不能令人滿意的。這個問題也經(jīng)常被拿來測試應(yīng)聘者對于substring()可能帶來的內(nèi)存泄漏風(fēng)險是否有所了解。直到Java1.7版本之前,substring會保存一份原字符串的字符數(shù)組的引用,這意味著,如果你從1GB大小的字符串里截取了5個字符,而這5個字符也會阻止那1GB內(nèi)存被回收,因?yàn)檫@個引用是強(qiáng)引用。


  到了Java1.7,這個問題被解決了,原字符串的字符數(shù)組已經(jīng)不再被引用,但是這個改變也使得substring()創(chuàng)建字符串的操作更加耗時,以前的開銷是O(1),現(xiàn)在最壞情況是O(n)。

image.png

  問題五:你在寫存儲過程或者在Java里調(diào)用存儲過程的時候如何來處理錯誤情況?


  這是個很棘手的Java面試題,答案也并不固定。我的答案是,寫存儲過程的時候一旦有操作失敗,則一定要返回錯誤碼。但是在調(diào)用存儲過程的時候出錯的話捕捉SQLException卻是唯一能做的。


  問題六:Executor.submit()和Executor.execute()這兩個方法有什么區(qū)別?


  此問題來自另外一篇文章,《15個最流行的java多線程面試問題》,現(xiàn)在對熟練掌握并發(fā)技能的開發(fā)者的需求越來越大,因此這個問題也越來越引起大家的重視。答案是:前者返回一個Future對象,可以通過這個對象來獲得工作線程執(zhí)行的結(jié)果。


  當(dāng)我們考察異常處理的時候,又會發(fā)現(xiàn)另外一個不同。當(dāng)你使用execute提交的任務(wù)拋出異常時,此異常將會交由未捕捉異常處理過程來處理(uncaughtexceptionhandler),當(dāng)你沒有顯式指定一個異常處理器的話,默認(rèn)情況下僅僅會通過System.err打印出錯誤堆棧。當(dāng)你用submit來提交一個任務(wù)的時候,這個任務(wù)一旦拋出異常(無論是否是運(yùn)行時異常),那這個異常是任務(wù)返回對象的一部分。對這樣一種情形,當(dāng)你調(diào)用Future.get()方法的時候,這個方法會重新拋出這個異常,并且會使用ExecutionException進(jìn)行包裝。


  問題七:工廠模式和抽象工廠模式有何不同?


  抽象工廠模式提供了多一級的抽象。不同的工廠類都繼承了同一個抽象工廠方法,但是卻根據(jù)工廠的類別創(chuàng)建不同的對象。例如,AutomobileFactory,UserFactory,RoleFactory都繼承了AbstractFactory,但是每個工廠類創(chuàng)建自己對應(yīng)類型的對象。下面是工廠模式和抽象工廠模式對應(yīng)的UML圖。

image.png

  問題八:什么是單例模式?創(chuàng)建單例對象的時候是將整個方法都標(biāo)記為synchronized好還是僅僅把創(chuàng)建的的語句標(biāo)記為synchronized好?


  在Java中,單例類是指那些在整個Java程序中只存在一份實(shí)例的類,例如java.lang.Runtime就是一個單例類。在Java4版本及以前創(chuàng)建單例會有些麻煩,但是自從Java5引入了Enum類型之后,事情就變得簡單了。可以去看看我的關(guān)于如何使用Enum來創(chuàng)建單例類的文章,同時再看看問題五來看看如何在創(chuàng)建單例類的時候進(jìn)行雙重檢查。


  問題九:能否寫一段用Java4或5來遍歷一個HashMap的代碼?


  事實(shí)上,用Java可以有四種方式來遍歷任何一個Map,一種是使用keySet()方法獲取所有的鍵,然后遍歷這些鍵,再依次通過get()方法來獲取對應(yīng)的值。第二種方法可以使用entrySet()來獲取鍵值對的集合,然后使用foreach語句來遍歷這個集合,遍歷的時候獲得的每個鍵值對已經(jīng)包含了鍵和值。這種算是一種更優(yōu)的方式,因?yàn)槊枯啽闅v的時候同時獲得了key和value,無需再調(diào)用get()方法,get()方法在那種如果bucket位置有一個巨大的鏈表的時候的性能開銷是O(n)。第三種方法是獲取entrySet之后用iterator依次獲取每個鍵值對。第四種方法是獲得keyset之后用iterator依次獲取每個key,然后再根據(jù)key來調(diào)用get方法。


  問題十:你在什么時候會重寫hashCode()和equals()方法?


  當(dāng)你需要根據(jù)業(yè)務(wù)邏輯來進(jìn)行相等性判斷、而不是根據(jù)對象相等性來判斷的時候你就需要重寫這兩個函數(shù)了。例如,兩個Employee對象相等的依據(jù)是它們擁有相同的emp_id,盡管它們有可能是兩個不同的Object對象,并且分別在不同的地方被創(chuàng)建。同時,如果你準(zhǔn)備把它們當(dāng)作HashMap中的key來使用的話,你也必須重寫這兩個方法。現(xiàn)在,作為Java中equals-hashcode的一個約定,當(dāng)你重寫equals的時候必須也重寫hashcode,否則你會打破諸如Set,Map等集合賴以正常工作的約定。你可以看看我的另外一篇博文來理解這兩個方法之間的微妙區(qū)別與聯(lián)系。


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


相關(guān)推薦


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


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


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


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


哪有資深java工程師面試題


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

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 国内视频精品 | 国内精品欧美久久精品 | 九九精品成人免费国产片 | 毛片站| 亚洲永久精品一区二区三区 | 五月天婷婷激情网 | 久久久久久极精品久久久 | 日日摸夜夜欧美一区二区 | 请看一下欧美一级毛片 | 成人国产三级精品 | 精品久久中文字幕 | 毛片永久新网址首页 | 色吧久久 | 亚洲十欧美十日韩十国产 | 久久亚洲热 | 人人鲁免费播放视频人人香蕉 | 国产一区二区三区在线 | 久久精品这里是免费国产 | 欧美一级爱操视频 | 亚洲第一se情网站 | 国产精品麻豆 | 欧美日韩免费在线观看 | 中文字幕一区久久久久 | 人人狠狠综合久久亚洲婷婷 | 99精品在线观看视频 | 99久久亚洲国产高清观看 | 成人日韩精品 | 精品国产一二三区 | 欧美三级纯黄版 | 亚洲综合色婷婷 | 久久久国产99久久国产久 | 日日夜夜精品免费视频 | 波多野结衣一二区 | 一级做a爰片性色毛片2021 | 男女一级做片a性视频 | 国产片网址 | www四虎在线高清 | 国内精品福利在线视频 | 久久99国产乱子伦精品免 | 人人干天天操 | 久久精品这里是免费国产 |