阿里面試經歷及總結(資料研發、Java研發方向)

DanielJyc的部落格發表於2015-03-20

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

一面:

首先,自我介紹。
我:“我做過兩個專案。寫過幾篇論文和專利。還參加過阿里巴巴大資料競賽。同時,出於個人興趣,我還閱讀了一下HDFS的少部分原始碼,理解了一下HDFS的核心思想,實現了一個功能非常簡單,並且還不完善的HDFS。”

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

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

大概講了幾分鐘後。面試官1打斷我:“你做的這些東西都偏向資料探勘方向,為什麼沒有投資料探勘呢?”

我:“因為,按照我的理解,資料探勘這個崗位需要對機器學習演算法有深入研究,然而,我做的偏向於對資料探勘演算法的應用。所以,我想投研發,偏向資料探勘和分散式方向,從基礎做起。”

面試官1:“其實,你的優勢是做過資料探勘。這樣吧,我先找一個資料研發的面試官對你進行一下面試。等會兒,你再來我這。”

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


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

今年,“資料研發”崗位招人挺多的,很多都是去小微金服。面試完之後,我覺得“資料研發”的崗位要求是這樣子的:

  • 熟練掌握基本的SQL語句;因為有一道筆試題目。我覺得阿里應該用自己的ODPS-SQL(類似於Hive)進行資料研發,雖然這個平臺挺複雜的,但是面試的時候的要求並不高。只要掌握基本的內建函式和SQL語句就行了:select, group by…。我在比賽過程中,寫過幾萬行SQL程式碼(去重之後幾千行),沒有用到過索引和檢視;經常用到內建函式,偶爾使用UDF(使用者自定義函式)。但是,寫的程式碼不包含索引、檢視和UDF。也沒有考優化(其實我也不懂)。
  • 有資料研發方面的相關經歷,面試官似乎很注重這一項。我參加過阿里巴巴大資料競賽。
  • 對資料研發有一些自己的看法。這個很關鍵,一定要思路清晰。我主要在講比賽中的模型:資料的預處理->訓練集、預測集->特徵提取->進一步處理->正負樣本比例->訓練->預測。
  • 當然會用寫MapReduce的話就過更好了。阿里的平臺提供了MapReduce,估計工作中會用到。這邊有個詳細的介紹:超級囉嗦版ODPS MapReduce入門

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

面試官2:“自我介紹一下吧。”

我:“剛才介紹過其他經歷了。那我主要介紹下與資料研發相關的經歷吧。”然後,簡單說了下自己參加的阿里巴巴大資料競賽。

面試官2:“行。先做一道題目吧。”

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

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

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

還好,我主要討論的是對業務和資料的理解,沒有深入討論資料探勘演算法。


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

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

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

再次稍微提一下:個人覺得面試官主要有兩類,一類是用技術把你問死,從而判斷你對技術的掌握深度。另一類是,簡單的技術問題之後,讓你去表現,引導你來講,從而看你這個人的思想、表達能力、個人觀點等綜合素質。
當然,一個面試官如果看到你不善於表達,就只能一直問你問題了。
很榮幸,我碰到的是第二種面試官。面試跟聊天一樣輕鬆。

最終,順利通過。

二面:

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

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

Java問題:“講一下JVM的結構。”

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

然後,就開始問關於JavaWEB的問題。

這方面我只是瞭解過,面試官3說:”沒事,說下自己的理解就行了。“

面試官3:“淘寶使用者的資料(購物車……)存在那裡?怎麼滿足高併發?

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

面試官3:“那我們問一下你的演算法問題。輸入兩個整型陣列,返回一個陣列:兩個陣列中的公共值。

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

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

面試官3:“考一下你對遞迴的掌握。寫一個函式,輸入int型,返回整數逆序後的字串。如:輸入123,返回“321”。 要求必須用遞迴,不能用全域性變數,輸入必須是一個引數,必須返回字串。”
當時,只做到了逆序輸出(列印),並沒有做到逆序返回字串。

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

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


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

然後就是面試官4,還屬於二面階段。

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

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

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

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

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

最後,順利通過。

三面

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

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

不過,面試官人太好了。聊著聊著,我就口無遮攔的什麼都開始說了。
聊到了:平時怎樣提高自身技術能力;自己的優缺點;阿里巴巴的花名等等。
面試過程中,主要強調了兩點(用自己的經歷):

  • 我很喜歡跟別人討論問題,這樣總會得到意外的收穫。並且,還舉了專案、競賽以及平時的例子。甚至,我還說了,剛才技術面試官的問題我沒有回答上來,但是,私下與其他面試的同學(我不認識)討論過程中,我就豁然開朗了。
  • 把工作當作生活的一部分,愉快地工作。這個主要說了,我在比賽過程中,怎樣把一些無聊的事情做成很有意思的事情。

最後,面試官問我還有什麼問題。
我說:“參加比賽時,加了阿里旺旺的群,裡面有很多內部員工,通過他們對阿里認識了很多;所以,沒有要問的了。”

結束

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

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

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

總結:

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

對於我呢,基礎知識一般:資料結構、排序演算法和遞迴,能寫出來;作業系統,懂一些基本理論;計算機網路,懂一些基本概念和理論。就只能充分發揮自己的競賽、專案、論文和專利的優勢了。

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


最後,感謝本科同學Jason幫我我指明瞭學習方向,以及給我的各種建議。還有其他朋友和同學對我的支援和幫助。

相關文章