# 面試心得 ### 個人背景 大學: 師大電資某系 研所: 台科非電資某研究所 多益: 755 實習: 在某通訊業外商實習1年 個人研究領域比較偏演算法+平行處理加速,leetcode只挑常聽到的考古題寫,修課以資工系的課為主,會去自學Youtube上的CS相關課程(如Stanford, UC Berkely的CS課程) 以下心得以面試順序排序 # HTC VIVE - 演算法工程師 ### 面試前 HTC是主管透過LinkedIn聯繫我,是我第一家面試的公司,面試前可以跟人資選擇考C或C++,個人是選了C語言。 ### 測驗 報到後直接被櫃檯小妹帶去一間小會議室考試(HTC的櫃檯小妹很可愛),先考英文+邏輯+專業科目,英文考題跟多益不太一樣,聽力部分每一題的間隔時間很短,閱讀考得比較偏口語化的片語而非多益那種文法題,整體算蠻難的,邏輯測驗分兩個部分第一是看一連串圖形決定下一個圖形會長甚麼樣子,第二部分是看一串數字找出裡面數字哪個是不符合數列邏輯的,這邊比較難要想一下,大部分從平方/立方/前後差/費式數列的想法去猜都可以看出答案,C語言考題的部分主要就是寫出程式的輸出,bitwise運算,指標操作,a++ 跟 ++a的差別,並不算太難,最後手寫code的部分都是考字串處理,印象中有reverse string、移除字串中的空白等等,最後考卷是交給HR改,改得非常的鬆,根本就是有寫就算你全對。 ### 面談 考完後就被帶去2F的另一個小房間等主管來面談,主管一開始先問了幾個我做過的專案,像是改善了哪些東西,貢獻在哪,回答後有被他挑了幾個小毛病出來,但應該是我表達得不夠好。之後就幾乎都是主管問我有甚麼問題要問的,因為第一次面試緊張又沒準備太多相關問題,就問了一些像部門風氣、上班時間等等的基本款,聽說部門是不太加班的,而且風氣感覺挺好,進去後也會有人帶。 問了幾個問題後主管還提醒我:你不問一下我們都在做甚麼工作嗎XD,竟然沒問到部門主要在做甚麼工作!!我原本是打算不管做甚麼都進去後再學就好,不過看來還是要問給主管看,主管還是挺熱心的講解了部門主要的工作內容和他們VR產品的架構,這個部門主要負責的就是影像處理與3D影像辨識/建模,工作內容基本上是看paper,設計演算法解一些issue,有可能會碰到CUDA, OpenCL/OpenGL, Deep Learning等等的東西。 ### 二面 大約一個禮拜後收到主管口頭offer,後來寄信問主管package時才說會再請HR通知二面,隔了大約一個禮拜後HR才寄信來約。 負責二面的是兩個比較大的主管,第一個就叫我簡單自我介紹一下,針對我給他看的簡歷上面問了幾個問題就出去了,最後一個最大的主管也是來聊聊天而已,稍微介紹了一下部門風氣就出去了,整個二面加起來大概15分鐘就結束,整體氣氛很好,非常快速。 ### 心得 總體來說覺得沒有之前爬文感覺得那麼差,不過也有可能是主管直接約面試有差,因為之前爬文被嫌棄的都是HR,考試的部分專業偏簡單導致讓人覺得沒啥鑑別度,考卷上面還寫SSD部門的考卷,根本一張給所有人用,所以應該還是看個人的經歷來選人。 ### 結果 offer get # 普安科技 - 軟軔體工程師 ### 面試前 普安是藉由104跟我約面試的,當初我也不太清楚普安在做甚麼東西,不過他們的HR有稍微跟我介紹一下,大概就是在做儲存系統的公司,有提到面試時會考C語言與性向測驗。 ### 測驗 到了後馬上開始測驗,專業考卷的部分其實不只有C語言,還有不少的OS,C的部分有bitwise運算,字串操作,指標操作,手寫code有strcat,費式數列,OS的部分有如何將kernel-space的資料寫到user-space,Linux的Work queue有哪些等等。 ### 面談 考完試後首先是小主管來面談,這階段主要也是談了一下做過哪些專案,學過甚麼東西,然後介紹工作的內容,由於普安主要是在做b2b的業務,所以也問了大概會跟哪些企業合作。由於他們會很常有產品客製化的需求,工作內容主要就是寫他們產品上的客製化軔體,有可能還會碰到一些Protocol的東西,基本上我是很不熟這塊的,之前學過Kernel Programming覺得很難QQ(應該早點去聽jserv大大的課),這階段也有問了工時,平常都是準時下班的,但要交貨或是deadline前可能會需要加一下。 第二關來了個比較大的主管,一開始先簡單聊了一下,問了第一個問題: Process vs Thread,然後又問了第二個問題: 甚麼是File System,回答完後又問: 那為什麼要有File System? 這邊我就不太會了,支支吾吾講了一些檔案系統的特性後他就開始跟我聊天了,先講到說現在的FS已經不像以前講的那麼單純了,然後又問我說你一個不是CS的幹嘛都修CS的課程,怎麼不乾脆讀資工系阿等等的,基本上人很好,很有提攜後輩的感覺,聊完後就結束了與這個主管的面談。 跟主管談完後最後是人資進來聊天,人資姊姊人很好又活潑,這階段主要是講公司的一些福利跟報加班停車等等的,聊完天就離開了。 ### 心得 跟主管聊完後才發覺他們測驗考的題目都是工作一定會用到的東西,考卷出的算不錯。公司給人的感覺非常重視RD部門,也可以報加班,公司環境雖然沒有HTC那麼又新又炫但也挺不錯的感覺。 ### 結果 offer get # 訊連科技 - 多媒體開發工程師 ### 面試前 訊連也是透過104聯絡,久仰Cyberlink的面試很"優質",所以抱著見見世面的心情就去試試看。 ### 測驗 一開始先考一份C/C++ 的題目,手寫程式算蠻多的,有bubble_sort,strcpy,LinkedList reverse,題目會有提示而且其實ptt爬一下都找的到考古題,C++只考了一題繼承跟new的改錯,不過考卷改的蠻嚴的(反觀紅茶店都在亂改) 接著是考邏輯測驗跟英文,邏輯跟HTC有點類似,中間有一個部份是數學邏輯,考的全是國中數學等級題目,不過限制時間超短,21題我只寫完17題,這部分要記得挑題寫,英文部分聽力可以一直重複聽,建議是重複聽到聽懂為止,因為後面閱讀預留的時間非常長,整份英文考30分鐘我全寫完還剩10幾分鐘。 ### 面談 面談第一關是資深工程師來面試,一樣問了Process vs Thread的問題,然後是介紹他們這個部門的工作內容,這個職位主要會負責做Server端的多媒體串流還有E2EE的加密傳輸功能,會用C++跟Python來實作,這是開發新產品的部門,是在做類似Skype meeting的產品,接著有問到工時,他回答是平均要在公司待上11個小時,後來去天眼通查了一下沒有加班費而且不加還有可能被主管抓去談話,恩,讚讚讚。 第一關結束後他說要上去看看他上司有沒有空可以下來談,等了一下後上司就進來了,進來後也是都在聊天,主要聊了一下這個部門做的產品的一些想法,如何改進這個東西阿,軟體業大概都是怎麼跟其他部門合作的等等,聊了大概10分鐘左右就結束,人資就來說主管覺得你還不錯說可能會有二面後就帶我出去了。 ### 心得 個人覺得面試過程沒有Soft_Job裡面寫得那麼誇張啦,面試官都很客氣,公司環境還算漂亮,妹真的很多,不過工時有點太長再加上新店離我家有1HR以上的車程,公司又沒有提供停車位,雖然裡面應該可以學到不少技術,但感覺不會是我的首選。 ### 結果 無聲卡,我猜是我期望薪資開得太高(112三年破80W的都市傳說爬文可以看到) # Fortinet - 病毒分析工程師 ### 面試前 HR透過104主動邀請我去參加面試,有先告知說第一關面試要考試2.5小時+面談0.5小時,面試日期在口試完隔一天,其實本來有想要推掉,但想說就去看看美商長甚麼樣子吧。 ### 測驗 一到就馬上開始考試,面試到現在我還真沒看過這麼多這麼麻煩這麼雜的考題,邏輯測驗就是找出數列規律共30題+簡單的邏輯10題,寫到最後真的是腦筋一團糨糊,完全懶得去想了。 專業測驗40題考的東西很雜,組語、C、Python、電腦網路、計組計結、OS、Linux shell指令甚至連vim指令也考了,不過都不是非常困難的題目,考卷又全是選擇題,有接觸過的都一定寫得出來。 最後還有一張問券,要用英文回答一些個人特質的問題,HR說這張問券是要給美國主管看的,我在寫的時候真的是覺得,好久沒有用筆寫英文文章了呢...字寫得好醜... 註:感覺跟[這篇文章](https://www.ptt.cc/man/Tech_Job/DB04/D742/D690/M.1446858519.A.579.html)裡考的是同一份考卷。 ### 面談 寫完考卷後接著是RD的面談,主要針對我個人經歷問了幾個問題,然後問了一些人格特質的問題,像是:你覺得你是個怎樣的人?你朋友會怎麼形容你這個人?你平常休閒娛樂是甚麼?你的職涯規劃是甚麼?這些是我在台商面試時還沒被問到過的,蠻新鮮的,另外我有跟RD抱怨一下那個邏輯測驗題目實在是太多了。 接著他就介紹了一下這份工作的工作內容,主要是透過分析各種code的組合語言來抓出惡意代碼,對於組語的要求很高,所以如果第一階段有過,下一個階段面試會是整張組語的考試,最後才會是跟美國主管面試,稍微聊了一下後就結束了這次面談。 ### 心得 個人覺得,考試實在太久太燒腦,大熱天老遠騎車到內湖劈頭就寫兩個半小時的考卷,然後下一關又是考試,真的是很愛考試。不過這也沒辦法,這份工作要求的東西就是這樣,據RD所說,所有有可能造成威脅的東西他們都需要去做分析,所以要會的東西非常廣。 另外RD跟HR人都非常好,基本上相談甚歡,對談的氣氛很融洽。 ### 結果 肯定被刷掉,我根本不會組語。 # 趨勢科技 - 新戰力募集軟體工程師 ### 面試前 這家是透過104應徵,收到HR回信後有告知要先做線上測驗,語言可以從C/C++, Java, C#, Python, PHP, Obj-C裡自選,我一樣是選了Python,接著HR就傳了codility的連結給我,有規定要在某個日期前做完。 ### Codility測驗 題目有3題,限制時間是130分鐘,題目跟leetcode的問法不太一樣,都是有一個生活化的描述,然後要你找出答案,我覺得很好的是每一題會告訴你這個題目要求的是甚麼,例如要求時間複雜度O(nlogn)且空間複雜度O(n),或是不要求時間複雜度,改為要求答案的正確性。第二點不同的是題目給的測資不像leetcode那麼完整,只會給兩個case,這邊就要自己去想有可能會發生甚麼情況,我覺得這是比較難的地方。 題目的部分第一題是像leetcode的演算法(不過一樣有一個很豐富的情境說明),兩題考字串處理與分析,個人認為算簡單,不過有時間上的壓力,本身三題都有寫出能過他給的兩個測資的答案,但實際成績如何就不太清楚了。 有過這個階段的話HR會再寄信來約面試的時間,信裡除了列出一些相關的職缺,也有提到面談還會再有一個紙筆測驗。 ### 紙筆測驗 一到現場就先做紙筆測驗,測驗的內容很廣,有C/Python、Web Server、iOS/Android、OS、IP、邏輯測驗還有一些偏軟體QA的問答,我個人覺得蠻難的,尤其是後面的問答題,考得很爛,面談時有偷看到才30幾分而已QQ ### 面談 原本以為面談的只會有HR寄給我的職缺中有興趣的職缺,結果竟然所有主管都來了,一次兩個部門分三次總共六個部門的面試,面談的過程都大同小異,流程大概就是: * 自我介紹以及簡介做過的專案 * 主管針對專案提問,例如遇到甚麼困難如何解決 * 主管提問,大部分都是問熟悉哪種OS,有沒有用過某某工具等等 * 主管介紹工作內容 這次來面的部門實在很多,有點忘記有哪些了,只記得有4個是QA,另外兩個是RD(好像叫做DevOps),大概都會跟雲端或是VM相關,QA的話就是從用各種VM來測試或分析,RD部門做的大概就是從客戶端抓dump然後在後端分析。產品都有點類似,所以聽完沒甚麼記憶點,不過當下都有抓到這個職位大概會要做甚麼,也了解到了現在QA的需求就是要會用Python寫自動化的測試。 最後是HR來面談,稍微小聊了一下,告知說如果有主管想要的話會再通知二面,然後就離開了。 ### 心得 我還蠻喜歡這樣的程式考法,不難又好玩,不過來面談後才覺得自己對資安這塊應該是沒甚麼興趣。(早在面Fortinet的時候就該看清了,不過至少趨勢不用寫組語) 公司內部的風氣感覺很開放,~~還有一個主管穿拖鞋來跟我面試~~,公司也蠻漂亮的,趨勢有很多完善的產品線,如果能進來一定可以學到很多軟體工程的技術。 ### 結果 應該不會有下文了,HR最後有詢問過我來趨勢的意願,但我太老實跟他說只排在第2或第3。不過老實說我依然非常感謝有這個面試機會,畢竟codility很好玩,而且也了解了不少QA的東西。 # 群暉科技 - 雲端服務工程師 ### 面試前 群暉大魔王是第一家我在104上面投有回覆我的公司,受到同學的慫恿說反正就去被洗臉看看就投了,他回覆說會在某個時間打電話給你跟你介紹一下這個職位在做些甚麼並且講解面試的流程。 這份職位大概就是透過openStack來開發他們的雲端服務,使用Python開發,偶爾要on call(大約一個月一次),面試總共分為三關,第一關是實作一個小專案,第二關是remote coding,第三關是白板題。 ### 第一關 這邊我拿到的題目是實作一個縮網址服務,可以不用寫前端,我本身對於網頁技術的經驗是0,自然是費了一番功夫,有興趣看我怎麼是怎麼生出來的可以參考我的[心得](https://hackmd.io/s/SyvmmBCfX),不過我相信有經驗的高手一看就知道是菜雞寫的,因為把專案push出去後他就再也沒鳥我了。 更新: 沒想到專案結束期限過了兩個禮拜後,居然回信了,因為我真的很想去玩玩看群暉的白板題,所以還是還是有答應參加第二關面試。 ### 第二關 第二關是透過[zoom](https://zoom.us/)這個會議軟體來進行,主要分為三個部分,首先是自我介紹,然後工程師一樣會針對你做過的東西提問。 再來是review第一關做的專案,RD提點了一些可能沒注意到的小地方,這邊可以發現這間公司對於整個程式的架構要求是蠻高的,review完後就是程式的小測驗,這裡他要求我加一個可以刪掉key的新功能上去,其實不難,但由於我對http methods不熟,所以在做刪除這個動作的時候一開始用了POST,不過RD也有提醒了一些東西讓我有想起來大概要怎麼改。(例如最好改用DELETE,還有DELETE的idempotent特性) 最後是小小的程式測驗,問了兩個簡單的sort然後要我用python寫出來,然後有問了一些複雜度的推導等等。 老實說在這個階段我真的講得很不好,第一很真的緊張,第二演算法沒複習的很完整,緊張到在操作server的時候手都在抖,最後連bubble sort都寫好久才寫出來(bubble sort我在訊連考試就寫過了說...),不過不得不說群暉工程師真的是強,光看我寫的程式馬上就能想到一組會爆掉的test case,而且他會用引導的方式來提示你思考的方向,而非直接點出你哪裡不對,這點我真的覺得很厲害。 ### 心得 ~~有點可惜還是沒碰到傳說中的白板題,不過我覺得直接被無視也是蠻瞎的,當初還說: "當你完成專案後會有一個review code的階段",寄信過去問結果連回信都沒有,而且,到現在那個專案的git repository還是可以push東西上去(這份專案是有繳交期限的,而寫心得的當下已經是專案截止日期10天後),我看他八成是忘記了。~~ 更新: 等第一關回覆的時候問過在職班的學長說沒回信有可能是已經找到人了,這我本來倒是沒想到,不過後來竟然回信了,所以應該只是單純順位排比較後面而已,但這個效率...還是讓人有點小不爽。 更新: 二面結束後覺得要當群暉RD真的不簡單,只能說自己實力還太差也沒做好準備吧,個人建議要挑戰群暉的人,做過的專案一定要很熟(而且最好是有內容一點的專案),再來演算法最好要拿起來複習一下,一些課本上有的演算法能秒解是基本,可惜最後還是沒到白板題。 ### 結果 感謝信 # QNAP(威聯通) - 雲端應用工程師 ### 面試前 因為有了群暉面試的一點點實作經驗,就丟了QNAP的相同職缺,也有收到回覆,一樣是先約一個時間打電話給我談工作內容,不過比起群暉,多了一個電話訪談前的線上測驗。 ### 線上測驗 在信件裡面說這份線上測驗大概需要兩個小時完成,但個人覺得題目非常簡單,最多一小就夠了,而且這份測驗是透過google表單來進行回答,也就是不像codility有防作弊機制,邊寫邊查我認為是可以的。 裡面大概問了一些你的相關領域經驗,做search的話hash table跟sorted list哪個比較快,Linux網路I/O的概念,SQL的指令,兩題coding,可以用任何語言寫,這邊我都是用強無敵的Python,第一題是計算出字串內每個字元出現過幾次,第二題是leetcode的第一題[twoSum](https://leetcode.com/problems/two-sum/description/)(題目有要求時間複雜度)。 ### 電話訪談 接著RD就會打電話來針對你剛剛寫的東西更深入的問下去,結果我幾乎都答不出來,談完就覺得自己實在有夠廢。 第一個是問說: hash table做search的時間複雜度是O(1),那在什麼情況下hash table會比sorted list更慢?我怎麼想都想不出來,他就笑笑說這題算是陷阱題,當你的資料量越來越大,或是hash的計算方法不好,hash的碰撞也發生的越來越頻繁,而hash table遇到碰撞會把多的東西append到同一個key後面,這時hash table就有可能比sorted list慢,後來自己去查了一下[這篇](https://www.quora.com/Which-is-faster-finding-an-item-in-a-hashtable-or-in-a-sorted-list-Sounds-easy-Think-rethink-and-comment)裡面就有講到這種情形。 接下來是問一些OS的東西,因為前一天沒有特別去複習OS,只有練習版上的考古題,結果就是回答得零零落落,其實這些問題都沒有特別難,像是何時會發生dead lock(我記得有四個條件,但只講得出一個),通常要怎麼預防dead lock(這邊我回答銀行家演算法,並且有講出怎麼實作,不過他好像不太滿意)。 最後是針對我前面寫的縮網址服務提問,問了幾個問題也是回答不出來,像是: * 為什麼你要用Redis作資料庫? * SQLite也能設定成in memory的,這跟Redis差在哪? * 甚麼是WSGI?什麼是uWSGI? * 為什麼你要用uWSGI?如果要產品化你會用uWSGI還是gunicorn? * 為什麼你要用Nginx?Apache這麼多人用為什麼不用Apache? * 在Flask裡redirect這個動作是怎麼完成的? 當初在學的時候只想著把東西架出來,對這些就沒去深入了解,被問爆剛好而已,不過他還願意再給我一次機會,就說給我一段時間去查,下禮拜再打給我一次,所以就去查了這些東西並整理成[筆記](https://hackmd.io/s/Hk-KZ_lVQ)準備下次面談。 後來第二次電話訪談基本上只就問了一些上次沒回答出的問題,然後有說會再約下一次面試,面試的內容會有智力測驗、筆試跟面談。這邊還蠻感謝RD能再給我第二次機會也讓我能更了解這些東西。 ### 第一次面談 - 新生部門 前面有提過這階段會有智力測驗跟面談,智力測驗的相關資訊版上應該查的到,聽說很重要記得要好好寫。這邊還會同時發另一張考卷,上面有兩題軟體設計的題目讓你想要怎麼實作,RD有說寫完智力測驗之後可以先想想看要怎麼解這兩個問題,待會面談時會討論。 接著就是討論剛剛出的題目,RD會邊給你提示然後你邊想,同時也會提醒你你的想法哪裡不好,出的題目根據RD說是從他們平常就會遇到的問題中挑出來的,所以是非常實際的應用題,一題比較簡單,是設計一個有time out功能的dictionary,在提示下有解出來,另一題是流量控制,我最後還是不會。 然後是自我介紹,聊了一些以前做過的專案還有實習內容,也聊了一些他們的產品還有S家的產品,基本上氣氛蠻愉快的,是目前唯一一家面試時有看我大學跟研究所成績單的公司。 再來RD就開始介紹他們的工作,主要還是用Python開發/維護他們的雲端系統,團隊採用Scrum模式開發(其實我今天第一次聽到這是甚麼東西),據說這個模式他們已經執行了兩年多了,成效也不錯。介紹工作這部分他講得真的很詳細,大概是我面試以來遇到所有面試官裡講的最詳細的,所以後來要我問問題的時候也不知道有甚麼好問了。 最後有提到說會有下一次面試,需要跑一趟汐止總部考白板題,之後會再約時間,然後今天就結束了。 ### 第二次面談 - 汐止總部 到了汐止總部後馬上就開始考白板題,題目是:有兩個int array A與B,print出在A且不在B的所有數字,看完後主管有問我有沒有哪裡不清楚,我覺得題目還算好理解就說沒有,然後就說了一個暴力破解法,然後說如果可以用python寫的話我會把B放進dictionary裡,這樣時間複雜度就可以是O(n),然後主管就問說那用dictionary的話有什麼缺點,我回答會浪費額外記憶體空間,因為dictionary是key-value儲存,但這邊value基本上用不到所以就浪費了 接著又問如果這兩個array是已經排序好的話,有沒有辦法不用dictionay做出來,這邊我想了一下後有說出作法,主管這時才叫我把code寫出來,寫完後跟我討論了一些剛剛可能沒想到的東西,例如print的時候,輸出格式應該要長怎麼樣應該要在一開始問題目有沒有描述不清楚的地方要問,像是應該用\n還是\t還是逗號來隔開所有答案等等,不過主管說這是陷阱題,面試這麼久只有一個人有問過,他也笑笑的講說如果你的PM像這樣開的規格不清楚你又沒問,到時候做的時候明明你的邏輯對,但輸出卻跟測試部門要求的不同就很尷尬了,最後也給了一些coding style的意見,整體氣氛很不錯。 最後是與HR的面談,HR針對我的個人經驗還有人格特質問了很多問題,也有提到一些職涯規劃的問題,由於他說他之前待過新竹的一些豬屎屋,也有介紹了一些豬屎屋的風氣以及與qnap的比較,最後有說了一下薪資結構還有公司的風氣。 ### 心得 qnap面試給我的感覺相當好,RD的面試不失專業,介紹清楚,答不出來也會給我機會去查清楚(人真好),HR也是我目前遇過最專業的,講解相當細心,也會想到一些我平常不會去想的問題,例如在講職涯規劃的時候,他就有提到可以想想你真正想要的工作內容會是什麼樣子,這倒是其他家HR從來沒提到過的,公司風氣聽起來還算自由,基本上除了汐科真的很遠以外我覺得很不錯(不過聽說沒什麼福利就是了)。 ### 結果 offer get