1. 程式人生 > >阿里演算法工程師內推面試經歷

阿里演算法工程師內推面試經歷

一面

時間:2015年7月22日

下午四點多接到電話,手機上標註的是騷擾電話,當時準備不接的。但是手機一直響了很久,最後還是接了,我還很不客氣的問對方是誰。對方很溫柔的回答說“我這邊是阿里巴巴 ”。當時差點被下尿了,但是還強壯鎮定,詢問是否是要開始面試,因為一個星期之前我投了阿里媽媽事業部的內推簡歷,想要應聘的崗位是演算法工程師。

接下來就是正式的面試,持續時間半個小時(應該是公司規定的時間)。主要問的問題有:
1、做過什麼專案?
2、介紹一下你做過的專案,是怎麼完成這個專案的?
3、比賽中用到什麼機器學習演算法?
4、特徵有哪些,是怎麼提取特徵的?
5、怎麼進行模型調參?
6、LR模型中各項引數代表什麼意思?
7、怎麼驗證特徵是否有用?

因為我今年參加過阿里移動推薦演算法大賽,所以面試基本都在問比賽的內容,而且問題都是由淺入深層層遞進,最後都問的很細節的東西。因為比賽過去已經有將近一個月了,所以很多東西記得不是很清楚了,導致面試的時候邏輯不是很清晰。另外在面試過程中,面試官還對我們的特徵提出了質疑。當時我一下慌了神,但立刻整理思路,解釋說這些特徵一方面可能從實際應用的角度得到解釋,另一方面,我們也是參考了去年參賽隊伍的經驗。

二面

時間:2015年7月30日

時間同樣是下午四點多,看到是北京的號碼打過來的電話,知道是阿里的電話二面。但當時,正好有點事,跟面試官約好第二天下午四點再面試。二面的時間是一個小時,剛好藉助這個緩衝期,我找到以前比賽的程式碼重溫了比賽的內容,另外我還臨時惡補了常用的機器學習演算法,重點複習這些演算法的優缺點什麼的。果然面試的問題集中在比賽上面。

現在整理出面試官的主要問題:
1、介紹一下你參加比賽的情況。
2、什麼樣的資料被認為是噪聲資料,依據是什麼?
3、你們用到什麼機器學習演算法?
4、你們提取了哪些特徵,詳細介紹一下。
5、怎麼判斷模型有沒有過擬合?
6、你們是怎麼分工的?
7、給你3張表,第一張表有兩列資料query(使用者搜尋記錄)和item_id(商品ID),這兩個欄位的值都是唯一的;第二張表的資料是query和query對應的資訊;第三張表的資料是item_id和商品的對應資訊其中第一張的資料量是3千萬,第二和第三張表的資料不唯一,資料量是50億。怎樣將這三張表join起來。後來面試官提示說這裡面可能存在資料不平衡問題,比如說有一些query對應條資料,怎樣用Mapreduce實現。
8、遠端桌面面試,要求寫程式碼實現判斷兩棵二叉樹是否相等的功能。

小結:二面跟一面的情況類似,有一個小時的時間都集中在比賽上,基本都是我在描述比賽的過程,面試官大部分時間都在聽我講。一開始面試官讓我介紹一下比賽的情況,我沒有抓住重點介紹的是比賽中我遇到的困難,後來被他打斷說他想了解的是你們是使用的什麼方法完成的比賽。第7個問題當時我沒回答好,因為我們在比賽中只是用到過Mapreduce,但對Mapreduce的具體細節不是很清楚,希望有大神能不吝賜教,幫助解答一下第7個問題。第8個問題,應該不難,用遞迴實現很容易。程式碼是在一個國外的遠端面試網站collabedit上寫的,這是第一次碰到。這裡附上我寫的程式碼:

bool IsTwoBinaryTreesEqual(BinaryTree *pRoot1, BinaryTree *pRoot2)
{
    if(!pRoot1 || !pRoot2)
        if(!pRoot1 && !pRoot2)
            return true;
        else
            return false;
    bool isRootEqual=pRoot1->m_Value==pRoot2->m_Value;
    bool isLeftEqual=IsTwoBinaryTreesEqual(pRoot1->m_pLeft,pRoot2->m_pLeft);
    bool isRightEqual=IsTwoBinaryTreesEqual(pRoot1->m_pRight,pRoot2->m_pRight);
    return isRootEqual && isLeftEqual && isRightEqual;
}

三面?

阿里的內推面試官方訊息是7月31日截止,不知道會不會有面試機會,問過面試官,但是沒有得到明確的答覆…