緣起

之前在COSCUP的攤位上看到這個公司正在招人,剛好那時去聊天時跟我聊的人是單車社的,他說那邊目前蠻缺人的可以試試看。後來我請朋友幫我修履歷,修到一個「可以看」的水平之後,跟那位單車社朋友要了一下內推,我就投上去了。

OA

四題160分鐘,我覺得沒有沒有很難,花了100分鐘就寫得差不多了。最難的我覺得是C++題組,很多我沒研究過的物件導向用法。

一面

有分兩個階段,分別有一位面試官。時長共兩個小時。

第一個階段面試官一開始問了一些簡單算法題,大致上是在不同的條件下,怎麼去找兩個數列的對稱差。我自己覺得在這邊都答得算不錯。

後來面試官跟我簡介了一些加密貨幣和真實世界貨幣的一些關係,還有一些金融術語,例如套利是無風險的賺錢等等。接著面試官要我用程式去模擬市場、加密貨幣和策略的操作。面試官問我語言要用C++還是Python,我選C++

然後面試官就要我實作幾個class,但他用的constructor寫法我完全沒看過(事後據說是 uniform initialization),再加上我沒有很確定當時面試官問的問題的詳細定義,讓我緊張到我的狀態不是很好,只能一半用猜的混過去,最後還因為沒有 iostream 編譯不過,我還被抓包我不太確定自己使用的編譯器標準是C++17, 14還是11,真的要尷尬死。總的來說,整個過程很卡,明明當下覺得只是一些簡單微積分的應用,卻因為各種名詞定義問題讓我需要去猜面試官到底什麼意思,雖然我當下有針對我不太確定的名詞定義和問題定義去問面試官,但我自己覺得問題沒有被解釋到,一直到這一關結束以後我才比較瞭解面試官要問什麼。我覺得我在這邊的表現蠻糟糕的。

第二階段大部分是問數學問題,這邊就換了一個面試官。

第一題是問要怎麼均勻的從一個陣列中取k個東西出來,其中有假設可以呼叫均勻的隨機亂數。因為我以前沒想過這個問題,我就先提了一個暴力解:每次隨機戳一個index看看以前有沒有戳過。面試官也跟我一起分析了這個方法的average case,這邊花了蠻多時間的,我太久沒有碰機率,所以很多東西只能暴力重推一次,連summation by parts 都忘了。這個方法推完以後,我也立刻想到最佳解(事後知道我想到的方法叫做洗牌算法),跟面試官解釋了這個算法以後,對方也說這應該也是最好的解。

接著因為時間所剩不多,對方問了一個隨機過程的問題,題意大致上是說:假設有一個均勻公正銅板,每次翻到正面得一分,翻到背面失一分,可以翻無窮多個回合,翻到10分贏,-10分輸,那贏的機率是多少?如果-20分才輸,那贏的機率是多少?我其實前陣子有上 MIT OCW 隨便找一個隨機過程的課來聽,所以我有聽過這個問題,但是我忘記第二小題的答案為什麼會是2/3了。後來跟面試官討論以後,他有給我一個解釋,大意上是說期望值要是0,所以列方程式可以解0的機率,不過事後我自己覺得這個解釋怪怪的,我還不太能接受。

結果

感謝信,沒有進第二輪面試QQ

後記

因為我有在linkedIn上放上我的履歷還有 open to work ,所以還蠻常收到獵頭傳來的訊息。最近一次遇到的獵頭是幫quant的公司找人的,跟他通話以後獲得蠻多資訊,像是量化產業目前的現況,今年下半年有多慘,以及因為我還有兵役問題,這個兵役問題對我面試quant來說可能會是一個痛點。因為量化產業的 headcount 比較緊,需要比較確定我可以 on board 的時間,所以我的兵役的不確定性對資方來說可能就不太好;相對來說,backend這種職位全年有缺,就比較沒有差。這位獵頭後來也跟我建議說在兵單下來以後再去投量化研究員,對我會比較好。

這位獵頭真的非常有職業道德,非常感謝他。

反省

雖然結果不太好,這次的面試就算是一個經驗,以結束時間來算的話,畢竟這是我面試的第一份正職工作,也很感謝 Kronos 花時間跟我面試。

這邊列幾個我如果可以回到面試前的時間點,我會做的事情:

  1. 要多了解對方公司的產業現況。
  2. 行話也要多多瞭解。
  3. 刷一下機率和微積分考古題,把手感撿回來。
  4. 不要說自己會寫 C++,至少在我用這個語言做一個中小型專案以前,不要說自己會寫,儘管我都用這個語言刷題。
  5. 如果說自己會什麼語言,需要知道使用的版本。