面試雜談
前言
其實關於面試一直是一個老生常談的話題,尤其是前端崗位的面試。個人自己的面試和被面試經驗來說,大部分情況下的面試者都喜歡問一些知識收集型的問題,比如:
- 瀏覽器差異與檢測
- CSS hack
- 如何解決跨域
當然不是說這類問題不應該問,如果候選人的項目背景有寫解決過類似的問題時;
適當追問有多少種不同的解決方案,為什麼選擇其中某種——能很好的考察候選人在積累知識過程中的深度、廣度還有思維模式~
但是對於一些初級崗位的候選人或者畢業不久的校招生,問這類問題無非是增加尷尬。
那麼要怎麼做
如果非要問初級職位候選人一些知識收集型的題目,推薦問一些比較基礎的,比如:
- HTML5新增了哪些tag,和input類型
- CSS選擇器有多少種,優先順序排序
- JS閉包,瀏覽器的事件模型
這些問題的最大價值在於考察候選人對這個職位的重視程度。
更好的方式
比起知識收集型問題,推薦問開放式的問題,比如:
- 大家都熟知的,一個頁面從輸入 URL 到頁面載入完的過程中都發生了什麼事情?
- 談一下你所知道的(頁面)性能優化方法?
關於手寫代碼
當然相對推崇的方式是考察候選人手寫代碼的能力,比如:
- 前段時間很火的,翻轉二叉樹,https://leetcode.com/problems/invert-binary-tree/
不過說實話,手寫代碼個人認為是挺變態的,如果不是當時這道題火了我也不會去做。
如果臨場再讓我手寫,未必能一次性跑過,所以實現一些相當簡單的排序演算法個人認為會是一個不錯的方式~
其它情況
有些情況下,由於初級崗位往往需要先經過一輪電話面試做初篩,沒法考察候選人的手寫代碼能力。
而且對於一些準備充分的題霸,知識收集型問題和開放式問題都不太適用,我會選擇問數學題。
舉個很簡單的例子:x ^ 3 = 3,估算x的值,精確到小數點第1位(^是次方);
其實這是一道非常非常簡單的題目,但在實際的面試過程中,不到20%的人能在不提示的狀態下快速估算出答案,這個通過率對於初篩還是比較合適的;
先賣個關子,你算出來了嗎?
為什麼要問這種題目
- 能在網上搜到的答案或方案的問題都不能算是好問題,實際工作中我們常常會遇到一些沒有現成解決方案的問題,或者說國外有解決方案但是自己水平不夠,不能通過快速閱讀英文,比如去:google、quora、stackoverflow來找答案解決的問題
- 我們都學過根號2 ≈ 1.414,根號3 ≈ 1.732,所以對於這種變種題,往往可以快速判斷候選人的應變能力~
- 數學是一切學科的根本,尤其是計算機
延伸
上面這道題其實太簡單了,覺得沒有難度的同學可以算一下類似的一道題:2 ^ x = 10,估算x的值,精確到小數點第1位~
提示思路1:
- 3 < x < 4
- 2^3.5 ≈ 8*1.414 > 10
提示思路2:
- 題目轉換為估算 2^x=1.25
- 能否估算 2^(1/4) 和 2^(1/3)
提示思路3:
- 5/4=1.25
- (5/4)^3=125/64=1.953125近似於2
答案:
- 2^(1/4) < 1.25 < 2^(1/3)
- 3.25 < x < 3.3333
補充
最近學到另外一種面試技巧,就是不設具體的問題,從對所需候選人能力的一些範疇上定義出,需要一個啥樣人的大概框架~
常見的範疇:
- 代碼掌控力
- 工程化能力
- 解決問題能力
- 技術廣度
- 技術敏銳度
- 技術影響力
把這個框架的目標同步給候選人~然後讓他講述自己的工作經歷~並把經歷往框架上套,然後說服面試官僱傭自己~
友情鏈接
常見面試題;
- FE-interview
- Front-end-Developer-Questions
- Front-end-Developer-Interview-Questions
- node-interview
順便安利一下leetcode,不忙的時候解解各類經典題目
支持多種語言包括js,當場跑case,難易可選,能看通過率、耗時還有解法討論~
推薦閱讀:
※你經歷過怎樣絕望的面試?
※當牛津面試操盤手是怎樣一種體驗?
※我是如何從自學編程到找到工作的
※如何在面試中解釋:為什麼跳槽這麼頻繁?
※如何獲得 Google 的職位?