「面經:面試 ThoughtWorks | 掘金技術徵文」

markzzw發表於2018-04-12

前言

我是一名web前端程式設計師,說真的TW的面試真的很有意思,也很有心意,讓我在整個面試過程中不僅僅瞭解到自己的優勢,並且看到了自己的不足之處,先不說面不面得上,面試的過程都是一次很不錯的經歷。

一個想法的開端

早在大學裡,就對於TW有了解,技術大牛,極客思想,扁平化管理,出國經歷。非常的吸引我這樣一個憧憬未來的大學生,於是當時校招的時候我便投遞了這家公司,可是很不幸的是,簡歷並未通過,與之無緣。可是那深深的執念,一直存於心中,在一直憧憬著,這是一個想法的開端。

在畢業半年中,一直在成都知道創宇內工作學習,創宇氛圍也很不錯,人也不錯,本想著在這個地方學習一段時間之後,再去想想去別處學習。可是在過年之前得知有機會能夠進入TW,我就開始坐不住了。

提前的準備

在過年期間,大概一週時間,除去陪伴家人的時間,大部分時間我都在補充之前的一些遺漏知識點,大概補充如下

  1. css,less
  2. html5,語義化
  3. 瀏覽器適配,響應式設計
  4. JavaScript設計模式(工廠模式、介面卡模式、釋出訂閱模式)
  5. react 生命週期
  6. redux 思想
  7. react-router4
複製程式碼

在查漏補缺的間隙,我也在閱讀一本視覺化的書籍《不只是美:資訊圖表設計原理與經典案例》,推薦一下這本書,對於視覺化的理論知識描述的還不錯,運用了大量圖表例子來進行理論知識的論證。

在整個過程中,我發現,思考給我帶來的不止是知識層面的增長,還會給我帶來一些寧靜,安撫躁動不安的心,因為心裡想的TW的面試是很難得,我這樣準備能否通過,後來總結出了一個我覺得能夠適用於大家的一句話:不論結果如何,我只需要在過程中盡情的展示自己,讓別人多瞭解我,能夠讓別人記住有我這麼一個人,那我就是值的了。

電話面試

過完年不久,我就將自己的簡歷傳送給了TW的員工(內推),在一週之後便接到一個來電,是HR的電話面試,HR是一個大哥哥,很熱情,問了我很多,當然我也是很熱情的回答了問題,電話面試過程一定要讓別人覺得你是一個交流正常,並且談吐都很到位的人,這樣給人第一映像才會很棒,問得最能夠引起我關注的問題就是問我一般寫文章怎麼樣,能否描述一下最近寫的一篇文章的內容,很巧的是我那幾天正好寫了一篇讀書筆記,也就是上面提到那本書的一個讀書筆記,我便與他講了講我對書中的理論的看法。整個電面過程很nice,電話面試完了之後就告訴我將會傳送一套程式設計題給我去做。

從電話面試中可以看出,主要考察的是與人交流的能力,還有就是平時沒事兒的時候,也可以碼碼字,記錄一下自己的所學與所得,分享與他人,在論壇上面建立一定的影響力這是提高自我價值的一個很棒的方法,這個觀點在進入TW之後,更加的深入我心,因為在這裡不是suggest去建立社群影響力,而是demand或者說是force大家要去建立自己的社群影響力,這或許也是TW吸引我的一個點吧。

兩次做題

面試題很簡單,要求如下:

  1. 按照發過來的設計圖完美製作,也就是高保真百分百還原
  2. 製作一個類似todolist的功能
  3. 適配瀏覽器 ie9+ 以及市面上流行瀏覽器
  4. 響應式設計 至少保證1024解析度
複製程式碼

第一次作業,我想了很久,那時候沒想到可以使用框架,於是在搭建完dom與調整完樣式之後,我便使用原生js進行todolist的邊寫,想到運用react的state的方式來進行一次模擬。

在寫程式碼中發現很多問題,比如之前很少使用原生js,不知道原生js獲取的dom陣列並不是真的陣列,而是類陣列,需要轉換,還有一些瀏覽器相容的問題,也是在做的過程中才遇到的問題,查了很多資料,最難的還是模擬react的state的儲存模式,但是由於不是虛擬dom,每次資料更換之後,都需要重刷整個頁面,這樣才能夠繫結上相應的函式,這樣子做非常的浪費資源,但是由於交作業的時間快到了,也只有硬著頭皮提交了。

提交完了這一次作業之後,自己點了一首《涼涼》,後面幾天都一直沒有反饋,後面實在忍不住,問了一下HR,HR說我沒通過,但是他們覺得我有潛力,想再給我一次機會,讓我重做一次作業,我的心裡樂開了花。

接著我拿到作業反饋,思考了很久,想著要展示我的強項,於是開工,搭建react開發框架,最開始還是想著使用state,可是覺得state維護起來比較麻煩,畢竟有很多小元件,索性改成redux,維護store方便一些,而且這是我的強項,寫起來輕車熟路,但是美中不足的是模態框我想的太死了,導致後面面試出了一些難堪的地方,稍後會講到。完成這個只用了之前時間的一半。

提交了第二次作業之後,也還是惴惴不安的等待著。第三天,就有了反饋,恭喜,獲得面試資格。

在筆試階段,這個發題給人做的想法很不錯,不僅僅考察了基礎知識,還考察了學習能力,解決問題的能力,因為在解決實際業務中,難免遇到問題,如何解決問題的,這是很關鍵的,而且在做題之間一定要使用自己強項進行完成,不然會很痛苦。

兩輪面試

到了面試的時間點,早早的來到公司等待著,當天面試的人只有我一個人,所以很快便被帶進了會議室面試。面試一共兩輪:

  1. 結對程式設計???

    首先進來的兩位面試官,一個比較年輕,一個比較年長,然後面試的第一個流程就是 結對程式設計 ,程式設計的題就是接著之前寫的那個作業,繼續新增一個功能,這裡就要重複用到之前的作業中的模態框,然而我之前寫模態框以為它的業務場景就只有那一個,所以寫死了,在這裡很尷尬的把那個組建複製了一個出來重新修改。很快半小時左右我完成了任務,在這個編碼過程中,兩位面試官都很認真,會幫我指出不合理的地方,及時糾正,在結束之後還會討論功能實現上的一下見解,而且兩位的見解還會不一直,就是對於模態框的開啟和關閉的狀態是由誰去決定的這一個點,和他們討論了一些,收穫很大,而且在編碼過程中,不會做過多的干擾,讓我按照自己的思路去編寫程式碼,很棒的一次結對程式設計體驗。

  2. 問問題

    第二輪面試緊接著上一輪面試,等待了十分鐘左右,第二輪面試官進來,拿著簡歷,按照簡歷上面我所寫的一些東西進行詢問,這裡我儘量的展示了我在平時工作上的一些行為和見解,把平時怎麼和團隊之間工作協作詳細的描述給了面試官,並且在詢問到我專業知識的時候,由於之前的準備,回答我自己覺得還是滿意的。不過有一個點,我覺得是我失策了,可能是因為回答得很順利,在回答面試官問我最近看過什麼書的時候,我腦袋抽了一下說的是一本設計模式的書,然後面試官讓我說一下我印象最深刻的一個設計模式,這裡我說了介面卡模式,但是說的很爛。。。讓我覺得很丟臉,而且我最近讀的書是關於視覺化的,我應該講這本書的,腦袋抽風了,接下來就是讓我用英文介紹一下自己,我整個人也是懵的,平時工作環境中根本沒有使用英文對話,雖說平時看英文文件很順暢,聽英文還不錯,但是就是口語這一塊缺失鍛鍊,張口就是一口高中生英語水平,說完第一句,我就想挖個洞鑽到低下去了,後來我下定狠心,一定要好好的練習口語。

總的來說,面試過程張弛有度,結對程式設計很新穎,英文介紹自己也很考驗人,準備充分,然後盡情展示自己,把最好的自己展示給面試官看,讓他們覺得你有潛力,覺得你身上有閃光點,我覺得這應該是面試最重要的了。

總結

可能對於每個人都不一樣,對於TW,從簡歷投遞,到筆試,再到面試,我覺得都是比較順利的,中間沒有出現不好的事情,可能我是真的運氣不錯吧,對於整個面試的經驗總結我在上文中的每一個點得最後都做了相關的總結,這裡就不再廢話了。

進入TW已經4天了,感覺大家氛圍都很幫,有免費早飯吃,很幸福,有提供高配mac電腦,任意翻牆,經常有大牛在一起討論各種聽不懂的神奇的技術,上下班不打卡很自由,團隊人員分工齊全(PM,BA,DEV,UX...),各司其職,完成整個專案,很專業,這也許就是這個公司很專業的地方吧,接下來就是我探索TW的旅程,start the happy journey

掘金技術徵文連結

juejin.im/post/5aaf2a…

相關文章