阿里內推面試經歷
------------------------------------------------------------------------------------------寫在最前--------------------------------------------------------------------
其實主觀上並不是很想寫,但堅持寫完是希望能分享給準備進網際網路實習或工作的同學或朋友一些經驗和收穫
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
阿里的內推面試一共4輪,持續的時間說短也不短,說長應該算是挺長的,20天的樣子。。。
初面:大概是下午5點30,面試官給我打來電話,說是阿里的面試官,要跟我聊聊,由於第一次電話面試,還是有點小緊張的,但其實面試官人很nice,上來讓我做一下自我介紹(自我介紹的時候,千萬別以我叫xxx開頭,開門見山地說自己的情況,比如自己最近在做什麼,自己平時的興趣愛好),面試官好像對我的畢設內容挺感興趣,問了不少關於平行計算,多執行緒程式設計的東西(其實他根本就不懂),之後又問我執行時多型和編譯時多型的區別,如何用C實現C++的三大特性,聊完了C和C++,又問我還會什麼語言,我說了python,shell等,便問我如何用python實現一個http協議,然後又叫我說出自己對python這門語言的看法,聊完python之後,又問我一些網路程式設計的東西,比如阻塞與非阻塞I/O的模型區別,然後問我改進方案,我跟他說用select/poll併發機制,他又叫我簡單地說明了一下select機制的原理。接著又問我linux核心的知識,問我瀏覽器的核心機制,又問了核心必備的核心配置(寒假帶了本linux核心設計與實現回去,放在床頭就沒翻過 - -!)還好之前有點基礎,跟他扯了扯一些管道執行緒,記憶體機制,任務排程之類的也就矇混過關了。最後他問我平時喜歡做什麼,我就說看看書,寫寫部落格,逛逛論壇,打打球之類的(不要說一些沒有情懷的興趣就ok),他問我有什麼要問他的,我想了想,就問他一些阿里的核心技術,面試官人很好,跟我聊了聊阿里的平臺與架構(阿里的核心技術是Java,so...)。整個面試過程五十多分鐘,初面主要就是看著你的簡歷問,什麼都問,問的知識面非常廣,很基礎,主要就是考察你的知識面,看你懂的技術是否多。
復面:初面後一天,就接到了復面的電話,面試官是部門總監(P9,M4級別的),上來又來了一次自我介紹。。。然後,直接開始進入了面試,後來總結了一下,問了我五道題目:
1.如何建立雙向迴圈連結串列。我用C程式碼跟他描述了一邊如何生成雙向迴圈連結串列,然後說了節點域和指標域,頭結點和尾結點。他問我如何進行雙向連結串列進行刪除操作,我又把思路和注意點說明了一下。
2.選取一種最優的排序法,將無序連結串列進行排序。這裡要考慮到成本之類的,核心其實就是連結串列是線性表,讀取寫入的成本巨大,跟陣列這種非線性結構不同,考慮到最優只能是相鄰之間的資料操作,我說了我選擇穩定性高的雙向氣泡排序,他又問我如何看待排序演算法的複雜度跟穩定性,我說穩定性是絕對的,複雜度是相對,快排是好,但是不穩定,o(n2)跟o(nlogn)並不是衡量一個排序法的絕對指標,面試官好像還是比較贊同我的說法。
3.第三道題是一個user case的題目。他給我描述了一整套事件,叫我分析出其中的所有個體,並說明之間的依賴性與繼承性,最後叫我如何運用多型性設計另外一個例項。這道題純粹的是一個面向物件的概念題,應該就是考察我對OO模型的認識有多深,這道題目其實最難的是找出所有的個體,極度地抽象(面試官很nice,給了提示),最後我自己你定了一個行為(就是C++中的虛擬函式,C中的介面)說明了多型性如何在該案例中體現。
4.用圖論的知識求出從北京到杭州的最短距離,前提是路況分成國道,省道,縣道。我就說了“分而治之"後,利用網格進行dijkstra演算法。我就說出了我的思路,面試官說可行,然後跟我說了一些圖論的知識(我又沒學過- -!)
5.在一篇無限長的英文文獻中,找出包含a-z26個字母的最短一段。其實就是選取資料結構,然後進行查詢。剛開始說‘滑動窗’,說著說著自己說不下去了,還好後來又找到了另外一種方案(其實就是一種優化演算法,具體的方案就不敘述了),後來面試官跟我說這道題目最佳的方案就是我剛開始說的‘滑動窗’遍歷,然後仔細地給我講解了如何實現的演算法,很有耐心,一點都不像一個部門老大的作風。
題目大致問完了,面試官又問了我的一些專案經歷,問了一些現階段流行的技術,流行的框架,再後來聊了聊我的性格特點之類的。復面是真正的技術面,大概持續了90分鐘,問的問題相對深入,主要是演算法與資料結構,考察的是思維能力和反應能力,不會不要緊,但要多動腦多想,說出自己的想法就ok,畢竟一個企業並不喜歡懶於思考,思維能力遲緩的員工。
終面:隔了一週,進行了終面。終面屬於部門交叉面,問的問題相對基礎。跟我聊了聊專案上的一些東西,然後,問了一些關於C語言的知識,比如無頭連結串列的刪除(陷阱題啊),問了TCP建立連線的‘三次握手’,而後又問了我linux的知識,比如grep,mount命令。問完了技術,又開始問生活,問我平時生活中的優點和缺點(千萬不要跟面試官直接了當的說自己的缺點,那是真的傻。),後來問我將來的人生規劃,為什麼選擇阿里,但是我就想,這不是hr應該問的嗎,但還是跟他隨便聊了聊。交叉面畢竟是其它部門的面試官,比較輕鬆,面試持續了40分鐘,終面應該屬於技術面+非技術面兩項
HR面:隔了大概十天,HR給我打來了電話(當時心情不是很好,等太久也不通知)。HR還是比較嚴肅的,上來就問我的缺點(當時我想,我哪來那麼多缺點,個個都要問)但還是避輕就重地跟她聊上了我的優缺點。又問我為什麼選擇阿里,自己的職業規劃之類的。再後來又問了家庭情況(主要是考察你的價值觀,家教是一個人成長的關鍵)。問完了又問如何看到工作壓力這種事情,就是問你的抗壓能力,之後又問以後準備在哪發展。。。簡直沒完沒了地問,差一點就問我有沒有女朋友了(阿里的HR果然不是吹的),至於HR面嘛,主要就是看你的價值觀,你的人格,你的心態,個人覺得不反動,有進取心就沒什麼問題的。
阿里的內推面試過程大概就是這樣,面試的內容基本也寫了,僅供參考。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------寫在最後----------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
用自己最喜歡的蟒蛇語言結尾
#!/usr/bin/env python
# @ @~ coding=utf-8 @ @~
__author__='yjf'
import sys
class success(obj):
def __init__(self):
pass
def makeit(self,energy):
return energy
if __name__=__main__:
new energy='不要惶恐明天會發生什麼,你的汗水不會欺騙你'
success toU
print toU.makeit(energy)