一步步教你搞定 Java 初級(jí)和高級(jí)技術(shù)面試

最近幾年公司的大小招聘丁侄,社招惯雳、校招都有參與,面試過許多大牛鸿摇,也遇到過很多職場(chǎng)小白石景。有十多年工作經(jīng)驗(yàn)的,也有剛剛畢業(yè)來面外包的拙吉,其中來面試的不乏一輪游的潮孽,看著有些同學(xué)基礎(chǔ)浮夸、做著重復(fù)的項(xiàng)目也沒有任何總結(jié)沉淀筷黔,自我介紹完全不知道在說啥等等諸如此類的現(xiàn)狀往史,想想自己也是從那個(gè)層次一步步走上路的,也經(jīng)歷了許多坎坷佛舱,覺得有必要把我的面試經(jīng)驗(yàn)跟大家分享一下椎例,希望能幫助大家找到一份滿意的工作。

本篇文章请祖,你將學(xué)到以下知識(shí):

Java基礎(chǔ)知識(shí)

Java核心知識(shí)

Java必問專題多線程鎖設(shè)計(jì)模式

Java框架SpringSpring Boot/Spring CloudMyBatis

分布式系統(tǒng)基礎(chǔ)中間件ZookeeperRedisActiveMQ

MySQL

JVM

如何準(zhǔn)備技術(shù)面試

由于篇幅有限订歪,這里只跟大家分享如何準(zhǔn)備技術(shù)面試,其余的知識(shí)點(diǎn)我已經(jīng)整理成文檔肆捕,有需要的朋友可以加q群:1103806531? 備注:簡(jiǎn)書? ?免費(fèi)領(lǐng)取~

如何準(zhǔn)備Java初級(jí)和高級(jí)的技術(shù)面試

一. 換位思考下刷晋,如果你是面試官,你會(huì)怎么做

1. 只能通過簡(jiǎn)歷和面試來衡量,別無他法眼虱。如果某位大牛確認(rèn)能力很行或舞,但面試時(shí)無法充分地自證能力,那對(duì)不起了蒙幻,過不了映凳,現(xiàn)實(shí)就這樣。

2. 如果面試官由于能力不行邮破,招進(jìn)來一個(gè)大忽悠诈豌,那估計(jì)會(huì)被領(lǐng)導(dǎo)罵。而且再也不會(huì)被讓面試了抒和,給領(lǐng)導(dǎo)的印象就不好了矫渔。所以不能評(píng)主觀印象,而是會(huì)有些客觀標(biāo)準(zhǔn)摧莽,具體而言庙洼,就是從多個(gè)方面問些題目,答好答壞就看候選人的镊辕。

其實(shí)一些題目都差不多油够,但不同能力的面試官問問題的切入點(diǎn)和漸進(jìn)程度會(huì)不同,而且有經(jīng)驗(yàn)的面試官會(huì)挖掘候選人的優(yōu)勢(shì)征懈,并能從候選人的說辭中判斷候選人是真懂還是忽悠石咬。

二. 架構(gòu)方面需要準(zhǔn)備的點(diǎn)

初級(jí)開發(fā)而言,需要讓面試官感覺出如下的要點(diǎn)卖哎。

1. 熟悉SSM架構(gòu)鬼悠,至少在項(xiàng)目里做過。

這個(gè)的說法是亏娜,介紹項(xiàng)目時(shí)焕窝,用一個(gè)業(yè)務(wù)流程來說spring mvc如何做的。

2. 知道Spring MVC中的細(xì)節(jié)维贺,比如@Autowired的用法它掂,如何把url映射到Controller上,ModelAndView對(duì)象返回的方式等幸缕。

3. 最好結(jié)合項(xiàng)目的用法群发,說下你是怎么用AOP,攔截器的发乔,比如說可以通過攔截器攔截非法請(qǐng)求,怎么用 AOP輸出日志等雪猪。

4. 關(guān)于ORM方面栏尚,不限用過哪種,但得知道一對(duì)一只恨,一多多译仗,多對(duì)多等的用法抬虽,以及cascade和inverse的用法。

5. 最好知道聲明式事務(wù)的做法纵菌。

如果你要應(yīng)聘高級(jí)開發(fā)阐污,那在上述基礎(chǔ)上,最好了解如下的知識(shí)點(diǎn):

Spring Bean的周期

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

最好能結(jié)合反射笛辟,說下IOC等的實(shí)現(xiàn)原理

Spring Boot和Spring Cloud的一些知識(shí)點(diǎn)

三. 數(shù)據(jù)庫(kù)方面需要準(zhǔn)備的點(diǎn)

不少候選人會(huì)看很多SQL的技巧,比如select該怎么寫序苏,insert又該怎么寫手幢,但僅限于此,不會(huì)再準(zhǔn)備其它的忱详。

這樣就很吃虧围来,因?yàn)槊嬖嚬贂?huì)認(rèn)為,哪怕是初級(jí)開發(fā)匈睁,SQL語句也該會(huì)寫监透,所以這塊不會(huì)多問,而會(huì)問如下方面的問題航唆。

1. 索引怎么建的才漆,怎么用的?比如我建好了一個(gè)索引佛点,在where 語句里寫 name like '123%'會(huì)不會(huì)走索引醇滥,怎么情況下不該建索引,哪些語句不會(huì)走索引超营。

2. 除了索引之外鸳玩,你有過哪些SQL優(yōu)化方面的經(jīng)驗(yàn),比如分庫(kù)分表演闭,或通過執(zhí)行計(jì)劃查看SQL的優(yōu)化點(diǎn)不跟。這最好是能結(jié)合你做的項(xiàng)目實(shí)際來講。

這里米碰,我面試下來窝革,大概有70%的候選人只知道基本SQL的寫法,所以哪怕你是只有理論經(jīng)驗(yàn)吕座,會(huì)說一些優(yōu)化點(diǎn)虐译,也是非常有利的。

這塊對(duì)于高級(jí)開發(fā)而言吴趴,更得了解優(yōu)化方面的技能漆诽。

四. Java Core方面需要準(zhǔn)備的點(diǎn)

這塊是基礎(chǔ),其實(shí)很多問的問題,候選人一定會(huì)在項(xiàng)目里用到厢拭,但很少能說好說全兰英。

這塊主要會(huì)從集合,多線程供鸠,異常處理流程以及JVM虛擬機(jī)這些方面來問畦贸。

集合方面:

1. hashcode有沒有重寫過?在什么場(chǎng)景下需要重寫楞捂。如果可以薄坏,結(jié)合hash表的算法,說下hashmap的實(shí)現(xiàn)原理泡一。

對(duì)于高級(jí)開發(fā)而言颤殴,最好通過ConcurrentHashMap來說明下并發(fā)方面的底層實(shí)現(xiàn)代碼。

2. ArrayList鼻忠,LinkedList的差別涵但,比如一個(gè)基于數(shù)組,一個(gè)基于鏈表帖蔓,它們均是線程不安全的矮瘟,ArrayList的擴(kuò)容做法等。

對(duì)于高級(jí)而言塑娇,最好看下底層的代碼澈侠。

3. Set如何實(shí)現(xiàn)防重的,比如TreeSet和HashSet等埋酬。

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

5. 可能有些面試官會(huì)問拳球,如何通過ArrayList實(shí)現(xiàn)隊(duì)列或堆棧,這個(gè)可以準(zhǔn)備下珍特。

多線程方面祝峻,其實(shí)在項(xiàng)目里不怎么會(huì)用到,但會(huì)問如下的問題:

1. synchronized和可重入鎖的差別扎筒,然后可能會(huì)順便問下信號(hào)量等防并發(fā)的機(jī)制莱找。

2. 在線程里該如何返回值,其實(shí)就是callable runnable 區(qū)別嗜桌。

3. 一定得通過ThreadLocal或volatile關(guān)鍵字奥溺,來說明線程的內(nèi)存模型。

4. 線程池方面症脂,會(huì)用谚赎,了解些常用參數(shù)

線程方面淫僻,可能問得比較多的就是并發(fā)機(jī)制诱篷,如果是高級(jí)開發(fā)壶唤,可能會(huì)問得深些。

虛擬機(jī)方面

1. 結(jié)構(gòu)圖和流程可以大致說下棕所。

2. 一定得了解針對(duì)堆的垃圾回收機(jī)制闸盔,具體而言,可以畫個(gè)圖琳省,說下年輕代年老代等迎吵。

3. 說下垃圾回收的流程,然后針對(duì)性地說下如何在代碼中優(yōu)化內(nèi)存性能针贬。

4. 最好說下如果出現(xiàn)了OOM異常击费,該怎么排查?如何看Dump文件桦他。

5. GC的一些概念蔫巩,比如強(qiáng)弱軟引用,finalize方法等快压,這些可以準(zhǔn)備下圆仔。

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

1. 大多數(shù)的候選人(大概7成)直接就來了,不做任何準(zhǔn)備蔫劣。要知道坪郭,面試和項(xiàng)目其實(shí)有些脫節(jié),哪怕項(xiàng)目做得再好脉幢,不做準(zhǔn)備照樣通不過歪沃,只要我確認(rèn)過這類人確實(shí)無法達(dá)標(biāo),我拒掉他們沒任何心理負(fù)擔(dān)嫌松,誰讓他們不準(zhǔn)備沪曙?

2. 還有些候選人態(tài)度很好,明顯準(zhǔn)備過豆瘫,但沒準(zhǔn)備到位珊蟀,比如像剛才所說,只準(zhǔn)備了算法外驱,或者在Java Core方面育灸,只看了集合方面的面試題。對(duì)于這些同學(xué)昵宇,哪怕是過了磅崭,我也會(huì)感到惋惜,畢竟如果面試好些的話瓦哎,工資也能更高些砸喻,至于哪些過不了的柔逼,我敢說,如果他們準(zhǔn)備過割岛,估計(jì)就不是這個(gè)結(jié)果了愉适。

其實(shí)我也知道,人無完人癣漆,哪怕我自己去面試维咸,也不可能面面俱到,所以惠爽,我不會(huì)要求候選人什么問題都能回答出癌蓖,甚至大多答錯(cuò)也沒關(guān)系,只要能證明自己的能力即可通過面試婚肆。

我也和不少面試官交流過租副,根據(jù)我們的經(jīng)驗(yàn),如果候選人能說出如下的知識(shí)點(diǎn)较性,即能證明他在這個(gè)領(lǐng)域比較資深了用僧,在這塊,我可能就不會(huì)過多地問問題了两残。

架構(gòu)方面

1. 能證明自己可以干活(這不難)永毅,同時(shí)能結(jié)合底層代碼說出IOC,AOP或Spring MVC的流程人弓,只要能說出一個(gè)即可沼死。或者能說出攔截器崔赌,Controller等的高級(jí)用法意蛀。

2. 能證明自己有Spring Boot或Spring Cloud的經(jīng)驗(yàn),比如能說出些Spring Cloud組件的用法健芭。

3. 如果能證明自己有分布式開發(fā)的經(jīng)驗(yàn)县钥,那最好了,其實(shí)這不難證明慈迈,比如能說出服務(wù)的包是放在多臺(tái)機(jī)器上(大多數(shù)公司其實(shí)都這樣)若贮,而且能說出如何部署,如何通過nginx等做到負(fù)載均衡痒留。

數(shù)據(jù)庫(kù)方面谴麦,其實(shí)講清楚一個(gè)問題即可:如何進(jìn)行SQL調(diào)優(yōu),比如通過索引伸头,看執(zhí)行計(jì)劃即可匾效,如果有其它的優(yōu)化點(diǎn),說清楚即可恤磷。

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

1. 能結(jié)合ConcurrentHashMap的源代碼野宜,說出final,volatile,transient的用法,以及在其中如何用Lock對(duì)象防止寫并發(fā)魔策。

2. 結(jié)合一個(gè)項(xiàng)目實(shí)際匈子,說下設(shè)計(jì)模式的實(shí)踐。

3. 多線程方面代乃,能說出Lock或volatile等高級(jí)知識(shí)點(diǎn)的用法旬牲。

4. 這塊最取巧:說下GC的流程仿粹,以及如何通過日志和Dump文件排查OOM異常搁吓,如果再高級(jí)些的話,說下如何在代碼中優(yōu)化內(nèi)存代碼吭历。

訣竅點(diǎn)歸結(jié)成一個(gè):能結(jié)合源代碼或項(xiàng)目實(shí)際堕仔,說出些比較資深的問題。

最后

希望這篇文章對(duì)大家有幫助晌区!

我這邊也整理了一份 架構(gòu)師全套視頻教程 和關(guān)于java的系統(tǒng)化資料摩骨,包括java核心知識(shí)點(diǎn)、面試專題和20年最新的互聯(lián)網(wǎng)真題朗若、電子書等都有恼五。

有需要的朋友可以加q群:1103806531? 備注:簡(jiǎn)書? ?免費(fèi)領(lǐng)取~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市哭懈,隨后出現(xiàn)的幾起案子灾馒,更是在濱河造成了極大的恐慌,老刑警劉巖遣总,帶你破解...
    沈念sama閱讀 222,807評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件睬罗,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡旭斥,警方通過查閱死者的電腦和手機(jī)容达,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來垂券,“玉大人花盐,你說我怎么就攤上這事」阶Γ” “怎么了算芯?”我有些...
    開封第一講書人閱讀 169,589評(píng)論 0 363
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)娄帖。 經(jīng)常有香客問我也祠,道長(zhǎng),這世上最難降的妖魔是什么近速? 我笑而不...
    開封第一講書人閱讀 60,188評(píng)論 1 300
  • 正文 為了忘掉前任诈嘿,我火速辦了婚禮堪旧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘奖亚。我一直安慰自己淳梦,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評(píng)論 6 398
  • 文/花漫 我一把揭開白布昔字。 她就那樣靜靜地躺著爆袍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪作郭。 梳的紋絲不亂的頭發(fā)上陨囊,一...
    開封第一講書人閱讀 52,785評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音夹攒,去河邊找鬼蜘醋。 笑死,一個(gè)胖子當(dāng)著我的面吹牛咏尝,可吹牛的內(nèi)容都是我干的压语。 我是一名探鬼主播,決...
    沈念sama閱讀 41,220評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了庆尘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,167評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤厕怜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后累驮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體酣倾,經(jīng)...
    沈念sama閱讀 46,698評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評(píng)論 3 343
  • 正文 我和宋清朗相戀三年谤专,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了躁锡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,912評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡置侍,死狀恐怖映之,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蜡坊,我是刑警寧澤杠输,帶...
    沈念sama閱讀 36,572評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站秕衙,受9級(jí)特大地震影響蠢甲,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜据忘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評(píng)論 3 336
  • 文/蒙蒙 一鹦牛、第九天 我趴在偏房一處隱蔽的房頂上張望搞糕。 院中可真熱鬧,春花似錦曼追、人聲如沸窍仰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)驹吮。三九已至,卻和暖如春晶伦,著一層夾襖步出監(jiān)牢的瞬間碟狞,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工坝辫, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留篷就,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,359評(píng)論 3 379
  • 正文 我出身青樓近忙,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親智润。 傳聞我的和親對(duì)象是個(gè)殘疾皇子及舍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評(píng)論 2 361