機器學習面試準備大全 - 技能要求、面試例題詳解

九章演算法發表於2018-08-02

專欄 | 九章演算法

網址 | http://www.jiuzhang.com

人工智慧(機器學習)的知識點涵蓋的範圍很廣。機器學習的面試一般也都是採用理論與實踐緊密結合的方式。所以對於初學者來說,這無疑大大增加了面試準備的難度。

那麼我們要如何準備機器學習面試才能最後通過面試,斬獲offer呢?

一、定位公司和角色

首先你要清楚你面試的境況—

為什麼你申請的公司會有這樣一個職位開放著

這是在準備面試過程中極為重要的一個問題,因為如果你知道自己會被問到什麼,你就能更好地瞭解自己能給公司帶來什麼價值。

舉個例子,如果一個公司正在招聘一位機器學習工程師,那麼你要知道他們可能是正試圖解決一個複雜問題,一個傳統演算法難以適用或者用傳統方法根本無法解決的問題。

二、找出核心問題

當你在申請這個職位時,你還可以想象自己已經得到這份工作後的情景。要做到這一點,你需要儘可能多的瞭解關於這家公司和這個職位的相關資訊

並問自己:我能為這家公司解決一個怎樣的核心問題?

在尋找這個問題答案的過程中,你能瞭解到更多關於這個問題的資訊,比如:現有的解決方案、近幾年發展的新趨勢等。並且在這個過程中,你甚至還能看清這個問題具體的難點和挑戰在哪裡。

如果你明確地知道自己申請的職位是屬於哪個團隊的,選擇一個合適的問題可能會更簡單一點;如果不知道的話,就挑選一個對公司來說比較重要的問題。除此以外,你還可以思考這家公司目前面臨著怎樣的挑戰,然後試著推測他們可能會問的問題。

三、探究潛在的資料來源

image

在找出問題之後,下一步

你就應該思考你需要怎樣的資料來解決這個問題。

其中一些資料可能是現成的,而另外一些資料可能需要你寫一些額外的程式碼來收集。

試著去深入瞭解這家公司的基礎建設和業務,比如:它們使用什麼棧,它們有什麼APIs(應用程式介面),它們已有的資料庫,等等。

現今大多數公司都會有自己的部落格,用來討論它們遇到的困難、採取的解決方案以及分享它們成功和失敗的案例。所以你可以通過公司的部落格來更深入地瞭解公司的運營方式,以及你即將面試的公司已經有了怎樣的產品和服務等。

四、討論和交流機器學習解決方案

現在你需要做一個相當大的思維跳躍

如何將機器學習應用到這個問題場景中去?

給定你想實現的目標和你需要的有效資料,你能夠把它轉換為一個機器學習問題嗎?

使用哪種模型會比較合適?怎麼測試和評估這個模型?

舉個例子,大多推薦系統如Netflix和Amazon最初面臨的挑戰都是聚類而不是預測,也就是說,一旦你能將使用者分別劃分成有相似喜好的群組和行為相近的群組,再給他們推薦產品就變得簡單多了。

這個思維過程有助於你在面試中更好地討論公司最關心的問題。沒有面試官指望你能在面試時能把一個他們已經研究了幾個月甚至幾年的問題給完全解決。但是面試官都喜歡對他所真正關心的問題展示出興趣、活力和好奇心的應聘者。

根據面試官和麵試環節的不同,你可能會被問到更技術性的問題,你應該嘗試用這個機會來展示自己對公司的瞭解和對角色的定位。

當被問及到更開放性的問題時,例如:“請描述一個你曾經在做專案時遇到的技術難題,以及你是是如何解決它的?”最好選擇一個跟公司有關的話題來回答。

五、需要技能及面試樣題

image

我們在這裡將機器學習工程師需要掌握的基本技能分為五類:

機器學習面試準備大全 - 技能要求、面試例題詳解

(一)電腦科學基礎與程式設計能力

▲ 你怎麼判斷一個連結串列中是否有迴圈?

▲ 給定一棵二叉查詢樹中的兩個元素,求它們的最近公共祖先。

▲ 寫一個棧排列函式

▲ 如何計算比較排序演算法的時間複雜度?你能證明嗎?

▲ 如何在加權圖中找到兩個節點間最短路徑?如果有些權值是負的怎麼辦?

▲ 求一個字串中所有的迴文子串。

對於所有這些問題,你都要能夠推匯出你的方法的時間和空間複雜度,並且儘可能用最低複雜度解決問題。

只有通過大量的練習才能對這些不同型別的問題爛熟於胸,這樣你就能夠在面試時快速給出一個有效的解決方案。

常用的演算法面試準備平臺有 Lintcode、Interview Cake等。

(二)概率與統計

▲ 給出一個群體中男性和女性各自的平均身高,整個群體的平均身高是多少?

▲ 最近一項調查顯示,在義大利1/3的汽車是費拉里斯(法拉利跑車),這其中一半的車都是紅色。那麼如果你在義大利的街頭看到一輛紅色的汽車駛來,請問它是費拉里斯的可能性有多大?

▲ 你想在網站上找到一個最合適的位置放廣告,你可以選擇廣告字型的大小(小號、中號、大號),你也可以選擇廣告放置的位置(頂部、中部、底部)。那麼至少需要多少頁面訪問量(n)和廣告點選量(m),你才能有95%的自信說其中的一個設計比其他設計都好?

很多機器學習演算法以概率論與統計學作為基礎。所以對這些基礎知識有清晰的概念非常重要,同時,你也要能夠將這些抽象的公式與實際聯絡起來。

(三)資料建模和評估

▲ 奶農正試圖瞭解影響牛奶品質的因素。他記錄了每天的氣溫(30-40°C)、溼度(60-90%)、飼料消耗(2000-2500公斤)、牛奶產量(500-1000升)。

  • 假設問題是要預測每天的牛奶產量,你會如何處理資料並建立模型?

  • 這是一個什麼型別的機器學習問題?

▲ 你的公司正在開發一個面部表情識別系統,這個系統接受畫素為1920*1080的高清圖片作為輸入,接收到輸入的圖片後它就能告訴使用者圖片中的人臉處於以下哪種情緒狀態:平常、高興、悲傷、憤怒和恐懼。若圖片中沒有人臉時系統要能夠分辨這種情況。

  • 這屬於什麼型別的機器學習問題?

  • 如果每個畫素點由 3 個值來表示(RGB),那麼輸入資料的原始維度有多大?有辦法降維嗎?

  • 你會如何對系統的輸出進行編碼?為什麼?

▲ 在過去幾個世紀裡蒐集到的氣象資料顯示溫度呈迴圈上升和下降。對於這樣的資料(年平均溫度值序列),你會如何建模來預測未來 5 年的平均氣溫?

▲ 你的工作是收集世界各地的文章,並將來源不同的相似文章整合成一篇文章。你會如何設計這樣一個系統?會用到哪些機器學習技術?

(四)應用機器學習演算法與庫

▲ 你在用一個給定的資料集訓練一個單隱層神經網路時,發現權重在迭代訓練中波動很大(變化巨大,常在正負值間搖擺),你需要調整什麼引數來解決這個問題?

▲ 支援向量機的訓練在本質上是在最優化哪個值?

▲ LASSO 迴歸用 L1-norm 作為懲罰項,而嶺迴歸(Ridge Regression)則使用 L2-norm 作為懲罰項。這兩者哪個更有可能得到一個稀疏(某些項的係數為 0)的模型?

▲ 當測試一個10層神經網路的反向傳播時,你發現前三層的權值完全沒有變化。接下來的幾層(4-6)權值變化的非常緩慢。這是為什麼?該如何解決?

▲ 你現在有一些關於歐洲小麥產出的資料,包括年降雨量(R,英寸),平均高度(A,米)和小麥產量(O,公斤/平方千米)。你經過粗略分析認為小麥產量與降雨量的平方以及平均海報的對數之間存在關係,即: O = β0+ β1 × R2 + β2 × loge(A)。你能使用線性迴歸模型計算出係數(β)嗎?

你可以通過參加一些資料科學和機器學習的比賽來了解各種各樣的問題和它們之間的細微差別。多多參加這些比賽,並嘗試應用不同的機器學習模型。

(五)軟體工程和系統設計

▲ 你在執行一個電子商務網站。當使用者點選商品詳細資訊時,你要根據使用者過去所購商品特徵推薦5個使用者感興趣的商品,同時在頁面底部顯示。為完成這個功能你需要什麼伺服器和資料庫?假設它們是可用的,寫一個程式來獲得這5個推薦商品。

▲ 你會從一個線上視訊播放網站(如YouTube)上搜集什麼資料來估測使用者參與度和視訊人氣度?

▲ 一個非常簡單的垃圾郵件檢測系統工作原理如下:它每次處理一封郵件並統計每個不同單詞出現的頻率(Term frequency),然後將這些頻率與之前被標註為垃圾/正常郵件的那些頻率進行比較。為擴大這一系統處理大量的電子郵件,你能設計一種能在計算機叢集上執行的 Map-Reduce 方案嗎?

▲你想實現使用者實時使用視覺化,就像熱敏圖一樣。為實現這個功能,在客戶端與伺服器端你需要什麼元件/伺服器/API?

六、結語

人工智慧是當下熱門的就業領域,網路上有很多免費的資源可以幫助你快速學習。然而,自學難免會或多或少走上一些彎路。九章演算法《人工智慧集訓營》,精選矽谷IT企業名師,實戰工業界的機器學習專案,並提供模擬面試、簡歷修改、內推等服務,為你一路開黑,拿到頂級offer.

歡迎關注我的微信公眾號:九章演算法(ninechapter)。
精英程式設計師交流社群,定期釋出面試題、面試技巧、求職資訊等
2d09fefd332a1a68bb1c.jpeg

相關文章