• <p id="isn5u"><del id="isn5u"><xmp id="isn5u"></xmp></del></p>
      <acronym id="isn5u"><strong id="isn5u"><address id="isn5u"></address></strong></acronym>

      Java工程師在阿里面試經歷與總結

      我投的崗位“軟件研發工程師”。到了面試現場,選擇了Java語言(有對應的面試官)。不過,后面進行了交叉面試,被推到了“數據研發”崗位。


      Java工程師在阿里面試經歷與總結


      一面


      首先,自我介紹。


      我:“我做過兩個項目。寫過幾篇論文和專利。還參加過阿里巴巴大數據競賽。同時,出于個人興趣,我還閱讀了一下HDFS的少部分源碼,理解了一下HDFS的核心思想,實現了一個功能非常簡單,并且還不完善的HDFS?!?/p>


      面試官1:“說一說你寫的論文中的某一篇的創新點?”


      我:“我寫的文章或者專利,主要遵循一個原則:將已有的理論或者模型應用到新的場景中。所以,都是偏向應用的。重點說說這篇論文吧。首先,從奇異值分解說起吧……”


      大概講了幾分鐘后。面試官1打斷我:“你做的這些東西都偏向數據挖掘方向,為什么沒有投數據挖掘呢?”


      我:“因為,按照我的理解,數據挖掘這個崗位需要對機器學習算法有深入研究,然而,我做的偏向于對數據挖掘算法的應用。所以,我想投研發,偏向數據挖掘和分布式方向,從基礎做起?!?/p>


      面試官1:“其實,你的優勢是做過數據挖掘。這樣吧,我先找一個數據研發的面試官對你進行一下面試。等會兒,你再來我這?!?/p>


      雖然自己也系統地學習過機器學習算法,但是接觸時間太短(幾個月),研究不夠深入,只在比賽中用過少數幾種算法:LR、RF和GBRT。自己的優勢在于對數據的理解和特征的提取,以及算法的應用。而算法推導過程并不清楚,只是理解了其思想。我怕被問得太細致,所以不是很情愿。不過,在面試官1的堅持下,最終還是同意了。


      看到第二個面試官的牌子上寫著“數據研發”,我稍微舒了口氣;幸好不是“數據挖掘”。


      今年,“數據研發”崗位招人挺多的,很多都是去小微金服。面試完之后,我覺得“數據研發”的崗位要求是這樣子的:熟練掌握基本的SQL語句;因為有一道筆試題目。


      我覺得阿里應該用自己的ODPS-SQL(類似于Hive)進行數據研發,雖然這個平臺挺復雜的,但是面試的時候的要求并不高。只要掌握基本的內建函數和SQL語句就行了:select,groupby…。我在比賽過程中,寫過幾萬行SQL代碼(去重之后幾千行),沒有用到過索引和視圖;經常用到內建函數,偶爾使用UDF(用戶自定義函數)。但是,寫的代碼不包含索引、視圖和UDF。也沒有考優化(其實我也不懂)。


      有數據研發方面的相關經歷,面試官似乎很注重這一項。我參加過阿里巴巴大數據競賽。


      對數據研發有一些自己的看法。這個很關鍵,一定要思路清晰。我主要在講比賽中的模型:數據的預處理->訓練集、預測集->特征提取->進一步處理->正負樣本比例->訓練->預測。


      當然會用寫MapReduce的話就過更好了。阿里的平臺提供了MapReduce,估計工作中會用到。這邊有個詳細的介紹:超級啰嗦版ODPSMapReduce入門。


      然后,跟第二個技術面試官開始交流。


      面試官2:“自我介紹一下吧?!?/p>


      我:“剛才介紹過其他經歷了。那我主要介紹下與數據研發相關的經歷吧?!比缓?,簡單說了下自己參加的阿里巴巴大數據競賽。


      面試官2:“行。先做一道題目吧?!?/p>


      面試官給了我一道SQL的題目:給定一個表,共四列:user_id,brand_id,time,cnt(花的錢數)。從這個表里面選出用戶B對每個品牌brand購買的總額度。


      一看到,有點竊喜,這跟我競賽做的東西太相似了。跟面試官進行簡單溝通后,很快寫出來了;不過還是怕做錯,檢查了很久才拿給面試官2。順便提了一下,如果需要處理字符串的話,我會用ODPS-SQL里面的UDF。面試官看了下程序,沒說什么,就放到了一邊。


      后面,我們主要在討論阿里巴巴大數據競賽:我做了什么,用什么模型、算法做的,準確率是多少。(這塊討論時間最多)


      還好,我主要討論的是對業務和數據的理解,沒有深入討論數據挖掘算法。


      討論很順利。結束之后,面試官2把我帶回面試官1。


      回來后,繼續與面試官1主要討論我寫的論文。由于之前對自己寫的論文進行過總結,思路很清晰。并談論了寫論文的體會和收獲。


      總之,第一面的面試官很和藹,交談也很開心。


      再次稍微提一下:個人覺得面試官主要有兩類,一類是用技術把你問死,從而判斷你對技術的掌握深度。另一類是,簡單的技術問題之后,讓你去表現,引導你來講,從而看你這個人的思想、表達能力、個人觀點等綜合素質。


      當然,一個面試官如果看到你不善于表達,就只能一直問你問題了。


      很榮幸,我碰到的是第二種面試官。面試跟聊天一樣輕松。


      最終,順利通過。


      二面


      二面的面試官是做Java研發的。


      剛開始,還是討論比賽和分布式。后面問了我一道大量文本處理的問題“找出一個大文本中的Top3的字符串”。沒有做過這方面的研究,答的不好。


      Java問題:“講一下JVM的結構?!?/p>


      網絡問題:“TCP/IP的三次握手、四次揮手”


      然后,就開始問關于JavaWEB的問題。


      這方面我只是了解過,面試官3說:”沒事,說下自己的理解就行了?!?/p>


      面試官3:“淘寶用戶的數據(購物車……)存在那里?怎么滿足高并發?”


      這方面不了解,面試官讓我自由發揮;回答的也不好。


      面試官3:“那我們問一下你的算法問題。輸入兩個整型數組,返回一個數組:兩個數組中的公共值?!?/p>


      其實,到這個時候,自己有點思路混亂了,有點緊張。我從快速排序算法開始寫,然后用的方法也不是最好的。面試官不是很滿意。


      后面吃午飯的時候,我想到其實可以為O(nlgn)排序后,再O(m+n)就可以了。跟別人討論的時候,我想到,針對某些特殊的情況;其實這個可以用哈希的思想來做。復雜度O(K),K為數組中的最大值。


      面試官3:“考一下你對遞歸的掌握。寫一個函數,輸入int型,返回整數逆序后的字符串。如:輸入123,返回“321”。要求必須用遞歸,不能用全局變量,輸入必須是一個參數,必須返回字符串?!?/p>


      當時,只做到了逆序輸出(打印),并沒有做到逆序返回字符串。


      吃完午飯,跟別人討論的時候,我突然想到這個要用到二叉樹遞歸求解深度、葉子數等問題的一些思想:每次返回的時候加上上一次的返回值。


      這個時候,面試官不是很滿意,正好也該吃飯了。然后,面試官3說:“這樣吧。我幫你找個數據研發的,你再去面試一下。讓他來做評價吧?!彪m然不情愿,但是還是同意了。畢竟這次表現太差了。


      為了避免下午問到同樣的問題。午飯后,跟其他同學把算法問題討論明白了。


      然后就是面試官4,還屬于二面階段。


      面試官4:“就當做我們在聊天,討論技術問題。講一下你的相關經歷吧?!?/p>


      這樣就放松了很多,像前面一樣,對不相關的經歷一句話概括。最后重點講述阿里巴巴大數據競賽。


      面試官4對競賽挺感興趣,所以,就從頭到尾一直圍繞競賽來講。主要討論到了模型、算法、特征。重點討論了我對數據的理解,并且得到了面試官4的認可。


      我說:“比賽的時候,我們每天都要盯著數據提取特征。如果,僅僅把這個當作數字來看,確實很枯燥。但是,我們會把它當作一種用戶行為對待和分析。這樣就變得很有趣了。比如,數據清洗后,我看到某個用戶每天都在點擊某一個品牌,他就是不買,很顯然這就是屌絲;有些人一直在購買,明顯的高富帥啊?!?/p>


      總之,就是很輕松地在聊比賽相關的事情,以及自己對數據的理解。


      最后,順利通過。


      三面


      早就聽說,今年很多進入HR面試的還是有很大可能被淘汰。于是,比較小心。


      后面才知道,其實不一定是HR刷的。因為,幾輪面試都通過之后,面試官還要商量到底錄不錄取;如果確定錄取的話再給Offer。有些被刷掉的人可能是因為前面表現不好,被技術面試官刷的,并不是HR刷的。我聽說,一般HR通過之后,數據挖掘和算法刷人比較多;對于其他崗位,很少被刷。


      不過,面試官人太好了。聊著聊著,我就口無遮攔的什么都開始說了。


      聊到了:平時怎樣提高自身技術能力;自己的優缺點;阿里巴巴的花名等等。


      面試過程中,主要強調了兩點(用自己的經歷):我很喜歡跟別人討論問題,這樣總會得到意外的收獲。并且,還舉了項目、競賽以及平時的例子。甚至,我還說了,剛才技術面試官的問題我沒有回答上來,但是,私下與其他面試的同學(我不認識)討論過程中,我就豁然開朗了。


      把工作當作生活的一部分,愉快地工作。這個主要說了,我在比賽過程中,怎樣把一些無聊的事情做成很有意思的事情。


      最后,面試官問我還有什么問題。


      我說:“參加比賽時,加了阿里旺旺的群,里面有很多內部員工,通過他們對阿里認識了很多;所以,沒有要問的了?!?/p>


      面試結束


      面試,就這樣結束了。出來之后,趕緊看了下自己的狀態“三面通過”;過了一會突然變成了“面試結束”。聽別人,說面試結束就是掛了的意思。


      于是,問了下外面的工作人員,他們說:“這是回去等通知的意思?!盚R面試之后,狀態是“三面通過”“四面通過”“面試結束”等。這是正常的。因為他們還要根據前面的綜合表現進行篩選。并不是“面試結束“的都不到Offer,都有可能收不到的。后面聽說,有的甚至“四面通過”的都不會收到Offer。


      回到學校后,一直等到凌晨三十八分才收到短信。然后,興奮了一個晚上。


      總結


      對于,基礎比較扎實的人,那就讓面試官隨便問吧。不過,我覺得任何人都有可能別問死的,因為他們想通過這種方式看看你的掌握深度。


      對于我呢,基礎知識一般:數據結構、排序算法和遞歸,能寫出來;操作系統,懂一些基本理論;計算機網絡,懂一些基本概念和理論。就只能充分發揮自己的競賽、項目、論文和專利的優勢了。


      面試過程中,有一點很重要,把握面試官的興趣點,并將面試官帶入自己的優勢。當然,如果自己的優勢不是面試官非常了解的領域,但是面試官又比較感興趣,那就更好了。對于我的幾位面試官,聊天的時候,我注意到,面試官1對我的論文和專利感興趣,面試官2和面試官4對阿里巴巴大數據競賽感興趣,面試官3對我的基礎能力感興趣,HR對合作能力感興趣。面試官3只想問我的基礎,雖然多次嘗試把他帶到我的優勢(數據挖掘和分布式)上面來,但是,都被他強制帶回去了。其他幾位面試官,都是被我有意識地將話題轉移到阿里巴巴大數據競賽上面。正好他們都沒有深入了解過這個競賽,對此有一定的興趣;然后,大部分時間都在討論這些內容了??偠灾?,把自己的優勢發揮到極致。


      免責聲明

      本文內容為本網所轉載資訊僅為宣傳及傳遞更多信息之目的,不代表本網站觀點,文章真實性請瀏覽者慎重核實!