看板 studyabroad 關於我們 聯絡資訊
先前在申請、找工作的時候受惠於留學版以及版友許多,最近剛好找工作到一個段落想說 有些心得和大家分享。因為版上的上的大神太多了(今天才受教於一位大神版友XD),若有 不足之處還請大家多多指教。 背景: NTUEE B.S. in EE UC Berkeley M.Eng. in EECS 申請工作: Bloomberg ML Engineer -> Rejected Early Sept. Boeing SW Engineer -> Rejected Early Sept. Intel PSG (Formerly Altera) Rotation Program -> Offered Early Oct. Twitter Deep Learning Engineer -> Offered Early Nov. Accepted Apple Camera Group HW Engineer -> Offered Early Nov. Apple GPU Group HW Engineer -> Offered Early Nov. NVIDIA ASIC HW Engineer -> On-site Nov. 8th (Today XD) Apple Siri NLP -> Ongoing (Likely decline further interview) 因為念的是一年的 Program,從八月一號一登陸就開始海投、請人內推、Career Fair 在過程中有很多自己做不好的地方,因此想把一些經驗和版友分享。FLAG 的部分... 因為小弟真的還差一截,完全沒有收到回音,還請版友多多指教。 一、M.Eng. 一年 Program 的優劣、面試管道的取得 在正文開始前想先特別提到一下版上先前有討論過的 M.Eng。最近幾年前面的學校 都開設了所謂的 Master of Engineering (M.Eng.) Program。因為先前來唸的人 不算多,大家主要的擔憂有兩點 (1) 學位名稱不一樣,找工作不好找 (2) 一落地 就要開始找工作,沒實習經驗不好找。但就小弟的目前為止的經驗,我想其實幾個 大名字的 M.Eng (UIUC, UCB, Cornell) 對於未來想要直接投入職場的同學來說, 絕對是個好選擇(注意若想要升學博士則未必)。其實大家來美國念碩士也就無非是 當成一個找工作的跳板,你知我知 HR 也都知道。因此掛的學位名稱真的關係不大 。有人會擔心會不會是 M.S. 若比較有 domain knowledge 的事情,M.Eng 做比較 技術的職位。其實真的是沒差的,我有看過 Ph.D 投 SDE,也有看到同屆的 M.Eng 找到掛 Data Scientist 的職位。到頭來,校名只是幫你過第一關,從第二關的電 話面試以降,就都是靠個人的實力了(順便打個廣告,歡迎大家申請 UCB 的 M.Eng XD省錢又可以快速開始工作)。而這又帶到第二個議題: 面試管道的取得。一般來 說面試就是三種方式取得: (1) 海投 (2) Career Fair (3) 內推 先說海投,基本上真的是比較運氣的事情。尤其是 CS 熱到不行,HR 的信箱可能 隨時都塞著一百封未讀信。一般來說海被看到的機會極低,但一旦 HR 和你開始聯 絡後,起跑點也就跟大家一樣了。 再來是 Career Fair,我覺得常常被大家低估。小弟的四個 Offer 中,有三個是 透過 Career Fair 最終拿到的 (Apple*2 + Intel*1)。Career Fair 有兩大優點 (1) 保證可以跟 recruiter 說到話 (2) recruiter 保證會看你的履歷。要知道 跟 recruiter 說到話,是取得面試機會的第一步。在海投和內推中,你的履歷都 是透過第三方轉到 recruiter 手上的。對 recruiter 來說,你是一個遙遠、陌 生的概念。Recruiter 不知道你履歷上的東西含金量到底多少,也不知道這個人 的能耐到底到哪裡。但在 Career Fair,你站在 recruiter 前的五分鐘是一個活 生生的人。通常也有一點工程背景的 recruiter,聽到你講幾個關鍵字,就大概 知道含金量高不高。通常第二天,至慢一個禮拜,就會有回音。真的對你很有興 趣的 recruiter,甚至當場就跟你說了,直接預約面試詳談時間。因此 Career Fair 的時候,不論要排多久,請穿上襯衫、印好二十份履歷,到現場大開殺戒。 最後是內推,一件非常奇妙的事情XD 內推是確保 recruiter 一定會看到你履歷 的方法。但是 recruiter 要不要和你聯絡,基本上還是操之在他。因此在內推之 餘,也絕對不要鬆懈,持續透過 Career Fair 和海投找機會。 二、面試前: 流程、盡早、刷題、念書 (a) 流程 一般來說 EECS 的面試流程如下 1st Round Phone Screen -> 2nd Round Phone Screen -> On-Site Interview HR Engineer A hell lot.. 上面是小弟碰過最短的,最長的有四輪 phone screen,一輪 recruiter、一輪 hiring manager、一輪 coding、一輪 domain knowledge。而 on-site 通常是 一輪,唯一的例外是 Apple Camera 讓我下去 Cupertino 兩趟...。基本上一個 完整的面試流程跑完,也大概是一個月了。因此十月拿的 offer,是九月種的果 ,找工作這件事是越早開始越好,等看到大家都在面試再開始投就真的來不及了 。通常第一輪的 Phone Screen 主要是 Recruiter 看看你的口語表達,還有你 到底對於這份工作有沒有興趣。一定要做的功課是至少看看這間公司最近的新聞 ,不然當 Recruiter 問你 "So why do you choose xxx?" 而我只能回答 "Cuz I need a job,"真的會很尷尬XD(我 Bloomberg 真的這樣回答...)。接這一定 要練習自我介紹,分成三個版本: 30 sec、1 min、5 min。台灣人比較會有的習 慣是從 "I am currently studying at xxx" 開始。但這樣的開頭能避免則避免 ,就像老美說的 "Show me the juicy pary",30 sec 的自我介紹就是要把自己 的技能包講給 recruiter 聽,並且跟他說為甚麼這些技能包對公司有用。舉例 來說,一個冗於的開頭是 "I am Max, I currently study at the famous xxx University. My major is in yyy, and I am really interested in your company." 基本上算是講了等於白講,底下這段則告訴 recruiter 很多有用的資訊 "My major proficiency is in ooo and xxx, my publications/projects can further prove it. I think this is a crucial skill to you because yyy." Recruiter 聽到有興趣的關鍵字,才會想繼續和你聊下去。這樣三十秒的自我介 紹請準備多種版本(針對不同職缺)一再練習,因為每個階段的面試都有可能用上 。接著是一分鐘版本,和三十秒版本比起來大同小異,但可以加入更多技術細節 ,如 "I have implemented xxx algorithm in yyy language, which is a common algorithm in your industry. To build the project, I used ooo as a tool." 最後是五分鐘版本,選擇一個你認為最重要的專題或是研究,在介紹完一分鐘版 本後進一步說明 "One project I like the most is xxx, this is because I learned ooo from it. The core problem this project deals with is mmm, this is an important topic because nnn. To tackle this down, we divide it into three stages.." 打稿後,可以反覆練習、找同學練習、找室友練習(感謝我的大神室友常常陪我練) 。當面試官進小間然後和你說 "Please tell me about yourself.",一個信心滿 滿而且結構嚴明的自我介紹,絕對會提升你自己的自信,也讓面試官留下好印象。 (b) 盡早 盡早開始投。有些人會想 (1) 太早投還沒準備好 (2) 專心準備 dream job。基本 上,面試也是一種技巧,包含 (1) 如何傳達你的知識 (2) 如何傳達你的思路 (3) 如何傳達你的潛力,這三點都是很難透過練習或是念書準備的。因此盡早開始投, 透過和一些小公司的面試,開始磨練自己的面試技巧。以我自己為例,我的第一個 on-campus 面試是 Bloomberg,那時候我的表現糟糕透頂,很多想法都講不出來。 兩天後的波音也是一團糟,甚至不小心在 F-22 的電戰工程師前表了 F-22 (我 "F 35 outperforms F22 mainly on the software but not hardware"XD)。但這些經 驗都讓我有機會再修正日後的面試和準備方向。我自己投的策略是這樣 Tier 3 -> Tier 1 -> Tier 2 我的想法是透過 Tier 3 的面試經驗,讓我能挑戰看看 Tier 1,若真的失敗,再 以 Tier 2 當成最後的保底。幸運的是在 Tier 1 這關就結束了 Orz。因此盡早投 ,就算面試表現極差,也是寶貴的經驗。 (c) 刷題 刷題也是很火紅的議題。我自己覺得其實不用刷到爐火純青(我知道有中國人刷兩 三輪),但我自己大概是刷 ~100 題。從後來面試的過程看來,被問得多數軟體問 題也都有解出來,反而是硬體常常寫出很爛的 Verilog XD。我認為刷題主要要訓 練自己三件事情 (1) Writing Neat Code 怎麼讓自己的 Code 精簡不雜亂,因為 on-site 的白板空間真的有限,大家 都不會想寫/看一長串的 Code。 (2) Using Core Data Structure 也就是 C++ STDLIB 的核心幾個: Vector, Queue, Heap (Priority Queue), Map, Hash Table (Unordered Map)。我非常老派,寫 code 都用 C++,但出 乎意料地好用,也感謝多數面試官接受。 (3) Time/Memory Complexity Analysis Big O Notation,寫完 code 後必考,一定要熟知。 (d) 念書 念書、念書、再念書。面軟體就念 Abstract Class, Virtual Function, Pointer ,面硬體就念 Cache, MIPS, FSM。面試考的記憶問題絕對不難,都是我們當時 學校學的滾瓜爛熟的那些老問題。C++ Memory 怎麼 Allocate,變數在 Function Call 後會發生甚麼事,Memory Leak 怎麼發生。MIPS 怎麼切 Pipeline,Cache 分成哪三種,Moore Machine 是甚麼。上面都是我在面試被問過的,都不難,但 是不念書真的一時間想不起來。因此不論時間再少,一定要把這些基礎知識念過 一輪,真的不知道要念甚麼可以寫信問問 recruiter 面試的方向。我時常是通宵 念書到早上六七點買杯咖啡開車下去 on-site 的 Orz 一路上都很怕車禍。但面 試官主要也就問兩種題目,有制式答案的和需要動腦想的,前者當然是越快速答 出越好。一來可以讓面試官印象好,二來你有更多時間可以討論後面的開放問題 。最好的情況下,你可以把面試官準備的問題都回答完,這應該算是大大加分。 三、面試中: 發言、發問、發狠 (a) 發言 好不容易履歷過關斬將後,第一個面試終於來了! 不論是 HR 打來的非技術面試還 是工程師的技術面試,盡量別讓場面乾掉,能補充的請補充,不能補充的就發揮幽 默感讓面試官笑一笑。比如說底下的一個問題 "Tell me what you know about virtual function" 你當然可以簡單回答(這問題我被問過三遍以上...) "Virtual function allows us to perform run-time polymorphism" 當然是一個正確的答案,但就這樣打住,很容易讓面試官覺得你就只知道這麼多, 因此底下這樣的答案可以讓面試官真正清楚你的知識 "Virtual function allows us to perform run-time polymorphism. In C++, it is specified by a keyword "virtual" in a parent class. The function can be overwritten by inherited classes. By doing so, a pointer to the parent class can be used to call different functions, achieving run-time polymorphism. We can further define "pure virtual" functions by adding a "equals zero" statement right after the function." (小弟不是CS專業,有錯請見諒) 基本上就是能說多少就說多少,如果你就此打住 了,面試官當然可能問也可能不問,後者的情況吃虧的是我們 QQ 所以能說則說。 另外一個我們比較會忽略的是 "Think our loud",把自己的思路大聲講出來,避 免一長串的沉默。比如說當你不確定該怎麼做一個 coding 題的時候,可以先講講 看, "I am thinking of using a hash table, because it can support constant lookup time. However, I know this introduces much memory overhead." 這樣得到的回應無非是兩種 "You are on the right direction, what supporting data structure may we add to the hash table?" 或是 "Oops, perhaps hash tableis not what we are looking for, if lookup time is not a concern, what else might you use?" 上面兩種答案對於情況都一定有幫助。偶爾面試官可能會鐵石心腸地看這你XD但機 會不大。總之,把自己想到的東西燒經整理後都講出來,可以讓面試官知道你的極 限在哪裡,也知道如何幫你繼續。當然,若有東西自己真的不知道,也要大方承認 。若隨便亂猜猜錯了,可能會讓先前你講的東西大打折扣。另外一點 (b) 發問 除了發言外,面試的時候多多發問。我最常問的三個問題是 (1) "Did I answer your question?" (2) "Am I on the right direction?" (3) "Would you mind giving some hints?" (3) 特別重要!! 不要怕要求提示,面試官寧願給點提示後你開始有想法,也不願意 在一旁陪我們發呆一整天。遇到瓶頸,就勇於發問。沒有面試是完美的,小弟拿到 Offer 的幾間面試幾乎有一兩場小弟完全搞砸了,都是需要提示才能繼續解。所以 問問題顯然是沒關係的。此外記得把一些背景的限制問清楚,memory 比較重要還是 running time? 想要寫成 object-oriented 嗎? Code 要不要 Scalable。邊回答也 可以邊補充,說明自己為甚麼做這樣的設計。 (c) 發狠 看到題目,如果心中模模糊糊有一個好解法,但是不確定是否可以在時限內寫出來, 務必要先和面試官交代你大概的想法。若時間真的不足,可以嘗試先解出暴力解 (即 Brute Force (此點特別感謝 Scott 學長教導 Orz)。不論 Brute Force 多醜,先拿 出狠勁寫下來。確定會動、結果也正確後,在來談優化。但當然若有更好的想法一定 要先說。有時候我們難免會想解出最佳解,但最佳解或許要很久才能得到。如果時間 到了,你只留下一團亂的白板,是很難說服面試官你真的有解出問題的。Brute Force 可能很醜、很笨、很亂,但是先寫下來,好像考試先拿了基本分,是不會出錯的。 四、面試後: Follow-up、Follow-up、Follow-up 面試後我們可能很沮喪(難免搞砸),也可能很興奮(把面試官的問題列表用光了!!), 但請一定要寄信 follow-up。我在每次面試後(phone screen 不例外)幾乎都會繼續 坐在電腦前兩三個小時,把剛剛沒答好的地方查清楚,或是把沒寫完的 code 寫成 正式的 code (既然有時間就不要寫 pseudo code),寄給 recruiter,請他代轉給 面試官。這有可能救我們一命!! 小弟印象最深刻的是 Apple Siri 的第三輪 Phone Screen,小弟真的完全搞砸了,interviewer 在電話那端嘆氣連連(是真的嘆氣...) ,寫 code 手氣也很差。事後小弟花了三個多小時幾乎重新把每個問題答好,code 也寫成 .cpp,一併寄給面試官。沒想到面試官回信跟我說他決定再給我一次機會, 後來也順利通過了...(這也證明第一次真的答不好XD)。所以說每次面完,花點時間 把題目重想一遍,既可複習又可加分。至於面很順利的情況,也不要忘了寄信給面試 官和 Recruiter 道謝,當作是錦上添花。 五、後記 從八月中開始找工作到這幾天終於定底,一路上很感謝學長姊的提攜和朋友們的鼓勵 ,也謝謝版上幾位大神的開示。找工作是一條很長的路,但每次多堅持一點,相信各 位版友也可以找到心目中的理想工作,也預祝大家找工作順利! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 24.7.87.200 ※ 文章網址: https://www.ptt.cc/bbs/studyabroad/M.1510220882.A.7A9.html
lance8537: 可是recruiter通常在校招也跟幾百人說話耶 11/09 18:09
但還是好過海投和內推 Orz 工作人人想要
dyadi: 推 11/09 18:32
Mariobrother: 我還不推個 11/09 18:40
a28161086: 推 11/09 18:42
NEWSTAY: 好紮實的內容 11/09 18:52
RobinpeterH: 推 11/09 19:16
bruce00595: 推 11/09 19:17
a2ab34bc: 推 11/09 19:23
HAKUKE: 推 不過好奇為什麼最後選twitterXD 11/09 19:39
主要是看團隊的氣氛、產業、還有 package,有興趣歡迎私訊討論 XD
yogurt1988: 推 11/09 19:46
so15963: 推 所以我說那個PS4呢 11/09 19:50
昨天打到三點...
fifi82726: 弱問 這樣OPT也是3年嗎 11/09 19:53
kazewind22: 推 11/09 20:03
van2037: 推 11/09 20:11
kurenai0514: 推用心好文 11/09 20:18
coldman519: 推 11/09 20:23
edwardboy26: 太詳細了 11/09 20:46
twbb: 是3年吧,不過他是公民 11/09 21:47
dallasdt: 推 11/09 22:06
mmonkeyboyy: 推 11/09 22:23
henryhello: 推 11/10 00:00
※ 編輯: frankshyu (24.7.87.200), 11/10/2017 00:06:18
b29308188: 推很詳盡~不過有一點不太認同,有私下跟幾個面試官談 11/10 00:11
b29308188: 過他們說最討厭的面試者就是一上來就馬上寫code甚至直 11/10 00:11
b29308188: 接brute force, 這樣會讓面試官很難跟上你的想法或者認 11/10 00:11
b29308188: 為你沒有仔細思考就亂BF。比較好的方式是先不要開始寫 11/10 00:11
b29308188: ,先分析說有哪些可能的做法,時間空間複雜度是如何, 11/10 00:11
b29308188: 之後才開始implementation,這個步驟可以讓面試官知道 11/10 00:11
b29308188: 你已經會BF而且可以換取一些思考時間 11/10 00:11
感謝大大指教,小弟的方法真的有點太原始 Orz ※ 編輯: frankshyu (24.7.87.200), 11/10/2017 00:15:24
sttagomantis: 是說我印象中UCB Meng只收美國公民 其他直接rej 11/10 00:21
其實沒有啦XD 這屆我認識台大來唸的有五個 ※ 編輯: frankshyu (24.7.87.200), 11/10/2017 00:22:03
sttagomantis: 是3y前一個你的學長跟我說的 11/10 00:22
sttagomantis: 可能又reopen了 因為那個學長說他都沒NTUEE學弟 11/10 00:23
現在應該收很多了哈哈 ※ 編輯: frankshyu (24.7.87.200), 11/10/2017 00:27:26
JJ1622: 很有幫助 推~~~ 11/10 00:27
hsu761001: 感謝分享 11/10 00:28
※ 編輯: frankshyu (24.7.87.200), 11/10/2017 00:37:21
pwh17: 推強者我同學 11/10 00:39
============================================================================== 原先有版友 tim26270746 的推文,應 tim26270746 本人要求刪除,若需證據歡迎站內信 ==============================================================================
tim26270746: M.Eng 感覺比較適合像 frank 實力堅強的同學 11/10 01:21
rex1995: 想問 學長們會覺得先實習再正職 跟直接應徵正職有差嗎 11/10 01:45
CCSam: 個人感覺是有沒有實習差很多..灣區HW公司. 11/10 01:50
b29308188: 回樓上 實習的bar通常比較低之後轉正通常會比直接找正 11/10 01:52
b29308188: 職容易 11/10 01:52
eric810905: 推 很棒的心得 11/10 05:02
dora2402: 請問關於DL/ML的部份是怎麼準備的呢? 11/10 06:29
※ 編輯: frankshyu (24.7.87.200), 11/10/2017 08:51:29 林軒田教授和李宏毅教授的 ML基石 和 MLDS,真的是台大兩大神課。另外如果要找影像 的話,複習莊永裕教授的 VFX 真的很強,一門課讓我找到一份工作的故事... ※ 編輯: frankshyu (24.7.87.200), 11/10/2017 08:52:53
ayuc: 強者同學熱情分享 我還不推個 11/10 08:58
bear05566: 安村小魯參見灣區大神<(_ _)> 11/10 09:22
henry1915: 跪了 11/10 09:36
outstanding1: push 11/10 10:06
cycheng901: 跪拜大神學長<(_ _)> 11/10 10:42
bluebluelan: 白學現場~ 11/10 11:01
bluebluelan: 落地兩個月就拿到full-time offer 可以當作教科書了 11/10 11:02
藍大客氣了 <(_ _)>
sylaw: 推! 11/10 12:46
※ 編輯: frankshyu (24.7.87.200), 11/10/2017 12:51:52
JonaGoGo: frank 太厲害了<(_ _)> 11/10 13:42
Telemio: 推 好文 11/10 14:59
sunshinelee: 只要能達成Frank的7成功力,我們就已經贏過90%的人了 11/10 16:33
jkes890094: 跪拜frank <(_ _)> 11/10 16:35
catinclay: 推推 11/10 16:36
※ 編輯: frankshyu (24.7.87.200), 11/10/2017 18:05:34
kevin85421: 推 11/10 18:57
musicaledio: 推強者 11/10 19:28
marmarmar: 推強者 11/11 00:30
bomnker: 推分享! 11/11 01:17
drajan: 同意22樓 直接BF很危險 最好先想清楚有無更好的演算法再開 11/11 04:15
drajan: 始implement 在優化時面試官也會試圖引導你朝哪個方向 11/11 04:15
kriswu8021: Mfj 先推再看 11/11 09:57
ron0908: 推分享!印象中M.Eng的Career fair好像比學校的好很多XD 11/11 16:43
hopkinwalker: 感謝分享 11/12 00:27
acgotaku: 原PO有公民嗎!!怎麼能到波音面試呀 11/12 07:34
bluebluelan: 有喔 他在oversea_job就說自己是美國公民了 11/12 07:59
autumn0102: 推 11/13 16:28
shinerkr: 推 11/16 08:41
AlibabaLin: 推 12/01 00:47