阿里面試回來,想和 Java 程序員談一談!

第一個問題:阿里面試都問什麼? html

======================java

這個是讓LZ最頭疼的一個問題,也是羣裏的猿友們問的最多的一個問題。說實話,LZ只能隱約想起併發、JVM、分佈式、TCP/IP協議這些個關鍵字,具體的問題真的是幾乎都沒記住。並且就算LZ記住了,也告訴你了,你也背會了,但LZ以爲,在面試中,你被問到如出一轍問題的可能性依然很小。面試

第一個階段是主語言自己以及它的高級特性,第二個階段是講述本身的項目,並在中間穿插着問題。算法

因此,LZ不妨就這兩個階段,談談社招面試的準備,而不是去把阿里面試的過程背一遍。說實話,LZ也確實記不住,因此不要再問LZ阿里面試都會問哪些問題了,你看看上面那個鏈接裏的文章,也會發現,LZ裏面也基本上沒有寫具體的問題,緣由是同樣的,真的記不住啊。(就是由於記憶力的問題,致使LZ從小偏科,文科成績一直堪憂,-_-)後端

社招面試如何準備 設計模式

===============網絡

LZ會分爲四個部分來談論這個問題,因爲LZ自己是Java出身,所以關於主語言的問題,都是與Java相關,其它語言的同窗能夠選擇性忽略。此外,面試的時候通常面試官的問題都是環環相扣,逐漸深刻的,這點在下面你們能夠更明顯的感覺出來。 數據結構

一、主語言自己以及它的高級特性。多線程

主語言固然就是你平日裏拿來賺錢的傢伙。不要告訴LZ你沒有主語言,你會N多種語言,或者是你精通N多種語言,你要非這麼說的話,你能夠來杭州試試,LZ保證不打死你,最多打殘。架構

LZ的主語言很顯然是Java,那麼對於Java來講,它的語言自己以及它的高級特性,都有哪些比較容易在面試中問到呢?

通常狀況下,主要有如下知識點很容易被問到。(PS:如下所列舉的,都是一些Java相對而言比較高級一點的知識點,由於這裏談的是社招,而不是校招)

1)Java的數據結構相關的類實現原理,好比LinkedList,ArrayList,HashMap,TreeMap這一類的。

如下簡單模擬一個數據結構的連環炮。

好比,面試官先問你HashMap是否是有序的?

你確定回答說,不是有序的。那面試官就會繼續問你,有沒有有順序的Map實現類?

你若是這個時候說不知道的話,那這個問題就到此結束了。若是你說有TreeMap和LinkedHashMap。

那麼面試官接下來就可能會問你,TreeMap和LinkedHashMap是如何保證它的順序的?

若是你回答不上來,那麼到此爲止。若是你依然回答上來了,那麼面試官還會繼續問你,你以爲它們兩個哪一個的有序實現比較好?

若是你依然能夠回答的話,那麼面試官會繼續問你,你以爲還有沒有比它更好或者更高效的實現方式?

若是你還能說出來的話,那麼就你所說的實現方式確定依然能夠問你不少問題。

以上就是一個面試官一步一步提問的例子。因此,若是你瞭解的很少,千萬不要敷衍,由於可能下一個問題你就暴露了,還不如直接說不會,把這個問題結束掉,趕忙切換到你熟悉的領域。

2)Java併發包當中的類,它們都有哪些做用,以及它們的實現原理,這些類就是java.concurrent包下面的。

與上面同樣,我們也簡單的模擬一個併發包的連環炮。

好比面試官可能會先問你,若是想實現全部的線程一塊兒等待某個事件的發生,當某個事件發生時,全部線程一塊兒開始往下執行的話,有什麼好的辦法嗎?

這個時候你可能會說能夠用柵欄(Java的併發包中的CyclicBarrier),那麼面試官就會繼續問你,你知道它的實現原理嗎?

若是你繼續回答的話,面試官可能會繼續問你,你還知道其它的實現方式嗎?

若是你還能說出不少種實現方式的話,那麼繼續問你,你以爲這些方式裏哪一個方式更好?

若是你說出來某一個方式比較好的話,面試官依然能夠繼續問你,那若是讓你來寫的話,你以爲還有比它更好的實現方式嗎?

若是你這個時候依然能夠說出來你本身更好的實現方式,那麼面試官確定還會揪着這個繼續問你。

爲何說面試的時候要引導面試官,緣由就在這了。由於面試官的提問不少時候都是有跡可循的,你若是抓住了他的軌跡,可以猜到他下面極可能會問什麼,那你在回答的時候就能夠往你想要談的方向去說。這樣面試時就會顯得更加從容,更加的遊刃有餘。

3)IO包和NIO包中的內容。這部分裏面NIO會是重點,IO包大部分都會比較熟悉,所以可能會直接略過,直接問你NIO的內容。

IO包和NIO包的內容相對來講不是不少,首先NIO模型要熟悉,特別是其中的selector必定要很是清楚它的職責和實現原理。其實NIO的核心是IO線程池,必定要記住這個關鍵點。有的時候,面試官可能也會問你IO包的設計模式(裝飾器模式),爲何要這樣設計?

有的面試官還會問你有沒有更好的設計,這個時候若是你不知道請果斷說本身如今的水平有限,想不出來更好的設計,千萬不要信口開河,隨意YY。

4)Java的虛擬機的內容。這部分主要包括三部分,GC、類加載機制,以及內存。

一個GC部分簡單的連環炮。

面試官能夠先問你何時一個對象會被GC?

接着繼續問你爲何要在這種時候對象纔會被GC?

接着繼續問你GC策略都有哪些分類?

你若是說出來了,繼續問你這些策略分別都有什麼優劣勢?都適用於什麼場景?

你繼續說出來了之後,給你舉個實際的場景,讓你選擇一個GC策略?

你若是選出來了,繼續問你,爲何要選擇這個策略?

下面是關於類加載機制的簡單連環炮。

首先確定是先問你Java的類加載器都有哪些?

回答了這些之後,可能會問你每一個類加載器都加載哪些類?

說完之後,可能會問你這些類加載之間的父子關係是怎樣的?

你在回答的時候可能會提到雙親委派模型,那麼能夠繼續問你什麼是雙親委派模型?

你解釋完了之後,可能會繼續問你,爲何Java的類加載器要使用雙親委派模型?

你回答完之後,可能會繼續問你如何自定義本身的類加載器,本身的類加載器和Java自帶的類加載器關係如何處理?

再來一個關於內存的連環炮。

首先確定就是問你內存分爲哪幾部分,這些部分分別都存儲哪些數據?

而後繼續問你一個對象從建立到銷燬都是怎麼在這些部分裏存活和轉移的?

接着可能會問你,內存的哪些部分會參與GC的回收?

完事之後,可能還會問你Java的內存模型是怎麼設計的?

你回答了之後,還會繼續問你爲何要這麼設計?

問完之後,還可能會讓你結合內存模型的設計談談volatile關鍵字的做用?

你在談的時候,確定會提到可見性,那麼接着可見性這三個字,還能夠繼續問你併發的內容。

基本上Java語言自己以及語言稍微高級點的內容就是以上部分,若是你能把以上四部分了解的很是透徹,那基本上Java這部分就沒啥問題了,由於光以上的內容就夠你跟面試官聊好久了。你聊這些聊得久了,天然問你其它問題的時間就會短點。

你從LZ寫這些問題的過程也應該能感覺出來,不少時候,面試官都是順着一條線一路問下去的,若是你以爲這條線你不熟悉的話,就要及時拐彎,引導面試官去問其它方面的問題。千萬不要一直往下深刻,直到本身跳不出來爲止,那就尷了個尬了。

二、講述本身的項目,並在中間穿插着問題

這一部分是面試過程當中必問,也是聊得最久的一個階段。除非你前面的語言部分很是紮實,紮實到面試官問了一兩個小時,依舊沒有探出你對語言自己的瞭解到底有多深。不然的話,你必定逃不過本身的項目這一關,並且通常狀況下聊得時間不會過短。

這一部份內容,通常的模式就是你本身去講你作過的項目,而後面試官會冷不丁的讓你去解釋其中某一部分,好比讓你解釋當時爲何要這麼作,或者問你如今以爲有沒有更好的辦法。而這些穿插的問題,大部分與你的項目所用到的技術有關。而你須要作的,就是充分、再充分的去總結本身作過的項目(尤爲是最近的一兩個項目),挖掘出一個甚至N個亮點,以備於到時候可讓面試官產生眼前一亮的感受。若是你能達到這種效果的話,基本上離你成功就不遠了。

三、額外的加分項

上面兩個階段基本上是必問的,還有一些加分項。這些加分項中,有些內容面試官也會問你(好比TCP/IP協議、算法),但更多的是會先問你瞭解不瞭解,你瞭解的話再繼續聊,不瞭解的話就直接略過了,不至於由於這種問題而直接把你打入地獄。

下面LZ列舉一下這些加分項,若是能夠的話,這些加分項仍是要爭取一下的。

一、計算機系統原理。

二、網絡通訊協議(TCP/IP,HTTP等)。

三、數據結構與算法。

四、著名開源項目的源碼。

五、你本身有很棒的開源項目。

六、你的我的博客。

七、待評論區補充。

這幾項當中,對於前1-3項,若是你以前就比較瞭解,只是因爲時間問題忘記了的話,仍是能夠臨時抱佛腳一下的。至於後面4-6項,就須要你平常的積累了,不是一時半會兒能作到的。若是你平日裏沒有積累,那麼後面這三個加分項只能拋棄了。

四、與你職位相關的內容

其實這最後一項是對前面三項的補充,你應該儘可能去主攻和你面試的職位相關的內容。好比你面試一個實時計算的職位,那麼你的算法最好要厲害,對於著名的實時計算開源項目要熟悉,最好閱讀過源碼,並且還要對分佈式系統有必定的看法。

所以,這個第4部分沒有具體的內容,只是提醒你,若是你很明確本身的面試職位,最好在面試前準備的時候,儘可能朝職位的需求方向靠攏,這樣成功的可能性更大。

做者:左瀟龍
http://www.zuoxiaolong.com/ht...://www.zuoxiaolong.com/html/article_184.html

推薦去個人博客閱讀更多:

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

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

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

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

生活很美好,明天見~

相關文章
相關標籤/搜索