面試經驗分享之機器學習、大數據問題

jopen 10年前發布 | 39K 次閱讀 機器學習

自己的專業方向是機器學習、數據挖掘,就業意向是互聯網行業與本專業相關的工作崗位。各個企業對這類崗位的命名可能有所不同,比如數據挖掘/自然語言 處理/機器學習算法工程師,或簡稱算法工程師,還有的稱為搜索/推薦算法工程師,甚至有的并入后臺工程師的范疇,視崗位具體要求而定。

機器學習、大數據相關崗位的職責

自己參與面試的提供算法崗位的公司有 BAT、小米、360、飛維美地、宜信、猿題庫 等,根據業務的不同,崗位職責大概分為:

  1. 平臺搭建類

    • 數據計算平臺搭建,基礎算法實現,當然,要求支持大樣本量、高維度數據,所以可能還需要底層開發、并行計算、分布式計算等方面的知識;
    • </ul> </li>

    • 算法研究類

      • 文本挖掘,如領域知識圖譜構建、垃圾短信過濾等;
      • 推薦,廣告推薦、APP 推薦、題目推薦、新聞推薦等;
      • 排序,搜索結果排序、廣告排序等;
      • 廣告投放效果分析;
      • 互聯網信用評價;
      • 圖像識別、理解。
      • </ul> </li>

      • 數據挖掘類

        • 商業智能,如統計報表;
        • 用戶體驗分析,預測流失用戶。
        • </ul> </li> </ol>

          以上是根據本人求職季有限的接觸所做的總結。有的應用方向比較成熟,業界有足夠的技術積累,比如搜索、推薦,也有的方向還有很多開放性問題等待探 索,比如互聯網金融、互聯網教育。在面試的過程中,一方面要盡力向企業展現自己的能力,另一方面也是在增進對行業發展現狀與未來趨勢的理解,特別是可以從一些剛起步的企業和團隊那里,了解到一些有價值的一手問題。

          以下首先介紹面試中遇到的一些真實問題,然后談一談答題和面試準備上的建議。

          面試問題

          1. 你在研究/項目/實習經歷中主要用過哪些機器學習/數據挖掘的算法?
          2. 你熟悉的機器學習/數據挖掘算法主要有哪些?
          3. 你用過哪些機器學習/數據挖掘工具或框架?
          4. 基礎知識

            • 無監督和有監督算法的區別?
            • SVM 的推導,特性?多分類怎么處理?
            • LR 的推導,特性?
            • 決策樹的特性?
            • SVM、LR、決策樹的對比?
            • GBDT 和 決策森林 的區別?
            • 如何判斷函數凸或非凸?
            • 解釋對偶的概念。
            • 如何進行特征選擇?
            • 為什么會產生過擬合,有哪些方法可以預防或克服過擬合?
            • 介紹卷積神經網絡,和 DBN 有什么區別?
            • 采用 EM 算法求解的模型有哪些,為什么不用牛頓法或梯度下降法?
            • 用 EM 算法推導解釋 Kmeans。
            • 用過哪些聚類算法,解釋密度聚類算法。
            • 聚類算法中的距離度量有哪些?
            • 如何進行實體識別?
            • 解釋貝葉斯公式和樸素貝葉斯分類。
            • 寫一個 Hadoop 版本的 wordcount。
            • ……
            • </ul> </li>

            • 開放問題

              • 給你公司內部群組的聊天記錄,怎樣區分出主管和員工?
              • 如何評估網站內容的真實性(針對代刷、作弊類)?
              • 深度學習在推薦系統上可能有怎樣的發揮?
              • 路段平均車速反映了路況,在道路上布控采集車輛速度,如何對路況做出合理估計?采集數據中的異常值如何處理?
              • 如何根據語料計算兩個詞詞義的相似度?
              • 在百度貼吧里發布 APP 廣告,問推薦策略?
              • 如何判斷自己實現的 LR、Kmeans 算法是否正確?
              • 100億數字,怎么統計前100大的?
              • ……
              • </ul> </li> </ol>

                答題思路

                1. 用過什么算法?

                  • 最好是在項目/實習的大數據場景里用過,比如推薦里用過 CF、LR,分類里用過 SVM、GBDT;
                  • 一般用法是什么,是不是自己實現的,有什么比較知名的實現,使用過程中踩過哪些坑;
                  • 優缺點分析。
                  • </ul> </li>

                  • 熟悉的算法有哪些?

                    • 基礎算法要多說,其它算法要挑熟悉程度高的說,不光列舉算法,也適當說說應用場合;
                    • 面試官和你的研究方向可能不匹配,不過在基礎算法上你們還是有很多共同語言的,你說得太高大上可能效果并不好,一方面面試官還是要問基礎的,另一方面一旦面試官突發奇想讓你給他講解高大上的內容,而你只是泛泛的了解,那就傻叉了。
                    • </ul> </li>

                    • 用過哪些框架/算法包?

                      • 主流的分布式框架如 Hadoop,Spark,Graphlab,Parameter Server 等擇一或多使用了解;
                      • 通用算法包,如 mahout,scikit,weka 等;
                      • 專用算法包,如 opencv,theano,torch7,ICTCLAS 等。
                      • </ul> </li>

                      • 基礎知識

                        • 個人感覺高頻話題是 SVM、LR、決策樹(決策森林)和聚類算法,要重點準備;
                        • 算法要從以下幾個方面來掌握

                          • 產生背景,適用場合(數據規模,特征維度,是否有 Online 算法,離散/連續特征處理等角度);
                          • 原理推導(最大間隔,軟間隔,對偶);
                          • 求解方法(隨機梯度下降、擬牛頓法等優化算法);
                          • 優缺點,相關改進;
                          • 和其他基本方法的對比;
                          • </ul> </li>

                          • 不能停留在能看懂的程度,還要

                            • 對知識進行結構化整理,比如撰寫自己的 cheet sheet,我覺得面試是在有限時間內向面試官輸出自己知識的過程,如果僅僅是在面試現場才開始調動知識、組織表達,總還是不如系統的梳理準備;
                            • 從面試官的角度多問自己一些問題,通過查找資料總結出全面的解答,比如如何預防或克服過擬合。
                            • </ul> </li> </ul> </li>

                            • 開放問題

                              • 由于問題具有綜合性和開放性,所以不僅僅考察對算法的了解,還需要足夠的實戰經驗作基礎;
                              • 先不要考慮完善性或可實現性,調動你的一切知識儲備和經驗儲備去設計,有多少說多少,想到什么說什么,方案都是在你和面試官討論的過程里逐步完善的,不過面試官有兩種風格:引導你思考考慮不周之處 or 指責你沒有考慮到某些情況,遇到后者的話還請注意靈活調整答題策略;
                              • 和同學朋友開展討論,可以從上一節列出的問題開始。
                              • </ul> </li> </ol>

                                準備建議

                                1. 基礎算法復習兩條線

                                  • 材料閱讀包括經典教材(比如 PRML,模式分類)、網上系列博客(比如 研究者July),系統梳理基礎算法知識;
                                  • 面試反饋面試過程中會讓你發現自己的薄弱環節和知識盲區,把這些問題記錄下來,在下一次面試前搞懂搞透。
                                  • </ul> </li>

                                  • 除算法知識,還應適當掌握一些系統架構方面的知識,可以從網上分享的阿里、京東、新浪微博等的架構介紹 PPT 入手,也可以從 Hadoop、Spark 等的設計實現切入。
                                  • 如果真的是以就業為導向就要在平時注意實戰經驗的積累,在科研項目、實習、比賽(Kaggle,Netflix,天貓大數據競賽等)中摸清算法特性、熟悉相關工具與模塊的使用。
                                  • </ol>

                                    總結

                                    如今,好多機器學習、數據挖掘的知識都逐漸成為常識,要想在競爭中脫穎而出,就必須做到

                                    • 保持學習熱情,關心熱點;
                                    • 深入學習,會用,也要理解;
                                    • 在實戰中歷練總結;
                                    • 積極參加學術界、業界的講座分享,向牛人學習,與他人討論。
                                    • </ul>

                                      最后,希望自己的求職季經驗總結能給大家帶來有益的啟發。

                                      </div>
                                      來源:酷勤網  作者:Blog of 太極雪

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!