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


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






  

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

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

獵頭加了微信后,發(fā)來(lái)了thoughtworks介紹及崗位JD,我主要看了下崗位JD,崗位還是偏于技術(shù)為導(dǎo)向的,相對(duì)吻合,就答應(yīng)可以考慮,先看看。

隨后,獵頭與我約定時(shí)間進(jìn)行了電話溝通,溝通的主要內(nèi)容:

    thoughtworks公司介紹
    崗位JD介紹
    個(gè)人情況了解

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

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

電話聊完,獵頭說(shuō)接下來(lái)會(huì)把我的簡(jiǎn)歷推送給TW,有消息第一時(shí)間同步我。

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

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

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

要求通過(guò)程序來(lái)解決對(duì)應(yīng)題目的問(wèn)題,編程語(yǔ)言不限,可以使用Java, Ruby, c#, Python, Clojure, Scala或JavaScript,提供的程序是可運(yùn)行、可測(cè)試的。

我選擇的是第二道題目: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提交后,大約過(guò)了一周多,給出了反饋,通過(guò)了,針對(duì)提交的程序給出了一些建議,其中包括一些優(yōu)點(diǎn)、缺點(diǎn)(優(yōu)化點(diǎn))。

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

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

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

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

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

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

最后,面試官會(huì)問(wèn)有沒(méi)有什么問(wèn)題,可以問(wèn)與結(jié)隊(duì)編程編程相關(guān)的問(wèn)題,如:重構(gòu)相關(guān)的問(wèn)題等,如果沒(méi)有問(wèn)題,就說(shuō)沒(méi)有問(wèn)題(最好還是問(wèn)一個(gè)問(wèn)題吧,也能體現(xiàn)出你是個(gè)有想法的人)。

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

大約1小時(shí)。

主要包括以下內(nèi)容:
1)自我介紹
2)介紹準(zhǔn)備的項(xiàng)目例子:需要事先單獨(dú)準(zhǔn)備另外一個(gè)項(xiàng)目例子。
3)技術(shù)點(diǎn)考察:面試官會(huì)考察自己的技術(shù)深度、廣度,包括對(duì)哪些技術(shù)的熱情、團(tuán)隊(duì)管理等這些東西。

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

最后,面試官會(huì)問(wèn)有沒(méi)有什么問(wèn)題,可以問(wèn),比如團(tuán)隊(duì)情況、用的是什么技術(shù)這類問(wèn)題,一定不要問(wèn)薪資、福利這些敏感問(wèn)題。

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