
Photo by Lukas on Pexels.com
相信每一位開始準備資料科學相關職位面試的求職者,都知道所謂的「刷題」 是怎麼回事-利用網路的資源,練習面試中經常出現的 coding interview 環節。跟考試前找考古題的概念相似,要能夠快速的認識演算法並正確解題,刷題幾乎是增進面試表現的唯一方法。
和泛軟體工程師不同,對資料科學家、資料分析師而言,coding interview 難度門檻通常不高,相反的,求職者的邏輯與表達能力更是重點。面試官會觀察求職者的基本概念、思考方式,將解題過程中的溝通與表達列入考量。
這篇文章中,我們將介紹新手 Coding Interview 備戰刷題必讀指南以及幾個常被忽略的地方。
穩紮穩打,掌握解題算法原理
刷題先從簡單的題目開始做起,慢慢累積實力,不要一開始就挑戰太難的題目徒增挫敗感。遇到不會的題目也不必堅持一定要自己想出寫法,不妨先看看其他人怎麼做,再從中學習。即使遇到能夠順利解達的題目,也不要急著刷下一題,參考網站上其他人的答案,可以看看如何優化,以此學習更「漂亮」的語法。如果本來對演算法和資料結構不熟,也可以趁此機會彌補。對每一道基礎題,都要試著了解其時間與空間複雜度,邊緣案例(edge cases)處理等常見面試問題。對於解題中用到的語法、function 可以進一步了解相關或相似語法的差異與使用情境。
外商資料科學家&資料分析真實面試考題案例:
- What’s the difference between dense_rank() and rank()?
- Why don’t you use row_number() here?
- What’s the time complexity and spatial complexity?
試著從面試官的角度思考這道題想要評測的是什麼能力,不但可以幫助準備面試時應答內容與口條,更可以在面試前針對職缺精準猜題。穩紮穩打的刷十題簡單題,效果好過於囫圇吞棗的解三十題。
附帶一提,在最多人使用的刷提網站 LeetCode 中,雖然免費帳號看不到題目解答,但是可以從討論區裡看到各種解答與討論。另外直接用題目名稱在 Google或 Youtube 上搜尋,大多可以找到不少詳盡的解說,不失為學習進步的管道。
練習「答題」,而非埋頭「解題」

刷題到一定程度,就可以開始練習面試中的答題。面試中 coding interview 除了藉由第三方平台直接上線寫 code 外,也可能以白板演練 (whiteboarding)的方式進行。甚至在電話面試階段,也可能要求求職者直接用口說表達如何解題。所以練習時,也要考慮如何在每一步驟讓面試官了解你為什麼要這麼做,包含使用口語、圖示、註解以及合理的參數、函數命名來達到效果。
在練習答題的階段,最好可以找一位夥伴,輪流扮演面試官的角色。除了練習表達與面試官溝通外,也可以模擬面試中「卡關」時,如何接收對方的提示而順利完成任務。實際面試中,這些會被認為是你能否與團隊合作的評測依據,有時候甚至會比是否能夠正確解題還要重要。
在注重團隊合作與溝通協調的外商、新創公司中,面試官不是一板一眼的判官,而是你解決問題的好夥伴。看到題目的第一個步驟不是埋頭解題,應該先簡短的說明你的解題步驟,從面試官的反饋(feedback)中看看大方向有沒有問題再開始 coding。遇到卡關、解題時間不夠的狀況跟面試官多溝通,也許會有意想不到的收穫。
總結來說,資料科學家、資料分析師的面試設計不同於其他偏重 coding 能力的工程師職位。面試中分配給 coding interview 的時間通常不會太多,所以基礎題出現的機率會比較高。另外,面試官的關注點不只是解題,而是整個答題過程以及衍生的互動。基礎題越熟練,越有機會在這些互動中加分。與面試官的互動越好,越有可能在眾多求職者中脫穎而出 。
資料科學新手 Coding Interview 刷題指南 有 “ 5 則迴響 ”