亚洲欧洲国产欧美一区精品,激情五月亚洲色五月,最新精品国偷自产在线婷婷,欧美婷婷丁香五月天社区

      java

      當(dāng)前位置:中華考試網(wǎng) >> java >> java面試題 >> 文章內(nèi)容

      Java程序員面試前如何準(zhǔn)備?

      來源:中華考試網(wǎng)  [2020年11月4日]  【

        關(guān)于面試準(zhǔn)備,尤其是Java類的面試內(nèi)容,應(yīng)該多看些相關(guān)專業(yè)的書籍,系統(tǒng)的學(xué)習(xí)了解java開發(fā)的流程,從系統(tǒng)、應(yīng)用的不同角度、不同層次,逐步將問題域盡量縮小,隔離出真實(shí)原因。具體步驟未必千篇一律,在處理過較多這種問題之后,經(jīng)驗(yàn)會(huì)令你的直覺分外敏感。Java程序員面試前如何準(zhǔn)備?面試中我們應(yīng)該避免那些坑兒?

        一、面試者常犯錯(cuò)誤:

        我在面試候選人中經(jīng)常能體會(huì)到,有些面試者確實(shí)是認(rèn)真努力工作,但坦白說表現(xiàn)出的能力水平卻不足以通過面試,通常是兩方面原因:

        1、“知其然不知其所以然”。做了多年技術(shù),開發(fā)了很多業(yè)務(wù)應(yīng)用,但似乎并未思考過種種技術(shù)選擇背后的邏輯。坦白說,我并不放心把具有一定深度的任務(wù)交給他。

        2、知識碎片化,不成系統(tǒng)。在面試中,面試者似乎無法完整、清晰地描述自己所開發(fā)的系統(tǒng),或者使用的相關(guān)技術(shù)。平時(shí)可能埋頭苦干,或者過于死磕某個(gè)實(shí)現(xiàn)細(xì)節(jié),并沒有抬頭審視這些技術(shù)。

        二、面試官一般會(huì)問的問題如下:

        1、談?wù)勀銓?Java 平臺(tái)的理解?“Java 是解釋執(zhí)行”,這句話正確嗎?

        考點(diǎn)分析:對于這類籠統(tǒng)的問題,你需要盡量表現(xiàn)出自己的思維深入并系統(tǒng)化,Java 知識理解得也比較全面,一定要避免讓面試官覺得你是個(gè)“知其然不知其所以然”的人。畢竟明白基本組成和機(jī)制,是日常工作中進(jìn)行問題診斷或者性能調(diào)優(yōu)等很多事情的基礎(chǔ),相信沒有招聘方會(huì)不喜歡“熱愛學(xué)習(xí)和思考”的面試者。

        回歸正題,對于 Java 平臺(tái)的理解,可以從很多方面簡明扼要地談一下,例如:Java 語言特性,包括泛型、Lambda 等語言特性;基礎(chǔ)類庫,包括集合、IO/NIO、網(wǎng)絡(luò)、并發(fā)、安全等基礎(chǔ)類庫。對于我們?nèi)粘9ぷ鲬?yīng)用較多的類庫,面試前可以系統(tǒng)化總結(jié)一下,有助于臨場發(fā)揮。

        2、對比Hashtable、HashMap、TreeMap有什么不同?

        考點(diǎn)分析:上面的回答,只是對一些基本特征的簡單總結(jié),針對Map相關(guān)可以擴(kuò)展的問題很多,從各種數(shù)據(jù)結(jié)構(gòu)、典型應(yīng)用場景,到程序設(shè)計(jì)實(shí)現(xiàn)的技術(shù)考量,尤其是在Java 8里,HashMap本身發(fā)生了非常大的變化,這些都是經(jīng)常考察的方面。

        很多朋友向我反饋,面試官似乎鐘愛考察HashMap的設(shè)計(jì)和實(shí)現(xiàn)細(xì)節(jié),所以今天我會(huì)增加相應(yīng)的源碼解讀,主要專注于下面幾個(gè)方面:

        理解Map相關(guān)類似整體結(jié)構(gòu),尤其是有序數(shù)據(jù)結(jié)構(gòu)的一些要點(diǎn)。

        從源碼去分析HashMap的設(shè)計(jì)和實(shí)現(xiàn)要點(diǎn),理解容量、負(fù)載因子等,為什么需要這些參數(shù),如何影響Map的性能,實(shí)踐中如何取舍等。

        理解樹化改造的相關(guān)原理和改進(jìn)原因。

        除了典型的代碼分析,還有一些有意思的并發(fā)相關(guān)問題也經(jīng)常會(huì)被提到,如HashMap在并發(fā)環(huán)境可能出現(xiàn)無限循環(huán)占用CPU、size不準(zhǔn)確等詭異的問題。

        我認(rèn)為這是一種典型的使用錯(cuò)誤,因?yàn)镠ashMap明確聲明不是線程安全的數(shù)據(jù)結(jié)構(gòu),如果忽略這一點(diǎn),簡單用在多線程場景里,難免會(huì)出現(xiàn)問題。

        理解導(dǎo)致這種錯(cuò)誤的原因,也是深入理解并發(fā)程序運(yùn)行的好辦法。對于具體發(fā)生了什么,你可以參考這篇很久以前的分析,里面甚至提供了示意圖,我就不再重復(fù)別人寫好的內(nèi)容了。

        3、Java 提供了哪些 IO 方式? NIO 如何實(shí)現(xiàn)多路復(fù)用?

        考點(diǎn)分析:在實(shí)際面試中,從傳統(tǒng) IO 到 NIO、NIO 2,其中有很多地方可以擴(kuò)展開來,考察點(diǎn)涉及方方面面,比如:

        基礎(chǔ) API 功能與設(shè)計(jì), InputStream/OutputStream 和 Reader/Writer 的關(guān)系和區(qū)別。

        NIO、NIO 2 的基本組成。

        給定場景,分別用不同模型實(shí)現(xiàn),分析 BIO、NIO 等模式的設(shè)計(jì)和實(shí)現(xiàn)原理。

        NIO 提供的高性能數(shù)據(jù)操作方式是基于什么原理,如何使用?

        或者,從開發(fā)者的角度來看,你覺得 NIO 自身實(shí)現(xiàn)存在哪些問題?有什么改進(jìn)的想法嗎?

        IO 的內(nèi)容比較多,專欄一講很難能夠說清楚。IO 不僅僅是多路復(fù)用,NIO 2 也不僅僅是異步 IO,尤其是數(shù)據(jù)操作部分,會(huì)在專欄下一講詳細(xì)分析。

        4、后臺(tái)服務(wù)出現(xiàn)明顯“變慢”,談?wù)勀愕脑\斷思路?

        考點(diǎn)分析:今天我選擇的是一個(gè)常見的并且比較貼近實(shí)際應(yīng)用的的性能相關(guān)問題,我提供的回答包括兩部分。

        在正面回答之前,先探討更加精確的問題定義是什么。有時(shí)候面試官并沒有表達(dá)清楚,有必要確認(rèn)自己的理解正確,然后再深入回答。

        從系統(tǒng)、應(yīng)用的不同角度、不同層次,逐步將問題域盡量縮小,隔離出真實(shí)原因。具體步驟未必千篇一律,在處理過較多這種問題之后,經(jīng)驗(yàn)會(huì)令你的直覺分外敏感。

        大多數(shù)工程師也許并沒有全面的性能問題診斷機(jī)會(huì),如果被問到也不必過于緊張,你可以向面試官展示診斷問題的思考方式,展現(xiàn)自己的知識和綜合運(yùn)用的能力。接觸到一個(gè)陌生的問題,通過溝通,能夠條理清晰地將排查方案逐步確定下來,也是能力的體現(xiàn)。

        面試官可能會(huì)針對某個(gè)角度的診斷深入詢問,兼顧工作和面試的需求,我會(huì)針對下面一些方面進(jìn)行介紹。目的是讓你對性能分析有個(gè)整體的印象,在遇到特定領(lǐng)域問題時(shí),即使不知道具體細(xì)節(jié)的工具和手段,至少也可以找到探索、查詢的方向。

        我將介紹業(yè)界常見的性能分析方法論。

        從系統(tǒng)分析到JVM、應(yīng)用性能分析,把握整體思路和主要工具。對于線程狀態(tài)、JVM內(nèi)存使用等很多方面,我在專欄前面已經(jīng)陸陸續(xù)續(xù)介紹了很多,今天這一講也可以看作是聚焦性能角度的一個(gè)小結(jié)。

        5、談?wù)勀愕腉C調(diào)優(yōu)思路?

        考點(diǎn)分析:今天考察的GC調(diào)優(yōu)問題是JVM調(diào)優(yōu)的一個(gè)基礎(chǔ)方面,很多JVM調(diào)優(yōu)需求,最終都會(huì)落實(shí)在GC調(diào)優(yōu)上或者與其相關(guān),我提供的是一個(gè)常見的思路。

        真正快速定位和解決具體問題,還是需要對JVM和GC知識的掌握,以及實(shí)際調(diào)優(yōu)經(jīng)驗(yàn)的總結(jié),有的時(shí)候甚至是源自經(jīng)驗(yàn)積累的直覺判斷。面試官可能會(huì)繼續(xù)問項(xiàng)目中遇到的真實(shí)問題,如果你能清楚、簡要地介紹其上下文,然后將診斷思路和調(diào)優(yōu)實(shí)踐過程表述出來,會(huì)是個(gè)很好的加分項(xiàng)。

        專欄雖然無法提供具體的項(xiàng)目經(jīng)驗(yàn),但是可以幫助你掌握常見的調(diào)優(yōu)思路和手段,這不管是面試還是在實(shí)際工作中都是很有幫助的。另外,我會(huì)還會(huì)從下面不同角度進(jìn)行補(bǔ)充:

        涉及具體的GC類型,JVM的實(shí)際表現(xiàn)要更加復(fù)雜。目前,G1已經(jīng)成為新版JDK的默認(rèn)選擇,所以值得你去深入理解。

        因?yàn)镚1 GC一直處在快速發(fā)展之中,我會(huì)側(cè)重它的演進(jìn)變化,尤其是行為和配置相關(guān)的變化。并且,同樣是因?yàn)镴VM的快速發(fā)展,即使是收集GC日志等方面也發(fā)生了較大改進(jìn)。

        從GC調(diào)優(yōu)實(shí)踐的角度,理解通用問題的調(diào)優(yōu)思路和手段。

      責(zé)編:fushihao
      • 會(huì)計(jì)考試
      • 建筑工程
      • 職業(yè)資格
      • 醫(yī)藥考試
      • 外語考試
      • 學(xué)歷考試