午夜精品福利视频,亚洲激情专区,免费看a网站,aa毛片,亚洲色图激情小说,亚洲一级毛片,免费一级毛片一级毛片aa

來(lái)自投資銀行的20個(gè)Java面試題

時(shí)間:2024-07-16 00:06:17 學(xué)人智庫(kù) 我要投稿
  • 相關(guān)推薦

來(lái)自投資銀行的20個(gè)Java面試題

  下面這篇來(lái)自投資銀行的20個(gè)Java面試題是CN人才網(wǎng)小編驚險(xiǎn)為您推薦,歡迎參考閱讀。

來(lái)自投資銀行的20個(gè)Java面試題

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

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

  問(wèn)題二:不重寫B(tài)ean的hashCode()方法是否會(huì)對(duì)性能帶來(lái)影響?

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

  問(wèn)題三:對(duì)于一個(gè)不可修改的類,它的每個(gè)對(duì)象是不是都必須聲明成final的?

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

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

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

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

  substring

  問(wèn)題五:能否寫一個(gè)單例模式,并且保證實(shí)例的唯一性?

  這算是Java一個(gè)比較核心的問(wèn)題了,面試官期望你能知道在寫單例模式時(shí)應(yīng)該對(duì)實(shí)例的初始化與否進(jìn)行雙重檢查。記住對(duì)實(shí)例的聲明使用Volatile關(guān)鍵字,以保證單例模式是線程安全的。下面是一段示例,展示了如何用一種線程安全的方式實(shí)現(xiàn)了單例模式:

  public class Singleton {

  private static volatile Singleton _instance;

  /**

  * Double checked locking code on Singleton

  * @return Singelton instance

  */

  public static Singleton getInstance() {

  if (_instance == null) {

  synchronized (Singleton.class) {

  if (_instance == null) {

  _instance = new Singleton();

  }

  }

  }

  return _instance;

  }

  }

  問(wèn)題六:你在寫存儲(chǔ)過(guò)程或者在Java里調(diào)用存儲(chǔ)過(guò)程的時(shí)候如何來(lái)處理錯(cuò)誤情況?

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

  問(wèn)題七:Executor.submit()和Executor.execute()這兩個(gè)方法有什么區(qū)別?

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

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

  問(wèn)題八:工廠模式和抽象工廠模式有何不同?

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

  Factory

【來(lái)自投資銀行的20個(gè)Java面試題】相關(guān)文章:

java面試題及答案10-03

10個(gè)經(jīng)典的Java面試題集合09-20

Microsoft面試題09-04

iOS面試題07-10

公司面試題09-12

hibernate面試題10-18

英語(yǔ)面試題精選06-13

小升初面試題06-10

PHP面試題10-14

小升初面試題型08-24