資料科學家面試大揭密

ricky chang
Data Scientists Playground
10 min readSep 8, 2020

在新公司也待三個月,一直想找個時間把之前面試的經過紀錄一下,從年初就開始陸續有在投履歷,但可能因為在前公司主要都是做語意理解和語音辨識等深度學習演算法研究,所以一開始投的資料科學家職缺全部無聲卡,過程當中也會感到非常沮喪,後來其實就是定期重新審視履歷,並試著把自己的專長想辦法融入該份職缺中,以下會分享一些比較印象深刻的面試過程,並整理一些自己的心得

面試經歷

  1. Whoscall — machine learning engineer

一開始先進來兩個工程師,自我介紹完,白板題考費氏數列,用遞回寫出來後並交代一些可能會有的問題,但那時完全沒想到有什麼優化的寫法,過程中工程師提示說可以利用 swap 的概念,把加總過的就不用存著( 考完這題後真的下定決心要好好刷 leetcode )。接著問一些履歷細部的問題,像是 ETL 的實作,ELK 的使用,接著來了一個 backend 大主管跟資深工程師,問的問題主要偏生涯規劃,例如遇到最有成就感跟最挫折的事情,然後開始介紹組織架構,面談中感覺大主管思路很清晰,過程有問說如果你要做分析,你覺得 whoscall 還可以做什麼,我回答說利用使用者接過電話的一些 profile,做一些 tagging,最後可以用在廣告(剛好主管說他們其實有想過),最後有講到公司主要的服務都是用雲端服務,資料主要放在 data warehouse,目前團隊有使用 Jupyter Lab 和 zepellin 都可以直接從那邊拉資料,所以如果相關負責人不在,其他人也可以很快速的上手。

面試前除了一些基本概念外,也要研究一下公司的產品,想一下可以從哪些分析切入。另外整個 data team 是怎樣的合作,大家平常會不會有交流,做出來的分析和 query 都是怎樣儲存,怎麼快速查找,都是我會詢問的部分。

2. Ikala — AI & chatbot engineer

和主管電話面試,先五分鐘自我介紹,講到以前在進行語意理解並有設計 API,主要使用 flask,部署在 Azure VM,然後有使用 Load balance service,另外有使用 ELK 去收語意對話的 log,接著講到演算法架構,一開始先做分類,主要分成一般問答或情境問答,一般問答就是一問一答的部分,情境問答則會考慮上下文的部分,例如:訂餐廳,後來提到現在主要在負責語音辨識的部分。

接著主管介紹主要產品 — Shoplus,主要分成兩個部分,一是訂單管理的部分,主要會是給賣家使用,另外一個主要會是負責 chatbot 的部分(這邊用 rails 開發),目前感覺使用到頂多是 slot filling 部分,像是目前有針對地址做抓取,然後可能還要去研究 facebook bot or Line bot api,除了純文字還必須要會使用其他 template,目前語意理解的部分,大部分都還是用簡單的 rule based,不使用 dialogflow 主要原因是支援越南語,而且目前的情境也沒那麼複雜(目前不需要考慮上下文),可能會需要訓練一些模型,但都是比較小的部分,如果是比較大型模型應用,公司有專門的 AI team,會請他們協助。目前業務主要是越南、泰國,現在整個團隊就只有一個人負責,有時候也必須做一些資料分析,像是 facebook 直播主賣商品的時候,會去爬下面的留言,去知道說哪些人有購買意願。

因為這個產品還很新,感覺是需要通才型的人,必須什麼都要會一些,快速的把服務接上,所以在這邊做的事情就會很廣,如果是在大公司大多就會是比較特定領域的專才,必須抉擇自己喜歡哪一種模式。

3. Shopback — search engineer

一開始是投新加坡 data scientist 但被那邊人資轉給台灣,本來一開始是拒絕這個職缺,因為跟自己的專業差很多,後來人資打電話來介紹說這個缺其實很大部分在做資料分析,第一關是回家作業,主要是跟一些語意處理有關(例如使用 API 得到一段新聞,接著做前處理並斷詞斷句,最後計算每篇新聞相似度),但其實都是要你使用套件(感覺只是要你懂套件提供的參數到底代表什麼),第二關是跟主管電話面試,除了討論作業外,還有問一些像是目前常用的搜尋演算法以及存在哪些問題並如何改善,最後也有問說如果要自己實作一個斷詞斷句的工具應該怎麼實作,接著主管介紹這個組主要提供搜尋的功能,目前先在台灣啟用,主要整合各電商的搜尋結果,必須做一些 NLP 的分析,另外是比價功能的友善化(例如搜尋 iphone11,把手機放在一起,殼放在一起,讓用戶一目瞭然很好去做比價),最後是針對用戶去做推薦。主管有提到說如果之後有 on-site interview 的話,可能要做的投影片針對之前做過的專案做更細部的介紹,所以在收到最後 on-site interview 的通知後,我也一直在思考除了專案的介紹外,還可以加入哪些內容,同時也會想如果之後去做資料相關的工作,之前的深度學習相關經歷還會被承認嗎?是不是有辦法可以把這兩者完美結合?後來參考一些文章後想到一個很適合的應用 — 情感搜尋,因為傳統搜尋引擎只考慮字出現次數和把一些常出現的停用詞分數調降,利用這樣的演算法去搜尋最相似的結果,但這樣的演算法無法解決一些語意的問題,在試用完他們的搜尋引擎後發現了一些問題。

第一次搜尋
再次搜尋

當使用者搜尋「東京 行程」,希望結果列出所有旅遊行程網站所提供的行程,卻發現結果寥寥可數,但若更換搜尋詞「東京 行程 KLOOK」,就得到所有相關行程,但如果要使用者加上各旅遊行程網站一起搜尋就太不方便,這可能是因為在比較搜尋句子和文檔相似度時,因為該文檔內文只包含東京和 KLOOK,所以當第一次搜尋「東京 行程」時,因為相似度過低,所以沒有被挑選,而我也提出二個方法來改善上述的問題。

詞向量距離

在進行語意任務時,會將句子斷詞斷句並轉成向量,當詞嵌入模型訓練得當時,整個模型可以學到語意關係,透過將搜尋演算法改成詞向量間距離的加總,這樣就可以同時考慮到語意關係。

同義詞產生

利用一些套件自動產生出同義詞,增加搜尋到正確答案的機會,例如前面搜尋的「東京 行程」,可以透過套件將行程的同義詞產生出來「行程、旅遊、景點」。

如果覺得背景不是這麼相關,盡量找出自己優勢與該份職缺的最大關聯

後記: 其實在與主管電話面試時主管提到說這個職位算是在後端團隊,那時就覺得自己的後端能力不足,但與主管確認後,是可以主要從事模型研究,然後寫個簡單的 API 讓同事可以使用該 API,到了 on-site interview 當天,看到第一個問題( 心涼了一半),是要設計一個縮網址的 API ,包含必須開幾個 API 及資料表欄位設計,如果需要負載平衡該怎麼設計,過程中腦袋常常一片空白,常常主管問完問題,我完全答不出來( 最怕空氣突然安靜)……,當天大概只有我在報告情感搜尋那部份的時候,才得到三位主管肯定的眼神。面試後跟朋友吃飯的時候,都還是覺得身體還在微微顫抖,因為真的沒有那麼尷尬過,但現在回想起來也是個不錯的歷練。

4. Synergies — data scientist

進到辦公室感覺公司普遍都蠻年輕的,是跟一個資深的資料科學家面談,大致上也是介紹自己做過的專案,然後過程中可能會詢問一些比較細部的技術,公司主要業務有一部分是接案,所以每個資深的資料科學家會主導一個或多個案子,領域也橫跨銀行、科技業……等等。有提到之後會有一個輔助企業的決策平台,但目前架構階段還不需要資料科學家加入,等到建構完可能就會需要語音辨識和語意理解的人力。

5. Snapask — data scientist

一面的時候是跟公司兩位資料科學家視訊面試,問題大概都是一些之前做過的專案成效的指標怎麼定義,演算法的選用邏輯,一些基本機器學習模型比較,二面的時候分成三關,第一關是筆試,當拿到題目的時候,其實蠻開心的( 終於有一份是真的考跟資料相關,不是 leetcode 相關的考卷),題目算蠻簡單,就是一些演算法優劣,還有一些 SQL 語法。第二關是跟之前的兩個資料科學家做更深入的面談,一開始介紹公司主要分成三個產品,第一個是目前的主力產品就是 Snapask APP,主要是做老師和學生的媒合,學生可以利用拍照、語音等把不會的題目上傳,及時幫他配對老師解題,第二個是 sofasoda,主要是針對新鮮人的一些軟實力的課程,第三個主要是跟學校合作,讓老師可以上傳考卷,提供一些學生的學習成效報告給老師,讓老師可以動態的調整他的教學內容。第二關的討論主要著重在你是否可以把一些模型用很直白的方式跟其他人溝通,另外就是你對目前公司的產品有什麼想法。第三關是英文自我介紹,然後跟一些之後可能會一起合作的工程師聊聊,可能每個人會問一兩個問題,然後再跟大主管聊聊,談一些你的生涯規劃,為何會離職……等等。最後也很幸運的錄取了,當下真的蠻感動的。

以我自己在挑選新創的時候,第一個會去看活躍用戶到底有多少,第二個則是募資的狀況,所以那時候在搜尋時就發現 Snapask 有三百萬以上的活躍用戶,然後也才剛拿到新一輪的募資,另外就是商業模式也很成熟了,不會像一些可能免費使用的 APP,擁有了大量活躍使用者,但在怎麼轉成營收方面,卻像難解之謎。

給新鮮人的建議

  1. 身為資料科學家,發現問題是很重要的能力,因此如果沒有工作經驗的新鮮人,建議去參加像是 D4SG 資料英雄計畫,或者是一些 hackthon,拿到一份真實資料,並試著從資料中自己去定義問題,比起 kaggle,這種計畫更貼近真實情境,因為你在比 kaggle 的時候,問題都是已經定義好的,但在工作中,卻常常是自己要去發現問題並分析,另外在模型選用上我覺得不一定要全部理解數學公式,但一些優缺點,參數的意思至少要可以講得出來,而不是當你問求職者為啥要用 xgboost 時,他回答因為看 kaggle 比賽這好像是勝利的起手式
  2. 自從被 <<哈佛商業評論>> 選為二十一世紀最性感的職業,從那時就有很多人也想擠身這個職業,但會不會進去之後才發現怎麼每天都在出報表(心想怎麼現實跟理想差距那麼大),可能有一些大公司你可以專注在做模型,但以在一般新創,常常是需要比較通才型的資料科學家,一開始可能必須碰到比較多資料流的建立,當整個資料流建好之後,則是可能會出一些基本的營運報表,等到整個業務穩定之後,也才比較有時間去做一些建模或分析(ex: 顧客轉換率預測、用戶貼標……等等),所以可能要認真思考為何想當資料科學家,是真的熱愛資料,還是只是單純看文章覺得這個職業很夢幻?

自肥宣傳

最後想要分享一個服務給大家,常常我們在轉職的時候都會面臨一些抉擇與困惑,就像當初我自己在想說從深度學習領域回到資料領域,到底這樣的資歷是否可以累積,又或者在投了數十封履歷後還是渺無音訊,頂多就找找身邊好友幫你順順稿,但這時如果有一個人生導師可以指引你方向,少走冤枉路,應該有很大的幫助。目前網羅了各大外商公司的導師,例如: Facebook、Google、 Gitlab、 Grab,雖然目前顧問主要從事設計、產品管理等領域,未來也會多增加資料相關的導師,但也還是有幾位資料相關領域的導師,之後也會自己試用,和 Dcard data engineer 導師諮詢,再分享心得給大家。

--

--