TW來了 12/23 收到了ThoughtWorks的HomeWork, 通知我簡歷篩選已經(jīng)過了,發(fā)給我三個題目,是寫程序的題。要求我從中選擇一個作答,在2-3天內(nèi)上交。能夠通過TW的簡歷的篩選讓我喜出望外,對這個公司 的興趣源于公司名稱。思想工作?通過進一步了解,讓我對他們平等的組織機構有了了解,于是更增加了一份向往。如今有了這次機會,實在是太幸運了。
做作業(yè): 程序題對輸入輸出沒有要求,從題目說明中示范的輸入輸出來看,用控制臺足以解決問題。但是為了方便以后通過其他的方式輸入,接受用戶輸入的函數(shù)由外 邊傳入一個inputStream即可,這樣你用System.in就是控制臺輸入,用StringBufferInputStream就是從字符串輸 入。程序邏輯非常簡單,但如何設計的可擴展確實值得下一番功夫的。因為后面的結對編程階段將會對這份代碼提出新的需求,并進行重構。花了一天的時間研究設 計模式,用ArgoUML畫了UML圖。這里前列推薦一下ArgoUML,這是一個JAVA寫的UML工具,界面用的是SWING,跨平臺性應該不錯。關 鍵是麻雀雖小,五臟俱全,我原來用過RationalRose,只用了1個小時就基本適應了這個工具。看完設計模式以后,有點模式上癮的感覺,看到什么都 想套個模式……但是本著循序漸進的原則,我還是先寫了一個較為簡單的版本,已實現(xiàn)基本功能為目的。只設計了3個類。之后開始著手重構。在一番刻意的設計之 后,決定把原來的工程推倒重做……因為改動實在太大了。狀態(tài)、命令模式的引入使得類的數(shù)量增長到10個,并增加了3-4個接口。設計完之后,感覺自己的程 序像是變形金剛了……甚是滿意。于是寫測試,寫Ant腳本,寫文檔……經(jīng)過一番體力勞動,打包上交了。靜候消息……
筆試: 2008年過去了,第二年我終于收到了TW下一階段的指示。1月6號下午讓我去筆試。想了半天覺得也沒什么可準備的,因為據(jù)說都是推理題。提前半小時來 到了TW在東直門的辦公室。在門外觀察了一下,很干凈,確實是外企的風格。然后就進去了,里邊的工作人員問我找誰,我說面試,然后就讓我先坐下等著。TW 的辦公區(qū)分為兩大塊,整體布局呈啞鈴形狀。桌子跟網(wǎng)上說的一樣,沒有隔板,是很自由的大家圍著坐的布局。拿著資料看了幾分鐘,HR的MM就要請我進入了一 間寫著'元'的房間,才意識到這里的辦公室都是用中國朝代進行標記的. 一起的還有一個研究生,我們聊了聊天,氣氛很融洽,也比較放松。之后就是漫長的筆試過程。首先是邏輯測試,在這個過程中還簽署了保密協(xié)議,要求不能外泄題 目。題目確實還是設計的比較有針對性的,并不是平時見過的那種智力題。我想如果平時寫過程序的話,應該能比較好適應里邊的思維模式。但要命的是題目全部是 英文描述,尤其是碰到有一堆從句或者修飾語嵌套在一起的時候,讓人想暴走……提前10分鐘前偶就全部做完了,但是太過自信,就在那里等著,到最后兩分鐘的 時候想最后檢查一下就交。結果連續(xù)發(fā)現(xiàn)了問題,主要是對于題意的理解……趕忙改完2道題后,卷子就收上去了T_T聽后來HRMM說還改錯了……之后是英文 的快速反應題,HR說題比較多,時間很短,一般都做不完。反正能多做就多做唄……一共15分鐘的時間,這15分鐘也比較痛苦,文字推理題換成英文的真是讓 我感嘆自己的英文水平,連單詞都不認識,怎么選則反義詞啊……只能蒙!再往后是OpenQuestion,有大概12到題目,要求用英文任意作答。主要考 察綜合素質和與公司文化的契合程度。由于當時感覺又疲憊又暈又餓,所以感覺打得并不怎么好,枉費了我的口才了……我比研究生早很多就交了。HR把我單獨待 到一房間,問我有什么問題么,我就問了問后邊還有什么篩選環(huán)節(jié)。MM很親切的告訴我后邊如果能繼續(xù),還會有結對編程,技術面試,HR主管面試……God Bless Me,忐忑的回了家。
本來以為筆試完了 隔一天會進行結對編程,誰知道剛坐車回家就接到HRMM電話說第二天要來結對編程……得了,也沒的準備了,改什么樣就什么樣,是騾子是馬拉出去給他們溜 溜。晚上看了看Extreme Programming Cook Book 中的Junit,特別復習了一下Eclipse的快捷鍵,然后在期待與不安中入睡……。
迎著下午一點的太陽和北京特有的刺骨的寒風,我再次出現(xiàn)在了東直門的國華投資大廈下面。經(jīng)過HR的介紹,我和一位TW的帥哥開始pair. 我們共用一臺Mac Book,連接一個液晶顯示器,兩套鍵盤和鼠標。首先我解釋了我的代碼,帥哥很認真的聽,不時提出幾個問題。問題不斷深入,考查設計模式的使用,及設計 OO的概念。我對自己這方面還是比較有自信的,回答的也比較流暢。并且在解釋的過程中著重的強調(diào)了自己對于擴展性的一些基本想法。并自揭老底告訴他有可能 涉及過度了。都怪前一陣看設計模式看得有點著了魔,什么玩意都想往模式上套,一看就是新手,呵呵!之后提出了幾個兩個新的需求。于是我們討論了新的設計, 當我著手開始寫代碼的時候,才發(fā)現(xiàn)這Mac的鍵盤實在是……具然沒有Ctrl! 結果Eclipse里的快捷鍵全不能用了……昨天晚上白準備了。打字的時候尤其不適應,都怪我是土人一個,用Mac鍵盤寫程序,感覺自己的動作像是小腦出 了問題一般。動不動就按錯,最后小心翼翼的一個字母一個字母的按……兩個需求變更,最終完成了其中的第一個,但對于第二個變更,我跟TWer進行了建設性 的討論,并交換了意見,但是由于時間所限,最后沒來得及完成。在這個過程中,我看到了我設計和開發(fā)習慣的種種不足,學到了很多。比如一定要在測試全部通過 之后才能引入新的變化,并且面向對象的概念很重要的就是根據(jù)問題域,邏輯來劃分對象,應該就是所謂的領域對象的思想。真的非常感謝那位TWer的指導,花 了兩個小時幫助我改進代碼。
HRMM又出現(xiàn)了,問我還有沒有其他的問題,于是我問了問安排,被告知Office Interview將是Boss戰(zhàn),能否通關拿到Offer在此一舉了。臨走之前MM說 “我們討論之后,如果我想起來,明天就能告訴你pair的結果”,我趕緊笑著說"那就麻煩您盡量想起來。”
總算沒有白等。結對編程的結果也還算不錯。本以為下一輪很快就會結束,卻被告知最后如果想通關,還要進行N連戰(zhàn)……這讓我想起了玩洛克人的感覺……一關一關有一關。相隔了一周左右。N連戰(zhàn)開始了。
早上便來到了ThoughWorks辦公室。開始Round1 Presentation。一共8個人。4個人一組開始做。我跟3個MM分在一組。我是最后一個講的,為了能夠更清晰的表示我的意思,我決定用中 文+ppt的形式進行表達(英文水平還不太夠)。平時在學校里大大小小的課設和項目也算做了不少,所以對于Presentation我還是比較有信心的。 對于后來HR問我的問題:你認為好Presentation的標準是什么。我的解釋是讓聽眾和自己都感覺舒服,并能可取所需。具體的標準可能包括保持目光 接觸;雖然有不少人說,演講的時候把人頭當作西瓜,或者朝無限遠的地方延伸(這樣大家都以為你是在看他)。這兩種做法我都試過,效果并不好。我嘗試過把人 當西瓜,但是沒用,腦袋和西瓜長得實在太不像了,而且關鍵在于讓演講者害怕的其實不是腦袋,而是嵌在一顆顆西瓜,噢不,是腦袋上的一雙雙注視你的眼睛。至 于把目光放到無限遠,可能人多的時候是比較實用的。但我總覺得這樣做會讓我感覺眩暈,而且自我感覺很癡呆的樣子。我認為保持目光接觸,這是最好的辦法。隨 機得看每個人的眼睛,就像跟同一個人在對話一樣。把他們想象成一個人,這樣就不會緊張了。
Round2 是協(xié)作游戲。8人分兩組,每組四人。在溝通受限,時間受限的情況下,齊力完成一項手工。這個環(huán)節(jié)由多名TWer監(jiān)視著。考察協(xié)作和溝通能力。我感覺我們表現(xiàn)得并不好。大家都有點失望:(
Round3是面談。迎接我的是Jessie。并沒有什么讓我覺得特別有壓力的問題。交流是在輕松的氣氛下進行的。我也坦誠的回答了所有的問題。坦誠是很重要的,該什么樣就是什么樣,自己輕松,也防止誤解。
3連戰(zhàn)就這樣結束了。經(jīng)歷了最長的等待(大概一周多),我終于成功了!接到通知電話的時候感覺好像范進中舉……雖然找工作的這段時間,不斷在痛苦,迷茫, 中徘徊。但是終于能夠拿到喜歡的公司的Offer也算是老天對我不薄了。ThoughtWorks真的很不錯,從我面試的一開始我就喜歡上了這個公司,平 等,開放,互相尊重。我想這是每一個熱愛技術的人都向往的氛圍。待遇也還可以,我覺得在這里我應該可以更好的學習技術,更好的享受技術和生活。這也是我選 擇ThoughtWorks的原因吧……
1