1. 程式人生 > >我是如何面試一位前端工程師

我是如何面試一位前端工程師

最近面試不少,發現團隊同學面試的問題以純知識點為主,提問方式很機械。對於現在前端面試總是被人吐槽面試與實際的工作完全不搭邊,和麵試官面試方式有很大關係。這篇文章主要是記錄我是如何面試,以分享給大家作參考。希望對你有用。

紮實的基礎

很多面試者的簡歷中一定會寫各種『精通』,這是非常有自信的表現,對於基礎的考察,最好的方式還是筆試。

計算機學習無非也包括記憶和理解。前期記憶的內容頗多,也比較容易上手給人一種很快就可以『精通』的錯覺。而恰恰忽視了理解的重要。理解能力是對我對是否能夠進入這行工作最先考察的內容。分兩個方面

1. 對已知的理解深度。對你掌握的知識,一定會有所考察,是膚淺還是真正的精通。

我喜歡問 setTimeout (fn, 0) 執行順序,如果能說到 macroTask 機制,是出自標準規範的 job 和 task 處。還能講上一些執行優化的策略,就基本滿分了。當然現在前端發展太快,框架本身就體現出很高的複雜度,比如我不會問 React 生命週期觸發順序這樣的問題,更多是問些設計上的問題,setState 的設計等。

2. 對未知的預判。對你未了解的知識是否可以舉一反三,判斷執行過程。

我喜歡問視覺化相關的問題,大部分人都沒做視覺化工作,API 自然不是重點。比如在沒寫過圖表的前提下,怎麼抽象資料與圖形的對映,怎麼去組合不同的圖表部件。

純知識點就是太死板了,一般只是校招同學會這麼問。我更喜歡以場景展開,比如我常問的一個校招問題,有一塊區域要展示一組資料,但資料需要請求 3 個接口才能計算得到,請問前端是怎麼做的,如何優化,前端什麼情況下可以放棄合併介面的要求。這個地方至少會考察到非同步,本地快取,延展下會問下併發,競態,協程等。答得好不好完全在於你的知識面的深度和廣度,能否一直讓我延展下去。

我常常說面試只看前5分鐘的感覺。這種感覺就來源於他是否有非常紮實的基礎。

過去的思考

在工作中磨練過的同學,我最看重的是解決問題的能力。前端工程,以工程為主。我自己一般在面試前會花10-20分鐘時間根據你簡歷中的經歷來準備你『擅長領域的問題』。

這裡非常需要簡歷有故事性,比如過去工作的專案背景,專案的內容和成果,你做了些什麼。如果有網站或作品就非常棒了。或你在實驗室研究的內容,有沒有相關的 paper 或是開源工程。簡歷中一定要體現出你的價值。如果沒有,我一般會先問一個問題,在過去一年中你遇到的最大挑戰是什麼。其實這個問題很難回答,尤其是你自己在過去的工作中沒有總結和思考的話。

面試官要考察:

1. 是否有抽象。有很多問題本身都非常小,但是否能以點及面,考慮更大的層面。比如做不同專案,有沒考慮體系建設,怎麼考慮歷史庫的升級及維護

2. 是否有向前看。前端發展非常快,有很多的新內容。對新內容的判斷,怎麼使用也是考察的重點之一。尤其是為什麼要用某個技術這個問題是我常問的。為了技術而技術,考慮問題的全面性就會差很多。

互相交流難題

我們大老闆曾對我們說,面試不是去問倒別人,來顯得你多牛,而是去盡力找對方的亮點。

每一次面試對我來說是一次非常好的交流機會,我在公司面試過程處在中間的位置,到我這裡的同學已經接受過技術的考驗,我相信有能力可以提出更高的要求。

有時我問的問題,會拿些非常棘手的場景,我自己都不知道最佳實踐是什麼,至少我們沒有做好。很多時候,我很想知道你有沒有好的答案,我也很想把我的想法分享給面試者,這是一個互相交流的過程。有時,被面試的同學有些非常好的思路,我也非常興奮。

最近面試到一位同學,做過全鏈路的資料採集,但沒有用到分散式架構,這讓我很意外。我完全忘記在面試,而在聊他們是怎麼做的,遇到效能和同步問題怎麼解決的。當然,我把我的方案也和他聊了一下,總之還是非常愉快。

氣味相投

說到底,面試是在選擇你的同事,你的下屬,或幫合作同事選擇。你的一紙通過意味著得到了你的認可,這種認可一半是出自技術,一半是出自氣味相投。

作為面試人,我一定會在最後問『有什麼想了解我們團隊的麼』這樣一個問題。只要不在機密範圍內,我都會和你介紹我們的工作內容,願景是什麼。希望你能夠了解我們,是不是你想要去的團隊。

作為面試者,我一定希望你有足夠的興趣來我們團隊,預判團隊工作是否有挑戰,公司的遠景是什麼,是否以技術為驅動力,我是否有合適的位置等。

寫在最後

對於面試者,面試過程只是一個時刻,你的過去和將來更為重要。多思考在工作或學習中,還有什麼問題值得你去解決的,嘗試不同的方案,總結失敗和成功。最為關鍵的是將來的你要成為什麼,去往這個方向努力。

對於面試官,你需要找到每一個人的閃光點,學會欣賞每一個人,從這個過程中去尋找比你優秀的夥伴。