我該如何進入 ThoughtWorks 或面試樣本

我該如何進入 ThoughtWorks 或面試樣本

當你要換工作,需要通過面試時,你首先想到的就是“你需要準備面試”,這對你來說是不是很奇怪。 解決 HackerRank 上的問題,閱讀破解編碼面試,記住 ArrayList 的工作原理以及它與 LinkedList 的不同之處。 哦,是的,他們也可能會問有關排序的問題,如果說快速排序很可能是最佳選擇,顯然是不專業的。
但等等,你每天編程 8 小時,解決有趣且重要的問題,而在你的新工作中你也會做同樣的事情,無論是加還是減。 但儘管如此,為了通過面試,你需要做一些額外的準備,甚至不是磨練你的日常技能,而是學習一些你在當前工作中不需要並且在下一份工作中不太可能需要的東西。 對於你的反對意見,電腦科學已經融入了我們的血液,如果你在半夜叫醒我們,我們就不得不閉著眼睛在枕頭套上寫字,繞著一棵樹的寬度走一圈,甚至沒有恢復知覺,我會回答說,如果我在馬戲團找到一份工作,而我的主要技巧就是這個——那麼也許是的,我同意。 這項技能需要經過考驗。

但為什麼要測試與你目前工作無關的技能呢? 就因為它變得時尚? 因為Google就是這麼做的? 或者因為你未來的團隊負責人必須在面試前學習所有排序方法,而現在他認為“每個優秀的程式設計師都必須牢記在字串中查找回文的實現。”

好吧,你不是 Google (c)。 谷歌能買得起的東西,一般公司卻買不起。 谷歌在分析了其員工的數據後得出的結論是,具有奧林匹克背景的工程師擅長處理其特定任務。 此外,透過設計他們的選擇過程,他們可以承擔由於無法輕鬆解決數學問題而無法僱用一些優秀工程師的風險。 但這對他們來說不是問題,有很多人想在谷歌工作,這個職位會被關閉。
現在讓我們看看窗外,如果在你的辦公室前面想要為你工作的工程師還沒有搭起帳篷營地,而你的開發人員更多地在 stackoverflow 上尋找下一個需要安裝的 Spring 註解,而不是複雜的排名演算法,那麼,顯然,是時候讓你考慮是否應該複製谷歌了。

好吧,如果這次谷歌失敗了並且沒有提供答案,你該怎麼辦? 準確檢查開發人員在工作中將做什麼。 您看重開發商的什麼?
為您想要雇用的人員制定標準,並開發準確測試這些技能的測試。

ThoughtWorks的

ThoughtWorks 與此有何關係? 這是我為自己找到的一個模型面試的例子。 ThoughtWorks 是誰? 簡而言之,這是一家高端顧問公司,辦事處遍布世界各地,從中國、新加坡到美洲大陸,在發展領域諮詢了約25年,擁有自己的科學部門,由馬丁領導福勒。 如果您要找軟體工程師必讀的10 本書清單,那麼其中可能有2-3 本書是由ThoughtWorks 的人編寫的,例如Martin Fowler 的《重構》和Sam 的《構建微服務:設計細粒度系統》紐曼或建構進化架構
作者:派崔克庫阿、麗貝卡帕森斯、尼爾福特。

該公司的業務建立在提供相當昂貴的服務之上,但客戶為卓越的品質買單,其中包括專業知識、內部標準,當然還有人員。 因此,僱用合適的人才在這裡至關重要。
什麼樣的人是對的? 當然,每個人都有不同的。 ThoughtWorks 確定其開發者商業模式最重要的標準是:

  • 結對發展的能力。 這是能力,而不是經驗或技能。 沒有人想到會來一個已經練習了5年結對程式設計的人,但是接受別人的意見並且能夠傾聽是一項必要的技能。
  • 能夠編寫測試,最好能夠實踐 TDD
  • 了解 SOLID 和 OOP 並能夠應用它們。
  • 提出你的意見。 作為顧問,你必須與客戶的開發人員以及其他顧問合作,如果一個人知道如何做好某件事,但完全無法將其傳達給團隊的其他成員,那麼並沒有多大好處。

現在評估候選人的這些特殊技能非常重要。 這裡我想談談我在ThoughtWorks面試的經驗。 我馬上就說我去了新加坡就通過了,但是招募流程是統一的,各國不會有太大差別。

階段0.人力資源

正如經常發生的那樣,與 HR 進行 20 分鐘的面試。 我就不多說了,我只是說我從來沒有遇到過一個人力資源人員能夠花 15 分鐘談論公司的開發文化,為什麼他們使用 TDD,為什麼結對程式設計。 通常,人力資源部門會對這個問題猶豫不決,並表示他們的流程很正常:開發人員開發,測試人員測試,經理推動。

第 1 階段。您在 OOP、TDD 的表現如何?

訪談開始前1.5小時,我接到任務,要做一個火星車模擬器。

火星漫遊者任務美國太空總署將把一隊機器人漫遊車降落在火星高原上。 這個高原是奇特的矩形,必須由漫遊車導航,以便其機載攝影機能夠獲得周圍地形的完整視圖,然後發送回地球。 流動站的位置和位置由 x 和 y 座標以及代表四個基本羅盤點之一的字母的組合表示。 該高原被劃分為網格以簡化導航。 範例位置可能是 0, 0, N,這意味著漫遊車位於左下角並面向北。 為了控制漫遊車,美國太空總署發送一串簡單的字母。 可能的字母是「L」、「R」和「M」。 「L」和「R」使漫遊車分別向左或向右旋轉 90 度,而不離開目前位置。 「M」表示向前移動一個網格點,並保持相同的航向。
假設 (x, y) 正北的正方形是 (x, y+1)。
輸入:
第一行輸入是高原的右上座標,左下座標假設為0,0。
其餘的輸入是與已部署的漫遊器有關的資訊。 每個流動站都有兩行輸入。 第一行給了流動站的位置,第二行是一系列指令,告訴流動站如何探索高原。 該位置由兩個整數和一個以空格分隔的字母組成,對應於 x 和 y 座標以及流動站的方向。
每個漫遊車都將按順序完成,這意味著在第一個漫遊車完成移動之前,第二個漫遊車不會開始移動。
OUTPUT:
每個流動站的輸出應該是其最終座標和航向。
注意事項:
只需實現上述要求,並透過為其編寫單元測試來證明吸塵器的工作原理即可。
創建任何形式的使用者介面都超出了範圍。
優先採用 TDD(測試驅動開發)方法來解決問題。
在有限的時間內,我們更關心的是品質而不是完整性。
*我無法發布發送給我的作業,這是幾年前給出的舊作業。 但相信我,從根本上來說一切都保持不變。

我特別想提請注意評估標準。 您有多少次遇到這樣的情況:對候選人來說重要的事情在審核過程中完全不重要,反之亦然。 並非每個人的想法都與您相同,但如果您的價值觀得到明確表述,許多人都可以接受並遵循您的價值觀。 所以,從評估標準來看,現階段最重要的技能是

  • 時分驅動;
  • 能夠使用OOP並編寫可維護的程式碼;
  • 結對程式設計能力

因此,我被警告要花 1.5 個小時思考如何完成任務,而不是寫程式碼。 我們將一起編寫程式碼。

當我們接到電話時,這些人簡要地告訴了我們他們是誰、他們做什麼,並提出開始開發。

整個訪談過程中,我從來沒有感覺到自己被訪問了。 有一種在團隊中開發程式碼的感覺。 如果你在某個地方遇到困難,他們會提供幫助、建議、討論,甚至互相爭論如何最好地做到這一點。 在面試中,我忘記瞭如何在 JUnit 5 中檢查某個方法是否拋出異常 - 他們提出繼續編寫測試,而其中一個人正在谷歌搜尋如何做。

面試後幾個小時,我收到了建設性的回饋——我喜歡什麼,不喜歡什麼。 就我而言,我因使用 Sealed 類別作為 null 物件的替代品而受到讚揚; 事實上,在編寫程式碼之前,我用偽程式碼編寫瞭如何控制流動站,從而收到了類別的草圖,至少是機器人 API 中涉及的類別的草圖。

第 2 步:告訴我們

面試前一周,我被要求準備一份關於我感興趣的主題的演講。 形式簡單且熟悉:15 分鐘演示,15 分鐘回答問題。
我選擇了鮑伯叔叔的清潔架構。 我再次接受了幾個人的訪問。 這是我第一次用英語演講,也許,如果我處於壓力很大的情況下,我就無法應付。 但話又說回來,我從來沒有感覺到自己正在接受面試。 一切都像往常一樣——我告訴他們,他們仔細聽。 即使是傳統的問答環節也不像採訪;很明顯,提出的問題不是為了“沉下去”,而是那些他們對我的演講真正感興趣的問題。

面試後幾個小時,我收到了回饋——演講非常有用,他們真的很喜歡聽。

第三階段:生產品質規範

在警告這是技術面試的最後階段後,我被要求將家中的代碼帶到生產就緒狀態,然後發送代碼進行審查並安排面試,在面試中任務的要求會發生變化,代碼也會發生變化。需要修改。 展望未來,我可以說代碼審查是盲目進行的,審查人員不知道候選人申請的職位,他們看不到他的簡歷,甚至看不到他的名字。

電話響了,顯示器的另一邊又出現了幾個人。 一切都和第一次面試時一樣:最主要的是不要忘記 TDD,告訴你你做什麼以及為什麼。 如果你以前沒有實踐過 TDD,那麼我建議立即開始這樣做,不是因為它在公司是必要的,而是因為它可以顯著簡化你的生活,如果你願意的話,可以減輕你的壓力水平。 還記得您如何不得不用調試器瘋狂地搜索只能通過瀏覽器重現的錯誤,但無法通過測試重現它嗎? 現在想像一下,你在面試過程中必須發現這樣一個錯誤——你肯定會白頭髮。 透過 TDD 我們能得到什麼? 我們更改了程式碼,意外地發現現在測試是紅色的,但是我們第一次無法弄清楚錯誤是什麼? 好的,我們對面試官說“哎呀”,按 Ctrl-Z 並開始向前邁出一小步。 是的,你需要培養自己使用 TDD 進行開發的能力,朝著目標前進的能力,這樣你的測試永遠是綠色的,而不是半天是紅色的,因為「你有很多重構」。 這與編寫可維護的程式碼或編寫高效的程式碼完全相同。

因此,您的程式碼可以更改的程度取決於您開始時的設計、它的簡單程度以及您的測試有多好。

面試結束後幾個小時內我就收到了回饋。 在這個階段,我意識到我已經快要結束了,在我「遇見福勒」之前已經所剩無幾了。

第四階段:決賽。 技術問題已經夠多了。 我們想知道你是誰!

說實話,我對這個問題的提法感到有些困惑。 一小時的談話你怎麼能了解我是個什麼樣的人? 更何況,我說的不是我的母語,而且說實話,非常蹩腳、結結巴巴,你怎麼能理解呢? 在之前的訪談中,我個人更容易說話而不是回答問題,口音是罪魁禍首。 至少有一位面試官是亞洲人,他們的口音,嗯,我們只能說,有點歐洲人特有的口音。 因此,我決定採取積極主動的方法——準備一份關於我自己的演講,並在面試開始時提出用這個演講來談論我自己。 如果他們同意,那麼至少我的問題就會少一些;如果他們拒絕這個提議,那麼,我一生中花 3 個小時做演示的代價也不算高。 但是您應該在簡報中寫什麼? 傳記 - 出生在那裡,當時,上學,大學畢業 - 但誰在乎呢?

如果您用Google 搜尋Thoughtworks 文化,您會發現Martin Fowler 撰寫的一篇文章[https://martinfowler.com/bliki/ThreePillars.html],其中描述了3 個支柱:可持續業務、卓越軟體和社會正義。

讓我們假設已經為我檢查了軟體卓越性。 它仍然是為了展示可持續的商業和社會正義。

此外,我決定專注於後者。

首先,我告訴他為什麼選擇 ThoughtWorks——我在大學時讀過 Martin Fowler 的博客,因此我喜歡簡潔程式碼。

項目也可以從不同的角度呈現。 他還開發了醫學軟體,簡化了患者的生活,據傳言甚至挽救了一條生命。 我還為銀行開發了軟體,這也讓公民的生活變得更輕鬆。 特別是如果該銀行有全國 70% 的人口使用。 這與俄羅斯聯邦儲蓄銀行無關,甚至與俄羅斯無關。

想了解我嗎? 好的。 我的嗜好是攝影,不知怎的,我手上拿著相機已經有大約10年了,有些照片我並不不好意思展示。 另外,有一次,我幫助了一個貓咪收容所:我拍攝了需要永久家的貓。 有了好的照片,放置一隻貓就容易多了。 我可能拍了一百隻貓:)

最後,我的簡報的 80% 都是貓。

演講結束後,HR立即寫信給我說,他還不知道面試結果,但整個辦公室的人已經對貓咪印象深刻了。

最終,我等待回饋——我讓每個人都滿意。

但在最後的談話中,HR委婉地說,Social Justice很好,很有必要,但不是所有項目都是這樣。 他問我是否害怕。 總的來說,我對社會正義有點過分了,這種情況確實發生了:)

結果,我已經在新加坡的 Thoughtworks 工作了幾個月了,我看到這裡有太多的公司正在採用 Google 的“最佳面試實踐”,使用 leaves 和 Whiteboard 進行編碼,儘管他們的知識比 Spring 多, Symfony、RubyOnRails(在必要的部分下劃線)在工作中並不是必需的。 工程師在面試前休息一周進行「準備」。

在 Thoughtworks,除了對候選人提出充分的要求外,以下原則也是最重要的:
面試的樂趣。 更何況,對於雙方來說。 確實,如果你想得到最好的人才(誰不想呢?),那麼面試就不是一個選擇奴隸的市場,而是雇主和候選人互相評價的一場秀。 如果候選人將愉快的情緒與一家公司聯繫起來,他很可能會選擇這家特定的公司

多名面試官以減少偏見。 在 Thoughtworks,結對程式設計是事實上的標準。 如果這種做法可以應用到其他領域,TW 就會嘗試這樣做。 每個階段由2人進行面試。 因此,每個人至少由 8 個人進行評估,TW 嘗試選擇不同背景、不同方向(不僅是技術人員)和性別的面試官。

最終,聘用決定將根據至少8人的意見做出,沒有人有決定性的一票。

基於屬性的招聘 不是根據候選人的喜惡來做出決定,而是為每個角色和每個階段開發一個表格,其中包括所評估的屬性。 同時,在評估時,強烈建議評估的不是某項技能的經驗,而是應用它的能力。 因此,如果候選人無法應用任何技能,例如 TDD,但他仍然嘗試應用它們,並聽取如何正確使用它們的建議,那麼他就有機會通過面試。

不需要教育證書 TW 不需要任何電腦科學認證或教育。 僅評估技能。

這是我第一次在沒有準備的情況下接受外國公司的面試。 每個階段結束後,我並沒有感到疲憊,相反,我很高興我可以應用最佳實踐,監視器另一邊的人們很欣賞它並每天都應用它們。

幾個月後,我可以說我的期望完全達到了。 ThoughtWorks 與一般公司有何不同? 在一般公司,你可以找到優秀的開發人員和友善的員工,但在台灣,他們的專注度卻是超乎尋常的。

如果您有興趣加入 ThoughtWorks,您可以查看我們的空缺職位 這裡
我還建議關注有趣的職缺:
首席軟體工程師: 德國, 倫敦, 馬德里, 新加坡
資深軟體工程師: 悉尼, 德國, 曼徹斯特, 曼谷
軟件工程師: 悉尼, 巴薩, 米蘭
資深資料工程師: 米蘭
質量分析師: 德國 中國
基礎設施: 德國, 倫敦, 智利
(我想誠實地警告你,該鏈接是一個推薦鏈接,如果你去TW,我將收到一份不錯的獎金)。 選擇您喜歡的辦公室,您不必將自己限制在歐洲,畢竟每隔兩年TW會很樂意將您轉移到另一個國家,因為... 這是 ThoughtWorks 政策的一部分,因此文化得以傳播和同質化。

請隨時在評論中提出問題或向我尋求建議。
如果這個主題看起來很有趣,我會寫一些在 ThoughtWorks 工作的感覺以及在新加坡的生活。

來源: www.habr.com

添加評論