日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

投行数据_投行对Java的二十大核心访谈问答

發(fā)布時(shí)間:2023/12/3 java 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 投行数据_投行对Java的二十大核心访谈问答 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

投行數(shù)據(jù)

這是在金融領(lǐng)域(主要是在大型投資銀行)共享Java核心訪談問題和答案的新系列。 在JP Morgan,Morgan Stanley,Barclays或Goldman Sachs上會(huì)問許多這些Java面試問題。 銀行主要從多線程 , 集合 ,序列化,編碼和OOPS設(shè)計(jì)原理詢問Java核心訪談問題。

我已經(jīng)從我的朋友那里收集了這些問題,并希望與大家分享。 我希望這對(duì)我們雙方都有幫助。 練習(xí)一些編程面試問題也是有益的,因?yàn)樵趲缀跛蠮ava面試中,至少出現(xiàn)1或2個(gè)編碼問題。 請(qǐng)分享未回答的Java面試問題的答案,并讓我們知道這些Java面試問題有多好? 如果您正在認(rèn)真準(zhǔn)備Java面試并參加面試,那么我也建議您看看Markham公開的Java編程面試 。

這是一本專門針對(duì)Java的書籍,以其較早的暢銷書為原型,也涉及編程訪談。 本書不僅包含來自Java的問題,還包含來自相關(guān)技術(shù)堆棧的問題,例如JUnit,Maven,設(shè)計(jì)模式,JVM內(nèi)部原理,Android和最佳實(shí)踐。 問題很好,答案很明確,解釋也很清楚,這也使它讀起來很有趣。

20多個(gè)核心Java面試問題答案

這些Java面試問題混合了一些簡(jiǎn)單,棘手和棘手的Java問題,例如,為什么Java不支持多重繼承是棘手的問題之一。 多數(shù)問題是在高級(jí)和有經(jīng)驗(yàn)的水平上提出的,即3、4、5或6年的Java經(jīng)驗(yàn),例如HashMap如何在Java中工作,這在有經(jīng)驗(yàn)的Java訪談中最受歡迎。

順便說一句,最近,我正在查看有關(guān)本文中給出的Java面試問題的答案和評(píng)論,我發(fā)現(xiàn)其中一些非常有用,可以包含在主要文章中,以使所有人受益。 除了博客和文章之外,您還可以利用一些書籍,這些書籍是專門為清除編程訪談而寫的,而另一些書籍則著重于Java編程,因此想到的兩本書是《 破解編碼面試》和《 公開的編程面試》:下一份工作的秘密和。 這兩本書都側(cè)重于一般的編程以及許多其他相關(guān)主題,例如數(shù)據(jù)結(jié)構(gòu),算法,數(shù)據(jù)庫(kù),SQL,網(wǎng)絡(luò)和行為問題,但也包含Java概念。

問題1:在多線程環(huán)境中使用HashMap有什么問題? 什么時(shí)候get()方法進(jìn)入無限循環(huán)? ( 回答 )

好吧,沒有錯(cuò),這取決于您如何使用它。 例如,如果僅通過一個(gè)線程初始化HashMap,然后所有線程都只從中讀取,那么就很好了。 一個(gè)示例是包含配置屬性的映射。 真正的問題開始于該線程中的至少一個(gè)線程正在更新HashMap時(shí),即添加,更改或刪除任何鍵值對(duì)。 由于put()操作可能會(huì)導(dǎo)致重新調(diào)整大小,并可能進(jìn)一步導(dǎo)致無限循環(huán),因此這就是為什么您以后應(yīng)該使用Hashtable或ConcurrentHashMap的原因。

問題2.覆蓋hashCode()方法是否對(duì)性能有影響? ( 回答 )

這是一個(gè)很好的問題,并向所有人開放,因?yàn)閾?jù)我所知,較差的哈希碼功能將導(dǎo)致HashMap中頻繁發(fā)生沖突,最終增加了將對(duì)象添加到Hash Map中的時(shí)間。 從Java 8開始,沖突不會(huì)像以前的版本那樣影響性能,因?yàn)樵陂撝抵?#xff0c;鏈表將被二叉樹取代,在最壞的情況下,O(logN)性能會(huì)得到提高,因?yàn)榕c鏈表的O(n)比較。

問題3:不可變對(duì)象的所有屬性是否都必須是最終的? ( 回答 )

不一定,如上所述,您可以通過使成員成為非最終成員而不是私有成員并且不修改它們(除非在構(gòu)造函數(shù)中)來實(shí)現(xiàn)相同的功能。 不要為它們提供setter方法,如果它是一個(gè)可變對(duì)象,則不要泄漏該成員的任何引用。 請(qǐng)記住將參考變量定為final,僅確保不會(huì)將其重新分配為其他值,但是您仍然可以更改該參考變量所指向的對(duì)象的各個(gè)屬性。 這是關(guān)鍵點(diǎn)之一,面試官喜歡從候選人那里聽到。

問題4:String中的substring()方法如何工作? ( 回答 )

另一個(gè)很好的Java面試問題,我認(rèn)為答案還不夠,但是這里是“子字符串通過從原始字符串中提取一部分來創(chuàng)建一個(gè)新對(duì)象”。 主要詢問此問題,以了解開發(fā)人員是否熟悉子字符串可能造成的內(nèi)存泄漏風(fēng)險(xiǎn)。 在Java 1.7之前,子字符串保留原始字符數(shù)組的引用,這意味著即使一個(gè)5個(gè)字符長(zhǎng)的子字符串也可以通過保留強(qiáng)引用來防止1GB字符數(shù)組被垃圾回收。

這個(gè)問題在Java 1.7中已得到修復(fù),在Java 1.7中不再引用原始字符數(shù)組,但是這種更改也使創(chuàng)建子字符串的時(shí)間花費(fèi)更高。 先前它在O(1)的范圍內(nèi),在Java 7的最壞情況下可能是O(n)。

問題 5:您可以為單例編寫關(guān)鍵部分代碼嗎? ( 回答 )

這個(gè)核心Java問題是上一個(gè)問題的跟進(jìn),并期望候選人使用雙重檢查鎖定來編寫Java單例。 請(qǐng)記住使用volatile變量使Singleton線程安全。 這是使用雙重檢查的鎖定習(xí)慣用法的線程安全的Singleton模式的關(guā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;}}

問題6:在編寫存儲(chǔ)過程或從Java訪問存儲(chǔ)過程時(shí)如何處理錯(cuò)誤情況? ( 回答 )

這是Java面試中最棘手的問題之一,而且開放給所有人使用,我的朋友不知道答案,所以他不介意告訴我。 我的看法是,如果某些操作失敗,則存儲(chǔ)過程應(yīng)該返回錯(cuò)誤代碼,但是如果存儲(chǔ)過程本身失敗,則捕獲SQLException是唯一的選擇。

問題7:Executor.submit()和Executer.execute()方法之間有什么區(qū)別? ( 回答 )

該問題來自我的15個(gè)Java多線程問題解答。 由于具有良好的并發(fā)技能的Java開發(fā)人員的巨大需求,它日趨流行。 答案是前者返回一個(gè)Future對(duì)象,該對(duì)象可用于從工作線程中查找結(jié)果。

查看異常處理時(shí)有所不同。 如果您的任務(wù)拋出異常,并且該異常是在執(zhí)行該異常時(shí)提交的,則會(huì)轉(zhuǎn)到未捕獲的異常處理程序(當(dāng)您未明確提供異常處理程序時(shí),默認(rèn)的異常處理程序只會(huì)將堆棧跟蹤打印到System.err)。 如果您提交的任務(wù)與提交任何引發(fā)的異常(是否經(jīng)過檢查的異常)一起提交,則它將成為任務(wù)返回狀態(tài)的一部分。 對(duì)于通過提交提交且以異常終止的任務(wù), Future.get()將重新引發(fā)此異常,并包裝在ExecutionException 。

問題8:工廠模式和抽象工廠模式有什么區(qū)別? ( 回答 )

抽象工廠提供了另一層抽象。 考慮不同的工廠,每個(gè)工廠都從抽象工廠擴(kuò)展而來,并負(fù)責(zé)根據(jù)工廠的類型創(chuàng)建不同的對(duì)象層次結(jié)構(gòu)。 例如,由AutomobileFactory , UserFactory , RoleFactory等擴(kuò)展的RoleFactory 。每個(gè)工廠都將負(fù)責(zé)創(chuàng)建該類型的對(duì)象。 這是工廠和抽象工廠模式的UML圖:

問題9:什么是單例? 使整個(gè)方法同步還是僅使關(guān)鍵部分同步更好? ( 回答 )

Java中的Singleton是一個(gè)類,在整個(gè)Java應(yīng)用程序中只有一個(gè)實(shí)例,例如, java.lang.Runtime是Singleton類。 在Java 4之前,創(chuàng)建Singleton非常棘手,但是一旦Java 5引入Enum,它就非常容易。

問題10:您可以在Java 4和Java 5中編寫用于遍歷HashMap的代碼嗎? ( 回答 )

棘手的但他設(shè)法使用while和for循環(huán)來編寫。 實(shí)際上,有四種方法可以遍歷Java中的任何Map,一種涉及使用keySet()并遍歷key,然后使用get()方法來檢索值,這有點(diǎn)昂貴。 第二種方法涉及使用entrySet()并通過為每個(gè)循環(huán)使用或在Iterator.hasNext()方法中進(jìn)行遍歷。 這是一種更好的方法,因?yàn)樵诘^程中鍵和值對(duì)象都可以使用,并且不需要調(diào)用get()方法來檢索值,這在出現(xiàn)巨大鏈表的情況下可以提高O(n)的性能。一桶。 有關(guān)詳細(xì)說明和代碼示例,請(qǐng)參見我的文章4在Java中迭代Map的方法 。

問題11:什么時(shí)候覆蓋hashCode()和equals()? ( 回答 )

只要有必要,尤其是如果您要基于業(yè)務(wù)邏輯而不是對(duì)象相等性進(jìn)行相等性檢查,例如,兩個(gè)雇員對(duì)象具有相同的emp_id,則相等,盡管它們是由代碼的不同部分創(chuàng)建的兩個(gè)不同的對(duì)象。 如果要在HashMap中將它們用作鍵,則必須重寫這兩種方法。 現(xiàn)在,作為Java中的equals-hashcode合同的一部分,當(dāng)您覆蓋equals時(shí),您還must覆蓋hashcode,否則您的對(duì)象將不會(huì)破壞類的不變性,例如Set,Map依靠equals()方法正常運(yùn)行。 您還可以查看有關(guān)Java中的equals的文章5技巧,以了解在處理這兩種方法時(shí)可能出現(xiàn)的細(xì)微問題。

問題12: 如果不重寫hashCode()方法將是什么問題? ( 回答 )

如果不重寫equals方法,則equals和hashcode之間的協(xié)定將不起作用,根據(jù)該契約,由equals()相等的兩個(gè)對(duì)象必須具有相同的hashcode。 在這種情況下,另一個(gè)對(duì)象可能返回不同的hashCode并將被存儲(chǔ)在該位置,這將破壞HashMap類的不變性,因?yàn)樗鼈儾粦?yīng)允許重復(fù)的鍵。 當(dāng)您使用put()方法添加對(duì)象時(shí),將迭代該存儲(chǔ)桶位置中存在的所有Map.Entry對(duì)象,并更新先前映射的值(如果Map已經(jīng)包含該鍵)。 如果未覆蓋哈希碼,則此方法將無效。

問題13:同步getInstance()方法的關(guān)鍵部分或整個(gè)getInstance()方法是否更好? ( 回答 )

答案只是關(guān)鍵部分,因?yàn)槿绻覀冩i定整個(gè)方法,那么每次有人調(diào)用此方法時(shí),即使我們沒有創(chuàng)建任何對(duì)象,它都必須等待。 換句話說,僅在創(chuàng)建對(duì)象時(shí)才需要同步,同步僅發(fā)生一次。 創(chuàng)建對(duì)象后,無需進(jìn)行任何同步。 實(shí)際上,就性能而言,這是非常差的編碼,因?yàn)橥椒椒ㄗ疃嗫蓪⑿阅芙档?0到20倍。 這是Singleton模式的UML圖:

順便說一下,有幾種方法可以在Java中創(chuàng)建線程安全的單例,您也可以在此問題或后續(xù)文章中提及這些方法。

問題14:在get()操作期間,圖片中的equals()和hashCode()方法在哪里? ( 回答 )

這個(gè)核心Java面試問題是對(duì)先前Java問題的后續(xù),應(yīng)聘者應(yīng)該知道,一旦您提到hashCode,人們很可能會(huì)問他們?nèi)绾卧贖ashMap中使用它們。 提供鍵對(duì)象時(shí),首先調(diào)用其hashcode方法以計(jì)算存儲(chǔ)桶位置。 由于存儲(chǔ)桶可能包含多個(gè)條目作為鏈接列表,因此通過使用equals()方法評(píng)估每個(gè)Map.Entry對(duì)象,以查看它們是否包含實(shí)際的鍵對(duì)象。

問題15:如何避免Java陷入僵局? ( 回答 )

您可以通過打破循環(huán)等待條件來避免死鎖。 為此,您可以在代碼中進(jìn)行安排以將順序強(qiáng)加于鎖的獲取和釋放。 如果將以一致的順序獲取鎖并以相反的順序釋放鎖,則不會(huì)出現(xiàn)一個(gè)線程持有由另一線程獲取的鎖的情況,反之亦然。 有關(guān)代碼示例和詳細(xì)說明,請(qǐng)參見詳細(xì)答案。

問題16:將String創(chuàng)建為new()和立即數(shù)有什么區(qū)別? ( 回答 )

當(dāng)我們使用new()運(yùn)算符創(chuàng)建字符串時(shí),它是在堆中創(chuàng)建的,而不是添加到字符串池中,而使用文字創(chuàng)建的字符串是在存在于堆的PermGen區(qū)域的字符串池本身中創(chuàng)建的。

String str = new String("Test")

不會(huì)將對(duì)象str放入字符串池,我們需要調(diào)用String.intern()方法,該方法用于顯式將它們放入字符串池。 只有將String對(duì)象創(chuàng)建為String文字(例如String s = "Test" ,Java才會(huì)自動(dòng)將其放入String池。 順便說一句,這里有一個(gè)問題,因?yàn)槲覀儗?shù)傳遞為“ Test”(這是一個(gè)字符串文字),所以它還將在字符串池上創(chuàng)建另一個(gè)對(duì)象作為“ Test”。 這是一個(gè)要點(diǎn),直到Javarevisited博客的博學(xué)的讀者提出來之前,這一點(diǎn)才被注意到。 要了解更多關(guān)于字符串文字和String對(duì)象之間的差異,看到這個(gè)文章。

這是一個(gè)很好的圖像,很好地顯示了這種差異:

問題17:什么是不可變對(duì)象? 你可以寫一個(gè)不可變的類嗎? ( 回答 )

不變類是Java類,其對(duì)象一旦創(chuàng)建就無法修改。 不可變對(duì)象中的任何修改都會(huì)產(chǎn)生新對(duì)象。 例如, String在Java中是不可變的 。 大多數(shù)情況下,不可變類在Java中也是最終的,以防止子類覆蓋可能損害不可變性的方法。 您可以通過將成員設(shè)置為非最終成員但私有并將其修改(除非在構(gòu)造函數(shù)中)來實(shí)現(xiàn)相同的功能。

除了顯而易見的形式外,您還需要確保不暴露不可變對(duì)象的內(nèi)部,尤其是當(dāng)它包含可變成員時(shí)。 同樣,當(dāng)您從客戶端(例如java.util.Date )接受可變成員的值時(shí),請(qǐng)使用clone()方法為您自己保留一個(gè)單獨(dú)的副本,以防止惡意客戶端在設(shè)置可變引用后對(duì)其進(jìn)行修改的風(fēng)險(xiǎn)。

在返回可變成員的值,將另一個(gè)單獨(dú)的副本返回給客戶端,從不返回Immutable類所擁有的原始引用時(shí),需要采取相同的預(yù)防措施。 您可以查看我的文章如何在Java中創(chuàng)建不可變類,以獲取逐步指南和代碼示例。

問題18:提供一種最簡(jiǎn)單的方法來找出方法執(zhí)行所需的時(shí)間而無需使用任何分析工具? ( 回答 )

在調(diào)用方法之前和thr方法返回之后立即讀取系統(tǒng)時(shí)間。 采取時(shí)間差,這將為您提供執(zhí)行方法所花費(fèi)的時(shí)間。

放入代碼中...

long start = System.currentTimeMillis (); method (); long end = System.currentTimeMillis ();System.out.println (“Time taken for execution is ” + (end – start));

請(qǐng)記住,如果執(zhí)行時(shí)間太短,則可能表明執(zhí)行時(shí)間為零毫秒。 嘗試使用一種足夠大的方法,從某種意義上說,它正在執(zhí)行大量處理

問題19:要在HashMap中使用對(duì)象作為鍵,需要實(shí)現(xiàn)以下兩種方法? ( 回答 )

為了將任何對(duì)象用作HashMap或Hashtable中的Key,它必須在Java中實(shí)現(xiàn)equals和hash-code方法。 閱讀HashMap如何在Java中工作,以獲取有關(guān)如何使用相等和哈希碼方法從HashMap放置和獲取對(duì)象的詳細(xì)說明。

問題20:如何防止客戶直接實(shí)例化您的具體課程? 例如,您有一個(gè)Cache接口以及兩個(gè)實(shí)現(xiàn)類MemoryCache和DiskCache,如何確保客戶端沒有使用new()關(guān)鍵字創(chuàng)建這兩個(gè)類的對(duì)象。

我將這個(gè)問題留給您練習(xí)和思考,然后再給出答案。 我相信您可以找到正確的方法來執(zhí)行此操作,因?yàn)閺木S護(hù)的角度來看,這是保持對(duì)類的控制的重要決定之一。

我也非常感謝我的讀者,他們慷慨地為初學(xué)者和經(jīng)驗(yàn)豐富的開發(fā)人員貢獻(xiàn)了Java Interviews中的幾個(gè)好問題。 我已經(jīng)在此博客中回答了許多這些問題,您可以使用此頁(yè)面右上角的搜索框輕松找到相關(guān)的帖子。

更多問題

  • 過去5年中的133+個(gè)Java面試問題( 在此處閱讀 )
  • 最近三年來的50多個(gè)Java多線程問題( 請(qǐng)參閱此處 )
  • 50多個(gè)程序員電話面試問題及答案( 鏈接 )

推薦書籍

  • Java編程面試公開
  • 破解編碼面試:150個(gè)編程問題

翻譯自: https://www.javacodegeeks.com/2015/11/top-20-core-java-interview-questions-and-answers-from-investment-banks.html

投行數(shù)據(jù)

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的投行数据_投行对Java的二十大核心访谈问答的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。