2021上半年後端/全端面試經歷

Getty Images

圖文/Chunting Wu

在這個病毒肆虐的時間點找工作,有個很大的優勢:全部都是『線上』面試。省去了舟車勞頓的辛苦,時間上也更容易安排,以往面試兩小時可能請假就要直接請個半天,但在居家辦公時期,面試兩小時就只需要請兩小時;甚至可以直接約中午,連假都不用請。

在開始寫這陣子的面試經驗前我先簡單介紹一下背景

  • 6+year 嵌入式系統開發經驗 (C/C++)
  • 4+year 後端開發經驗(Python/golang)
  • 1+year 前端開發經驗(Node.js/Vue.js)
  • 英文聽說讀寫略懂略懂

基本上,沒刷題,沒什麼準備,考古題/常見題一個也沒看過,面試邀約來了就上。想要找後端相關的工作,內心當中對於offer的排序是:地點、薪資、工作內容。邀約通常來自獵頭,也有些來自HR直接邀約。

這次認真面試花了兩個月,但從開始面試到確定 offer,大概用了半年。總共談了十間公司。接下來按照時間序一個一個紀錄,主要是面試流程和內容,有些因為時間很久了,印象會有點模糊,就略微帶過。至於工作內容之類的,那個不是重點,頂多約略描述。

Binance(幣安)

這間是我主動投的。線上面試。那時候數位貨幣水漲船高,我也想進幣圈試試。但幣安的後端開發主要是JAVA,我沒有相關經驗,所以投了 DevOps 工程師。

第一關:著重在工作經歷的部分,會對於曾經做過的專案項目進行深入探討,同時也會簡單介紹一下公司,時間大概 1–1.5 小時。

第二關:著重在考核 DevOps 相關的經歷,例如 VPC/子網怎麼規劃、路由不通怎麼故障排除、內部/外部DNS 規劃。諸如此類的問題,我其實也沒有相關經驗,回答的都很勉強,時間大概 1–1.5 小時。

結果:掰

Appier

此時的 Appiear 要在日本 IPO。現場面試。我忘了是我自己投的還是獵頭介紹,總之是面試後端開發的職缺。

第一關:同樣會深入探討工作經歷,包含做過的專案/產品,背後的架構和資料流等,時間大概 1–1.5 小時。

第二關:白板題,會出一個情境案例,要根據需求設計一個系統架構。題目是:在客戶端服務上有一個 SDK,會把客戶端的使用狀態回報給這個新系統,數據類型是一個 JSON,而數據量是海量,而這個新系統要負責從這無數 JSON 中做一份統計報表。

這個題目我個人覺得很有趣,畢竟這種考題切合現實,不是像 leetcode 那種實務上不太會碰到為了考試而考試的題目。但我這關沒有答的很好,當下有點壓力,不過,考官不會施壓,會在旁邊給些提示/建議,讓這個系統能夠成型。時間大概 1–1.5 小時。

結果:掰

如果對於題目有興趣,歡迎私訊我,我們也可以一起研討一下,我心裡應該是有個解答了,不過還是可以討論交流看有沒有缺漏。

上面兩次面試發生的時間很早,在 2021 年初,距離第三次面試中間間隔兩個月。為什麼空白了這麼久,最大的原因是經過了前兩次面試,我發現我有點廢啊!基本上答題都不甚理想,幣安就算了,畢竟幾乎都在考 operation,這我本來就沒什麼經驗,但 Appier 的系統架構設計還答成那樣,我覺得實在慘,所以花了點時間把一些系統架構的書/網站/資源K一下。覺得心態平復了,才繼續開始面試。

KK Stream

此時的 KK Stream 看到 Appier 的成功也正醞釀要日本 IPO。這機會是透過獵頭介紹的後端開發。現場面試

第一關:Leetcode,考五題三小時,第一題是 git 相關的選擇題十題,有 git 經驗的都可以簡單回答(雖然我錯一個);後面四題是程式題,難度大概介在 easy+~medium,我這種沒刷題的小白也可以輕鬆寫完。

第二關:技術面試,著重在過往的經驗,會對經手的項目作深入探討,必要的時候需要寫白板,然後,會介紹公司和工作內容。整體面試氣氛輕鬆愉快沒有壓力,時間約2小時。

第三關:HR 電話面試,主要是人格/性向之類的訪談,還有介紹薪資福利等。

第四關:BU 主管,也是純聊天,談談生涯規劃,聊聊過往經歷,時間約 1 小時。

整個面試的過程我覺得是十場中最愉快的,就真的是在聊聊中結束。但不得不說,KK 的面試流程和耗時也是十場最久的。從開始 leetcode 到 package 出來,超過一個月。

結果:offer got

AMIS

MaiCoin 的姐妹公司,也是獵頭介紹後端開發。我還是沒放棄進入幣圈。線上面試。先是介紹 AMIS 的產品和工作內容,然後就我過去的工作經驗做些探討,只能說,就我感覺面試者不太友善,有點不知道哪來的優越感。

結果:掰

Innova Solution

外商醫療支付平台,對方HR主動聯繫。電話面試,後端開發。一開始是 HR 主動跟我聯絡,因為是純英文工作環境,所以測試一下我的英文能力,就用電話英文面試了一下。雖然沒做過準備,但英文自我介紹我覺得還中規中矩,就是想到什麼說什麼,然後 HR 簡略介紹一下公司,並且邀約下一次面試。
但我之後拒絕了,為什麼呢?我大概有幾個考量,第一 Innova Solution 沒有自己的品牌,他其實是另外一間公司的研發(外包)中心,所以醫療支付其實是另一間公司的產品;其次是,醫療領域的步調略慢,產業別大概介在傳產和科技業之間,有點像是銀行的感覺。

綜合考量下,最後我婉拒面試。

遊戲橘子

獵頭介紹,架構師。線上面試。從後端切架構師其實這跳有點多,技能樹不太一樣,所以當獵頭推薦我這個機會的時候,我還特別請獵頭去詢問我沒有網路安全的相關經歷,這樣足夠嗎?後來回覆是:可以,所以就接下邀約,過程平和,相談甚歡,但整體面試過程中發現,我的能力其實不足以勝任他們要的這個角色,這算是我的自知之明。最後也證實我的想法是對的。

有個問題其實我到現在還沒有答案,『微服務vs.單體架構,如果每個 module/package 都可以單獨部署,例如 JAVA 的 .jar 或 Python 的 pip,甚至 CentOS 的 RPM,這樣微服務還有什麼優勢?』我當下回答的有點鳥:『微服務的優勢在於損害控管,每個服務獨立上線可以快速釐清問題的死點在哪個服務上』,但直到現在我也不知道怎樣的答案算是標準答案。

結果:掰

Berry AI

獵頭介紹,全端開發。線上面試。Berry AI 是台灣上市公司飛捷科技的子公司,是一間不像新創的新創,有燒不完的資金,所以可以慢慢找產品方向。直到本文撰寫完成之際,都還沒有能獲利的產品推出。在開始面試之前,有一次簡單和 CTO 的線上會談,介紹公司狀況、產品規劃等,確定有意願,才會開始正式的面試流程。

第一關:CTO,有一份考題,會採用共編的方式作答,有點類似現場面試的白板題,題目涵蓋 OS/Python/C 語言,OS的部分偏重 multi-thread/multi-process,有一題滿有趣的,如何用 multi-thread 做排序。Python 就基本題,decorator 的用法和 shallow copy 的問題。C 語言則是 call-by-value 和指標的運用。整體來說,難度沒有很高,放寬心作答即可。

第二關:CEO,介紹公司營運狀態和公司歷史,然後做些人格和性向的訪談,包含各時期的轉職心境和規劃。主要是純聊天,態度和善沒有架子。

第三關:PM,剛剛沒問到的,想知道的秘辛,都可以在這裡發問,如果沒什麼問題,整個流程就結束了。

總耗時約3小時。

結果:offer got

浪Live

HR 邀約。架構師。線上面試。我直到這時候才知道浪Live 其實是台灣上市公司,而且除了直播,還有一堆產品。一開始由 HR 主動聯絡我,並且花了不少時間介紹公司狀況和福利等,除此之外也對之後的職務做了摘要。在接觸這麼多獵頭和公司 HR 之後,我覺得這個 HR 的認真程度絕對可以排前幾名。也因此,我答應他們的面試邀請。

第一關:台灣區的 RD 頭,就我個人的經歷和經驗做些了解,主要是討論技術問題,包含當初的技術選型原因等。沒有壓力,過程平順。

第二關:台灣區的HR頭,做些人格和性向的訪談,也是純聊天。

總耗時約 2–2.5 小時。整個面試的過程讓我有點意外,畢竟,沒有考試,沒有白板題,幾乎都是聊天,這應該是所有面試中整個最沒壓力的一場。另外,雖然是架構師,但其實還是要經手 RD 相關的事務。

結果:offer got

Hardcore Tech

或稱 GoFreight,獵頭介紹。後端開發。線上面試。穩定獲利的新創,產品主要是物流平台的整合。這間的面試是我覺得十場中最硬核的,難怪叫做 Hardcore Tech。

第一關:HackerRank,線上刷題。兩小時要寫五題,難度約是 medium+,對我這種小白說來,痛苦到一個不行。五題只寫完三題,但還是拿到門票了。

第二關:面試官出兩題白板題,一樣採共編的方法,這兩題白板題應該也是 medium+難度的。上一關的 HackerRand 就已經要死了,這次白板題直接死去,根本寫不出來,面試官一定覺得我是去鬧的。

第三關:還是白板題,但這白板題的難度沒有很高,主要是給你一個情境,讓你的程式必須不斷應付新進來的需求,要加參數,寫新 function,做 design pattern。這算是實務題,本來就是我擅長的,所以答起來還算順暢。

結果:無聲卡

Linc

獵頭介紹,號稱純正矽谷直營台灣分部。全端 team lead。線上面試。這也是一間開始穩定獲利的新創,聽獵頭說薪水是純正矽谷等級,做的是電商的後台,例如出貨進度、訊息通知、消費分析、商品推薦。因為是電商後台,所以要整合許多第三方的系統,例如各家不同的物流。

第一關:也是先要線上考,但有別於 leetcode 或 HackerRank,這間公司選擇自己出題。題目很生活化也很實用,我覺得這種題目才有考的價值。

第二關:台灣區的 RD 頭,純英文的技術問答。因為是純外商,所以是全英文工作環境,不免俗就是要測試英文能力。所以技術問題難度不高,有基本的 computer science 能力都可以回答,主要是英文口說要流暢。然後也有白板題,難度是 easy,就是經典的大數相加。最後就是介紹公司狀況,然後部門組成,人選要求,工作內容等。

第三關:台灣區的 PM,因為 team lead 和 PM 會經常合作,所以這邊是彼此互相了解。也有幾個情境題,例如兩個月的時間,要如何讓一個全新的系統上線。透過這種方式來了解帶 team 的方式和經驗。

第四關:台灣區的另一個 team lead。白板題,難度是 medium+,也是痛苦到不行,最後沒答完就超時。

結果:無聲卡

這次面試耗時巨久,產業各異,甚至連位置都不一樣,有後端、全端、team lead,甚至架構師。面試到後面其實身心俱疲,而戰績也不怎麼理想:3/10,不過也有了滿多特別的經驗,例如英文面試和各種白板題。在居家辦公時期,寫白板題的經驗格外有趣,大部分公司都直接用 google doc 充當白板就直接在上面寫了。

我對面試的想法是接觸新的人/事/物以此來認識自己的不足,而事實上我也的確在這過程當中心態爆炸了,覺得我怎麼這麼廢。但畢竟還年輕,所以也算是把握機會長長見識,感謝這些花費時間心力幫助我成長的面試官們。

也許有人會問,『你都不刷題,還面什麼試啊?』,我這邊說說我的想法。程式碼是溝通交流的工具,好的程式碼可以讓後續接手的人能輕易上手,「重構:改善既有代碼的設計」這本書說,好的程式碼就是文件。在資訊技術這麼發達的現今,已經不是以前對 CPU/memory 錙銖必較的時代了,寫程式的人要做到的不是為了榨出額外那一咪咪的效能而寫程式,而是為了更好的合作和交流。不要誤會,我並不是說刷題不重要,我要說的是,如果兩層 for-loop 的 O(n²) 可以更好的讓人看懂,就不需要自以為是的使用各種奇耙寫法硬生出 O(n)。

而刷題說穿了其實就是不斷去洗鍊你思考的流程,讓你能夠逼近那完美解,所以出了各種奇耙問題要你使出各種奇耙解法,這種為了做而做的事我不喜歡。

所以這次碰到很多有趣的白板題,例如 Appier 的系統設計或者Linc的實務問題,我覺得這才是面試一個 RD 應該出的考題,看得出來是有經過思考設計的題目,目的是為了找出他們真正需要的人。即使當下我被按在地上摩擦,但整體經驗是快樂的,而且我也知道該怎麼去補足,這才是有建設性的刷題。

此外,這次面試也合作了一些獵頭,每個人風格都不太一樣:

有些人就像房屋仲介一樣貼一堆模糊的資訊在那,然後一直要騙你的聯絡方式,例如就只寫『某知名金融企業招有經驗的後端開發』,沒薪水範圍、也沒職務內容,甚至根本沒職務要求。這種我超厭惡的,不想做就不要做。

進階一點的會做一些基本的訪談,了解你的需求,知道你的能力,甚至幫你規劃履歷(也許還會幫你加料)。

再主動一點的,甚至會直接幫你媒合,主動告訴你有些什麼樣的機會,然後詢問你的意願,給建議,並且規劃面試的流程和戰略。

做的更好的是,每次面試結束,都會詢問整個面試的經過,鉅細彌遺的紀錄,以便給下一個要 apply 同個職缺的人建議。並且會主動追公司的後續,並持續向你更新狀態。到核心流程的時候也會告知如何談到好的價碼,該怎麼開價才是適合的。

這次每種類型我都有碰到,其中有一個人我會很願意推薦給別人:Solution First的Kevin

本文由 Chunting Wu 授權轉載,原文連結

瀏覽 2,009 次

覺得不錯的話就分享出去吧!

發佈留言

Back to top button