前端面試官的套路,你懂嗎?
最近一年陸陸續續都在面試各種不同程度的 Web 前端開發,總覺得現在前端氛圍太過于浮躁,急于求成的人比比皆是。
然而很多童鞋還是沒有掌握面試的技巧,一次次碰壁。鑒于此,我覺得是時候總結一些面試經驗了,只不過這一次我打算從面試官的角度來闡述。
我是如何面試前端的?
一、篩選簡歷
我們先從篩選簡歷階段說起,一般人力同事會幫我們去撈一些合適的簡歷,但是很多時候技術開發自己也不會閑著,而不同職能的人撈簡歷的方式也千差萬別。
先從我自己撈簡歷的角度來說吧,當然,不同的面試官有不同的風格,不可盡信。
1. 我一般會去看簡歷中所提的技術棧是否匹配,怎么看呢?我們可以抓住簡歷中的技術名詞,一般來說如果一點技術名詞都沒有提到,那么大概有以下幾種可能:
- 很水
- 很牛但是概率很小
- 不會寫簡歷
所以,一部分人可能會因為簡歷的問題沒有了面試機會,這點是需要非常注意的。
那么有人可能會問,那我該如何在簡歷里面體現我的技術實力呢?
我們舉個簡單的例子,假如你要面試一個公司,他們主招 React 技術棧的前端開發,那么你的簡歷里面只有 React 這個名詞是不夠的,最好能體現出 React 的生態來。
這樣寫就不錯:熟練使用 Antd+React+Redux 開發項目,Roadhog 或者 Webpack 構建項目,Nextjs 做服務端渲染。
其他技術棧類似,了解技術棧的周邊生態,間接的反應了項目的體量。
二、個人介紹
通過了簡歷篩選階段,就真正到了面試環節。這時候一定要準備好一段最多 3 分鐘的個人介紹。
請注意,最多 3 分鐘!
碰到過這樣的面試者,一段個人介紹說不完,滔滔不絕,從高中時代說起,然而面試官并沒有那么多的耐心和時間。這樣會留下不太好的初次印象。正確的做法是:
言簡意賅的說明自己的工作時間,擅長技術棧和自己的工作預期。
三、技術名詞
既然我是通過技術名詞來篩選簡歷,這就成為了我面試的重點考察區域。簡歷堆砌技術名詞其實是一把雙刃劍:
1. 不寫技術名詞,簡歷容易被刷掉;
2. 寫上的話,可是需要充分的準備哦,否則這可能成為你的軟肋;
為了充分說明,我舉幾個例子(這是真實面試的反饋):
再來看一個:
可以看到,技術點我都會去問一下,根據掌握度,會有一個簡單的評分(1-5)。而這個評分就是我定級的標準,后面會詳細說明。
四、挖掘項目的深度
項目經驗也是面試中比較重要的一個環節,為了對面試者有一個全面的認識,所以我會花一些時間聊聊面試者做過的項目。
當然,不會有人只寫一個項目,所以我的問題就變成了:能看出來你做過不少項目,有沒有哪個項目是你做的最好,值得驕傲的?
這樣,我就可以從最好的項目入手,省去了人為過濾的麻煩。
當面試者開始講自己項目的同時,作為面試官,我有幾件事情需要確定:
1. 首先要確定項目是否是自己做的,即確定項目的真實性;
舉個例子:你的項目是 React
搭建的,能告訴我搭建項目的過程和需要注意的地方嗎?
這時候有人就漏底了,除了 Create-react-app
之外,什么都說不出來。難道你不用 Router
嗎,難道不需要處理靜態資源嗎,難道不需要構建嗎?
細問之下,告訴我項目是其他同事搭建的,自己只負責開發業務。
2. 項目的缺陷
我們在架構項目的時候,想的太多會過度設計,想的太少則可能會出現隨著業務增長而來的種種問題。很多企業都在探索某個技術領域的最佳實踐,其實并沒有行業通用標準,只是思想可以借鑒罷了。
當然,你如果經驗豐富,并且能不斷重構,是可以修復一些項目缺陷。嗯,所以我的問題又來了:在項目中有沒有碰到過一些問題,你是如何解決的?
這里主要考察面試者實際處理問題的能力,以及是否有獨立思考的過程,這個很重要。
3. 項目的深度
項目做到一定規模以后,一定會去深挖原理,甚至原本的架構或者插件都無法滿足。舉個例子:如果沒有擴展過 Webpack Loader
的項目,基本可以肯定是一個小型項目,中型或大型項目以及業務復雜的項目都或多或少有一些方向的擴展。
項目深度的考察其實比較難,總會有一些行業通用問題需要去解決,這也就是 BAT
,TMD
這些公司經常會去制定一些行業標準,開源一些技術方案的原因。
當然,很多公司還是達不到這個層次,所以項目深度也是因人而異,并沒有通用標準。
所以考察方向就成了對這個項目的持續開發,垂直領域以及深度思考。
五、程序基礎,手寫代碼,算法
看到過這樣一個問題:面試要求手寫代碼的面試官是不是都很 Low?
顯然不是,通過寫代碼可以看出一個人的編程功底和思想。另一方面,我們很多時候都在閱讀別人的代碼,所以能迅速的看出你代碼問題的人,在我看來,能力是在你之上的。
一般手寫代碼都集中在:數組操作、原生 JS
、算法實現、以及數據結構這幾方面。部分前端有可能會有一些 CSS
布局要求。這里我就不展開說明了,后續會出系列文章來探討筆試面試題相關內容。歡迎關注,歡迎探討。
六、技術熱情
我們來舉兩個例子:
問:HTML5
的地理定位你用過的場景是什么?
答:balbalbal
…
問:有沒有遇到過定位不準的情況,瀏覽器定位的原理究竟是什么呢?
答:……
再譬如:
問:webpack
你最常用的 loader
都有哪些?
答:balbalbal
…Babel
問:Babel
的作用是什么?
答:balbalbal
…
問:有沒有了解過 Babel
的原理,它是如何做到的呢?
答:……
相信大家也看出問題了,這位同學會有一些簡單的使用場景,但是一追問原理,就一無所知。所以你覺得他對技術有熱情嗎,難道你對技術一點都不好奇嗎?
技術熱情決定了你在這行的成就,也決定了你是否能走得更遠。
七、個人規劃
你一定很奇怪,為什么會考察個人規劃?
原本我也是認為一些個人規劃都是空談主義,整一些虛無縹緲的東西有意思嗎?然而實際并非如此,當我陸續面過很多工作 10 年之久的行業前輩的時候,我會發現有些人之后的幾年毫無進展,完全是在混資歷,技術一塌糊涂。
這時候我就有了反思,為什么會有這種現象,我猜測大概有如下幾點原因:
1. 沒有個人規劃,走哪算哪,混日子型;
2. 忙于管理,疏于技術;
3. 長期在一個崗位,做著千篇一律的事情;
個人規劃的意義就很明顯了,之前前端反思錄(三)—談談個人規劃有提到過,這里就不細說了。
人變老了的感覺不是說我不想學習新東西,而是老東西我還消化不完。
八、面試者反饋
面試接近尾聲的時候,作為尊重,這時候我都會去問這樣一個問題:大概情況我都了解了,有沒有你覺得自己擅長而又沒被問到的東西?
每個人都會有自己的思維,甚至是偏見,所以面試的時候一定要去得到面試者的互動和反饋,從而映證自己的觀點。報著一個人才都不放過的心態,去全方位了解面試者。
也許他所擅長的剛好是你的軟肋呢?海納百川,有容乃大。
九、你有什么問題想問我?
面試官一定要放低姿態,不要一副高高在上的樣子,尤其是做技術的。如果覺得面試者稍微有些緊張,可以先聊點其他,如:所學專業,住在哪里,上下班時間之類無關痛癢的問題,緩解一下緊張氣氛。
至于最后一個問題為什么要問:你有什么問題想問我?有以下幾點理由:
1. 確定面試反饋;
2. 給面試者一個溝通的機會;
3. 看看面試者對應試部門的了解或者是對公司的興趣;
十、定級
技術名詞部分,我做了打分處理,所以定級就很容易了。一般情況我會按照 5 分制來評估,具體的標準這里就不透露了。
當然,每個面試官都有自己的風格,也許完全和我這一套背道而馳。但是你要記住,套路是一致的,任何事物都會有一個評判標準。
我走過最長的路,就是你的套路!
十一、文末彩蛋
每個人都是天才,但是如果你以爬樹的本領來判斷一條魚的能力,那它終其一生都會以為自己是個笨蛋。很有意思的一幅圖,分享給大家。