# 2021 機械轉軟體工程師面試心得(訊聯、彩富、趨勢、群聯、群暉) ## 前言 自碩二決定轉換跑道,一直到研究所畢業後(八月中到十月中)的求職終於告一段落,求職過程中閱讀了許多前輩分享的文章,也受到了一些朋友的幫助,因此報到前的這段時間,決定將自己的準備方向與面試流程整理起來,雖然並不是多大的成就,與很多前輩的分享或許也大同小異,但希望能給相似背景的求職者再多一點鼓勵與借鏡。 ## 背景 112ME 學碩,大學延畢去日本交換一年,兩次機械相關的暑期實習。程式語言在碩二前學過Visual Basic(大學系上的計算機程式)和MATLAB。碩二修資料結構與演算法、作業系統、編譯器等課程的同時開始自學Java和C。 ## 準備方向 畢業後大概先花了一個月的時間準備後才開始投履歷、面試。我的準備方向大致如下: 1. 履歷相關:相關經歷少的可憐,因此寫的都是比較基本的。例如:C/C++ 實作資料結構(Linkedlist, Hash table, etc)、編譯器專案(Lexical analyzer, Parser)。自傳我以自己較正向的人格特質為題,以過去的經歷佐證。 2. 資料結構、演算法:複習DSA的投影片,把比較經典的結構用C刻過幾次。演算法的部份看陳縕儂老師的ADA線上課程,大約只看到期中前。 3. 作業系統:複習之前修課的投影片,面試考題大多落在恐龍本第三章到第九章。 4. 物件導向:LC刷題時用C太耗時,所以這段期間透過交大溫宏斌教授的線上課程,把C++補起來。 5. Leetcode:前期是資結、演算法讀到哪,就找相關的題目來練習;後期把Top 100 Liked的easy和medium刷完。 6. 其它:Linux環境(鳥哥的Linux私房菜)、計算機網路概論(清大黃能富教授線上課程,只看完Chapter 1大致了解架構)、CS50(只有大概看過,主要是想了解找到工作後可以補哪些東西)、git(分支操作沒有很熟悉,把編譯器課程做的專案推到github而已)、面試考古題(面試前一兩天都會去查前輩分享的經驗、考過的白板題) ## 面試流程 投遞方向為軟/韌體,以軟體優先,投遞的公司有參考大學同學的[心得文](https://www.ptt.cc/bbs/Soft_Job/M.1617956291.A.94A.html)。下面分享的流程比較像是面試完的流水紀錄,內容較雜、排版不佳請見諒。 #### <u>訊連科技</u> 應徵職位:多媒體研發工程師 流程: 投遞當天下午於coderbyte進行線上測驗,三題90分鐘,難度約為LC easy\*2、medium*1,因為環境不習慣,加上第一次寫不太懂答題策略(太追求最佳解),所以最後一題沒做出來,原本以為應該是沒有面試機會了,沒想到當天晚餐前人資就打來約面試。 <u>一面</u>:線上面試。首先進行語文、數學、邏輯、英文測驗,其中語文和邏輯時間都非常趕,要隨時注意時間。做完之後分兩個時段,有兩個部門的主管來面談。 - 第一位主管:自介完畢後開始提問,有問到process, thread差別、簡介OOP、為什麼想轉換跑道、和資工系畢業學生相比差了什麼等等,之後開始介紹部門、公司福利等等。 - 第二位主管:自介後直接開始很詳細的介紹部門,然後是線上測驗的code review,檢討最後一題時主管提到寫測驗時應該至少要寫出一個複雜度較差的解(主管有詢問我為什麼要選Linkedlist不用Array來做,我解釋最佳解的邏輯,只就我的感覺他沒有往這邊想過)。 <u>二面</u>:線上面試,與部門協理面談。自介完後協理就履歷的部分進行詢問,問的很細,幾乎每個經歷都有聊到。面談中他勉勵很多同事都不是本科出身,工作後夠積極認真是可以補上的。 薪水:80 - 90 w/ y 工時:平均10-10.5小時,第二個部門午休兩小時 狀態:二面一週後感謝函 #### <u>彩富科技</u> 應徵職位:演算法工程師 流程: <u>一面</u>:線上面試。首先進行幾何、性向測驗,之後與人資面談,主要詢問背景,介紹福利等等,再來就與主管面談。 主管進來後直接開始介紹部門三個team在做的事情,因為之前沒碰過影像辨識,聽到大量的新名詞,當下覺得應該沒有機會了。之後主管會就我的經歷問問題,如馬達控制、資結演算法、c++名詞、數學(微積分、線代)、數值分析、Linux環境操作等等,雖然有準備的部分回答起來算輕鬆,但因為範圍太廣所以其實蠻多沒有回答好的。主管在面談中有提到,相較於現有實力更注重學習能力。 最後再與人資面談,有詢問剛剛主管介紹的三個team,各自的工作內容是在幹嘛,因為遠距面試有偷做筆記所以就照著筆記回答,之後說兩週內沒通知錄取或二面就是不符合資格。 薪水:(N+17) * 14 + 配股 工時:表定09:30 - 18:30,常加班到19:00 - 19:30 狀態:一週後offer get。 #### <u>趨勢科技</u> 應徵職位:軟體研發工程師 流程: 首先寄codility測試連結,三題130分鐘,難度應該都是LC easy,其中只有一題因為誤會題意花比較多時間,寫完還有蠻多時間的,自己覺得應該都有答出來。隔了幾天收到面談邀請,並給了3個team的資訊,隔天寄信來說還有1個team也想一起面試。 <u>一面</u>:線上面試。當天共兩個時段,一個時段一小時,各有兩個team的面試官一起面試,有一個team直接來四個人,害我有點緊張。面談中OS有問到process和thread的差別、deadlock成因與如何避免、介紹virtual memory和copy on write,另外還有問struct和class差別、virtual function、介紹幾種知道的資料結構特性、介紹幾種sorting algorithm、介紹網路架構(因為才剛開始上網路的課又沒特別準備,答的超級爛)。專業性知識之外還有問一些開放式的,例如未來轉換跑道後想走什麼方向、是否該方向主要的工作內容在做什麼(這邊答的也超爛...)、最近自學的東西、轉換跑道原因、debug skills等。兩個時段都是問完問題之後就開始介紹各自team的工作內容。兩個小時結束後有和人資再面談了一下,主要是詢問這些team中我的preference、最近還有哪些面試等等,最後說一個禮拜內會通知有沒有二面不會無聲。 <u>二面</u>:實體面試。根據我的preference,最後與ERS部門的主管面談。自介完後主管開始對履歷提問,並且問有沒有以下這些程式經驗:Multi-threaded、co-work、socket programming、huge data processing等等,這邊就誠實的說沒有或只有修課做過作業的程度。之後就是發問時間,我大概問了三、四個問題就結束面談,總長不到半小時,心裡覺得涼涼。結束後一樣是人資來收尾,問我轉換跑道遇到什麼問題、詢問目前求職情形、說一週內會通知結果等等。 狀態:二面一週後感謝函 #### <u>群聯電子</u> 應徵職位:韌體工程師 流程: 請實驗室學長幫忙內推,人資馬上寄信來確認線上面試時間。面試前有寫一個圖像推理測驗,很多都用猜的。 <u>一面</u>:線上面試。先進行自介,過程中包含我快速帶過的一些本科的專案,面試官都有仔細的詢問確保他有理解,是之前面純軟工作沒有的經驗。之後面試官分享畫面開始考C,考了很多考古題,不過準備沒有很充分所以答的很卡,大概有快一半需要面試官的提示才回答正確。其他如資結、作業系統都問的很基礎,比較特別的是面試官會先介紹NAND的特性,然後問garbage collection等功能在實作上有什麼想法,因為面試官講解得很清楚,答案都蠻直覺就能想到的。考完後還問了一些比較偏人格的問題。然後就是介紹部門工作、新訓內容、福利等等。最後告知兩週內會通知有沒有二面。 約一週後大主管打來phone interview,比較像是聊天,主要是就履歷上的資訊做確認,然後補充可能會出差等等,最後說未來合作愉快。 <u>二面</u>:線上面試。和人資進行behavioral interview,確認履歷內容、問一些情境如何處理後,就向我介紹薪資結構,並詢問目前面試情形等等,最後說兩週內會跑完流程。 薪水:N+35,第一年14-16,之後16-18或以上 工時:表定09:30 - 18:30,但常態加班到19:30 - 20:30 狀態:offer get #### <u>群暉科技</u> 應徵職位:Product developer 流程: 人資透過104主動找我去面試,因為這間是很前面的志願,想再準備一下,所以跟人資約兩個禮拜後再面試。 <u>一面</u>:線上面試,與兩位資深工程師面談。自介完畢後開始考:物件導向觀念、資料結構、c++保留字、OS、編譯器相關,過程中有幾個問題細節講錯被追問才反應過來,沒有很滿意自己的表現。然後開始考白板,題目大約是LC easy- medium,雖然很順利的寫出來,但是在講解給面試官聽的時候,因為有點緊張講解沒有到很清楚。都結束後就換我提問,結束後說一週內會通知有無二面。 <u>二面</u>:線上面試。先與人資進行behavioral interview。半小時後進到下一關與小主管面試,一開始問了一些資料結構,有追問很多內容,如什麼情況會想用hash table、hash function怎麼選擇等,比較像是在與主管討論不像問答。再來是白板題,只考一題LC easy,寫的過程中有和主管討論解法、Interface,完成後向主管講解邏輯、討論corner case,主管有再向我指出exception handling等可以改善的地方,再來就是發問時間,然後和我說可能還有下一關。最後一關與用人主管面談,稍微問了一些情境問題就發口頭offer,然後介紹薪資結構、福利等等。 工時:中位數8小時14分。 狀態:offer get ## 個人的建議 很多建議其實蠻直覺就能想到的,也已經被很多人講到爛了,但因為在自己的面試經歷中,真的對這些內容深有同感,因此還是提出來作為參考。 <u>把握能展現自己的機會</u> 並不是所有職缺都願意花費心力、資源栽培轉換跑道,相關經歷較少的非本科系新人。但反過來說,這樣還能獲得面試機會的話,也可以認為是該職缺的主管心中已經有投資的意願,因此面試時不用因為自己可能經歷不足而畏首畏尾,抓住機會展現自己,才能在面試官心中的天平投下利於自己的砝碼。 - 個人特質:這其實很因人而異,但至少在自介、回答一些常見的情境問題時,能透過練習讓自己可以有邏輯、有餘裕的表現。自我介紹建議做投影片(當然面試時要詢問面試官能不能分享螢幕之類的),我自己有放學經歷、以前做過的專案(快速帶過)、人格特質自評,除了能更有條理地介紹自己、展現自己對這次面試的重視,還能將面試官接下來的部分問題控制在自己準備過的範圍中。但也因此要切記不管是履歷還是自介,提到的內容都一定要弄熟。 - 專業知識問答:如果不會就誠實的說,以我的經驗來說面試官大多不會太刁難人,通常會挑履歷、成績單上有的來考,拿出準備大考的心態來讀就對了。可以先投心目中排序較後的公司,因為會問的問題其實重複性很高,經過兩三次面試與檢討後應該就能找到比較順的表達方式了。 - 白板題:事實上在我有限的面試經驗裡,只有一間公司有考白板題,這其實不利於轉換跑道的我們,因為沒有程式測驗或白板題,面試官就只能從你過去的經歷來判斷你的實力。而程式測驗比較像是一個面試的門檻,白板題則更能向面試官行銷自己,展示自己的程式能力,就算解不出來,在聽面試官的hint時也能表現自己的邏輯、溝通與表達能力等等。換言之,實力夠的秀技術、實力普通的秀人格特質。準備方式可以在刷題時,試著口頭上將自己的解題邏輯、算法的複雜度、選擇此方法的原因都說明清楚,也記得多想一些corner case再submit。 <u>面試完的檢討</u> 面試時答不出來、沒表達好、或自己覺得有答出來但面試官表情變的很奇怪的問題,當然事後要好好檢討。若是問題的領域比較廣泛,也可以先記起來等找到工作後有機會再了解。 除此之外,面試結束前只要有機會我都會向面試官詢求feedback,可以問自己今天的表現,也可以問以主管的角度來看我們這些想要轉換跑道的人,會有怎麼樣的建議之類的。我自己遇到的面試官都很認真的回答我(就算沒有錄取),我認為光是能聽到這些前輩的評價與分享,其實面試所花費的時間就值得了。 ## 心得 不只一次面試時面試官有問到:所以你是碩二才開始準備換跑道嗎?面試官都沒有質疑的意思,只是在向我確認經歷,但我每次回答是之後,總是會不自覺的擔心待會我要怎麼說明、包裝理由,面試官才能認同。回頭看過去這一年,修課、研究、寫論文、口試、準備求職、面試,碩二下開始常常有事情沒辦法做到最好的無奈,直到現在才鬆一口氣,能比較沒有壓力的學習。現在想來,的確應該早點開始面對自己的未來,要轉換跑道的話真的要盡早。 或許和近年IC景氣好有關,軟體相對比較搶不到人,所以門檻可能比較低,我才運氣好面幾間公司就拿到理想offer。但即便如此,在求職的這段期間,我有時候還是會疑問於自己的努力是否有價值、茫然於對未來生活的想像。也因此我非常佩服那些面了1x間、2x間公司長期抗戰的前輩與朋友們。 整理這篇心得,在回顧自己這段時間的經歷的同時,也是在提醒自己學無止境,期許自己工作後能保持自律性、積極學習。也希望能對閱讀這篇心得的人有所幫助,祝福大家都能求職順利!