一步步教你搞定 Java 初級和高級技術面試

最近幾年公司的大小招聘,社招、校招都有參與,面試過許多大牛,也遇到過很多職場小白。有十多年工作經驗的,也有剛剛畢業來面外包的,其中來面試的不乏一輪游的,看著有些同學基礎浮夸、做著重復的項目也沒有任何總結沉淀,自我介紹完全不知道在說啥等等諸如此類的現狀,想想自己也是從那個層次一步步走上路的,也經歷了許多坎坷,覺得有必要把我的面試經驗跟大家分享一下,希望能幫助大家找到一份滿意的工作。

本篇文章,你將學到以下知識:

Java基礎知識

Java核心知識

Java必問專題多線程鎖設計模式

Java框架SpringSpring Boot/Spring CloudMyBatis

分布式系統基礎中間件ZookeeperRedisActiveMQ

MySQL

JVM

如何準備技術面試

由于篇幅有限,這里只跟大家分享如何準備技術面試,其余的知識點我已經整理成文檔,有需要的朋友可以加q群:1103806531? 備注:簡書? ?免費領取~

如何準備Java初級和高級的技術面試

一. 換位思考下,如果你是面試官,你會怎么做

1. 只能通過簡歷和面試來衡量,別無他法。如果某位大牛確認能力很行,但面試時無法充分地自證能力,那對不起了,過不了,現實就這樣。

2. 如果面試官由于能力不行,招進來一個大忽悠,那估計會被領導罵。而且再也不會被讓面試了,給領導的印象就不好了。所以不能評主觀印象,而是會有些客觀標準,具體而言,就是從多個方面問些題目,答好答壞就看候選人的。

其實一些題目都差不多,但不同能力的面試官問問題的切入點和漸進程度會不同,而且有經驗的面試官會挖掘候選人的優勢,并能從候選人的說辭中判斷候選人是真懂還是忽悠。

二. 架構方面需要準備的點

初級開發而言,需要讓面試官感覺出如下的要點。

1. 熟悉SSM架構,至少在項目里做過。

這個的說法是,介紹項目時,用一個業務流程來說spring mvc如何做的。

2. 知道Spring MVC中的細節,比如@Autowired的用法,如何把url映射到Controller上,ModelAndView對象返回的方式等。

3. 最好結合項目的用法,說下你是怎么用AOP,攔截器的,比如說可以通過攔截器攔截非法請求,怎么用 AOP輸出日志等。

4. 關于ORM方面,不限用過哪種,但得知道一對一,一多多,多對多等的用法,以及cascade和inverse的用法。

5. 最好知道聲明式事務的做法。

如果你要應聘高級開發,那在上述基礎上,最好了解如下的知識點:

Spring Bean的周期

最好能通過閱讀源代碼,說下IOC,AOP以及Spring MVC的工作流程

最好能結合反射,說下IOC等的實現原理

Spring Boot和Spring Cloud的一些知識點

三. 數據庫方面需要準備的點

不少候選人會看很多SQL的技巧,比如select該怎么寫,insert又該怎么寫,但僅限于此,不會再準備其它的。

這樣就很吃虧,因為面試官會認為,哪怕是初級開發,SQL語句也該會寫,所以這塊不會多問,而會問如下方面的問題。

1. 索引怎么建的,怎么用的?比如我建好了一個索引,在where 語句里寫 name like '123%'會不會走索引,怎么情況下不該建索引,哪些語句不會走索引。

2. 除了索引之外,你有過哪些SQL優化方面的經驗,比如分庫分表,或通過執行計劃查看SQL的優化點。這最好是能結合你做的項目實際來講。

這里,我面試下來,大概有70%的候選人只知道基本SQL的寫法,所以哪怕你是只有理論經驗,會說一些優化點,也是非常有利的。

這塊對于高級開發而言,更得了解優化方面的技能。

四. Java Core方面需要準備的點

這塊是基礎,其實很多問的問題,候選人一定會在項目里用到,但很少能說好說全。

這塊主要會從集合,多線程,異常處理流程以及JVM虛擬機這些方面來問。

集合方面:

1. hashcode有沒有重寫過?在什么場景下需要重寫。如果可以,結合hash表的算法,說下hashmap的實現原理。

對于高級開發而言,最好通過ConcurrentHashMap來說明下并發方面的底層實現代碼。

2. ArrayList,LinkedList的差別,比如一個基于數組,一個基于鏈表,它們均是線程不安全的,ArrayList的擴容做法等。

對于高級而言,最好看下底層的代碼。

3. Set如何實現防重的,比如TreeSet和HashSet等。

4. Collection的一些方法,比如比較方法,包裝成線程安全的方法等。

5. 可能有些面試官會問,如何通過ArrayList實現隊列或堆棧,這個可以準備下。

多線程方面,其實在項目里不怎么會用到,但會問如下的問題:

1. synchronized和可重入鎖的差別,然后可能會順便問下信號量等防并發的機制。

2. 在線程里該如何返回值,其實就是callable runnable 區別。

3. 一定得通過ThreadLocal或volatile關鍵字,來說明線程的內存模型。

4. 線程池方面,會用,了解些常用參數

線程方面,可能問得比較多的就是并發機制,如果是高級開發,可能會問得深些。

虛擬機方面

1. 結構圖和流程可以大致說下。

2. 一定得了解針對堆的垃圾回收機制,具體而言,可以畫個圖,說下年輕代年老代等。

3. 說下垃圾回收的流程,然后針對性地說下如何在代碼中優化內存性能。

4. 最好說下如果出現了OOM異常,該怎么排查?如何看Dump文件。

5. GC的一些概念,比如強弱軟引用,finalize方法等,這些可以準備下。

五. 我面試的感受&聽到哪類回答就能證明候選人比較資深

1. 大多數的候選人(大概7成)直接就來了,不做任何準備。要知道,面試和項目其實有些脫節,哪怕項目做得再好,不做準備照樣通不過,只要我確認過這類人確實無法達標,我拒掉他們沒任何心理負擔,誰讓他們不準備?

2. 還有些候選人態度很好,明顯準備過,但沒準備到位,比如像剛才所說,只準備了算法,或者在Java Core方面,只看了集合方面的面試題。對于這些同學,哪怕是過了,我也會感到惋惜,畢竟如果面試好些的話,工資也能更高些,至于哪些過不了的,我敢說,如果他們準備過,估計就不是這個結果了。

其實我也知道,人無完人,哪怕我自己去面試,也不可能面面俱到,所以,我不會要求候選人什么問題都能回答出,甚至大多答錯也沒關系,只要能證明自己的能力即可通過面試。

我也和不少面試官交流過,根據我們的經驗,如果候選人能說出如下的知識點,即能證明他在這個領域比較資深了,在這塊,我可能就不會過多地問問題了。

架構方面

1. 能證明自己可以干活(這不難),同時能結合底層代碼說出IOC,AOP或Spring MVC的流程,只要能說出一個即可。或者能說出攔截器,Controller等的高級用法。

2. 能證明自己有Spring Boot或Spring Cloud的經驗,比如能說出些Spring Cloud組件的用法。

3. 如果能證明自己有分布式開發的經驗,那最好了,其實這不難證明,比如能說出服務的包是放在多臺機器上(大多數公司其實都這樣),而且能說出如何部署,如何通過nginx等做到負載均衡。

數據庫方面,其實講清楚一個問題即可:如何進行SQL調優,比如通過索引,看執行計劃即可,如果有其它的優化點,說清楚即可。

Java Core方面,這里給出些訣竅:

1. 能結合ConcurrentHashMap的源代碼,說出final,volatile,transient的用法,以及在其中如何用Lock對象防止寫并發。

2. 結合一個項目實際,說下設計模式的實踐。

3. 多線程方面,能說出Lock或volatile等高級知識點的用法。

4. 這塊最取巧:說下GC的流程,以及如何通過日志和Dump文件排查OOM異常,如果再高級些的話,說下如何在代碼中優化內存代碼。

訣竅點歸結成一個:能結合源代碼或項目實際,說出些比較資深的問題。

最后

希望這篇文章對大家有幫助!

我這邊也整理了一份 架構師全套視頻教程 和關于java的系統化資料,包括java核心知識點、面試專題和20年最新的互聯網真題、電子書等都有。

有需要的朋友可以加q群:1103806531? 備注:簡書? ?免費領取~

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,283評論 6 530
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 97,947評論 3 413
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,094評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,485評論 1 308
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,268評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,817評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,906評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,039評論 0 285
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,551評論 1 331
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,502評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,662評論 1 366
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,188評論 5 356
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,907評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,304評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,563評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,255評論 3 389
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,637評論 2 370