標籤:

精讀《最佳前端面試題》及面試官技巧

本期精讀的文章是:The-Best-Frontend-JavaScript-Interview-Questions

討論前端面試哪些問題,以及如何面試。

1 引言

又到了招聘的季節,如何為自己的團隊找到真正優秀的人才?問哪些問題更合適?我們簡單總結一把。

2 內容概要

The-Best-Frontend-JavaScript-Interview-Questions 從 概念 - 演算法 coding - 調試 - 設計 這 4 步全面了解候選人的基本功。

3 精讀

本精讀由 ascoders camsong jasonslyvia 討論而出。

網路技術發展非常迅速,前端變化尤為快,對優秀人才的面試方式在不同時期會有少許不同。

整體套路

在面試之前,第一步要詢問自己,是否對當前崗位的職責、要求有清晰的認識?不知道自己崗位要招什麼樣的人,也無法組織好面試題。

認真閱讀簡歷,這是對候選人起碼的尊重,同時也是對自己的負責。閱讀簡歷是為了計劃面試流程,不應該對所有候選人都準備相同的問題。

具體流程我們一般會通過:

  1. 開場白
  2. 候選人自我介紹
  3. 面試
  4. 附加信息
  5. 結束

開場白是最重要的,畢竟候選人如果拒絕了本次面試,後面的流程都不會存在。其次,通過候選人自我介紹,了解簡歷中你所疑惑的地方。簡歷是為了突出重點,快速判斷是否基本匹配崗位要求,一旦確認了面試,全面了解候選人經驗是對雙方的負責。接下來重點討論面試過程。

開放性問題

面試的目的是挖掘對方的優點,而不是拿面試官自己的知識點與對方知識點做交集,看看能否匹配上 80%。但受主觀因素影響,又不宜詢問太多開放性問題,因此開放問題很講究技巧。

正如上面所說,我推薦以開放性問題開場,這樣便於了解候選人的經歷、熟悉哪些技術點,便於後面的技術提問。如果開場就以準備好的題目展開車輪戰,容易引起候選人心裡緊張,同時我們問的問題不一定是候選人所在行的,技術問題不是每一個都那麼重要,很多時候我們只看到了候選人的冰山一角,但此時氣氛已經尷尬,很多時候會遺漏優秀人才。

開放性問題最好基於行為面試法詢問(Star法則):

  • Situation: 場景 - 當時是怎樣的場景
  • Task: 任務 - 當時的任務是什麼
  • Action: 我採取了怎樣的行動
  • Result: 達到了什麼樣的結果

行為面試法的好處在於還原當時場景,不但讓面試官了解更多細節,也開拓了面試者的思維,讓面試過程更加高效、全面。

舉一個例子,比如考察候選人是否聰明,star 法則會這樣詢問:

在剛才的項目中,你提到了公司業務發展很快,人手不夠,你是如何應對的呢?

相比不推薦的 「假設性問題」 會如此提問:

假如讓你學習一個新技術,你會如何做?

更不推薦的是 「引導性問題」:

你覺得自己聰明嗎?

相比於 star 法則,其他方式的提問,不但讓候選人覺得突兀,不好回答,而且容易被主觀想法帶歪,助長了面試中投機的氣氛。至於對 star 法則都精心編排的候選人,我還沒有遇到過,如果遇到了肯定會勸他轉行做演員 —— 開玩笑的,會通過後續技術問題甄別候選人是否有真本領。

技術問題

亘古不變的問題就是考察基本功了,然而基本功隨著技術的演進會有所調整,Html Css Js 這三個維度永遠是不變的,但舊的 api 是否考察,取決於是否有最新 api 代替了它,如果有,在瀏覽器兼容性達標的基礎上,可以只考察替代的 api,當然了解歷史會更好。

比如 proxy 與 defineProperty 需要結合考察,因為 proxy 不兼容任何 IE 瀏覽器,候選人需要全面了解這兩種用法。

變的地方在於對候選人使用技術框架的提問。在開放性問題中已經做好了鋪墊,那無論候選人時以什麼框架開發的,或者不使用框架開發,最好按照候選人的使用習慣提問。比如候選人使用 Angular 框架的開發經驗較多,就重點考察對 Angular 框架設計、實現原理是否了解,實際使用中是否遇到過問題,以及對問題的解決方法,這也回到了 star 法則。

如果候選人能總結出比如當前流行的 Vue React Angular 這三個框架核心實現思想的異同,就是加分項。

對與老舊的問題,比如 jquery 的問題,也會問與設計思想相關的問題,比如候選人不知道 $.delegate,也不知道其已被 $on在 Jq3.0 取代,這不代表候選人能力不行,最多說明候選人比較年輕。此時應該通過引導的方式,讓其思考如何優化 $.bind方法的性能,通過逐步引導,判斷候選人的思維活躍度有多強。

如何防止被套路

把面試官經驗拋出來,怕不怕讓候選人有所準備呢? —— 說實在的,幾乎所有候選人都是有準備的,也不差這一篇文章。

以上是開玩笑。

面試主要是看候選人基礎有多紮實,和思維能力。基礎主要指的是,候選人提前了解了多少前端相關知識,比如對閉包的理解,對原生 api 的理解?如果候選人沒接觸過這兩個知識點,會有兩種情況:

  • 這些知識點看完需要多久?如果是閉包和原生api的定義與用法,候選人這方面的缺陷可以通過5分鐘來彌補,那麼這種問題到底想考什麼?我們真的在乎這5分鐘看文檔的時間嗎?此時應該了解候選人對知識點的感悟,或者學習方式,因為這兩點的差距可能幾年都無法彌補
  • 如果候選人學習能力非常強,但幾乎所有前端知識點都不了解,彌補完大概一共要花 1000*5 分鐘,這時候量變引發質變了,是不是說明候選人本身對技術的熱情存在問題?

通過了基礎問題還遠遠不夠。甚至當問一個複雜的問題的時候,如果候選人瞬間把答案完美流暢表達出來,說明這個問題基本上白問了。

**技術面更應該考察候選人的思考過程和基於此來表達出的技術能力和項目經驗。**如果候選人基礎沒有落下太多,思維足夠靈活,在過往項目中主動學習,並主導解決過項目問題,說明已經比較優秀了,我們招的每一人都應當擁有激情與學習能力。

所以,當問到候選人不了解的知識點時,通過引導並挖掘出候選人擁有多少問題解決能力,才是最大的權重項,如果這個問題候選人也提前準備了,那說明準備對了。

非技術相關

最後考察候選人的發展潛力與工作態度,我們一般通過詢問簡單的演算法問題,進一步了解候選人是否對技術真正感興趣,而不只是對前端工程感興趣。同時,演算法問題也考察候選人解決抽象問題的能力,或者讓候選人設計一個組件,通過對組件需求的不斷升級,考察候選人是否能及時給出解決方案。

最後時工作態度,首先會考察人品,對不懂的知識點裝懂是違背誠信的行為,任何團隊都不會要的。同時,不正視自己技術存在的盲點,將是技術發展的最大阻礙。不過這裡也不怕被候選人套路,如果全部都回答不懂那也不用考慮了。

3 總結

由於經驗不多,只能編出這些體會,希望求職者多一些真誠,少一些套路,就一定會找到滿意的工作。

討論地址是:精讀《最佳前端面試題》及前端面試官技巧 · Issue #27 · dt-fe/weekly

如果你想參與討論,請點擊這裡,每周都有新的主題,每周五發布。

推薦閱讀:

前端工具鏈課(二)—— 模塊化工具及組件化思想
使用Nuxt.js改善現有項目
【譯】如何只用CSS製作一個漂亮的載入動畫
APP圖標設計小技巧:在iOS上快速獲得APP圖標的真實預覽圖

TAG:前端开发 |