如何問出一個應聘者是否真的做過推薦系統?

自我介紹:帝都互聯網小公司數據挖掘工一名,兩年工作經驗,水平最多中等。公司最近準備做推薦系統,讓我負責面試招聘,要求進來就能直接幹活的。可是我對推薦系統只是了解。面試了幾個人,說自己做過推薦系統,在網上找了一些問題問他們,回答的也頭頭是道,可是連續幾個人,回答竟然十分相似,不由懷疑是培訓班出來的,不敢招。請問有什麼辦法能夠很快看出一個人是否真的做過推薦系統呢?常規的問題網上太多了,感覺已經沒有區分度了。希望各路大神支支招!


理論的東西不管問多少,都是紙上談兵。

2000年時候,Linus Torvalds提出了一個方法,我深以為然,一直用來面試程序員:

Talk is cheap. Show me the code.

thread creation is about a thousand times faster than onnative


畫構架圖

沒做過的人畫出來是(a)這樣的。做過的人畫出來是(b)這樣的 (按情況會有修改)

細細的扣一下每個部分幹嘛,計算集群這個部分什麼內容,為什麼要這麼弄,自然就看出來了

當然,有些大公司比較細分的業務組,比如微軟等,在演算法方面做的比較深,可能做很多年都不會碰到構架,所以可能會誤傷,可以酌情調整標準


1. 演算法細節還是要問的

2. 效果評價

3. 如何克服「哈利波特」現象

4. 推薦結果的排序如何優化

5. 演算法優化,一般好的推薦系統,是要綜合運用多種手段才能達到好的推薦效果,很難一蹴而就,很難一個演算法搞定。我曾經做過一個推薦系統,剛開始就遇到歧異詞問題;後來又遇到排序問題


本人在大型互聯網中從事推薦系統開發將近三年工作經驗。不知道樓主招的是演算法崗還是工程崗。一般大型互聯網公司整個推薦系統需要兩種技術人員,一類是演算法工程師,一類是系統工程師。由於我是系統工程師,所以只能回答樓主關於工程的一些問題。

一般的推薦系統可以分為三部分,線上部分、線下部分以及近實時部分,當然還有其他支撐系統方面,包括:效果跟蹤、效果監控,實驗對比等

一:線下部分

線下部分主要的工作內容是:

由於演算法工程師需要挖取大量的關於用戶以及其他方面的特徵(幾百維數據),因此主要包括以下幾個問題

  • 如何存儲這些數據,存儲介質是什麼?如何做緩存?
  • 如何保證線上快速的取數據?
  • 如何對這些數據進行監控,保證在出現問題的時候(寫入失敗)能夠及時報警?

二:近實時部分

近實時部分主要是如果一個用戶實時產生了一些行為,如何將這個行為很快的體現在推薦結果中?以及如何能夠將實時行為反應到模型上?如何反映到模型上目前很多有能力的公司正在嘗試實驗,通過這些可以反映應聘者是否真的關心業界動態。

三:線上部分

線上部分考察的很多。如果是系統工程師可以考察的方面包括

  1. 系統運維情況。包括整個系統的QPS,平均耗時,吞吐量等
  2. 系統的整個架構。一般推薦系統包括召回和排序。其中很重要一個考察點是如何解決系統I/O型任務之間的並發。
  3. 系統的緩存以及性能優化
  4. jvm調優等
  5. 如何進行線上a/btest 實驗的

推薦系統是一個不斷優化的工程,所有複雜的性能優的系統不是一蹴而就的,是在平時不斷的解決演算法人員的痛點,提高工程師開發效率中不斷完善的。


推薦系統還是比較複雜的,包括了數據,架構和演算法知識。大公司一般會把人才分得很細,包括演算法崗,負責推薦演算法策略;工程崗,負責推薦系統後台服務的開發迭代;數據崗,各種日誌數據的計算處理,如清洗、統計分析等,有時這部分工作也交有演算法崗人員完成。

推薦系統可以簡單做,也可以深入做。

可以從以下幾個方面去判斷他是否真的做過推薦系統:

(1)數據。一是埋點數據,如和設計曝光埋點、點擊埋點等,最終的效果評價和模型訓練都依賴於埋點。二是效果數據,推薦系統效果如何評估,有哪些指標,候選人曾設計的推薦系統效果數據如何。當然了,一個簡單的推薦系統可能壓根就沒有埋點,最終也無法評價推薦系統的效果。數據是推薦系統之根本,如果不關心數據的人,還是不要了吧。

(2)系統。簡單的推薦系統是離線計算一堆結果,例如由演算法人員計算出的協同過濾結果、用戶tag、熱門數據、關聯規則等(這些其實只能算召回),然後導入到kv系統如redis中,線上服務去讀取結果數據,最後基於一些規則返回給客戶端。複雜一點的推薦系統包含召回和排序兩個階段,排序指對召回的結果,做機器學習排序,目標是優化最終的轉化率。最重要的一點,系統需支持abtest,每次策略的迭代都是拿數據好壞說話。圍繞這些功能模塊,如何把系統做得通用,擴展性好,又是一個話題了,這裡不做描述。

(3)演算法。推薦圍繞召回和排序有很多演算法,這塊的資料很多,樓主做數據挖掘,這方面應該算比較明了了。重要是其實踐的演算法的效果如何,不同場景的差別,候選者需要明了。

總之,推薦系統是一個複雜的工程,圍繞這幾方面可以做各種細緻的考察。


http://chinese.joelonsoftware.com/Articles/TheJoelTest.html

都達到了是cmm3的級別 國內算一流了


你沒做過,不可能面的出來的。

自己多做做,把自己遇到的問題總結了去問不就是了。面試哪有golden feature。

進來馬上就能幹活的人三句話就能聽出來你不懂,你給offer也不會來的。幹活最煩的就是外行領導內行。

真正的面試永遠不是問答,而是根據一個問題聊天式的展開,互相聊踩過的坑。面試不是單方面的,而是雙向選擇。


20170514

卧槽,今天從某知乎大V里看到個X智社區,裡面有個《AI實戰訓練營-周末精品班》,居然真的有推薦系統培訓班!

我錯了...

==================================

頭一回聽說有培訓班培訓這個...

就問踩過啥坑,沒有一把鼻涕一把淚地跟你說心酸往事的,就多半是沒有實戰經驗的了。


這樣問他:

樣本數據怎麼採集的?

做訓練的數據量有多大?

一次訓練需要多長時間?集群配置如何?

模型離線評測指標有什麼,效果如何?


自己都沒做過,去面別人?建議負責任地推掉這倒霉差事。


google 有個 cross sale的演算法系統,是不是有可能直接用API調用他的結果應用在網站上?


推薦閱讀:

kaggle案例:員工離職預測
打字習慣匹配(Typing Pattern Recognition)有什麼好的演算法實現?
絕對收藏!民生銀行用戶畫像建設分享30頁PPT放送
聊聊傳統演算法系統與機器學習系統的一點不同

TAG:數據挖掘 | 機器學習 | 推薦系統 | 大數據 |