跳槽阿里基本上都分為兩個階段的提問。第一個階段是主語言本身以及它的高級特性榆综,第二個階段是講述自己的項目,并在中間穿插著問題铸史。正文才是重點......
面試的時候一般面試官的問題都是環(huán)環(huán)相扣鼻疮,逐漸深入的,這點在下面大家可以更明顯的感受出來琳轿。
1判沟、主語言本身以及它的高級特性。
主語言當然就是你平日里拿來賺錢的家伙崭篡。對于Java來說挪哄,它的語言本身以及它的高級特性,都有哪些比較容易在面試中問到呢琉闪?
一般情況下迹炼,主要有以下知識點很容易被問到。
1)Java的數(shù)據(jù)結(jié)構(gòu)相關(guān)的類實現(xiàn)原理颠毙,比如LinkedList斯入,ArrayList,HashMap蛀蜜,TreeMap這一類的刻两。以下簡單模擬一個數(shù)據(jù)結(jié)構(gòu)的連環(huán)炮。
比如:
面試官:問你HashMap是不是有序的滴某?
你肯定回答說磅摹,不是有序的滋迈。
那面試官就會繼續(xù)問你,有沒有有順序的Map實現(xiàn)類户誓?
你如果這個時候說不知道的話杀怠,那這個問題就到此結(jié)束了。
比如:
你說有TreeMap和LinkedHashMap厅克。
那么面試官接下來就可能會問你赔退,TreeMap和LinkedHashMap是如何保證它的順序的?
如果你回答不上來证舟,那么到此為止硕旗。
如果你依然回答上來了,那么面試官還會繼續(xù)問你女责,你覺得它們兩個哪個的有序?qū)崿F(xiàn)比較好漆枚?
如果你依然可以回答的話,那么面試官會繼續(xù)問你抵知,你覺得還有沒有比它更好或者更高效的實現(xiàn)方式墙基?
如果你還能說出來的話,那么就你所說的實現(xiàn)方式肯定依然可以問你很多問題刷喜。
以上就是一個面試官一步一步提問的例子残制。所以,如果你了解的不多掖疮,千萬不要敷衍初茶,因為可能下一個問題你就暴露了,還不如直接說不會浊闪,把這個問題結(jié)束掉恼布,趕緊切換到你熟悉的領(lǐng)域。
2:Java并發(fā)包當中的類,它們都有哪些作用,以及它們的實現(xiàn)原理会放,這些類就是java.concurrent包下面的。與上面一樣爽待,咱們也簡單的模擬一個并發(fā)包的連環(huán)炮。
比如
面試官:問你奸忽,如果想實現(xiàn)所有的線程一起等待某個事件的發(fā)生堕伪,當某個事件發(fā)生時,所有線程一起開始往下執(zhí)行的話栗菜,有什么好的辦法嗎欠雌?
這個時候你可能會說可以用柵欄(Java的并發(fā)包中的CyclicBarrier)那么面試官就會繼續(xù)問你,你知道它的實現(xiàn)原理嗎疙筹?
如果你繼續(xù)回答的話富俄,面試官可能會繼續(xù)問你禁炒,你還知道其它的實現(xiàn)方式嗎?
如果你還能說出很多種實現(xiàn)方式的話霍比,那么繼續(xù)問你幕袱,你覺得這些方式里哪個方式更好?
如果你說出來某一個方式比較好的話悠瞬,面試官依然可以繼續(xù)問你们豌,那如果讓你來寫的話,你覺得還有比它更好的實現(xiàn)方式嗎浅妆?
如果你這個時候依然可以說出來你自己更好的實現(xiàn)方式望迎,那么面試官肯定還會揪著這個繼續(xù)問你。
為什么說面試的時候要引導(dǎo)面試官凌外,原因就在這了辩尊。因為面試官的提問很多時候都是有跡可循的,你如果抓住了他的軌跡康辑,能夠猜到他下面很可能會問什么摄欲,那你在回答的時候就可以往你想要談的方向去說。這樣面試時就會顯得更加從容疮薇,更加的游刃有余胸墙。
3:IO包和NIO包中的內(nèi)容。這部分里面NIO會是重點惦辛,IO包大部分都會比較熟悉劳秋,因此可能會直接略過,直接問你NIO的內(nèi)容胖齐。
IO包和NIO包的內(nèi)容相對來說不是很多,首先NIO模型要熟悉嗽冒,特別是其中的selector一定要非常清楚它的職責(zé)和實現(xiàn)原理呀伙。其實NIO的核心是IO線程池,一定要記住這個關(guān)鍵點添坊。有的時候剿另,面試官可能也會問你IO包的設(shè)計模式(裝飾器模式),為什么要這樣設(shè)計贬蛙?
比如:
面試官:問你有沒有更好的設(shè)計雨女,這個時候如果你不知道請果斷說自己現(xiàn)在的水平有限,想不出來更好的設(shè)計阳准,千萬不要信口開河氛堕,隨意YY。
4:Java的虛擬機的內(nèi)容野蝇。這部分主要包括三部分讼稚,GC括儒、類加載機制,以及內(nèi)存锐想。(一個GC部分簡單的連環(huán)炮帮寻。)
比如:
面試官:問你什么時候一個對象會被GC?
接著繼續(xù)問你為什么要在這種時候?qū)ο蟛艜籊C赠摇?
接著繼續(xù)問你GC策略都有哪些分類固逗?
你如果說出來了,繼續(xù)問你這些策略分別都有什么優(yōu)劣勢藕帜?都適用于什么場景烫罩?
你繼續(xù)說出來了以后,給你舉個實際的場景耘戚,讓你選擇一個GC策略嗡髓?
你如果選出來了,繼續(xù)問你收津,為什么要選擇這個策略饿这?
下面是關(guān)于類加載機制的簡單連環(huán)炮。
比如:
面試官:問你Java的類加載器都有哪些撞秋?
回答了這些以后长捧,可能會問你每個類加載器都加載哪些類?
說完以后吻贿,可能會問你這些類加載之間的父子關(guān)系是怎樣的串结?
你在回答的時候可能會提到雙親委派模型,那么可以繼續(xù)問你什么是雙親委派模型舅列?
你解釋完了以后肌割,可能會繼續(xù)問你,為什么Java的類加載器要使用雙親委派模型帐要?
你回答完以后把敞,可能會繼續(xù)問你如何自定義自己的類加載器,自己的類加載器和Java自帶的類加載器關(guān)系如何處理榨惠?
再來一個關(guān)于內(nèi)存的連環(huán)炮奋早。
面試官:問你內(nèi)存分為哪幾部分,這些部分分別都存儲哪些數(shù)據(jù)赠橙?
然后繼續(xù)問你一個對象從創(chuàng)建到銷毀都是怎么在這些部分里存活和轉(zhuǎn)移的耽装?
接著可能會問你,內(nèi)存的哪些部分會參與GC的回收期揪?
完事以后掉奄,可能還會問你Java的內(nèi)存模型是怎么設(shè)計的?
你回答了以后横侦,還會繼續(xù)問你為什么要這么設(shè)計挥萌?
問完以后绰姻,還可能會讓你結(jié)合內(nèi)存模型的設(shè)計談?wù)剉olatile關(guān)鍵字的作用?
你在談的時候引瀑,肯定會提到可見性狂芋,那么接著可見性這三個字,還可以繼續(xù)問你并發(fā)的內(nèi)容憨栽。
基本上Java語言本身以及語言稍微高級點的內(nèi)容就是以上部分帜矾,如果你能把以上四部分了解的非常透徹,那基本上Java這部分就沒啥問題了屑柔,因為光以上的內(nèi)容就夠你跟面試官聊很久了屡萤。你聊這些聊得久了,自然問你其它問題的時間就會短點掸宛。
很多時候死陆,面試官都是順著一條線一路問下去的,如果你覺得這條線你不熟悉的話唧瘾,就要及時拐彎措译,引導(dǎo)面試官去問其它方面的問題。千萬不要一直往下深入饰序,直到自己跳不出來為止领虹,那就尷了個尬了。
2求豫、講述自己的項目塌衰,并在中間穿插著問題
這一部分是面試過程中必問,也是聊得最久的一個階段蝠嘉。除非你前面的語言部分非常扎實最疆,扎實到面試官問了一兩個小時,依舊沒有探出你對語言本身的了解到底有多深蚤告。否則的話肚菠,你一定逃不過自己的項目這一關(guān),而且一般情況下聊得時間不會太短罩缴。
這一部分內(nèi)容,一般的模式就是你自己去講你做過的項目层扶,然后面試官會冷不丁的讓你去解釋其中某一部分箫章,
比如:
面試官:讓你解釋當時為什么要這么做,或者問你現(xiàn)在覺得有沒有更好的辦法镜会?大部分與你的項目所用到的技術(shù)有關(guān)的問題檬寂?
你需要做的,就是充分戳表、再充分的去總結(jié)自己做過的項目(尤其是最近的一兩個項目)桶至,挖掘出一個甚至N個亮點昼伴,以備于到時候可以讓面試官產(chǎn)生眼前一亮的感覺。如果你能達到這種效果的話镣屹,基本上離你成功就不遠了圃郊。
3、額外的加分項
上面兩個階段基本上是必問的女蜈,還有一些加分項持舆。這些加分項中,有些內(nèi)容面試官也會問你(比如TCP/IP協(xié)議伪窖、算法)逸寓,但更多的是會先問你了解不了解,你了解的話再繼續(xù)聊覆山,不了解的話就直接略過了竹伸,不至于因為這種問題而直接把你打入地獄。
如果可以的話簇宽,這些加分項還是要爭取一下的勋篓。
1、計算機系統(tǒng)原理晦毙。
2生巡、網(wǎng)絡(luò)通信協(xié)議(TCP/IP,HTTP等)见妒。
3孤荣、數(shù)據(jù)結(jié)構(gòu)與算法。
4须揣、著名開源項目的源碼盐股。
5、你自己有很棒的開源項目耻卡。
6疯汁、你的個人博客。
7卵酪、待評論區(qū)補充幌蚊。
這幾項當中,對于前1-3項溃卡,如果你之前就比較了解溢豆,只是由于時間問題忘記了的話,還是可以臨時抱佛腳一下的瘸羡。至于后面4-6項漩仙,就需要你日常的積累了,不是一時半會兒能做到的。如果你平日里沒有積累队他,那么后面這三個加分項只能拋棄了卷仑。
4、與你職位相關(guān)的內(nèi)容
其實這最后一項是對前面三項的補充麸折,你應(yīng)該盡量去主攻和你面試的職位相關(guān)的內(nèi)容锡凝。
比如:
你面試一個實時計算的職位,那么你的算法最好要厲害磕谅,對于著名的實時計算開源項目要熟悉私爷,最好閱讀過源碼,而且還要對分布式系統(tǒng)有一定的見解膊夹。
因此衬浑,這個第4部分沒有具體的內(nèi)容,只是提醒你放刨,如果你很明確自己的面試職位工秩,最好在面試前準備的時候,盡量朝職位的需求方向靠攏进统,這樣成功的可能性更大助币。
工作3—5年的程序員,你肯定接觸過一些其它的技術(shù)螟碎,比如大數(shù)據(jù)眉菱、分布式緩存、分布式消息服務(wù)掉分、分布式計算俭缓、軟負載均衡等等。現(xiàn)在免費分享這些技術(shù)高清視頻教程酥郭,加Qun:671017482华坦。這些技術(shù),都將是你未來面試時巨大的優(yōu)勢不从,因此如果你對某一項技術(shù)感興趣的話惜姐,這個時候可以深入去研究一下。
——好了椿息,說了這么多了歹袁,就到此為止吧,希望本文可以幫助到作為程序猿的你寝优。別忘記點個關(guān)注哦