2022 找工作

趁著記憶猶新的時候趕快紀錄一下這瘋狂的七、八月,因為是邊準備口試邊找工作,每天都忙到快翻過來,所以只面了 Synopsys(新思科技)跟 Synology(群暉科技)這兩間公司,然後所有 interview 都是線上舉行的。另外事先說明一下我已經當完兵了 :),如果是在找研發替代役或是要當四個月再出來工作的,我不確定跟主管面談的時候他們會不會問其他問題。

Synopsys(新思科技)

Timeline

  • 2022/07/20 - 把履歷、成績單寄給 HR
  • 2022/07/21 - HR 電話面談
  • 2022/07/27 - team B codility coding test
  • 2022/07/28 - team C codility coding test
  • 2022/08/01 - team A 一面
  • 2022/08/02 - team B 一面
  • 2022/08/04 - team C 一面
  • 2022/08/08 - team A 二面
  • 2022/08/10 - team A 三面,get offer
  • 2022/08/11 - team B 二面,get offer
  • 2022/08/12 - HR 電話通知 team C get offer

Synopsys 是同學給我 HR 的聯絡資訊然後我主動聯繫的,7/20 寄信當天 HR 就跟我約 7/21 電話面談了,其實就只是確認一下背景還有想投的職缺,之後 HR 就會把資料傳給主管們,主管們有興趣會主動聯絡你。我是投 Software RD Engineer,不過 HR 看了我的資料問我要不要也試試看 Application Engineer,我是有說好,不過後來也沒收到 AE 部門的邀請。另外 HR 有說一個人最多只會有三個 team 的面試機會。

Team A

Team A 沒有線上測驗,直接約 45 分鐘的 phone interview。

一面

大約 45 分鐘的 phone interview,他們說是 phone interview 啦,但因為現在全部都 online 所以我也不會分到底怎樣是屬於 onsite 呵呵,好像時間比較長的就是 onsite。

一開始會先請你花 1 ~ 2 分鐘簡單自我介紹,再來就是問一些 C++ 跟資料結構的問題,C++ 的問題大部份是圍繞在 OOP 上,像是請你解釋 polymorphism 是什麼,還有 class 繼承之後 constructor 跟 destructor 順序那些的,資料結構的話把常見資料結構的各種操作的複雜度都搞懂,基本上就沒有問題了,例如 heap 在 search 跟 insert 的時候時間複雜度是多少,或是 binary search tree 怎麼實做 delete node。然後這個階段不需要 coding。

二面

大概三小時,時間分配是兩小時 technical interview + 一小時 behavioral interview。一開始一樣會請你簡短自我介紹,二面就會需要寫 code 了,他們好像是用 codility 自己出題目然後給我測驗連結,因為面試官可以看到你打什麼,所以就不用自己開編輯器分享畫面給他們看。

Technical 的部份總共被問了四題:

  • 第一題是給你一個 sorted array 還有一個數字 target,問你今天做 binary search 的時候會依序看到哪些數字,只要會寫 binary search 這題基本上就很簡單,面試官也說這是暖身。
  • 第二題是會給很多 class,有些 class 繼承自其他 class,每個 class 有自己的 constructor 跟還有一些 member,每個操作都會有對應的 output message,然後就是給一段 code 問你執行完之後會得到怎樣的 output。
  • 第三題是給你 C 或 C++ 的 code 問你這段 code 可能會有什麼問題、怎麼修改。
  • 第四題是 tree 相關的題目,會用到 class 跟 virtual function,題目有點複雜懶的講,有興趣的可以直接問我。

Behavioral interview 其實就是跟主管聊聊天,之前助理跟我約時間的時候有請我準備 10 ~ 15 分鐘的簡報。我大概就講一下學歷、修過哪些課,還有工作經驗跟比較近期的幾個 project,project 的部份也包含我的碩士論文。主管在簡報的時候有問題都會直接問,所以後來整個報完花了大概 30 分鐘,切記放在投影片上的東西都要很熟,因為他們都會問蠻細的。報完之後換主管們問一些有關 personality 的問題,不外乎就是團隊合作經驗還有遇到衝突怎麼解決,也會你的優缺點,講缺點的時候記得也要說怎麼改善,不要講完就沒了。另外回答問題的時候盡量舉一些例子來輔助,如果是親身經歷的更好。

這部份問完之後他們會介紹一下自己的 team 大概在做什麼,接著就是換你問他問題了,不用擔心問題問太多,他們人都超級好,只要還在時間內他們都會盡量回答,問問題的部份我是參考 這份別人整理的清單,我通常都會問一下 dialy work flow,其實就是上下班跟工時的部份,還有工作卡關的時候會怎麼解決,跟這個 team 會希望找有怎樣特質的人。我後來看到有人會問「How can I improve myself in this interview?」,我覺得很酷不過沒問過。

Behavioral interview 結束之後如果沒什麼大問題好像其實就蠻有機會拿到 offer,二面完約了隔天三面。

三面

三面是跟主管的主管面談,內容其實就跟二面的 behavioral interview 差不多,不過這次我就口頭自我介紹,沒有用簡報。大主管一樣會大概講一下部門在幹麻,然後問一些人格特質的問題,再來就是看你有沒有什麼問題想問,我這個階段有問一下公司福利。聊完之後大主管覺得 OK 就會請 HR 去談後續 offer 的細節了。

結果:Get offer

Team B

Team B 有先寄 codility 的 coding test 給我做,期限是一周內自己找時間完成,總共三題 / 作答時間 105 分鐘,語言限定 C 或 C++。題目都是 LeetCode medium 難度。運氣不錯的是,這三題剛好都是之前有練習過的題目:

切記不要去背題目,codility 沒有那麼傻,題目敘述一定會改,重點是把解法融會貫通。

一面

流程跟 team A 一樣,問的題目方向也差不多,另外有問 pure virtual function 是什麼,還問了一個我之前沒想過的問題:「用 free 去釋放用 new 分配的記憶體會怎樣」,另外有問知不知道 design pattern,雖然說大四的時候有讀過一陣子,但是沒有實際去用所以都忘光了,不過這個算是加分題的部份。

二面

一樣是三小時,不過時間分配跟 team A 有點不一樣,team A 是面試官帶著一起做題目,team B 這邊是先給我 30 分鐘自己寫,再根據我的回答去問問題,整個 technical interview 一樣是兩小時,再加上一小時的 behavioral interview,給的題目其實跟 team A 的一樣,不過一些問題問的方向不太一樣,基本上也是都問很細。然後這次的 behavioral interview 我就沒有準備投影片了,之前其實是因為助理請我交投影片給他我才做的 :P,不過建議還是可以準備一下,真的沒用到就算了,畢竟簡報給主管們帶來的印象應該會比單純用口頭講還要深。這時候因為 team A 已經給口頭 offer 了,主管在這邊也直接給口頭 offer,就沒有再約三面。

結果:Get offer

Team C

一樣有寄 codility 的測驗,不過他們給我兩週的期限,總共三題 / 作答時間 165 分鐘,語言限定 C 或 C++。我沒有找到相對應的 LeetCode 題目,但應該也都是 medium。題目太長了懶的打,有興趣的可以直接問我,有一題會用到 topological sort,另一題是 matrix 跟 BFS。

一面

Team C 的流程很神奇,一面就直接排了將近三小時,需要 coding,基本上就是把 team A 跟 team B 的一二面合併。另外 team C 一開始有請我用英文做 1 ~ 2 分鐘的自我介紹,幸好之前有準備。technical interview 的部份因為 team C 在做的東西其實偏圖論,所以 coding 全部都是 tree 跟 graph 相關的問題,然後我蠻多地方寫一寫卡住的 QQ,面試太緊張加上資料結構一複雜腦子就當機了。Behavioral interview 除了人格特質外還問了一些團隊合作軟體開發上的問題,像是離職同事的 code 沒有註解,今天如果要做修改要怎樣做才不會破壞程式原本的行為。

結束之後我有好奇問主管怎麼一面就排三個小時,他說希望一次面試就決定,所以基本上也不會有後續,後來也是 HR 打電話過來我才知道有通過呵呵。

結果:Get offer

Synology(群暉科技)

Timeline

  • 2022/07/22 - HR 透過 104 主動聯絡
  • 2022/08/03 - 一面
  • 2022/08/12 - 二面,get offer

Synology 是 HR 用 104 的訊息功能聯絡我的,職位是 Prodcut Developer(影像監控軟體開發)。我本來也有想投 Synology,不過還在 104 看職缺內容的時候他們就傳訊息過來了,想說就試試看吧。

一面

約時間的時候 HR 是請我預留 2 ~ 3 小時,不過後來面了快四個小時,全程都是 technical interview,我面試的時候有三關,每關會換一個面試官,時間都大概 45 ~ 50 分鐘,第一關有問一些 C++ 的問題,基本上跟 Synopsys 問的那些差不多,大部分的題目都圍繞在 OOP 上,再來每個面試官都會有白板題,Synology 這邊是請我開編輯器然後分享畫面給他們看,語言的話好像隨意,不過他們比較傾向面試者用 C 或 C++ 回答,記得要是可以執行 code 的環境,因為寫完會需要執行看結果,可能還會試不同的測資。

除了 C++ 以外還被問了一些 OS 的東西,像是 process 跟 thread 的差別。其實原本第三個面試官面完就要跟 HR 講話,但是那天下午 HR 好像超忙,所以就約了第二次面試。

二面

Techinical interview 在一面就全部結束了,二面就是跟 HR 還有主管講講話,HR 一開始會請你簡單的自我介紹,然後針對履歷或是自我介紹裡面提到的一些東西去問問題,主管的部份就是講一下工作內容還有薪資,一樣會流時間給你問問題。

結果:Get offer

一些心得

其實一直都覺得面試很恐怖,不知道哪來奇怪的刻板印象,總覺的面試官都很嚴肅,但面了兩間公司總共四個部門後,發現其實 HR、面試官跟主管都超親切,也有可能只是剛好這兩間的面試官都很 nice,兩間公司的面試體驗真的都非常棒,我一開始也會擔心問題或是白板題答不出來怎麼辦,但他們其實都非常願意引導,只要不要直接問他們這個怎麼寫那個怎麼做,他們都很樂於協助,所以一開始沒有答好真的不用擔心,基本上他們給了 hint 然後你有把問題解開應該都還可以接受。就像我在 Synopsys 其中一個白板題有用到 heap,但是我忘記 STL 的 priority_queue 自定義比較函數怎麼寫了,面試官:「噢沒關係啦反正我知道你要寫 min-heap,這邊意思意思寫一下就好了」。然後在面 Synology 也有類似的情況,我知道 STL 的 list 是 doubly linked list,但是因為不常用所以有一些 member function 我真的不知道,面試官:「噢你現在直接查阿,沒關係的」,然後我們兩個就在那邊研讀 cppreference。

至於該怎麼準備 coding interview 或是怎樣挑選練習的題目,建議可以去看我們系上學長寫的 Coding Interview 流程整理 還有 2022 求職心得 coding interview 的部份,寫得非常詳細。

大概就是這樣,瘋狂的八月。