2017年3月24日 星期五

普通人,美國找工作心得 (七)

一開始準備Technical Interview完全不知從何準備起

只懂得看別人分享經驗,或是就直接去線上刷題

但也不知道要寫到什麼程度,感覺有無限多種題目在網路上

直到被電了好幾場後才慢慢找到感覺

準備資料


1. Cracking code interview

這本經典書籍我覺得務必要看完並且把上面題目都做過一遍 (一定要自己打開電腦打一遍)

雖然上面題目沒有很難,但基本會被問到的概念裡面都有了

2. 刷題網站

像是leetcode之類的網站可以增加題目的廣度,很多電話面試經常問經典題

說不定就給你碰到了 (有遇過幾家大公司電面就是基本題)

值得注意的就是不要因為是經典題很熟悉就不自己動手做了

有時簡單的 2 Sum 或 Binary Search 緊張起來還會寫的卡卡的 (親身慘痛經驗)

3. 經驗分享

前人的智慧值得借鑑,可以花點時間看看別人被問什麼

像是一畝三分地,CareerCup之類的網站都有很多資訊

假如看到完整的題目也可以嘗試自己做做看

概念,題目


不知道以後會如何,不過那時面試最喜歡問的當然就是

0. BigO

BigO的正確定義需要熟記於心,有時HR打電話來很喜歡問你這題

2. Array, List, Stack

這些不用說了吧,特性效能以及如何選擇都是基本概念

2. Hashing

最喜歡問的以及業界最常用到的就是Hashing了

Hashing的概念以及如何實作,優點缺點效能都需要了解

3. Tree, Graph

Tree和Graph相關的演算法很重要

我碰過的題目中覺得最難寫的都是要用到Graph search的問題

但這類問題相對好解,套用相對應的演算法通常就出來了

但程式碼在寫起來落落長非常難寫,需要多做練習

4. Recursion

其實遞迴類的解法效能都不是最佳,通常運用到的是DP演算法

但還是要熟悉遞迴的思路

有時想不到最佳解,先丟個遞迴版本的答案也好

5. Heap

以前在台灣上課時都沒強調這個資料結構

但某些題目知道Heap如何使用的話會比較好想到答案

6. Sort,Search

排序和二元搜尋就不需要多講了

通常面試都喜歡問機車的O(n)解,所以先做排序的答案都不是最佳解

但跟遞迴一樣,可以先丟出這類答案來爭取時間思考最佳解

題目


1. Hashing

這類題目只要想到如何運用HashMap就可以解出來了

相對簡單

2. String

移除重複或對它做其他操作,通常部會太難,想一下就出來了

通常部會有太多奇怪變化,有看作類似題目就賺到了 (像是數學運算)

3. Array

通常會要做變形,搜尋,或找子集

這類題目也沒遇過太奇怪變化,但是沒遇過的問題解法常常很難想到

像是我曾經電話面試被問maximum sum subarray

經典題目剛好有看過,小小模擬掙扎了一下後給出正確解答

面試官心情很好說剩下5分鐘那問你一個小變形好了

maximum product subarray呢?

我從來沒想過可以考product呢,於是我就爆了

4. Tree,Graph

我當時遇到的面試非常愛考這類題目

Tree比較少考,只有電話面試碰到過一次(Binary Tree)

最喜歡的就是BFS,DFS類的題目

這種題目我覺得最多變化,題目背景千奇百怪

但萬變不離其中,套個BFS通常就結束了

通常都是什麼找路徑之類的

只是迴圈版的BFS程式碼又臭又長不太好寫,一定要多練習幾遍

5. Mutation

這類型是我覺得面試裡面會被問到最複雜的題目,因為程式碼非常長

通常需要BFS + Recursion

問題通常是找出所有可能 (給你一些條件),或是列出所有變形或子陣列

某大公司從電面到on-site問了一堆這種,也是頗有創意

什麼給你洋流圖找最短路徑,還有給你一個三角形資料結構找東西

這種題目的最主要的思路都是要想好停止條件不能讓搜尋無窮迴圈

因為通常條件都是可以問出來或是從題目得知

所以我覺得解法不難想

主要難點是這類題目你想到解法還不一定能快速寫出來....




我所能想到這就是這些了,其他什麼Design question我覺得就要靠當下的靈感了

有遇過比較深刻的是某公司面試前給我的參考資料中,有附上他們引以為傲的paper

後來的系統設計就是考他們paper裡面的東西

算是蠻有趣的

2017年3月21日 星期二

普通人,美國找工作心得 (六)

最常被人問到的問題就是

要在美國找工作需要準備什麼? 要透過什麼管道?

講到這個問題就不得不提履歷和Linkedin了!

履歷


以履歷來說上網搜尋的話常常搜到各種五花八門的格式

但以我經驗來說,一個剛畢業的新鮮人

履歷還是以一頁為主

想想看各個公司人資都要處理許多應徵者的履歷

每個通常都會印出來看

先不說可讀性,為你未來公司省紙張也是好的呀!


接下來要講的就是排版問題了

好的排版重點很好抓,又顧面試官的眼睛

首先我最常看到我覺得不優的履歷就是那種字超小擠一堆東西的那種

這種非常難以閱讀又很容易讓人失焦

所以首先你必須要想你履歷想要主打的點是什麼?

(千萬不要過度塞入所有無關資訊! 找軟體工程師,就盡量放上相關經驗即可!)

假如有厲害工作經驗,那一定要把工作經驗區塊挪上

新鮮人沒經驗,沒關係放上精美GPA 以及相關學校Project

通常面試官也只會就你基本資訊下面的第一項至第二項詢問而已

(有些公司可能會有一關特別問履歷上的東西,但以我經驗談個一兩項就可以了,
每個經驗你應該起碼都有一些東西可以拿來說嘴吧)

接下來就是記得每一個經驗項目,下面可以用2~3句來描寫內容

這裡就是你想要透露的專業資訊,以及你想要被面試官問的內容了

千萬不要寫的沒什麼重點又太多條,應該是不會被看到的!

Linkedin


以現在來說真的人多公司的HR會透過Linkedin來找人

所以維護一個精美的Linkedin頁面是必要的

可以去參考大神們的頁面怎麼做的

以我來說,我就只是把我履歷稍微修改一下放上去而已

也是常有HR來找我,給我資訊所以應該還是可行的

普通人,美國找工作心得 (五)

雖然是個小公司實習,也是沒錢拿的

但當初一起實習的同學還有兩位中國同學後來都去了Amazon

反觀魯蛇小弟我,在一家小公司奮鬥!

在最後一個學期的時候,開始準備找工作

那時大概九月左右

同期大神同學竟然已經開始各大公司面試

GPA 4.0超狂果然不同凡響!

大神同學可以霸氣發言,沒有程式題可以難倒他

但我無法過五關斬六將,過兩關就是祖先保佑了!!!

於是最後一學期就在緩慢刷題,上課,打電動之中度過




我運氣不錯,收到了幾個面試機會,但都被我當練習玩掉了....

最後覺得自己刷題差不多了,神功大成

以完全體狀態去面了Google 直到on-site

但後來沒Offer,事後HR跟我說因為當時剛好沒缺忍痛放棄我

我一直覺得是客套話就是了

總計下來有印象的大概如下

Amazon x 2 (on-site)
Google x 1 (on-site)
Yahoo x 1
Linkedin x 2
Facebook x 1
Matlab x 1
Redfin x 1 (on-site)
其他還有小公司和幾個忘記了




我個人認為求職最重要的因素大概就是

1. 實力
2. 身份
3. 內推
4. 運氣

實力靠刷題相信總有一天會大成

身份就拚投胎了,跟金庸群俠傳一樣,記得輸入隱藏名字得到好數據

內推大概是最有效率的了(看那團結的印度人中國人,找工作沒煩惱)

所以各位同學,盡力Networking吧!

要是剛好遇到朋友的組缺人又跟老闆麻吉的話

進大公司都不是煩惱了呢

值得注意的就是,公司系統似乎有個唯一性

要內推的話記得不能先自己去投

已經先投過A公司再去找A公司的內推,似乎就不行了!

我當初好像都先投過一輪才去找內推就太遲了....

普通人,美國找工作心得 (四)

我當初實在是太傻了,準備面試都是以戰養戰

老實說浪費掉了許多寶貴機會

差點就可以跟神人一樣on-site多多

可惜當時面試準備不夠充分死在電話面試好多通....

當時剛到美國求學第一年

快要暑假時我就準備要找實習了

完全不知如何準備,版上說要刷題

不知道要刷那些,要刷到什麼程度

在完全沒準備狀況下我收到了人生第一個電話面試

Google Intern的面試機會


當下真的覺得,天呀!!沒想到Google也能看上我的履歷

難道我的大神傳奇一生就要開始了嗎!

好像許多大神起手式都是從大公司實習開始的

有大公司的實習還需要煩惱之後的面試正職嗎?

於是我抱著以上這種心態去面試了

Google當時實習面試流程是這樣的

一通HR電話面試,基本上就是問問基本資訊

後來會安排同一天兩通40分鐘的技術電話面試,好像過了就上了

這時不得不說,Google很愛用他們的Google document考程式題

非常難寫!!!


不是題目太難的難,而是程式碼打字困難....

現在回想起來其實面的題目真的不太難

但是幸福來的太快太突然,我完全沒有準備好

被電的不要不要的....

電話面試的重點就是不要冷場


不管想到什麼都要講出來跟面試官討論

但我完全0經驗,冷場許久,且不習慣電話講程式碼

簡單的Binary Search都寫的卡卡的

理論都知道,但實際在電話面試下打字真的各種意外



大公司都可以隨便你挑程式語言

由於我大學後期比較常用Java所以我選擇Java

第一個電話雖然我卡卡的但整體上還是寫出來了 (但可能別人可以答更多題)

第二個面試官很和藹地問我要用什麼語言

我說,我選擇Java


面試官: 阿...是Java阿,可是我平常都問C++耶


結果他隨意問了幾題厚實在忍不住

就說看到你的履歷上面說你以前有寫過C呢,你還記得嗎?

我心裡想說: 當兵一年沒變笨就好,還問我C!!! 好久沒碰阿

但我只好跟他說好呀~

結果問了我一題指標問題,但我完全忘記語法了....

他也死不跟我講語法怎麼寫

於是我就爆了....

最後我還是就近找了一家小公司做個寫網站的實習生XD

普通人,美國找工作心得 (三)

普通人沒有強大氣場該如何成功增加面試機會呢?

尤其是大學一畢業就出國念書的留學生們

履歷上能拿來說嘴的就是GPA

沒有神一般的學校,超狂的GPA,或是霸氣的老爸

凡人還是在暑假的時候乖乖找暑期實習吧

老實說,除非你在台灣有國際知名的大公司實習經驗

國外公司基本上會忽略你的工作經驗的!

我當初最常被問的就是

請問您有在美國工作經驗嗎?


所以為了之後找工作的順利

留學生們最好在暑期或寒假或某一學期

去找一個實習吧!


有錢的最好,沒錢的也可以拿來說嘴阿!

尤其對我來說

有個美國工作經驗可以讓面試官多問我一些履歷問題

多一些技術問題有可能會考倒我阿!

最好問我履歷就讓我把時間消耗掉一半

最後再問我個一題希望我能答對就好XD

托福準備經驗 (三)

閱讀,聽力


閱讀聽力都是假如總共只錯在一定題數以內,就可以拿到27

所以我的目標就是如何少錯一點

閱讀跟聽力老實說其實蠻相似的,一個是看文章一個是聽對話演講

首先當然是單字量要足夠

其他方面就是考試技巧了

在我當兵期間TPO已經黃金閱讀100篇海量做題之下後發現

當你對選項有疑惑時,二選一或是根本不知道哪一個是答案

答案一定是文章或演講對話中改寫的句子!!!


運用主詞受詞動詞分析,你會發現有一個選項根本是內容的換句話說

不要考慮了,這就是答案!

尤其是閱讀真的是很陰險

常常那種請問下面哪一個正確

總是最後留下兩個選項猶豫不決

這時就要把握換句話說的句子

還有就是

文章裡面沒提到的絕對不是答案!!!


有時候你會遇到有一個選項你就是覺得是正確的

但其實這個可能是你自己的知識所推論出來的但文章裡面並沒有提到

小心不要踩到這種陷阱啦!

作文


作文只要兩篇都拿G就可以27了

我當初第一次拿GF,所以我的目標就是讓第二篇作文提升到G

當兵時候也只能自己看自己寫的作文

有種球員裁判都是自己的感覺XD

但在我分析我寫出來的作文後發現了一個小細節

通常大家都是透過模板寫的

中間論點塞入舉例解釋論證

我發現假如只是單純每段開頭+舉例解釋論證

常常會不知不覺中小偏題

例如: 題目問一個人能成功是因為他勇於冒險,你同不同意? (我選擇正方)

常常你的每段就會寫成


勇於冒險有什麼好處,勇於冒險怎樣怎樣的


但問題是題目是問你同不同意而不是問你勇於冒險有什麼優點

所以我就嘗試著在每段後面加入

因為這些原因,我同意勇於冒險比較好


可以增加整體作文的邏輯性

後來考出來成績,我第二篇作文成功上升到G了!

但由於一些意外發生導致我第一篇降到了L....殘念

托福準備經驗 (二)

接下來要講的觀點以前有在托福版PO過

我個人是覺得很實用啦

我當初總共考了兩次

1) R 21, L 21, S 20, W 24(GF) Total 86
2) R 27, L 27, S 20, W 20(LG....) Total 94

老實說成績不是很好呀XD

但我想要分享的是我如何有計畫性的提升我每個項目的成績

(除了作文出現了一些小意外....)


-----------------------  分隔線  --------------------------------------


當初第一次考出來才86後我就自我做了分析

自我評估我每個項目該如何在短短幾個月內提高

力求下部隊前爭取破百 (在東引島當兵....)

我自我評估後

瀟灑地放棄了口說!!!

口說完全沒頭緒阿,我認為是無法短期內提高的!

可能就是要先想好制式模板,但我也是這樣做呀!

這一切都太神奇了所以我就放棄了Speaking轉戰其他項

我研究了一下後發現我能破百的希望就在於

R 27+, L 27+, S 20, W 27+ (Total 101+)

我只要閱讀聽力寫作都拿到27以上,口說繼續保底20就能低空掠過目標了!

假設人品再爆發一下,最抖的作文就還可以再低一些呢~

於是我就在當兵受訓期間開始了我的自我提升計畫!

托福準備經驗 (一)

當年為了出國念書,大學畢業後就去當兵了

同時也要準備英文考試

現在想想當初真的是有點艱困阿!

為了不要拖到一點時間想要一退伍就出國

在受訓期間趁著晚自習去念英文

放假回來還要做TPO練習

結果努力了好一陣子去考試

還是沒有破百!!!


現在回想當初應該要再試一次的...

但人生就是這麼多個意外

畢竟從高中開始,英文就常常考不及格呢

文法奇差無比

當初實在無法保證在當兵期間還有辦法再創新高了

不過雖然沒有破百 (我至今仍相信我再考一次就行了)

還是有一些總結經驗可以分享一下

普通人,美國找工作心得 (二)

撇開履歷該如何寫,以及面試該如何準備。

我覺得通常留學生最常犯的錯誤就是


時間!!!


在我當初開始找工作以及後來開始上工後所認識到的其他學生

最常遇到的問題就是,已經拼命投履歷了,為什麼都還沒回應呢?

可能心裡還覺得我已經很認真在找啦,可是沒什麼回應。

這些人呢,有很大一部分都是畢業後開始準備找工作的。

已經來不及啦!!!


必須再三強調,這個心得是基於普通人來說的

神人等級人物,各個大公司都敞開大門歡迎進來

可能還是主動被找的可就不適用本篇理論

更何況神人可能早早就被錄取啦!

身為一個

平凡人


在畢業前一個學期就要開始找了,機會才會比較多

想想一個五月畢業的學生,其實各路大公司在去年九月就開始找下一批新人了

等你五月開始找的話,剩下的缺已經不多了....

除非上輩子有燒好香,七世大善人

我阿宅連發票都中不了200元的魯蛇更不可能賭這個機會了!

所以真的奉勸各位留學生

不要因為周遭環境可能都傾向畢業後再開始還不遲

早早把握最後一個學期,通常也沒什麼課

開始海投自己的履歷吧!


普通人,美國找工作心得 (一)

話說從留學開始,似乎都不是非常順利。

看版上各路大神面試拿不完,也都順利通過進入夢幻公司。

而身為阿宅,平常下課下班就是回宅,似乎都無法這麼順利。

非大神當然要拿到面試機會就不多了,好不容易拿到後,又各種搞砸....

這就是人生!!!


終於在今年回台成功轉換美簽為H-1B真是各種感動。

忽然想起當初在找工作時,版上都是大神分享的經驗。

老實說對我平凡人

完全沒有參考價值!!!


於是想說來分享一下

一個普通CS留學生的經驗好了

不過分享了也不知道會有幾個人看到呀 (遠目)