天天看點

面試 Java 進階後端開發,要準備哪些知識點?

由于我做了比較長時間的技術面試官,根據我的面試體會,不少同學收到面試後,什麼準備也不會做,到時候就來了。

這樣做的後果是:不知彼,不知己,每戰必殆。哪怕僥幸面試成,工資一定會被壓得很低。

面試 Java 進階後端開發,要準備哪些知識點?

其實公司肯花時間讓你去面試,前提條件一定是通過你的履歷,一定發現了你和公司的比對點,也就是說,一定是有錄用意向的。

在技術面試的時間段裡(最長1個小時),你如果能展現你的優勢那是最好的,但如果你做不到這點,簡單點,讓面試官感覺你達到了最低标準即可。這好比在大學裡考試,有些同學對某門課的知識點完全不懂,但也有可能通過考前突擊和刷題來通過考試(不作弊),而且還有可能考高分。

至于通過技術面試後,項目經理或人事的面試一般是過濾特别差的,比如考察些團隊協作能力和溝通表達能力等,這對大家來說應該不是問題。是以在本文裡,就以Java後端進階開發為例,講述下面試的準備點。方法是通用的,其它方向的同學也可以以此類推。

一、至少定出2天的準備時間

面試的準備時間一般别低于2天,如果可以,再延長些,但别太長。

比如是去現場面試,可以找的借口就比較多,比如項目忙,會多,時間間隔别超過5個工作日。比如周二收到通知,就盡量約到周五,如果是是周三周四,那麼别超過下周二。

電話面試的話,借口不多,一般可以約到兩天後。

但不建議今天接到通知,明天就直接電話面或現場面了,一方面公司會認為你目前很閑,另一方面,你真就沒太多的準備時間了。

二、一定得再次閱讀公司的職位要求

就好比是考試,先得審題,大方向錯了,準備就白做了。

面試 Java 進階後端開發,要準備哪些知識點?
比如,有如下的職位描述。 
面試 Java 進階後端開發,要準備哪些知識點?

我們能從中挖掘出如下的技能需求點:

3年經驗,熟悉常用類庫

熟悉Spring和Mybatis架構

熟悉分布式中間件(比如消息,緩存等中間件)

熟悉資料庫,最好是NoSQL

最好有大資料經驗

而關于非技能的要求如下:

有責任心,有主動性

需要有團隊合作的能力

需要有良好的編碼習慣,學習能力要強。

其實,在投履歷前,就可以根據上述要求微調履歷,這樣獲得該崗位的面試機會能更大。不過在本文裡,就将以上述需求為例,講述面試前的準備。

三、在刷題前,先準備項目描述的說辭

我見到不少候選人,在面試前,就會着重刷題,比如看算法題,基礎題等,這個是必要的。

不過在面試裡,第一個環節一般都是項目介紹,也就是說,如果面試官通過項目,看到你的技能和職位不比對,你甚至沒有機會被問其他問題,點選這裡教你如何一分鐘搞定面試官。

這裡介紹些項目描述的要點:

1. 業務需求可以一筆帶過,用寥寥幾句話介紹項目的背景,大緻做了什麼,工期和人數即可,别講太多,因為面試官不關心。下面給出一個說辭的案例。

我上個項目是做電信系統的計費軟體,客戶是xxx,工期是xxx個月,有5個人一起做,我在裡面做的是開發。

2. 結合項目實際需求,介紹項目用到的技術,比如在上述職位描述裡,要求有spring mvc,消息中間件,資料庫等需求,下面同樣給出各說辭的案例。

在這個項目裡,我們用到了Spring MVC(或Spring Boot或Spring Cloud)架構,資料庫是用Oracle,ORM元件是用Mytabis,在項目裡,我們在是通過消息queue來發送計費成功的消息,消息中間件我們使用Kafka,為了降低資料庫通路次數,我們會把客戶資訊放在redis緩存中。此外,我們在網關層接入了nginx做負載均衡。

大家能看到,在上述說辭裡,我們結合了案例,說出了招聘方需要的技術點,不過請注意,這裡僅僅是介紹項目,結合功能點說出技術即可,别過多展開,因為一旦過度展開,就會讓面試官感覺你思路不清晰,或者憑借準備有恃無恐。

3. 再結合項目,說些招聘方需要的非技術的要求。

在這個項目裡,我們用到了xx設計模式,而且,我們會定期review代碼,以求保證代碼的品質,而且,當項目工期比較緊的時候,我還會客串配置管理的角色。在這個項目裡,我一有問題,馬上會和經理或測試或其它組的人溝通。

4. 如果有,說下你在項目裡的亮點,比如用到了一些比較好的技術。

這個項目對資料庫性能和記憶體性能要求比較高,是以我用到了Oracle調優技術和JVM記憶體優化技術,此外,我們還用到了大資料分析的工具對計費模式做了優化。

大家看到,上述說辭不複雜,準備好以後,說起來估計也就2,3分鐘 但就通過上述說辭,亮出了你的基本資訊,而且能給面試官留下思路清晰,技術比對的印象。

面試 Java 進階後端開發,要準備哪些知識點?

這裡請注意,如果大家在項目裡的技術和要求的不比對,不建議作假,但可以通過如下的方式來做到比對。

1. 如果你的ORM用的不是Mytabis,而是itabis或幹脆hibernate,就直說用到這些,因為ORM是相通的。

2. 如果這個技術,比如Redis,在項目裡用到,但你沒做,你可以在了解的基礎上說出來,比如說:“這個項目還用到了Reids...,redis是用在xx子產品上,功能是xxx”,請注意,這裡你說是項目用到了,而不是你用到了,這裡,如果在後繼的回答中,你對redis的用法和技能問題都能回答上,那麼面試官不會介意這點,點選這裡有一套Redis面試題及答案。

3. 某個技術你在這個項目裡沒用到,但你比較熟悉,你也可以通過如下的說辭說下。

我在其它項目裡還用到了nginx(模糊回答,沒刻意說這個項目),具體的應用場景是xxx(結合功能點說),用到了其中的xx配置項(通過些關節點來印證你用過)

這裡請務必注意,在準備項目說辭的時候,可以盡量和職位要求靠,但别太離譜。因為你說的每個技術點,在後面,面試官都可能提問。如果某個技術點你沒掌握,其實問題不大,面試官本來就沒要求你十全十美,但如果你說你用過某個技術,但通過後面的問題,面試官發現你其實沒用過,或者掌握程度沒像你說得那樣好,那麼這個性質就不一樣了。

面試 Java 進階後端開發,要準備哪些知識點?

四、一定得準備項目描述裡提到的技術

在介紹項目時,就好比是釣魚,吸引面試官把注意力集中到你提到的技術點上。

面試 Java 進階後端開發,要準備哪些知識點?

是以在準備面試的時候,一定得先準備你項目裡提到的技術(大多也是招聘要求的技術)。準備時可以按照如下的思路。

第一:一定得結合項目背景,比如大家要準備分布式緩存redis,先說在哪個項目的哪個場景裡用到,比如在剛才提到的電信系統裡。這樣就會讓面試官感覺到這個技術你實際用過,而不是簡單地隻有學習經驗。

第二:有不少關鍵點,你用到以後一定是知道的,比如redis的基本資料結構,如何讀和寫,緩存如果擊穿了怎麼辦?這些問題點一定得準備,所謂吹牛要打草稿。比如你可以說,在配置redis時,用到了xx配置檔案的xx屬性,它是幹嘛的。這話不用多,但說出來以後,面試官一聽就知道你真的用過。

第三:可以準備些這個技術的進階問題,比如Redis叢集如何搭建,叢集裡一台機器失效了怎麼熱備轉移。同樣,可以講些如何配置以及如何使用的關鍵點。或者,大家可以準備redis分布式鎖的底層實作。

請記住,需要對你項目裡提到的任何技術都按上述要求做準備,雖然有些技術你未必會被問到。

這裡,如果大家在項目裡僅僅是用到了基本的功能,比如redis就用了基本的讀和寫,但你可以适當看些進階知識點和面試題。

五、一定得準備亮點話題,并想辦法往這方面繞,而且亮點話題多多益善

面試 Java 進階後端開發,要準備哪些知識點?

對于java進階開發而言,可以準備如下的話題,大家也能以此為參考,準備些其它的話題:

虛拟機記憶體優化

資料庫性能調優

分布式高并發架構

一些熱門元件,比如redis,nginx等

大資料方向的用法

java core(比如集合或多線程)方面的底層實作代碼

Spring系列(比如IOC, AOP, MVC,Spring Boot, Spring Cloud)方面的底層實作代碼。

要準備到什麼程度:

最好結合項目實際說出真的用過這些技術。

最好往性能調優方面靠。

下面就以虛拟機為例,說下如何在面試中引出該話題,以及面試時該怎麼說。其它亮點話題也可以照此準備。

第一:在履歷的最近項目介紹裡加上類似這樣描述,“這個項目的記憶體要求比較高,雖然在項目裡配置設定的對象不少,但這個項目隻被配置設定了1G記憶體,是以在這個項目裡,我實踐了一些定位排查記憶體問題的技能,也做了些調優的工作“,這樣面試官見到履歷的描述,就會自然而然地提問了。

第二:在面試中總會有“項目介紹”這個環節,面試官會讓候選人介紹最近的(或最拿得出手)的一個項目,這樣大家就可以順勢說出剛才已經給出的描述。

第三:大家可以在回答資料庫或集合等方面的問題時引出這個話題,比如回答完JDBC問題後,大家可以說一句,“用好的Connection對象我們會及時關閉,否則它所占用的記憶體對象無法被GC回收”,或者在談及List等集合類型時,同時多說一句,“用好的集合對象我們會及時clear掉,否則這個集合也會對一些對象産生強引用,這樣就會延遲對象的回收時間”。    

第四:在自我總結時,可以說,有虛拟機調優的經驗。

那麼,在面試時,該怎麼說呢?

大家可以先從堆的結構入手,進而詳細說明垃圾回收的流程。

再進一步說明如何寫出高性能的代碼。比如實體對象(比如Connectio或IO)用好之後得及時close。大的對象用好後應當及時設定成null,以撤銷強引用。集合對象用好後應當及時clear。盡量别頻繁地使用String(或其它不變類)對象,這樣容易産生記憶體碎片。

還展示監控、定位和調優方面的綜合能力。這裡可以說下,比如通過Jprofiler+jmeter進行JVM性能調優的方法。

大家甚至可以看些虛拟機的底層實作細節,在面試中說下,這樣能大大提升自己的專業素養。

六、時間多,再去刷題

當大家在準備好項目描述,而且當項目裡的技術也都準備好說辭以後,也按了上述要求準備好了亮點,這時候再去刷題。

請記住,刷題的時候,技術的優先,算法的看些基本的,比如排序等即可,而智力題,除非是校招,否則一般不怎麼會問。

在面試時,大家可以通過上文中給出的方法,通過多抛出技術點,把面試引入準備好的範圍。也就是說,如果面試官發現候選人技術可以,其它的技術問題就不會怎麼問了。        

在面試時,一定得通過準備主導面試官提問,否則,一旦面試官開始天馬行空地問問題,大家薄弱點被暴露的機會就有可能大大增加,點選這裡看看BAT大廠都面試什麼鬼。  

七、面試題,通過準備讓面試官感覺你軟實力也行

面試官隻有當确認候選人在責任心和團隊協作能力方面沒問題,才敢把他招進公司。有些面試官會通過問問題來确認這兩點,但有些有經驗的面試官甚至可以通過候選人回答問題的方式和說話的語氣上來确認。

是以大家在面試前,首先可以按如下的要點,在平時的生活和工作中練熟良好交流方式。

第一:談吐清晰,語速不急不緩,至少讓面試官能聽懂你說的話。而且力求說話果斷,别吞吞吐吐的,這樣能顯示出你有足夠的擔當。

第二:交流時盡量目視面試官,語氣不亢不卑,别太僵硬,說話别過于強勢。臉部可以适當微笑,面試官在說話時可以适當點頭互動,總之得讓面試官感覺和你交流不吃力,最好還讓面試官感覺樂意和你交流。

第三:應積極主動回答面試官的提問,如果沒聽明白問題,别僵持着等面試官進一步解釋,應當主動詢問。如果感覺面試官沒完全了解自己的回答,或者了解有誤,應當進一步主動解釋,以展示積極溝通的姿态。

第四:即使不認同面試官的觀點,也應當心平氣和地交流,不能急躁,别輕易打斷面試官的話,可以傾聽完面試官的話後耐心地與之交流。有些面試官可能會故意刁難候選人,美其名曰“壓力測試”,在這種情況下,候選人更應當心平氣和,不能起争執。

在面試過程中,再有經驗的面試官可能也無法通過執行個體來驗證候選人的“團隊協作能力”(因為在短時間内無法協作),但如果大家能給面試官留下“溝通表達沒問題”、“為人和善”和“遇到難點能積極主動協調溝通”的良好印象,那麼面試官一般也能認可候選人的團隊協作能力。

此外,大家還可以準備如下的說辭,一旦能找合适的機會說出來,面試官更會認可大家的責任心和團隊協作能力。

說辭1:(在介紹項目時)這個項目做到一半時,客戶方變更了一些需求點,這給我們項目組造成了比較大的壓力。在項目經理的帶領下,我們都被配置設定了更多的任務,在這種情況下,我通過加班按時按質完成了任務,而且在做的過程中,一旦出現需求或技術方面的問題,我也會主動找同僚或項目經理确認。

總之,在出現問題時,你不是退縮,而能通過加班等方式積極面對和解決問題,而且一旦有問題,你不是得過且過,而會主動确認。

說辭2:(介紹自己在項目中的角色)在這個項目組裡,除了本職的開發工作外,我還會積極主動地和測試人員溝通,一方面告訴他們該怎麼測,另一方面,一旦發現問題,我會和他們一起重制問題,完成修改後我也會主動告訴測試人員,讓他們盡快确認。

總之,在項目裡,你不僅能完成本職工作,而且還能和團隊其它人員一起協作。

說辭3:(介紹項目的亮點)在項目裡,我遇到一個需求點,這需要多個團隊一起開發,這時我會和相關人員一起開會,确定各自的任務 點和工期,完成功能點後我們會一起聯調。

說辭4:(如果面試官問你,遇到自己無法解決的問題該怎麼辦?)我不會推掉任務,我先會查閱資料,如果不行,我會問項目經理,在他們給出的解決方案基礎上,我會細化成具體的實作代碼,最後我會把實作好的功能點和項目經理确認,以求沒有了解上的偏差。

在責任心和團隊協作能力這兩方面,不建議直接說“我有”,因為這相當于自我表揚,可信度不高,大家可以采用上述“用具體事實證明”的方式,這樣面試官聽了後就自然能認可大家的相關能力。

本文篇幅不短,而且都是根據本人的技術面試官經驗總結而成,是以對大家多少會有些幫助。

如果大家看到稍有可取之處,也請勞駕點個贊轉發下,這是對我最大的支援。

作者:hsm_computer

https://www.cnblogs.com/JavaArchitect/p/9485075.html

推薦去我的部落格閱讀更多:

1.Java JVM、集合、多線程、新特性系列教程

2.Spring MVC、Spring Boot、Spring Cloud 系列教程

3.Maven、Git、Eclipse、Intellij IDEA 系列工具教程

4.Java、後端、架構、阿裡巴巴等大廠最新面試題

生活很美好,明天見~