剛剛入職阿里不到一個月(新零售方向),所以還是比較清楚之前都準備了啥,部門也在招聘,所以問了下那些招聘的同事主要看什麼點。對於社招,我之前做的準備有以下幾個方面:
1.基本功:
阿里主要是java方向的,那對jdk要比較熟練的理解和使用,重點內容有:集合,多執行緒,io,異常,反射,註解,序列化,反序列化等知識。其次就是網路和資料結構,網路至少要知道三次握手,四次分手,https,get,post等。資料結構有時候會問下紅黑樹,平衡二叉樹吧。如果瞭解redis的,還可以聊下跳躍表,字首樹吧。作業系統問的不多,一般就是問下實際中有沒有出現過cpu過高或者記憶體過高的情況,然後怎麼定位解決。
2.中介軟體框架:
現在這邊也是基本spring那套,所以spring的常問題目要了解。比如啟動過程,bean的初始化流程,bean的生命週期,如何解決迴圈依賴問題,ioc,aop等。 快取,不論是redis或者是memcache或者其他的,至少要有一個比較熟練的,能瞭解底層資料結構及實現原理,常規的使用方法。資料庫,這個就mysql或者Oracle要熟悉一種,資料庫一般要知道分庫分表的實現,資料庫備份,資料庫的事務,資料庫和快取的資料一致性,資料庫的索引,鎖機制等等。rpc 也是阿里這邊比較使用多的一種,所以常用的rpc框架可以瞭解下,優缺點,rpc的原理要懂,如果有時間自己可以基於netty寫一個實戰一下。MQ也是一個重點知識,一般會問下訊息的冪等性,事務性實現,如何保證不丟訊息等,要熟練至少一種訊息佇列,瞭解原理。zk有時問有時不問,這個有時間也可以看下,畢竟這是分散式協調器,很多時候在分散式系統中都會使用zk來保證強一致性的問題。
3.設計題:
這種一般會給定某個特定場景,讓你去做,如果是架構設計,一般就是高併發。如果是資料庫的設計,一般看你對資料怎麼設計能夠方便查詢。
4.理論題:
一般這種就是看你對現在一些常用的分散式理論的理解了。一致性協議,分散式cap,base理論,服務降級,熔斷,restful介面等等。
5.專案:
這是個重點,和我同事聊天發現,他如果覺得連自己做的專案都講不清楚的話,基本就沒希望過了,所以一定要想下自己做的專案,有什麼難點,解決了什麼問題,架構有什麼調整,為什麼這麼做,最後的結果是什麼。如果做的比較久,一般還是分幾個階段來描述,每個階段的目標是什麼,為什麼這麼做。這樣會顯得思路清楚一點。
6.手寫程式碼:
程式碼考核是進入每個大公司都需要準備的,所以這個就是要刷刷題,leetcod,有時間逛逛,你值得擁有。
其實每個公司面試都差不多,當然了,如果要面試更高的檔次的話,一般還有你對行業的瞭解,對行業的看法。
我的五面經歷阿里的面試還是比較難的,尤其是後面的專家面,基本是一個問題接著一個問題的。相比較於騰訊和位元組的面試來說,阿里的面試在於coding比較簡單,一般是三道題,一個小時,一道演算法題,一道設計模式題,一道多執行緒事件等待通知,其他的都還好。下面給出阿里的面試題目:
阿里一面:(電話 面試)
專案介紹專案中分庫分表的實現,怎麼實現聚合查詢專案中怎麼保證只提交一次,http請求的冪等性Jdk的雙親委派模型,如何破壞雙親委派模型分散式鎖的使用場景和原理,專案中是否有使用Java多執行緒瞭解麼Mysql的索引介紹一下,在什麼條件下索引失效,解釋下最左字首原則程序的記憶體佔用過高,要怎麼排查Spring aop的實現原理有什麼想問的阿里二面(線上筆試題):
1個小時三道題,不允許使用idea,只能手寫,所以有些函式會寫錯,在旁邊註釋下
leetcode原題第三題設計模式策略模式的實現多執行緒的等待通知的使用阿里三面:
面試官有事直接到下一面了,幸運
阿里四面:(電話面試)
專案介紹,問的很詳細,細節問題,最佳化點,如何最佳化的,效能對比,怎麼實現的rpc框架熟悉麼,有了解哪些rpc的架構,分別說說優缺點,因為專案用了grpc,重點介紹了下這個框架grpc的序列化protobuf知道是怎麼實現序列化後很小的,有了解過底層的原理嗎?你們專案用的是Redis哪個版本 ,知道其新特性麼?為什麼選用這個版本?Redis有幾種部署方式,哨兵機制和叢集的區別是啥?有什麼想問的麼?薪資和來杭州的意願阿里五面:(影片面試)
專案介紹專案中是如何設計資料庫的,其分庫分表實現細節?要具體到程式碼是怎麼實現的?你剛剛提到的一致性hash演算法能描述下麼?在專案的過程中,你們專案是一個怎麼樣的演進過程?每年分別做了什麼事情?Netty的執行緒模型描述一下,口述一下一個netty的服務端啟動流程?(需要知道程式碼是怎麼實現的)怎麼實現一個加鎖的生產者消費者模型?口述一下condition的使用,消費者和生產者的程式碼執行緒是怎麼被喚醒的?將AQS和condition中的等待佇列和同步佇列描述清楚Rpc瞭解麼?說下rpc的流程Zookeeper在rpc框架中的作用?Zookeeper的寫入過程是怎麼實現的?有什麼需要問我的麼?我的學習資料學習java沒有捷徑,是一個孰能生巧的過程,透過不斷的練習,把基礎學紮實,一步一個腳印的逐步學習。
按類分組,清晰目標與進度:
對我幫助最大的一份文件:
這份文件其實不用多說,單從目錄就可以看出他的含金量了!