阿里的面試都問什么技術(shù)郭怪?
我只能說包括并發(fā)、JVM刊橘、分布式鄙才、TCP/IP協(xié)議這些個關(guān)鍵字,具體的問題真的是幾乎都沒記住促绵。
第一個階段是主語言本身以及它的高級特性攒庵,第二個階段是講述自己的項目,并在中間穿插著問題败晴。
所以浓冒,我不妨就這兩個階段,談?wù)勆缯忻嬖嚨臏?zhǔn)備尖坤,而不是去把阿里面試的過程背一遍稳懒。
關(guān)于社招的面試該如何準(zhǔn)備
我會分為四個部分來談?wù)撨@個問題,由于本身是Java出身慢味,因此關(guān)于主語言的問題场梆,都是與Java相關(guān),其它語言的同學(xué)可以選擇性忽略纯路。此外或油,面試的時候一般面試官的問題都是環(huán)環(huán)相扣,逐漸深入的感昼,這點在下面大家可以更明顯的感受出來装哆。
講述自己的項目,并在中間穿插著問題
主語言本身以及它的高級特性
與你職位相關(guān)的內(nèi)容
額外的加分項
講述自己的項目,并在中間穿插著問題
這一部分是面試過程中必問蜕琴,也是聊得最久的一個階段萍桌。除非你前面的語言部分非常扎實,扎實到面試官問了一兩個小時凌简,依舊沒有探出你對語言本身的了解到底有多深上炎。否則的話,你一定逃不過自己的項目這一關(guān)雏搂,而且一般情況下聊得時間不會太短藕施。
這一部分內(nèi)容,一般的模式就是你自己去講你做過的項目凸郑,然后面試官會冷不丁的讓你去解釋其中某一部分裳食,比如讓你解釋當(dāng)時為什么要這么做,或者問你現(xiàn)在覺得有沒有更好的辦法芙沥。而這些穿插的問題诲祸,大部分與你的項目所用到的技術(shù)有關(guān)。而你需要做的而昨,就是充分救氯、再充分的去總結(jié)自己做過的項目(尤其是最近的一兩個項目),挖掘出一個甚至N個亮點歌憨,以備于到時候可以讓面試官產(chǎn)生眼前一亮的感覺着憨。如果你能達到這種效果的話,基本上離你成功就不遠(yuǎn)了务嫡。
主語言本身以及它的高級特性甲抖。
主語言當(dāng)然就是你平日里拿來賺錢的家伙。不要告訴LZ你沒有主語言植袍,你會N多種語言惧眠,或者是你精通N多種語言,你要非這么說的話于个,你可以來杭州試試,LZ保證不打死你暮顺,最多打殘厅篓。
LZ的主語言很顯然是Java,那么對于Java來說捶码,它的語言本身以及它的高級特性羽氮,都有哪些比較容易在面試中問到呢?
一般情況下惫恼,主要有以下知識點很容易被問到档押。(PS:以下所列舉的,都是一些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ā)包當(dāng)中的類旱眯,它們都有哪些作用晨川,以及它們的實現(xiàn)原理证九,這些類就是java.concurrent包下面的。
與上面一樣共虑,咱們也簡單的模擬一個并發(fā)包的連環(huán)炮愧怜。
比如面試官可能會先問你,如果想實現(xiàn)所有的線程一起等待某個事件的發(fā)生看蚜,當(dāng)某個事件發(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)于內(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)鍵字的作用抓韩?
再來一個關(guān)于類加載機制的連環(huán)炮。
首先肯定是先問你Java的類加載器都有哪些鬓长?
回答了這些以后谒拴,可能會問你每個類加載器都加載哪些類?
說完以后涉波,可能會問你這些類加載之間的父子關(guān)系是怎樣的英上?
你在回答的時候可能會提到雙親委派模型,那么可以繼續(xù)問你什么是雙親委派模型啤覆?
你解釋完了以后苍日,可能會繼續(xù)問你,為什么Java的類加載器要使用雙親委派模型城侧?
你回答完以后易遣,可能會繼續(xù)問你如何自定義自己的類加載器,自己的類加載器和Java自帶的類加載器關(guān)系如何處理嫌佑?
你在談的時候豆茫,肯定會提到可見性,那么接著可見性這三個字屋摇,還可以繼續(xù)問你并發(fā)的內(nèi)容揩魂。
基本上Java語言本身以及語言稍微高級點的內(nèi)容就是以上部分,如果你能把以上四部分了解的非常透徹炮温,那基本上Java這部分就沒啥問題了火脉,因為光以上的內(nèi)容就夠你跟面試官聊很久了。你聊這些聊得久了柒啤,自然問你其它問題的時間就會短點倦挂。你從LZ寫這些問題的過程也應(yīng)該能感受出來,很多時候担巩,面試官都是順著一條線一路問下去的方援,如果你覺得這條線你不熟悉的話,就要及時拐彎涛癌,引導(dǎo)面試官去問其它方面的問題犯戏。千萬不要一直往下深入,直到自己跳不出來為止拳话,那就尷了個尬了先匪。
與你職位相關(guān)的內(nèi)容
其實這最后一項是對前面三項的補充,你應(yīng)該盡量去主攻和你面試的職位相關(guān)的內(nèi)容弃衍。比如你面試一個實時計算的職位呀非,那么你的算法最好要厲害,對于著名的實時計算開源項目要熟悉镜盯,最好閱讀過源碼姜钳,而且還要對分布式系統(tǒng)有一定的見解坦冠。
因此,這個第4部分沒有具體的內(nèi)容哥桥,只是提醒你,如果你很明確自己的面試職位激涤,最好在面試前準(zhǔn)備的時候拟糕,盡量朝職位的需求方向靠攏,這樣成功的可能性更大倦踢。
額外的加分項
上面兩個階段基本上是必問的送滞,還有一些加分項。這些加分項中辱挥,有些內(nèi)容面試官也會問你(比如TCP/IP協(xié)議犁嗅、算法),但更多的是會先問你了解不了解晤碘,你了解的話再繼續(xù)聊褂微,不了解的話就直接略過了,不至于因為這種問題而直接把你打入地獄园爷。
下面我列舉一下這些加分項宠蚂,如果可以的話,這些加分項還是要爭取一下的童社。
計算機系統(tǒng)原理求厕。
網(wǎng)絡(luò)通信協(xié)議(TCP/IP,HTTP等)扰楼。
數(shù)據(jù)結(jié)構(gòu)與算法呀癣。
著名開源項目的源碼。
你自己有很棒的開源項目弦赖。
你的個人博客项栏。
待評論區(qū)補充。
這幾項當(dāng)中腾节,對于前1-3項忘嫉,如果你之前就比較了解,只是由于時間問題忘記了的話案腺,還是可以臨時抱佛腳一下的庆冕。至于后面4-6項,就需要你日常的積累了劈榨,不是一時半會兒能做到的访递。如果你平日里沒有積累,那么后面這三個加分項只能拋棄了同辣。
最后拷姿,分享自己整理的學(xué)習(xí)資料惭载,希望能幫助到大家早日拿到offer。
加我 威欣:bmaaa01? 獲取响巢。