記一次西安thoughtworks的面試經(jīng)歷


作者:xcbeyond
瘋狂源自夢想,技術成就輝煌!微信公眾號:《程序猿技術大咖》號主,專注后端開發(fā)多年,擁有豐富的研發(fā)經(jīng)驗,樂于技術輸出、分享,現(xiàn)階段從事微服務架構項目的研發(fā)工作,涉及架構設計、技術選型、業(yè)務研發(fā)等工作。對于Java、微服務、數(shù)據(jù)庫、Docker有深入了解,并有大量的調優(yōu)經(jīng)驗。 






  

好久沒有更新簡歷了,于是更新了下個人簡歷,算是自我總結吧,這也是多年來養(yǎng)成的一種習慣,定期維護更新。簡歷更新后,很快就接到了很多電話(雖然簡歷設置了不對外公開),目前我還沒有換工作的打算,除非有非常合適的機會,哈哈!所以90%的面試機會我還是不由分說的拒絕了。

某天接到了一位獵頭的電話,被告知是thoughtworks的崗位,問及是否有興趣考慮。對這家公司之前還是有些了解的,以技術、咨詢?yōu)轵寗?,敏捷開發(fā)而聞名,于是相互加了微信,了解一下總歸沒有壞處。于是,就有了接下來的經(jīng)歷,在此與大家分享一下,記錄如下。(Homework、Pair Program、Face-to-face Interviews真的是非常棒的面試指導,值得仔細閱讀)
1、獵頭初聊

獵頭加了微信后,發(fā)來了thoughtworks介紹及崗位JD,我主要看了下崗位JD,崗位還是偏于技術為導向的,相對吻合,就答應可以考慮,先看看。

隨后,獵頭與我約定時間進行了電話溝通,溝通的主要內容:

    thoughtworks公司介紹
    崗位JD介紹
    個人情況了解

電話聊了將近一個小時,首先進行了簡單的自我介紹,近期工作內容、所用技術棧、團隊人員組成情況、平時遇到問題是如何解決的、自己的未來職業(yè)規(guī)劃等等這些問題,反正關于個人情況問的特別細,不輸于一場技術面試。

接下來,就是獵頭介紹了崗位JD情況、TW情況、以及TW面試流程的特殊性等。

電話聊完,獵頭說接下來會把我的簡歷推送給TW,有消息第一時間同步我。

第二天下午,就收到來自獵頭的反饋,約定第一個環(huán)節(jié)“homework”的時間。

TW面試流程:
1)homework: 自己私下三選一完成一個編程題目。
2)Pair Program(結隊編程):現(xiàn)場與2個面試官,針對你homework提交的程序,一起結隊編程,目的是從中考察你的實際編程能力。
3)Face-to-face interviews:現(xiàn)場與其他幾個面試官,針對技術深度、廣度方面進行純技術的面試。
2、homework

就是一個Home Test,TW通過郵件給我發(fā)了一封郵件,里面有3道題,進行三選一,在3天的時間里完成,并按要求提交程序。

要求通過程序來解決對應題目的問題,編程語言不限,可以使用Java, Ruby, c#, Python, Clojure, Scala或JavaScript,提供的程序是可運行、可測試的。

我選擇的是第二道題目:Conference Track Management,程序已提交至github上(https://github.com/xcbeyond/ConferenceTrackManagement,可供大家參考。






摘抄郵件部分原文如下:

Below are three programming problems. Please read all three descriptions thoroughly then create a program to solve ONE of the problems. If you submit more than one solution, we will review only one.

Note:
For the solution, we request that you use Java, Ruby, C#, Python, Clojure, Scala or JavaScript.
There must be a way to supply the application with the input data via text file
The application must run
You should provide sufficient evidence that your solution is complete by indicating that it works correctly against the supplied test data

 

homework提交后,大約過了一周多,給出了反饋,通過了,針對提交的程序給出了一些建議,其中包括一些優(yōu)點、缺點(優(yōu)化點)。

本環(huán)節(jié)考察點:
1)編程風格:代碼規(guī)范、代碼結構、命名、代碼冗余度等。
2)語言特性:Java8新特性、恰當?shù)腁PI(如:String、StringBuffer)等。。
3)設計模式:最好能夠引入一種設計模式。
4)TDD:一定要有單元測試代碼,這一點TW最為看中。如果寫的好,一定是加分項。
5)程序滿足要求:程序一定滿足題目要求,可執(zhí)行,運行結果滿足題意。

提醒:
該環(huán)節(jié)的程序,一定要完全理解題意,認真完成,雖說網(wǎng)上能夠找到對應的題目及程序。如果發(fā)現(xiàn)抄襲,可能就直接Over了,更可況下一個環(huán)節(jié)還會問到更具體詳細的東西。
3、Pair Program

Pair Program、Face-to-face Interviews這兩個環(huán)節(jié)都是同一天現(xiàn)場面試的,Pair Program大約是1.5小時的時間。

由2個面試官和你一起針對homework環(huán)節(jié)提交的程序,進行結隊編程。一邊坐一個面試官(一定不要緊張哦),聊天式、技術探討的方式和你交流具體代碼寫法、優(yōu)化點,讓你動手來寫,偶爾面試官也會自己來寫。

主要包括以下內容:
1)程序的設計思路:回憶下當時做的思路、最好提前順理下表述。
2)程序重構:根據(jù)您的這個作業(yè)和您一起去重構(局部重構),重構的過程中,面試官會教你一些新的東西,比如Java8新特性、快捷鍵等。
3)現(xiàn)場需求解決:最后,面試官針對你的程序會給你一個新的問題,讓你來實現(xiàn)。(給你的是一張紙,上面打印的對應問題,也是多選一,并且是全英文的)

本環(huán)節(jié)考察點:
1)代碼能力:語言特性、debug能力、設計能力。
2)溝通能力:善于傾聽,體現(xiàn)出主動性。
3)學習能力:好奇心(TDD、快捷鍵、最近學習的東西)、學以致用的能力、舉一反三的能力(面試官教給你的新東西,看你能否應用到你程序中)。
4)需求理解能力:在面試官的引導下,正確的理解現(xiàn)場需求,可主動現(xiàn)場確認。
5)靈活性:開放的態(tài)度、接受反饋的態(tài)度(先聽面試官的意見,接受面試官的反饋、虛心接受)、意見不一致時,可以有理有據(jù)的表達自己的意見,也能考察你自己的自信。愿意嘗試新的方法或者工具,主動寫面試官之前教的一些東西。

最后,面試官會問有沒有什么問題,可以問與結隊編程編程相關的問題,如:重構相關的問題等,如果沒有問題,就說沒有問題(最好還是問一個問題吧,也能體現(xiàn)出你是個有想法的人)。

提醒:
1)一定要提前回顧程序的設計思路,需要清晰的表述自己的思路。
2)帶上自己的電腦,確保程序是可以跑起來的,畢竟自己的電腦用起來更順手。
4、Face-to-face Interviews

大約1小時。

主要包括以下內容:
1)自我介紹
2)介紹準備的項目例子:需要事先單獨準備另外一個項目例子。
3)技術點考察:面試官會考察自己的技術深度、廣度,包括對哪些技術的熱情、團隊管理等這些東西。

本環(huán)節(jié)考察點:
1)技術專長:根據(jù)之前的工作經(jīng)驗、項目例子去聊,可能像架構方向、敏捷開發(fā)的思想,包括一些跨語言的編程,然后是一些細節(jié)點,如:代理、緩存。技術熱情,會問你近期有沒有學習新的東西,然后為什么去學習,學習之后有沒有實踐,這塊可能會問的比較細。
2)自信:很重要,一定要分清楚自信和自大的點。會就會,正常交流,不會的話,就虛心接受,表現(xiàn)出后期會去學習。
3)發(fā)展他人的能力:體現(xiàn)出團隊的管理、一起成長、分享。
4)溝通管理能力:很看重,和客戶的溝通、和團隊的協(xié)作。
5)動機(motivation):對TW的意愿性,為什么會考慮TW等這些問題。

最后,面試官會問有沒有什么問題,可以問,比如團隊情況、用的是什么技術這類問題,一定不要問薪資、福利這些敏感問題。

上述就是關于我在TW的面試經(jīng)歷,記錄了面試流程、面試內容、考察點,希望對你有用。TW的面試,真的是非常棒的面試指導,從中你會學到很多東西,如果有機會的話,不妨一試。