我們在學習java web開發技術的時候,老師告訴我們淘寶的架構都是使用java寫的,我懷着好奇心就開始搜尋相關的問題,在知乎上看到這樣一篇文章《淘寶主要是用 java 實作的,這是真的嗎?》(連結),其中回答者中有一位是支付寶核心域高可用架構師,他的回答可以說算是半官方的了,的确不光是淘寶,整個阿裡系基本也是全線java,而且水準在國際上也是一流的,世界上很少有java的系統可以面對像淘寶支付寶這樣的高并發,大資料的挑戰,這裡已經把java技術發揮到了極緻,比如自定制gc,編寫針對cpu優化jvm等老外想做也沒機會做的事,如果真想玩轉java,那就來阿裡吧。

看來說的沒錯阿裡就是javaer的光明頂,想了解更多的關于淘寶的架構和它背後的故事的話,這裡有一篇博文(連結)大家可以看看。
随着阿裡全線java的發展,阿裡對于java工程師的需求也越來越多,但是面試阿裡的java工程師需要什麼樣的技術能力和知識水準呢?什麼樣的技術人員才能面試阿裡的java工程師呢?
阿裡的java工程師招聘資訊多達57頁(果然多…),我找了阿裡雲方向的招聘要求和大家分享一下,大家參照這個可以有一個更加明确的努力方向:
好了接下來就為大家分享一篇阿裡社招java工程師的面試經曆:
<b>《阿裡巴巴面試總結與感悟》</b>
今天面試了阿裡巴巴java研發工程師,戰況隻能用一個字形容:慘,慘不忍睹! 昨天接到阿裡巴巴面試通知的時候就已經沒信心了,今天果真印證了 。
上午9點到了裕甯酒店在等待區沒等多久就被領去面試了。阿裡的一面是在大廳中分組一對一單面的。面試我的是一個二十七八歲的帥哥,面試過程也很友善。進去後,他首先看了我的履歷,然後問我能不能說一下自己的特長優勢什麼的(都沒有讓自我介紹)。我簡單的把在校三年來自己學習的技術和參加的項目介紹了下,然後拿出了自己準備好的《項目回顧表》以及自己做的《作品回顧》CD光牒和已經出版發行的兩張CD光牒給他看。他看了說不錯,然後就問我項目的事兒。
他說自己對3d開發不太了解,然後問我感覺在做《山海關虛拟博物館》的時候有沒有什麼技術難點和重點。我說重點是在尋路上( 囧,說完我心裡就哇涼哇涼的了,不應該說這個),然後他就問我是怎麼實作尋路的,我給他畫了下場景地圖,然後解釋了下我的做法(主要是用狀态機)他可能不太滿意,然後問我能不能用算法來描述。我沒太明白他想要什麼,然後他開始引導我回答這個問題,先問我學沒學過圖論,我說在資料結構和離散數學中學過,然後我明白了他想要什麼了,我說可以用圖存儲各個目标點,然後通過判斷各點之間的連通性來判斷點是否可以到達,可以通過深度優先搜尋來完成(說完我心裡又是哇涼的,根本就沒準備圖這一塊兒的資料結構)。然後他說讓我寫下深度優先搜尋程式(= =,這個鄙視我吧,我真忘記了)。我想了會兒說記不清楚了,他問我圖是怎麼存儲的,我說用臨接表和臨接矩陣,然後他讓我給他畫下,我就畫完(這些還是會的)。他說再試試呢,我思考了下說記不清了(我怕寫完他在讓我寫廣度程式的和優化查找,這塊兒真心沒準備 )。
然後他讓我寫下自己用過的設計模式,我說有政策模式、單例模式、工廠模式、狀态模式、擴充卡模式。然後他讓我寫下單例模式,我用了最簡單的方式,static變量new自身對象。他說有沒什麼問題,比如變量被指派呢。我說在c#中可以用通路控制符禁止set,在java中也可以用靜态方法來屏蔽。他又問那你的類被别的類執行個體化,我說構造方法我用private的。(總之是沒寫全,寫全他就不會問了)
設計模式談完,他說來說下你的網站項目吧,我的履歷裡有寫“系統架構”,他讓我解釋下,我就畫了下mvc圖,jsp頁面作為視圖,servelt作為控制層,然後建立model,建立service和dao,以及他們的作用。他說ssh和這些有什麼不同嗎?我說struts2代替了servlet,hibernate代替了dao,spring貫穿他們,注入對象。他說那你說下spring的核心思想吧。我說主要是ioc,aop,di。他說說下ioc和aop吧,我提到了ioc控制反轉,通過配置檔案将對象注入到程式中,他說你寫下配置檔案吧(又要寫,= =,spring半年沒搞了早忘了)我說平時都是copy,忘記了。他可能以為我不會spring,然後問我那你都知道各個元素的作用嗎,我說知道。(但是真心的忘記bean标簽中都有哪些了,我發誓看見之後都知道有什麼用,抓狂啊)
ssh告一段落(回答的太爛了,這些初級的學者都會,最主要的是很多都沒記住),我有一個項目寫的是已經上線了,他讓我寫下那個url,我有點蒙,就寫了域名,他說你們就用這個嗎,我不知道他想要什麼,我就又寫了127.0.0.1:port,他問我使用者可以通路?(當我是小白了- - ,哎前面回答的太爛了)我說當然不可以,我們的申請的ip是172.168.xx.xx:80這個是給使用者的。他說伺服器用的什麼,我說tomcat,他問tomcat的端口号在哪裡配置,我說在web.xml(說順嘴了,其實我知道在server.xml中配置)。他說都可以配置什麼,我說可以配置端口号,虛拟主機。他說還有嗎,我說還可以配置一個監聽端口号。他說預設的都多少,我說8080,他問我另外一個,我說不記得了。然後他讓我寫下jsp頁面的标準頭部是什麼。我把page标簽寫上去了,我提到了頁面編碼,他問我用什麼編碼我說utf-8,他說還知道其他的編碼嗎,我說還有gbk。然後他問我utf-8和gbk的差別,我隻說了表面的,他讓我從計算機組成原理的角度說下gbk和utf-8,我說我們專業沒開計算機組成原理,然後他看了下我的履歷。然後讓我寫下平時都看什麼書,我大概寫了下。最後他問我有什麼要問他的嗎,我讓他點評了下。點評了啥就不說了,反正都在意料之中。
總結:今天阿裡的面試非常爛,問題很簡單,但是因為很久沒搞java了(有半年多了)是以很多都忘記了。基礎太不紮實,這也是很多應屆生的缺點吧。想要進大中型公司應該具備以下素質,留給各位準備面試和将來面試的人吧。
1.資料結構,這個不是懂了就行,剛學完資料結構,各種算法自己也可以很快寫出來的,但是很久沒寫了都忘記了。資料結構這個東西必須能信手拈來,随手就能寫出各種樹、圖的周遊以及排序、查找等算法,以及二叉樹,b-樹、堆的概念和程式(最好做到能當場寫程式)。
2.明白java api的源代碼實作,比如linkedlist和arraylist,不隻是資料結構的差別(這個大家都清楚)還要能從源代碼的角度,比如線程安全性,内部擴充方式,每次擴充的長度等等來表達。(你可以想想自己能不能說出string、stringbuffer、stringbuilder的差別;hashtable、hashmap、treemap的差別呢?屬性類的安全性?等等,别查文檔,也别說你知道,面試的時候不會聽你啰嗦的,就說重點差別)。
3.設計模式,要明白各個設計模式的優缺點,應用場景,最好能說出哪些架構應用了這些設計模式。對于簡單的設計模式,如單例等可能會被現場寫。
4.ssh架構,隻要搞java的都會被問這三個架構的很多東西,spring的ioc,di,aop,配置;struts2的建立過程,filter,配置;hibernate的o/r mapping,映射的配置,樂觀鎖、悲觀鎖等等。緊緊在項目中用還不行,最好要明白内部原理。
5.作業系統的一些知識,筆試的時候有考到lru算法(差一點就忘了)。
總之大公司考的範圍很廣,絕大部分都學過,但是很多我們在學校中學一次就很可能不會再用(比如頁面置換算法,存儲過程等,學生項目不會涉及這麼複雜底層的東西)。還有就是平時我們依賴ide慣了,很多我們知道的東西,比如标簽都有哪些屬性什麼的,當場寫我們可能就寫不出來了(比如各種配置檔案,使用自動提示慣了,讓自己寫都不會了,這是平時注意自己敲吧)。
<b>感想:</b>其實阿裡巴巴的技術面反映出來的最主要的問題不是自己的技術問題,而是自己真正想要做什麼。
今天問的這些問題,如果放在大三上學期問的話,我能很自如的答出來,但是從專業實習之後自己一直就在研究unity3d和photon,這些很久都沒看了,忘了很自然。自己現在真正應該思考的是到底想不想要做java開發,做java開發的話就要用ssh架構,自己又不太喜歡基于ssh架構的網站開發。(= =真是個糾結的問題,男怕入錯行,如果你了解的也比較多還是慎重考慮吧,雖然招聘java的很多,但是面試java的比招聘的還多,java發展了這麼多年,想要說你精通java要有一定實力哦,要不然随便一個細節問題,比如java反射、序列化、反序列化等都可能問死你,不是你不行,是這個太細了)有側重的複習面試很重要。想要深入遊戲開發,又怕自己沒學過c++和圖像處理算法和别人差距太大。這幾天要反思下。
正文完
<b>有話要說:</b>從這位學長面試失敗的經曆中可以看出一個問題,對于我們在大學中“學過”的技術知識,我們是不是真正地學到了、學懂了、學透了。回顧我們大學學過的東西有太多,有什麼是我們融進自己技術中的,我們都應該及時反思自己的學習,我們是不是真的學到了東西,還是我們學的東西隻是浮于表面,沒有抓住知識的根基。還是“功夫用在平時”,努力和勤奮不會沒有回報的。
<b>本系列文章:</b>
<b>如何拿到阿裡技術offer:從《我為什麼來到支付寶》體味阿裡社會招聘 </b>
<b>如何獲得阿裡技術offer:從《阿裡dba面試題》體味阿裡社會招聘 </b>
<b>如何拿到阿裡技術offer:從《阿裡電話面試經過與總結》體味阿裡社會招聘</b>
<b>如何拿到阿裡技術offer:從《阿裡巴巴面試總結與感悟》體味阿裡社會招聘</b>
<b>如何拿到阿裡技術offer:從《2.5年, 從0 ->阿裡》體味阿裡内推招聘 </b>
<b>如何拿到阿裡技術offer:從《方騰飛:阿裡感悟》體味阿裡招聘 </b>