「job」分類文章彙整

我的求職史(1)

八月 8, 2009

今天,換我來談談在美國找工作的經驗談了。

兩年前的七月,在台北的炎炎夏日裡,我離開了我的家。搭上飛機,飛往了土耳其的伊斯坦堡。在那裡待了一個月,輕輕鬆鬆的,期待著下一段的旅程。

八月十四日,我搭上了從伊斯坦堡飛往紐約的班機,準備展開我在哥倫比亞大學電腦科學所的求學生涯。

2004到2005年我曾經在日本東京留學過一年,那一年東瀛歲月璀燦耀眼,色彩紛呈,酸甜苦辣。21,2歲的我以一種長期旅人的心情,在那裡渡過了難忘的留學時光。我記得曾經聽一樣在那裡的留學生同學裡談到想家的種種,我當時認為是他們的社交能力問題,因為我只覺得一個人在東京的日子是多麼地怡然自得,樂不思蜀。我幾乎幾個月也不曾跟家裡聯絡,在宿舍裡每週都有party,沒有party的週末夜,我會自己搭車到澀谷,六本木的club裡去玩。寂寞是偶爾的,卻也帶著那麼點年少的浪漫。

我認為接下來在紐約的留學生活裡,也該是這樣不凡,難忘,五光十色。畢竟,東京和紐約,不都是性質類似的大都市嗎?我認為像我這樣的人,是不可能混得不好的。唸完書,留在這裡找工作,好像也該是水到渠成理所當然的事。因為真正的挫折,在過去的25年裡似乎不曾發生在我身上。

看看我自己,在台北的東區長大,高中考上了建中,高一曾經爛到倒數第六名,一升高二就可以考到第五名,我們班還是建中二類最強的一班,後來大學也是直接考上台大。我自認我不是最聰明的人,但我總是有點辦法。我對各種事物充滿了廣泛的興趣,在各種不同的領域上求取發展,別人都說我是才子。從小到大去過很多不同的地方,我自認擁有了很開闊的心胸和寬廣的見識。在美國,所謂那種亞洲人走不出自己的圈子,被別人當不會玩的nerdie這樣子的事是不該會發生在我的身上的。在這樣的信念下,我心裡充滿了期盼,一方面對接下來那夢幻般多彩多姿的生活,一方面也對即將面對的課業挑戰,工作壓根兒還跟我沒打不著干係。這就是我當時的想法。

到了紐約的第一週,住在表哥在chelsea的家。到的當天,表哥特意從布魯克林大橋進曼哈頓,我看著曼哈頓的天際線,就像北京人在紐約裡的王啟明一樣,我在心裡也喊著”曼哈頓,我來了!”。當晚,我們就在meatpacking district的義大利餐廳吃了一頓難忘的晚餐,那裡到了週末夜,時尚男女,紅男綠女,飲食男女,曠男怨女,全部齊聚了一堂。紐約,所有這裡的過客,都是用自己的了解和觀點去體會這個城市,你想怎麼看它,它就有什麼樣的面貌。

不久後,我就在學校附近找了個房子,當時還有一個多禮拜才開學,我積極參與留學生辦公室給我們外國留學生辦的活動,認識了好些人。 這種愉快輕鬆的日子,讓我覺得紐約留學生活,比起日本,是絕不會更失色的。

開學以後,我才發現自己真的被課業壓得完全喘不過氣來,別說是出去玩樂或交友,我光是為了寫作業,都可以搞到生活不正常。沒有多久,我就發現我們這幫人天天晚上在Butler圖書館裡,過著日以繼夜,夜以繼日的生活。大家,就是我和一些大陸同學們,迅速地熟絡了起來,畢竟戰友們的感情是最快培養的。

那一晚,為了Search Engine的第一個作業,不熟悉Perl的我們聚在了Butler一邊讀tutorial,一邊試著亂做,做到天亮,警鈴大作,大家慌慌張張跑下去以為失火了,雖說是虛驚一場,但也把我們折騰了一夜的緊張情緒短暫地化開,我和楊林坐在圖書館的台階前,他兩眼直愣愣地看著前方,嘴中說出”這實在太他媽傻逼了”。

這就是我們第一學期的寫照。

類似的日子,我或在家裡,或在圖書館,寫perl,寫computer vision,寫algorithm。algorithm期中考是take-home exam,due的前一晚我才開始動,那天就這樣在圖書館寫到早上八點五十分,deadline的前十分鐘,跑到老師辦公室把它交了,這樣子的荒誕日子,拼湊成了我的2007年的後半年和2008年初。剛來紐約認識的那些外國朋友,幾乎都沒有什麼聯絡了。於是我很明白,我的美國留學,是絕不可能跟電影上看到的那種美式白人大學有任何交集了。我們這一群人,就是學校的邊緣人物 – asian nerdie。

寒假突然到來,好些同學已經很積極地準備實習面試,我卻像是鬆掉的彈簧,整個寒假就在玩遊戲和無所事事,我重玩久違的三國志五,用各種弱小君主來全破,中間去了一趟boston和tampa。至於實習,我壓根沒管。

開學了好一陣子,當同學都在報告各類面試經驗時,我才驚覺要開始”投履歷”,然後我才發覺我把可以投的都錯過了。於是我人生的第一個面試,一直等到二月底,才透過在San Diego表妹的關係,跟Qualcomm作了一個電話面試。

面試我的人是我表妹所討厭的同事,那個人是個香港華僑,據說是個能力不強,但馬屁一流的傢伙。總之那次面試我的表現極糟,很多問題我確實都沒有準備過:

   1. 請解釋data cache和instruction cache的不同和使用他們的好處。

   2. 請說明進行function call時memory操作的方式

   3. 請比較macro和function call,說明相異點和使用時機。

   4. struct str {
           char c;
           int i;
      }

      請問str在記憶體中佔多少空間?

   5. while(*a++ = *b++){;}
      請問這個迴圈會不會一直跑下去?如不會,請說明停止條件是什麼

後來我被拒了,在沒有好好把C搞懂的情況下,果然遇上這種公司就死了。

後來,在學校那個Columbia MonsterTrak上唯一投到的微軟在二月底給了我一個面試。那天是個冷冽,而又風和日麗的冬日。我第一次出現在career center,這個往後也不斷出現在我生命裡,不斷打擊我的地方。面試我的人是個約四十歲的白人女人,她很親切,問了我好多我在履歷上列出的以前的course project,問了問我的興趣,她告訴我她是工程師出身,這幾年轉作HR,所以我講的東西她也大致都很明白,也順便告訴我了一下他們微軟員工在西雅圖的生活。”啥?這種純聊天也是面試?”面完回家的路上心裡這樣想著,我的人生第一個較為正式的求職face-to-face面試就這樣結束了。

三週後,我也就直接被拒。

再後來,有一個莫名的印度女獵頭聯絡我,說他們是幫忙幫微軟找人的獵頭公司,在網路上看到我的履歷,問我有無興趣。當時已錯過大公司的實習招聘季,也終於開始慌的我,當然點頭稱是。所以她就安排了一個印仔面我。

第一次跟印仔電面,跟他們溝通的確有點困難。他問了我幾個問題

1. 要我談談我作過的MFC FTP軟體,用了哪些GUI component和實作方式

2. 問了問我binary tree的基本知識

3. 問我semaphore和mutex有何差異

4. 要我談談OOP的意義和好處

基本上是個很快的面試,後來也沒什麼下文。

後來,有一家叫EWT的公司,好像是給Columbia CS的大家群發了徵才郵件,我給他們面了。他們是一家位於LA Beverly Hills的prop trading firm。當時我對這種公司一無所知,總之已經到了三月,我知道自己之前太混,沒有把握投履歷的機會,搞得大公司的面試都錯過了,現在只要有面試就好。所以HR安排我到了他們在曼哈頓downtown的公司去面,那家公司就在broadway上,離trinity church不是很遠的金融區。到了那裡,安排我們作了個三十分鐘的智力測驗,面試的有我,一個NYU畢業的小印,和一個應該是三十來歲的大陸人。寫完測驗後,一個老美面試員來跟我們談話,他是一個software developer,告訴我們他們的developer的職位都在加州,這裡只有quant trader的職位,然後他們基本上是一間java shop。他告訴我們,過兩天會發一個檔案,裡面有測驗,要我們用90分鐘做,做完寄給他們,時間誠信自己遵守。

那些題目是這樣的:

1. Write a function to print the first N Fibonacci numbers.

2. You have an ordered, doubly-linked list. Write a function to insert a new, arbitrary element into the list,  maintaining the order of the list. Assume the comparison operators “<” and “>” correctly compare elements of the list.

3. How can you prevent deadlocks in a multithreaded application?

4. Describe the similarities and differences between blocking and asynchronous I/O.

Similarities

5. Given an array of 1002 numbers in the range of 1-1000 with two numbers duplicated, write pseudo-code with the following characteristic to determine the duplicate numbers (for clarity, there are two different numbers that appear twice in the array). It is fine to alter the array. Optimize for speed and memory separately, and give the big-O efficiency evaluation.

6. On an analog clock, how many degrees are between the big hand and the little hand when the time is 5:15?

7. Write a function to print out the data in a binary tree, level by level, starting at the top.

8. Write a function to determine if there is a cycle anywhere in a linked list.

9. Describe the similarities and differences between TCP and UDP.

10. There is a series of numbers in ascending order. All these numbers have the same number of binary 1s in them. Write a function f(m, n) that returns the nth number in the ascending series of numbers with m 1-bits set. For example, f(1, 2) is 2.(這一題我覺得很難)

11. Describe the similarities and differences between a “thread” and a “process”.

12. Java: How are “synchronized”, “wait”, and “notify” used?

13. Write a function to convert a string into a signed integer (not using library functions).

14. Write a function to convert a signed integer into a string (not using library functions).

15. Write pseudo-code to sort a file containing up to 10 million records where each record is a unique 7-digit integer.

16. In general, how would you describe your own code?

結果我當然多用了兩個小時來寫這個作業,然後交了回去。幾天後他們的HR打來,跟我聊聊天,說要再安排我一個電話面試,然後過了兩天就有一個developer從LA打來面我,他很nice,跟我go through了幾個我在測驗裡沒答好的問題,再問了我一點點java問題,他發現我對java不如C++熟,就沒有再問很多。他說基本上我還可以,有些還不會的題只要多想想應該可以,所以我當時滿懷希望,沒想到後來還是被拒了。

於是三月中開始我就開始亂投履歷,有啥投啥,但都沒什麼回音。

我在學校的MICE上看的一個機會,是Dolby Lab的。這家公司當然是很大了,他們是實驗室裡在找一個intern參加他們的summer research。實驗室的大頭德國人Claus Bauer回了一封信給我,說他們看到了我的履歷,滿有興趣的,想安排我一個面試。後來實驗室的另一個人,一個哥大畢業的大陸人Wenyu兄(他以前是Henning的學生)聯絡了我幾次,說要給我一個電話面試。後來某天下午,Wenyu打給我,主要是問了問我的學經歷,他人也很客氣,他們說他們要找對多媒體技術和data mining有興趣的人,正好我在哥大算是這個領域的碩士,然後以前又有些DirectX和game development的經驗,符合他們要用DirectX作些多媒體app prototype的需求,後來他問我在學校有無可聯絡的老師,我說可以聯絡我的project advisor – Rebecca。

過了兩天,Rebecca跟我說wenyu兄打給他,她應該是幫我說了些好話,她說杜比他們對我很有興趣的樣子。

4月26日,Claus發了封郵件給我,說他們很高興發給我這個offer。

我看郵件真是欣喜若狂,覺得一開始雖然把自己的處境搞得很糟,但最後還是有很好的回報。他們每週給我$1040的薪水,同時給我$1500的relocation compensation讓我在舊金山找房子(Dolby Lab就在San Francisco半島尖端)。套句劉德華在<新上海灘>中的台詞,當時,我彷彿是站在世界最高的山峰。

沒過兩天,有間叫Murex的公司來聯絡我,說他們要面我,HR小姐先問問我有無啥作品集可以給他看,我就放了些我以前作的project,主要是遊戲的一些剪圖放在網頁上寄給她。她反正個是年輕小丫頭,看了看就說滿好玩的,打給我隨便聊聊,問我知不知道他們公司在做什麼,其實我當時雖然把他們公司網頁亂瞄了一下,但其實還是屁也不懂。就隨便跟她亂打哈哈,她還問我,覺得自己的長處是哪,弱點是哪,我跟她說我有時容易分心。以後我才知道,這種問題最好別答得太認真,不然只是自找麻煩。

後來她就幫我安排了一個onsite面試。Murex位在中城離Columbus Circle不是很遠的地方,公司在一個大樓裡佔了不小的面積,整體ambience看起來是還可以,很open的環境,不是那種cubicle的。叫我進來後,就又發了一個測驗給我做,分成數學、程式和算法、以及network & database三部份。上面說數學部分可做可不做。我看了一下,我還真沒幾題能做的。就把程式部份盡量答好。network & database的部分,很多是滿深的問題,我大部分也不太會,當時我對database也很不熟悉,記得有一題給了一個schema,直接要你把database table設計出來,我當時因為久沒碰database。也是答得亂七八糟。不過因為已經有了Dolby的很好的offer,所以心情上也滿輕鬆的。

後來一個中年老美出現,他一開始,就說,你說你的弱點是容易分心,”Why?”。口氣極為冷峻,我答得也結結巴巴,發誓以後這種問題再也不這樣答了。他後來說,你對database的了解似乎也不是很夠,然後無關緊要的話講了講,跟我說這是間很好的公司,你可以告訴你的同學們,說我們一直在找優秀的學生加入。後來,他們也沒再聯絡我。