背景

  新竹電機碩畢,論文機器學習相關
  排名40%、沒有Side project、沒有比賽得獎、沒有實習
  整體就是一個平凡的路人

技能

  略懂 : C、Python、Linux shell script
  訊號處理、機器學習相關知識

面試前準備

  (1) 清華大學 作業系統-周志遠教授(Youtube上的OCW)
  (2) 聯合大學 作業系統-陳士杰教授(Youtube上的OCW)
  這兩門課的內容其實是差不多的,一開始是看周教授的課
  後來當兵同袍推薦,才改看陳教授的課,所以作業系統算是看了兩次

  (3) 清華大學 計算機結構-黃婷婷教授(Youtube上的OCW)
  這門課在碩班有去電子所修過課,所以主要是複習,從頭到尾完整看過一次
  重點章節(Single Cycle Processer、Pipline、Memory)看兩次

  (4) C語言教學手冊-洪維恩
  複習C語言,這本書優點是簡單,缺點也是簡單
  例題難度太低,然後很多深入的東西沒談
  完整看過兩次,重點章節(Array、Pointer、Struct)看三次以上

  (5) 資料結構使用C-蔡明志
  配合聖經本 Fundamentals Of Data Structures In C 看

  (6) GeeksforGeeks
  https://www.geeksforgeeks.org/c-multiple-choice-questions/
  裡面有110篇,看了大約60篇,很多公司的C考卷都跟裡面的題目類似
  裡面的觀念做熟,考卷應該就很少有寫不出來的題目

  (7) Leetcode
  當兵期間一個月+退伍後半個月 寫了80題(50easy 30medium)
  從top interview的easy開始寫,寫完後寫面試常考或是easy的延伸題
  https://imgur.com/zL3xkLX
  寫完第一輪之後,有重寫一輪(不看之前寫的答案,開新檔案寫)
  大部分題目都寫過2次,經典題3次以上

  (8) 網路考古 Ptt還有Google蒐集的題目

  (9) GNU C Library
  有的公司會考strcpy,strcmp,strlen,memset…等等的function如何implement
  所以常用的function都有去了解是怎麼實現的
  在看的過程中,也會去想作者的邏輯,因為大部分的code都不太直觀
  去思考code為何要那樣寫,以及那樣寫是為了速度還是正確性的考量

  (10) 其他
  Binary search(upper bound, lower bound)
  Stack(Array, Linked list), Queue(Array, Linked List)
  Sorting : Bubble, Insertion, Selection, Merge, Quick
  Linked List : Creat, Insert(Index), Delete(Value, Index), Free
  Linked List Bubble sort、Selection sort、Merge sort
  以上這些都練到開一個空白編譯器,可以完整寫出來、功能正確

  因為是服替代役,所以當兵期間可以用手機、平板
  還沒退伍時,平日一天念書6-8小時(看OCW、想Leetcode題目、念英文)
  假日把平日寫在紙上的code,用電腦輸入到Leetcode網站 + Submit + Debug
  退伍後一天念書8-10小時,一周休息1天
  每天的行程大概是起床後練習程式4-5小時,休息後晚上念書4-5小時

面試公司

  緯創、啟碁、群聯(3個部門)、安霸、瑞昱、達發(絡達&創發)


緯創 BIOS工程師

  D    主管電話邀請面試
  D+11 視訊面試
  D+26 確認意願
  D+28 Offer

面試過程幾乎都在聊天、聽主管介紹工作內容,大約50分鐘

結果 Offer (舊N+3) * 14 + 分紅

啟碁 5G軟體開發

  D    主管email邀請面試
  D+10 視訊一面
  D+17 視訊二面(人資、一級主管)
  D+21 確認意願
  D+33 Offer

一面
一開始性向、英文、C測驗,總共大約2個多小時

英文類似多益,聽力部分比多益難,難的點在於語速忽快忽慢
可能上一題念很慢,下一題突然1.5倍速,然後會話不能先看完三題題目
跟多益節奏差滿多的,平常寫多益模擬考都800左右,但測驗考出來只有600多

C語言大部分都基本題(Pointer, Bitwise Operation, Makefile)
比較特別的是考了一題Dead Lock四個特性解釋
寫完考卷後面主管,大部分時間都在閒聊、主管介紹工作內容,過程約50分鐘

結束後當天晚上人資電話約二面

二面
先面人資,問很多人格特質問題、最近面哪幾家、怎麼做選擇
其他時間都在閒聊或是人資介紹公司,過程約50分鐘
一級主管部分,也是問很多人格特質問題、請我遠端分享大學研究所成績單
然後針對碩論問幾個簡單的問題就結束了,過程約30分鐘

結果 Offer (舊N+17) * 14 + 分紅

群聯 三個部門

  D    104主動投履歷
  D+1  人資確認面試時間
  D+11 第一、第二部門視訊面試
  D+19 第三部門視訊面試
  D+22 人資詢問部門意願排序
  D+26 人資視訊面試
  D+32 人資電話Offer
  D+43 正式Offer

部門1
自我介紹、報告碩論,結束後問了大學研究所求學經歷
然後問針對面試做了哪些準備、請我開電腦裡的code給他看

接下來主管分享畫面,開了一個ppt,裡面共17題請我一題一題回答
內容:解釋概念(1/3), 給一段程式問輸出(1/3), 程式題(1/3)

在面試之前知道是演算法部門,想說應該會考Leetcode medium難度的題目
沒想到大部分都是基本題,其中有一兩題卡住,主管也都會給提示慢慢引導
過程中覺得主管很有耐心,卡住的時候會一直跟我解釋題目
然後有一些小錯誤的時候,都會暗示我再看清楚一點
最後順利完成全部題目,大約50分鐘-1小時

結束後,問當完兵了沒、假設發Offer給我,多久後可以上班
然後主管介紹部門、我提問後就結束面試,總共約1小時40分

結果 Offer 群聯新人價 * 14 + 分紅

部門2
自我介紹,報告碩論動機、方法、結論
結束後針對碩論問幾個問題、問很多大學研究所求學經歷和人格特質問題
問完之後考了兩題程式,都Leetcode easy等級

第一題大約10分鐘寫完,寫完後主管請我解釋每一行code
解釋到一半發現會錯題意,大約3分鐘改好

第二題一開始先跟主管講我的想法,但主管說這方法會有問題
大約5分鐘想新方法,主管說OK後開始打code
大約10分鐘寫完,寫完後主管請我解釋每一行code
解釋後主管說OK,但有用到額外記憶體,請我想一個in place的方法
大約5分鐘想新方法,跟主管解釋後開始打code
大約5分鐘寫完,寫完後一樣解釋每一行code
但在解釋的時候有一個地方講錯,主管提示後才解釋正確

接下來主管介紹部門,我提問後就結束面試,總共約1小時40分

結果 Offer 群聯新人價 * 14 + 分紅

部門3
自我介紹後,主管傳了一個google document連結
總共四題,Pointer、Bitwise Operation、Leetcode easy、基本程式概念
順利寫完後,報告碩論動機、方法、結論
結束後主管問兵役問題、人格特質問題
然後主管介紹部門,閒聊了滿久後結束面試,總共約1小時30分

結果 Offer 群聯新人價 * 14 + 分紅

安霸 嵌入式系統

  D    104主動投履歷
  D+4  人資確認面試時間
  D+16 視訊一面
  D+24 現場二面
  D+30 視訊三面(一級主管)
  D+32 電話四面(人資)
  D+33 視訊五面(台灣區經理)

安霸CEO是台灣人,公司在美國上市,產品主要是影像相關IC

一面(三位二級主管)
自我介紹、報告碩論,結束後針對碩論問很多問題,問題都有問到關鍵
然後請我開大學研究所成績單(看超久),他們有興趣的課會請我解釋那門課學到什麼
(問了OS, CA, DSP, ML),結束後問了一些人格特質問題
然後其中一位主管介紹工作內容、我提問後就結束面試,總共約1小時30分

一面結束後一個多小時,人資電話約現場二面

二面(現場)
早上一到公司之後,櫃台帶我到會議室,人資來發考卷(傳說中很難的考卷)
沒有時間限制,先給1.5小時,如果時間不夠跟人資說可以繼續寫
考卷內容很廣,C、OS、CA、Embeded C都有,也考了很多程式優化的題目
總共大概14-15面A4,題目有難度,但不是刻意刁難,有讀過相關內容一定會寫

考卷大約寫了2小時,原本以為寫完考卷還要面一級主管
特地帶了一堆東西(筆電、紙本論文、大學研究所成績單、履歷)
但寫完打電話給人資後,人資來收考卷,就跟我說可以離開了(黑人問號)

兩天後人資電話約視訊三面

三面(兩位一級主管)
第一位主管:
自我介紹、報告碩論,碩論問非常詳細,每個細節都會問到完全聽懂再請我繼續
最後碩論討論了一小時左右,因時間關係,我問一個問題後就結束換下一個主管

這位主管思路很清楚,報告到一個段落的時候
他會跟我總結他的理解,然後問我正不正確,或是哪裡不清楚
報告結束的時候,我感覺他也懂了60-70%

第二位主管:
自我介紹,問了一些人格特質、求學經歷
問的大部分都不是專業問題,如果沒回答到他想聽的東西,會請我補充說明
有談到我對自己的期許、對公司的了解、工作內容、薪水…等等
結束前主管說明薪水組成 : 底薪 + 現金分紅 + RSU + ESPP
然後我問幾個問題就結束面試

兩位主管都有對二面考卷答題狀況做一些評價
第一位主管 : 沒有很好,也沒有很差,就是還好而已
第二位主管 : 以新鮮人來說,算還不錯
我自己寫起來的感覺大概是90%的題目有作答,約70-80%是有把握的
但是寫完考卷搭火車回家的路上,回想題目時發現自己有幾題粗心寫錯= =

三面隔天早上,人資電話約四面、五面

四面(人資)
人格特質、求學經歷、實驗室詳細狀況 總共40分鐘

五面(台灣區經理)
跟蔣迪豪教授面試,自我介紹、看大學研究所成績單、報告碩論
問題都沒有很難,最後問一下其他公司面試狀況
我問一個問題就結束面試,總共1小時

感覺這間公司非常重視成績單,只被當過一科(大學的組合語言),但分數超低
每個有看成績單的主管,都會問我當時那門課是發生甚麼事

瑞昱 藍芽系統設計

  D    104+瑞昱官網主動投履歷
  D+1  人資確認面試時間
  D+17 視訊面試

部門工程師面試,自我介紹、報告碩論
結束後問了幾個問題,工程師就開始介紹工作內容,介紹的滿詳細的
但不知道為何完全沒有考試,認識的去面試其他部門都有考試之類的
結束的時候就知道不會上了,面身體健康的

結果 無聲卡

達發 系統軟體設計

  D    104主動投履歷
  D+8  人資確認面試時間
  D+18 視訊面試

達發是兩家聯發科子公司(絡達、創發)合併,面試主管是M來的

自我介紹後,主管針對修課問很多問題,大部分是計算機結構、作業系統
(問了Pipeline hazard, Memory coherence, Race condition)
每個問題我答出來之後,還會一直深入問下去

印象比較深的一題是談到shared memory會有race condition的問題
我解釋完race condition如何解決後,主管分享他的畫面
給我看一段sample code(兩個function都對同一個變數(a)++)
問我這樣會不會有race condition的問題?
我答:要看這兩個function會不會concurrent的執行,還有++是不是atomic的操作
主管問:如果a++要設計成atomic,用assembly要怎麼寫
這邊我只答得出來a++的assembly,主管跟我解釋後就繼續問其他的東西

後面的問題也都是這種模式,我答出概念後都會再往下深入
過程中感到主管技術非常強,功底非常紮實,任何不確定的地方都會被他察覺
經過大約一小時的問答後,考一題基本程式題,順利寫出後結束問答部分

接下來主管問一些人格特質問題、介紹工作內容、閒聊
聊了滿多他的工作心得、部門狀況、他以前在M帶過的新人…等等
最後我針對工作提問後就結束面試,總共約2個小時

主管最後的反饋是,他覺得我面試準備得很完整、理論觀念很清楚
但他比較有疑慮的點是:我沒有什麼實作經驗,還有抗壓性的問題

這次面試是難度最高的,學習到很多,也了解到自己的弱點在哪裡
像是主管提到的實作經驗,我自己對於OS的理解都是只有看書或是聽課
並沒有實際去看OS底層是怎麼實現的,或是做一些嵌入式相關的project
很感謝這位面試主管。

結果 無聲卡

心得

經過這些面試之後,自己的體悟是找工作很看運氣
當然個人能力還是占大部分,但有太多自己沒辦法控制的因素
也許自己會的東西,跟那個職缺工作內容無關
或是主管想找馬上可以上手的即戰力…等等各種千奇百怪的原因導致被刷掉

回顧這一個多月的面試,大致上還算順利,考題大部分是基本題
遇到的人資、面試官態度也都非常良好,有的面試官客氣到我都有點不好意思
還有一些問題事後回想,覺得自己答的爆爛,也沒有被當場洗臉,真的是運氣非常好
謝謝這次面試之旅的所有人,讓我學習到許多課本學不到的經驗
人生中每次相遇都是一種緣份,感謝上天的安排。