歡迎光臨
每天分享高質量文章

6大角度擊破資料科學面試套路!助你找到理想工作

作者:Andrei Lyskov;翻譯:李潔;校對:丁楠雅

本文約5000字,建議閱讀10+分鐘。

本文拆解資料科學工作的一般面試考察方式,為你分析面試工作時的準備及技巧。

 

簡介

2012年,《哈佛商業評論》宣佈資料科學將成為21世紀最性感的工作。從那以後,圍繞資料科學的炒作一直呈增長趨勢。最近的報告顯示,對資料科學家的需求遠遠超過供應量。

然而,現實是,這些工作大多是為那些已經有經驗的人準備的。另一方面, 由於供應/需求的動態變化,入門級的資料科學工作競爭非常激烈。資料科學家來自從社會科學到傳統的電腦科學等各種背景。許多人還將資料科學視為一個重塑自我的機會,這導致大量希望獲得資料科學家作為第一個角色標簽的人湧入該領域。

更複雜的是,與具有更標準化面試流程的軟體開發職位不同,資料科學面試可能會有很大的多樣性。這部分是因為作為一個新興行業,資料科學家的定義依然沒有達成共識。Airbnb認識到了這一點,並決定將他們的資料科學家分為三個方向:演演算法,推理分析

https://www.linkedin.com/pulse/one-data-science-job-doesnt-fit-all-elena-grewal/

 

因此,在開始尋找一份工作之前,確定什麼方面的資料科學對你來說有吸引力很重要。根據你對此問題的回答,你學習的內容和將被問到的問題會有所不同。儘管型別不同,一般來說,他們會遵循一個類似的面試流程,只是提出的具體問題可能會有所不同。

在本文中,我們將探討在面試過程的每個步驟中會發生什麼,以及一些提示和準備方法。如果你正在尋找可能在面試中出現的資料科學問題清單,你可以考慮閱讀以下兩篇文章:

https://towardsdatascience.com/data-science-interview-guide-4ee9f5dc778

https://www.analyticsvidhya.com/blog/2018/06/comprehensive-data-science-machine-learning-interview-guide/

一、程式設計能力考查

程式設計能力考查的範圍可以從簡單的Fizzbuzz問題到更複雜的問題,例如從混亂的資料中構建時間序列預測模型。根據問題的複雜程度,答題時間限定在30分鐘到一週不等。這些考查可以在HackerRank,CoderByte等網站上進行。

通常情況下,考官會用一份已經寫好的測試樣例來判斷你是否透過考試。判斷標準通常會既考慮正確性也考慮複雜性(例如執行程式碼需要多長時間)。如果考官沒有提供測試樣例,那麼你應該編寫自己的測試樣例。對於資料科學的程式設計能力考查來說,你甚至可能會遇到統計學的多項選擇問題,因此請務必詢問你的考官你將會被考查哪些方面的內容。

當你解答考題的時候,請務必牢記公司並不總是在尋找“正確”的解決方案。他們也可能在尋找程式碼可讀性,良好的設計,甚至是特定的最佳解決方案。因此,不要主觀判斷考查結果,即使透過了所有測試用例,你也有可能沒有進入下一階段的面試流程。

  • 準備

  1. 練習Leetcode上(https://leetcode.com/)的SQL問題和傳統的資料結構/演演算法問題。

  2. 複習Brilliant上(https://brilliant.org/)的數學和統計問題。

  3. SQL Zoo(https://sqlzoo.net/)和Mode Analytics(https://mode.com/sql-tutorial/introduction-to-sql/)都提供了可以各種可以在你自己瀏覽器中解決的SQL練習。

  •  提示

  1. 在開始寫程式碼之前,通讀所有問題。這一過程可以讓你的潛意識開始處理問題。

  2. 從最困難的問題開始,當你遇到障礙時,先轉向更簡單的問題。

  3. 專註於先透過所有測試用例,然後考慮降低複雜度和提高可讀性。

  4. 如果你已經完成並且還剩下幾分鐘,就去喝點東西並試著理清思路。最後一次通讀你的答案,然後提交。

  5. 沒有寫完程式碼也沒關係。有時公司會給你一個不合理的繁瑣的程式設計試題,需要一週的時間然而卻要求你在5-10個小時之內完成。假如你真的絕望了,你隨時可以離開,把時間用來準備下一個面試。

 

二、HR的篩選

HR的篩選包括行為方面的問題,要求你解釋簡歷總的某些部分,比如為什麼你想申請這家公司,以及你可能在工作中遇到過的特殊情況的例子。偶爾你可能會被問到幾個簡單的技術問題,也許是一個SQL或一個基礎的電腦科學理論問題。之後,你將有幾分鐘時間提出自己的問題。

請記住,與你交談的人不太可能是技術人員,因此他們可能不太深入瞭解組織的崗位或技術方面。考慮到這一點,嘗試將你的問題集中在公司、那裡人員的履歷以及面試流程等後勤問題上。如果你有他們無法回答的具體問題,你可以隨時要求招聘人員將你的問題轉給能夠回答的人。

記住,面試是雙向的,所以在花更多的時間去面試這家公司之前,你最好先識別一下是否有問題存在。

  • 準備

  1. 閱讀崗位描述和公司描述。

  2. 查詢你將要面對的面試官的資訊,並嘗試尋找你們之間的共通點。也許你們都在一個特定的城市工作過,或者在類似的非營利組織做過志願者。

  3. 在接聽電話之前瀏覽一遍你的簡歷。

  • 提示

  1. 準備好相關問題之後再開始。

  2. 讓你的簡歷內容保持清晰。

  3. 找一個安靜的空間來參加面試。如果不可能,請重新安排面試時間。

  4. 專註於在通話的前幾分鐘建立融洽關係。如果招聘人員想花幾分鐘談論昨晚的籃球比賽,那就隨他們吧。

  5. 不要說你現在或過去的公司的壞話。即使你工作的地方很糟糕,它也會讓你有所受益。

三、技術電話面試

在面試的這個階段,你將有機會接受團隊的一位技術人員的面試。諸如此類的電話面試通常使用Coderpad(https://coderpad.io/)等平臺進行,平臺包括程式碼編輯器以及執行程式碼的方法。有時可能會要求你在Google檔案中編寫程式碼。因此,你需要在沒有語法突出顯示或程式碼完備的情況下完成程式設計。語言方面,通常會要求你用Python和SQL,但是這可能會因你面試的崗位和公司而異。

這個階段的問題可能很複雜,從使用Windows函式解決的簡單SQL問題到涉及動態規劃的問題。無論難度如何,你都應該在開始程式設計之前提出澄清性的問題。 一旦你對問題和期望有了充分的瞭解,就從做一個有效解決方案開始,這樣你至少可以處理一些東西。但是,在考慮最佳化之前,務必告訴面試官你首先會以非最佳的方式解決問題。在你有成果之後,開始最佳化你的答案並使你的程式碼更具可讀性。在整個過程中,描述你的方法是很有幫助的,因為面試官偶爾可能會幫助引導你正確的方向。

如果你在面試的結尾有幾分鐘的時間,請充分利用你正在與團隊的技術人員交流的機會。向他們詢問程式設計的標準和流程,團隊如何處理工作以及他們的日常工作。

  • 準備

  1. 如果你將要面試的資料科學職位是工程組織的部分,請務必閱讀《破解編碼面試》(https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850)和《程式設計訪談要素》(https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836),因為你可能需要有軟體工程師來諮詢技術面試的內容。

  2. 抽認卡通常是複習可能在此階段出現的機器學習理論的最佳方式。 你可以自己製作或購買此套裝(https://machinelearningflashcards.com/),價格為12美元。 機器學習備忘單(https://ml-cheatsheet.readthedocs.io/en/latest/)也是一個很好的複習資源。

  3. 檢視Glassdoor,瞭解可能出現的問題型別。

  4. 研究誰將面試你。擁有博士學位的機器學習工程師將以不同於資料分析師的方式進行面試。

  • 提示

  1. 如果你遇到困難,可以尋求幫助。

  2. 與朋友一起練習模擬技術電話面試或使用interviewing.io(http://www.interviewing.io/)等平臺。

  3. 在開始解決問題之前,不要害怕要求一兩分鐘的時間思考問題。 一旦你確定開始,透過你的方法來跟隨面試官的思路是很重要的。

 

四、作業專案

作業專案在資料科學面試中越來越受歡迎,因為它們往往與你開始工作後將要做的事情有更緊密的聯絡。這一過程一般設定在技術面試之前、第一輪HR篩選之後,或者作為現場面試的可交付物。公司可能會測試你的處理模糊性的能力(例如,給定一個資料集,找到一些趨勢或和業務利益相關的地方)或關註更具體的可交付成果(例如,給定一些資料,構建一個分類器)。

如果可能的話,嘗試提出宣告性的問題以確定你知道他們正在測試你的內容以及你的受眾群體。如果你的作業專案的受眾是商業利益相關者,那麼填滿幻燈片的技術術語並不是一個好主意。取而代之的,把重點放在表述可操作性的見解和建議,並給出技術術語的附錄。

雖然所有作業專案可能在標的上有所不同,但共同點是你將收到公司的資料。 因此,無論他們要求你做什麼,第一步始終是探索性的資料分析。幸運的是,有一些自動的EDA解決方案,如SpeedML(https://speedml.com/automate-exploratory-data-analysis/)。 你需要做的主要是研究資料的特殊性。通常情況下,公司已經合成地生成資料,留下特定的“複活節彩蛋”供你查詢(例如,以客戶收入為基礎的電力分配法)。

完成作業之後,你可以試著從朋友或導師那裡得到一些反饋意見。通常,如果你在一個作業工作了足夠長的時間,你可能會專註於細節而忽略整體,所以從一個不知道具體細節的人那裡得到反饋總是很好的。

  • 準備

  1. 練習“作業”測試,你可以從datamasked網站購買,也可以檢視Github上repo裡的沒有問題的答案。

  2. 複習可能有助於你的工作的庫和工具。例如,用於快速資料視覺化的SpeedML或Tableau。

  • 提示

  1. 有些公司會需要你郵件給他們以獲取更多資訊的專案,因此不要害怕與他們聯絡!

  2. 一個好的作業專案往往可以抵消現場面試的任何不良表現。理由是,儘管你不知道如何解決一個特定的面試問題,但你已經證明你有能力解決他們每天可能遇到的問題。因此,如果需要再刷更多LEETCODE的問題和改進你的現場簡報之間做出選擇的話,後者更值得重視。

  3. 確保儲存你所做的每個現場測試。你永遠不知道在將來的測試中何時需要重用其中的某一元件。

  4. 只要你可以陳述完整,你也可以做假設。在資訊不對稱的給定情況下,最好做一個假設,而不是不斷地用問題轟炸你的招聘人員。

 

五、現場面試

現場面試將包括一整天的一系列面試,包括一個午餐面試,通常用於評估你的“文化適應性”。

重要的是要記住,任何讓你進入這個階段的公司都希望看到你成功透過面試。 他們已經花了大量的金錢和時間來面試候選人並將其範圍縮小到現場面試的規模,所以你要對你的能力有點信心!

務必向你的招聘人員索要一份將會面試你的人員名單,以便你有機會事先做一些研究準備。如果你將要和一個經理進行面試,你應該專註於準備更高層次的問題,例如公司戰略和文化。另一方面,如果你將要與軟體工程師進行面試,他們可能會要求你編寫展示一個程式設計問題。如前所述,面試官的背景將影響他們會問的問題型別。

  • 準備

  1. 盡可能多地閱讀有關這個公司的資訊。公司網站,CrunchBase,維基百科,最近的新聞文章,Blind,Glassdoor等,都是資訊收集的重要資源。

  2. 與朋友進行一些模擬面試,他們可以就你可能展示的任何不順暢或者答案漏洞給你反饋。如果你將在現場提供帶回家的簡報,這將特別有用。

  3. 準備好常見的行為面試問題的故事,例如“介紹一下你自己”,“為什麼選擇這家公司”,“講一講你必須與不好相處的同事打交道的一次經歷”。

  4. 如果在現場面試環節中有任何軟體工程師,那麼這是一個刷資料結構和演演算法的好機會。

  • 提示

  1. 不要太嚴肅。這些面試官中的大多數人更願意回到他們的辦公桌前解決他們被分配的專案。因此,儘量為面試官帶來愉快的體驗。

  2. 確保穿著到位。如果你在東海岸的財富500強公司中進行面試,那麼你可能需要穿得比在西海岸面試一家創業公司更加保守。

  3. 利用浴室和淋浴間歇來重振自己。

  4. 提出你真正感興趣的問題。你正在面試公司,就像他們正在面試你一樣。

  5. 在現場面試後給所有招聘人員和招聘經理髮送簡短的感謝信。

 

六、錄用和協商

與許多人進行協商可能聽起來很不舒服,特別是那些沒有過工作經驗的人。然而,現實情況是,協商幾乎沒有任何不利因素(只要你有禮貌)反而擁有很多好處。

通常,公司會透過電話通知你他們計劃給你錄用通知。此時,你很有可能立即允諾並接受錄用。正確的做法是,你應該表達你對這個錄用的興奮,並要求他們給你一些時間與你重要的人或朋友討論。你也可以預先告訴他們你還在其他幾家公司進行面試,並且你很快就會回覆他們。有時候錄用會有截止日期,但是,這些錄用通知通常是非常隨意的,可以透過你的簡單請求推遲。

你的協商能力最終取決於各種因素,但最大的因素是可選性。如果你手頭有兩個很棒的錄用通知,那麼協商要容易得多,因為你可以選擇離開。

當你在協商時,有各種各樣的槓桿你可以拉。三個主要因素是基本工資、股票期權和簽約/安置獎金。每個公司都有不同的政策,這意味著一些槓桿可能比其他槓桿更容易拉動。一般來說,簽約/安置費是最容易談判的,其次是股票期權,然後是底薪。所以,如果你在一個比較弱勢的位置,就要求更高的簽約/安置獎金。然而,如果你處於強勢地位,增加基本工資可能對你最有利。原因是,它不僅會在你加薪時起到更大的乘數作用,還會影響公司的福利,如401K匹配和員工股票購買計劃。也就是說,每種情況都是不同的,所以要確保根據需要重新確定協商內容的優先順序。

  • 準備

  1. 協商方面最好的資源之一是Haseeb Qureshi撰寫的一篇文章(https://haseebq.com/my-ten-rules-for-negotiating-a-job-offer/),裡面詳細介紹了他如何從眾多畢業生中脫穎而出收到Google,Airbnb和其他許多錄用合同。

  • 提示

  1. 如果你不擅長即時談話,那麼讓招聘人員的電話轉到語音郵件是個好辦法,這樣你就可以在給他們回電之前組織好語言。不太可能因為面試通常是透過電子郵件完成的而收到拒絕電話。這意味著當你回電話給他們時,你應該在心理上排練如果他們告訴你他們想要錄用你時你想要說些什麼。 

  2. 表現出對公司的真正興趣。當招聘人員感知到候選人只是為了薪酬,他們可能不太可能在協商過程中幫助你。

  3. 總是給事情留下好的記錄!即使你不接受公司的錄用,和你的招聘人員保持禮貌和坦率也很重要。科技行業可能是一個非常小的圈子,你的聲譽非常重要。

  4. 在你手上有實際的錄用合同之前,不要拒絕其他公司或停止面試。口頭錄用有反悔的歷史,所以在你有紙質的東西之前不要慶祝。

記住,面試是一種可以學習的技能,就像其他任何東西一樣。希望本文能夠讓你對資料科學面試流程中的內容有所瞭解。

這個過程也並不是完美的,有時候你沒有給面試官留下深刻的印象因為你沒有一些晦澀的知識。但是,透過反覆堅持和充分準備,你將能夠很快獲得一份資料科學的工作!

 

原文標題:

Mastering the Data Science Interview Loop

原文連結:

https://towardsdatascience.com/mastering-the-data-science-interview-15f9c0a558a7

譯者簡介:李潔,香港科技大學電信學碩士畢業生,現任北京師範大學香港浸會大學聯合學院 資料科學系助教。喜歡資料科學,喜歡閱讀,喜歡研究程式碼和做手工。

「完」

    贊(0)

    分享創造快樂