2017年9月30日 星期六

軟體工程師面試心得分享:玉山銀行、亞旭電腦、HTC、群暉、台積電、趨勢

 

圖:軟體工程師面試必備工作,每天刷 Leetcode!

這篇是台灣科技公司的面試心得分享,主要都是投軟體工程師的職缺,內容包含一些面試細節和心得雜感,希望可以幫助到以後要找工作的人:)

19.3.9 words tiny improvement




一、台灣待遇不錯的科技公司


俗話說「貨比三家不吃虧」,看看 tech_job 討論板 上的熱烈討論,會了解不少業界生態,如果想去大公司,以下是一些板上常見待遇、發展或知名度不錯的科技公司 (2017 年統計):

  • 國之棟樑:台積電 (TSMC / GG)
  • IC 設計公司 (MmNRPS):聯發科 (Mediatek / MTK / 大M)、晨星 (Mstar / 小M)、聯詠  (Novatek / NTK)、瑞昱 (Realtek / RTK)、群聯 (Phison)、慧榮 (SMI)。
  • 比較軟的公司:Oath (以前的 yahoo)、趨勢、KKBOX、Appier。
  • NAS 相關:Synology、QNAP。

其他還有像做導航的 Garmin、感覺有點神祕的宇匯知識、還有一些外商像是 Google, Microsoft, Nvidia, Intel, Mozilla, IBM 等等,或者現在玉山、國泰和一些金融業有開一些科技儲備幹部和資料科學的職缺也可以嘗試看看。上面這些科技公司有滿多第一年年薪破百萬,只是聽說有些很爆肝,確認錄取之前還是要多打聽打聽。




二、事前準備


背景:交大資工學士、台大資工碩士,沒有軟韌實務相關背景,碩論主題偏資料科學。


1. 專業內容


我面試前有稍微看了下面的內容:

  • Leetcode (easy 和 medium 題目約 100 題)
  • OS 恐龍本筆記 (process vs thread, semaphore vs mutex, deadlock ...)
  • 軟工物件導向筆記 (encapsulation, inheritance, polymorphism, overriding vs overloading, virtual ...)
  • C/C++ 語法 (pointer, reserved word, bit operator, STL ...)
  • 資料結構和演算法 (linked list, stack vs queue, sort, tree ...)   p.s. 關於 DS 和 Algorithm,Second round 這個網站整理得很清楚、簡單又優雅:)

實際去面試之後,感覺面試最常見的問題是 OS 相關的問題,筆試則是大多考 C 語言的用法,有些職缺還要多準備網路的部份,基本不會問太難,不過整體來說範圍有點大,沒複習到的地方有時候會反應不過來。


2. 人格特質內容


雖然制式的面試準備自我介紹很八股,但藉由這個機會認識自己也是不錯的選擇。最基本的準備是自傳、簡歷、自我介紹(大概要 30 秒和 2 分鐘兩個版本),還有一些很芭樂的面試問題,最好也事先準備,不然有點難流暢的回答。下面是一些常見的題目:

  • 自己最大的的優點和缺點?
  • 你寫過最大的程式專案是什麼?中間最難的部份是哪裡?你如何克服這個難題?
  • 你有什麼合作經驗?中間遇到什麼困難,並如何解決?
  • 你目前人生當中最大的成就是什麼?
  • 你的職涯規劃是什麼?

另外我有準備的一些提問的問題,我覺得是一個勞工真的需要知道的地方:

  • 有沒有新進員工的職業培訓?
  • 各個部門的差異?風氣如何?
  • 未來一年內公司希望我達成什麼樣的目標?

關於公司挑選人格特質這種事,我覺得以一個勞工來說有基本表達能力就行了,不用去特意討好公司文化,思考正面比較有行動力,而思考負面比較能分析察覺危機所在,各有各的優勢,人的相處還是要靠一點緣份,沒緣的公司就好聚好散吧。




三、對現階段台灣勞動市場環境的批評


下面是我面試過程中遇到一些比較令人反感的狀況,在當下由於是求職彼此關係很不對等,十分難以反抗或糾正,因此只能在這裡把它寫下來,這種問題還是要大家一起重視後才有逐漸改善的可能呀。


1. 侵犯隱私的履歷表


大多數台灣公司的履歷表我覺得很不友善,個人基本資料上被要求填寫婚姻狀況、家庭狀況等資料,每次填寫到這部份我都覺得嚴重侵犯隱私。而且,由於現在許多履歷表是電子化填寫,沒有完整填寫不能跳過,等於強迫面試者放棄隱私或者說謊。另外,我在面試時也有被問過家庭狀況和交往狀況,而面試官似乎不覺得自己這樣問有任何問題。


2. 審判人格的性向測驗


性向測驗也是一個滿微妙的關卡,這些測驗的內容通常有評估診斷憂鬱症、精神疾病和人格障礙的功能,有歧視的疑慮。我不相信真的有憂鬱或不合群的人會填寫真實答案,我也不相信這些測驗將人「正確」分類後就有善待員工和提升企業價值的能力。另外,我覺得至少測驗後要讓測試者知道性向測驗的結果,我也想知道對那個測驗系統來說我的個性是如何呀。




四、面試心得


總共去了玉山銀行、亞旭電腦、HTC、群暉、台積電、趨勢這幾間。其實本來排更多,把整個 9 月塞的滿滿的,不過後來有滿意的 offer 就去報到了,所以這裡只能分享部份的公司囉。



1. 玉山銀行 - 科技儲備幹部 (TMA)




俗話說:「資料在哪裡,資料科學家就要在哪裡。」聽說在國內金融業界,玉山的資料科學是走得比較前面的,我的碩論也是做金融相關的題目,加上有朋友推薦,就來嘗試看看。

一面採團體面試,3 個面試官對上 6 個面試者,人生第一次面試就採團體面試還滿新鮮的。考官先請大家自我介紹,再針對每個人的介紹提出問題,團體面試可以聽到來自不同地方的人展示自己,真的很有趣。我大部分的時間都在講解我的碩論和以前做過的專案,主要都是資料科學相關的主題,而其他的面試者都是面試不同的 IT 職缺,問資料庫相關的問題比較多。

一面後過了幾個禮拜通知二面,被轉到 TMA 面試流程,感覺二面無論在筆試和面試的題目質量都顯著提升,筆試的題目我還滿喜歡的,像是 MVC 架構為何、解釋 SQL injection、解釋資料庫正規化、JSON 和 XML 的差異、主流行動支付有哪些並解釋 ...... 等等。不過作答時間不長,挑一題作答即可,我本來想多寫一點的,有點可惜。

面試也是來了 3 個面試官,一樣要我自我介紹,然後沿著介紹問了一些問題,比較印象深刻的是其中一個面試官是顧客價值分析部 (CRV) 的職員,整趟面試之旅中,他是唯一認真跟我聊碩論的人,問了不少關於類神經網路相關細節,覺得很窩心!其他還有印象的問題如下:


Q : 寫過哪些協作專案、有遇到什麼問題、如何克服、遇到放鳥的隊友怎麼解決。

考古題現身!

Q : TMA 不會一直碰技術,要管人,還會有一堆煩人的會議或任務要處理,這樣你行嗎?

你們真誠實,哈哈。

Q : 你認為傳統資料分析師和資料科學家有何不同?

我回答古典統計分析和機器學習方法的比較,舉了一些例子。

Q : 你有沒有看什麼不是技術方面但有培養資料科學家涵養的書? 

( ...... ?? )

喔,那就是沒有囉?

所以你想要我看什麼書...... 我後來回答《投資金律》和《快閃大對決》裏面的內容,並講到金融業者維護金融體系的社會責任。


總體來說,玉山總行裏面的氛圍不錯,有採光很棒的圖書館,本身也有在做一些公益計劃,滿喜歡玉山人給人的感覺,不過實際情形還是要在裏面工作才知道囉。



2. 亞旭電腦 - 軟體工程師




被人資熱情邀請就來面試看看,寫一張邏輯測驗和 C 語言題目,內容是一般科技公司常見的問題。面試部份有兩個面試官,自我介紹後沒問技術問題,面試官們開始介紹他們部門做的東西,一個接收 4G 發射出 wifi 的產品,似乎經濟比較不發達的地方是這樣傳輸網路,感覺滿特別的。

面試時間不長,整體來說還算順利,不過由於亞旭是華碩子公司,給薪比照華碩薪資結構,所以還是比較難議價呀。



3. HTC - Mobile VR / Wearable / Firmware Design Engineer




HTC 總部位於新店,建築外觀是個巨大的白色方塊,整體看起來很有設計感,一走進去大廳感覺也非常氣派,一樓有 VR 頭盔展示和畫廊。筆試地點是藏在氣派白牆壁後面的小房間,考英文測驗 (含聽力)、邏輯測驗和專業題目 (C、C++ 或 java),聽力有點口音,邏輯測驗很簡單,專業科目則是考程式碼印值的判讀。

首先面試的是 Mobile VR 小組,自我介紹加上碩論介紹後,面試官沿著我的話問了一些問題,後來提到他們專案要做計算機圖學領域的測距問題,我回答沒有相關經驗,並講了一些類神經網路在影像識別的應用,結果不到半小時就結束了,或許是他們團隊比較小,需要找能解特定問題的人吧。

然後奇怪的是,我當天原本安排面試 3 個職缺,結果面完第一個職缺被請出大樓,我還走回大樓詢問我是否還有下一場面試,等了二十幾分鐘終於開始面第二個職缺,而且後來還發現第二個職缺和第三個職缺似乎沒有差異...... HR 們可能是累壞了吧XD

第二個職缺的面試官是一個斯文男,跟第一個職缺不同,他很謹慎的拿出了一本筆記本紀錄我所有的回答,有一種被尊重的感覺。問的題目很多很廣,有 process 和 thread 等 OS 相關的問題,還有過去寫大型專案的經驗等等,大概過了一個多小時才請第二個大主管來二面。二面大主管是個大叔,都是問一些非技術問題,他很執意要我問問題,但他補充說問題不可以是 Google 會不會買他們部門,哈哈。我把準備的問題問完後,大主管還是不死心要我繼續問,就這樣不斷硬擠出問題問又聊了一個多小時。

當天結束時握手跟我說歡迎加入 HTC,結果等很久也沒下文,可能忙著處理和 Google 交易的事吧。



4. 群暉 - 軟體開發工程師




資工界有名的白板考魔王群暉,當然要來試試看!公司在台北車站當代藝術館對面,是很繁華的地段。進去之後,群暉的辦公室很安靜,只有陣陣的冷氣聲,增添了一點緊張的氣息。然後被 HR 帶到一個有白板的小房間坐了一會兒,面試就開始囉。

面試過程和傳聞的一樣,總共四關(最後一關是揭曉結果不用考試),中間會穿插人資的訪談,每關都會有白板題,難度大概在 Leetcode easy 到 medium 之間。我從一點半面試到七點,真的是長期抗戰,滿累人的。


[第一關]

第一關進來一個年輕工程師,問很多 OS 的問題,像是同步問題、semaphore 使用、context switch,回答之後會順著你的答案下去討論,偶爾會抓到一點定義或認知不清楚的地方,但都是以分享改進的方式在進行,也考了一點演算法和資料結構的部份,解釋各個資料結構的定義和用途,都是大學學過的範圍。

第一關白板題是考 Leetcode 98. Validate Binary Search Tree (Medium),我馬上傻乎乎的寫了一個標準錯誤的遞迴版本解答 (當前節點符合定義、左右子樹遞迴定義),考官看完我的答案寫了一個測資在白板上,我立刻發現錯誤並改成檢驗遞迴印出是否為中序排列,後來又做了一些優化,考官似乎才滿意的結束整個題目。


[第二關]

第二關進來的是一個女主管,一樣先問了不少技術問題,像是 overriding vs overloading、記憶體區間 stack 和 heap、保留字 virtual 和 static 等等,也討論到以前做過的專案,從大學到研究所的課程或計劃都有問到,問得還滿詳細的。

第二關白板題是考 Leetcode 112. Path Sum (Easy)Leetcode 113. Path Sum II (Medium) 。兩題的遞迴版本很快就寫出來,不過要把 113. 答案改成 iteration 版本的時候很卡,寫得零零碎碎的自己都覺得很差,感覺要被請回家了。


[人資]

第二關慘敗之後,進來的是人資,心想:「哎呀,果然到此為止了嗎。 」。抱著絕望的心情回答了一些經典問題,像是「你覺得你最大的缺點是什麼?」,並大致討論一遍我的履歷,整體氣氛還算融洽。另外,人資也有問我對白板考試的看法,我回答白板考能力和寫程式能力是正相關但沒有因果關係;演算法題和軟體工程領域關注的部份有滿大的差別,不過我認識的厲害的程式設計師通常對兩者都很有研究。

討論完之後人資說:

「好,那我請下一關的主管來。」

「什麼!? tech_job 板上都寫說看到人資就結束了耶!」

「哈哈沒有啦,謠言讓大家看到人資都很緊張,有機會幫我們闢謠一下呀。」


[第三關]

第三關進來的是一個男主管,一樣問一些技術和過去程式專案的問題,考到這裡有點累了,實在記不起來問了什麼,只記得考官要我常看技術文件多學習。

第三關白板題是考 Leetcode 238. Product of Array Except Self (Medium)。馬上先寫一個暴力解,果然被要求要改進,不過當時可能太累了,不知道哪根筋不對,竟然想了一個 Dynamic Programming 方法,大致寫完跟考官講解作法後,考官才跟我說還可以加快(天啊,我覺得自己好蠢)。後來才想到直接除該數加上例外處理的方法。最後,又考了一個陣列的問題,簡單到我忘了題目,可能是這題寫比較差,想試一下簡單題目行不行吧。


[第四關]

最後一關進來的是大主管,閒聊了一會兒,最後說明公司的福利和一些期許,終於結束這次疲累但有趣的面試。整體來說,每一關的面試官人都很好,雖然題目比起其他面試來說稍微困難,但他們會由淺入深給很多提示,有真正在討論解決問題的感覺。



5. 台積電 - IC 設計工程師




久仰台灣之光台積電!內部裝潢和員工穿著像 40 年前穿越過來的樣式,大廳播放著中年人品味的古典音樂,頗有經國年代台灣經濟起飛的況味。進去時會將可攝影或儲存拷貝的裝置統一保管,所以沒機會拍攝內部的樣子。

首先要做 3 份性向測驗,這是我見過做最多適性測驗的公司,我其實不太喜歡填這種制式問卷,十分繁瑣惱人。填答完畢後,由於廠區很大,從 7 廠到 2 廠面試要做園區巴士才能見到主管。

一到 2 廠大廳,就感受到一股不一樣的氣氛,兩旁的小圓桌有很多員工在和外國客戶聊生意,非常熱鬧,後來主管出現後,就請我到一個小會議室裡開始面試。整個面試像同學會,和傳聞一樣沒有問太多專業問題,而是著重在部門介紹和經歷分享,滿溫暖的感覺。

這趟面試也順道和很久不見的大學老朋友聊天敘敘舊,覺得非常開心。



6. 趨勢 - Software Engineer in Test / Software Engineer




以前有來趨勢做過企業參訪,對趨勢還滿期待的。趨勢的人資效率很不錯,一投遞履歷馬上傳來線上測驗試題。線上試題共 3 題 2.5 小時,很多字串處理的題目,和 Leetcode 的題目方向不同,題幹很長,要求實作一些指定功能,像是給每位員工依規格要求發派電子郵件地址等等。我覺得拿 C++ 處理字串有點痛苦,應該選用高階一點的語言實作會比較順利。另外,這個 Codility 測驗系統只能送出 (submit) 一次,送出後題目會關閉,所以送出前要謹慎小心。

後來有通知面試,但可能是面試排的太緊密,前一天又跑新竹旅途勞累,當天面試時非常疲累,作答質量感覺降低不少。筆試考題是 QA 考題,有考演算法、OS、不少 linux 指令、網路協定 (HTTP, TCP/IP)、QA 工具的使用,還有很大比例的 QA 問答題組,要對一個情境舉很多實例,例如:做一個雲端硬碟在同步時會遇到哪些困難,請給出 6 個例子。

而面試的部份比較多是閒聊和部門介紹,專業問題有問到是否實際寫過 process 溝通的程式,對 process 的了解如何,還有延伸一下考卷最後的問答題組,以軟體工程腦力激盪 (brainstorming) 的方式詢問是否有更多答案。由於 QA 領域實在不太熟,整個面試下來其實還滿累人的。




四、結語


奔波勞累後,總算找到自己滿意的工作,有了安身立命的地方。得之於人者太多,出之於己者太少,因為需要感謝的人太多了,就感謝天吧:)






References


Second Round - 演算法與資料結構
http://alrightchiu.github.io/SecondRound/mu-lu-yan-suan-fa-yu-zi-liao-jie-gou.html

MAOYANG - 程式語言面試考題集錦
https://softnshare.wordpress.com/2016/02/21/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80%E9%9D%A2%E8%A9%A6%E8%80%83%E9%A1%8C%E9%9B%86%E9%8C%A6/

解ACM題的能力真的代表編程能力嗎?
https://elloop.github.io/life/2016-10-18/acm-ability

Hungys.blog() - 研發替代役面試心得 (聯發科)
https://hungys.xyz/rdss-interview/

ptt - [轉錄][職場] 軟韌體工程師面試常考之考古題
https://www.ptt.cc/bbs/NTUE-CS100/M.1300374249.A.C8F.html

ptt - [心得]
https://www.ptt.cc/bbs/Soft_Job/M.1466612135.A.C6A.html







技術提供:Blogger.