天天看點

面試雜談

前言

其實關于面試一直是一個老生常談的話題,尤其是前端崗位的面試。個人自己的面試和被面試經驗來說,大部分情況下的面試者都喜歡問一些​知識收集型​的問題,比如:

  • ​浏覽器差異與檢測​
  • ​CSS hack​
  • ​如何解決跨域​

當然不是說這類問題不應該問,如果候選人的項目背景有寫解決過類似的問題時;

适當追問有多少種不同的解決方案,為什麼選擇其中某種——能很好的考察候選人在積累知識過程中的深度、廣度還有思維模式~

但是對于一些初級崗位的候選人或者畢業不久的校招生,問這類問題無非是增加尴尬。

那麼要怎麼做

如果非要問初級職位候選人一些​知識收集型​的題目,推薦問一些比較基礎的,比如:

  • ​HTML5新增了哪些tag,和input類型​
  • ​CSS選擇器有多少種,優先級排序​
  • ​JS閉包,浏覽器的事件模型​

這些問題的最大價值在于考察候選人對這個職位的重視程度。

更好的方式

比起​知識收集型​問題,推薦問開放式的問題,比如:

  • ​大家都熟知的,一個頁面從輸入 URL 到頁面加載完的過程中都發生了什麼事情?​
  • ​談一下你所知道的(頁面)性能優化方法?​

關于手寫代碼

當然相對推崇的方式是考察候選人手寫代碼的能力,比如:

  • ​前段時間很火的,翻轉二叉樹,https://leetcode.com/problems/invert-binary-tree/ ​
  • 面試雜談

不過說實話,手寫代碼個人認為是挺變态的,如果不是當時這道題火了我也不會去做。

如果臨場再讓我手寫,未必能一次性跑過,是以實作一些​相當簡單的排序算法​個人認為會是一個不錯的方式~

其它情況

有些情況下,由于初級崗位往往需要先經過一輪電話面試做初篩,沒法考察候選人的手寫代碼能力。

而且對于一些​準備充分​的題霸,知識收集型問題和開放式問題都不太适用,我會選擇問數學題。

舉個很簡單的例子:x ^ 3 = 3,估算x的值,精确到小數點第1位(^是次方);

其實這是一道非常非常簡單的題目,但在實際的面試過程中,不到20%的人能在不提示的狀态下快速估算出答案,這個通過率對于初篩還是比較合适的;

先賣個關子,你算出來了嗎?

為什麼要問這種題目

  1. ​​能在網上搜到的答案或方案的問題都不能算是好問題​,實際工作中我們常常會遇到一些沒有現成解決方案的問題,或者說國外有解決方案但是自己水準不夠,不能通過快速閱讀英文,比如去:google、quora、stackoverflow來找答案解決的問題​
  2. ​我們都學過根号2 ≈ 1.414,根号3 ≈ 1.732,是以對于這種變種題,往往可以快速判斷候選人的應變能力~​
  3. ​數學是一切學科的根本,尤其是計算機​

延伸

上面這道題其實太簡單了,覺得沒有難度的同學可以算一下類似的一道題:2 ^ x = 10,估算x的值,精确到小數點第1位~

  • 提示思路1:
  1. 3 < x < 4
  2. 2^3.5 ≈ 8*1.414 > 10
  • 提示思路2:
  1. 題目轉換為估算 2^x=1.25
  2. 能否估算 2^(1/4) 和 2^(1/3)
  • 提示思路3:
  1. 5/4=1.25
  2. (5/4)^3=125/64=1.953125近似于2
  • 答案:
  1. 2^(1/4) < 1.25 < 2^(1/3)
  2. 3.25 < x < 3.3333

補充

最近學到另外一種面試技巧,就是不設具體的問題,從對所需候選人能力的一些範疇上定義出,需要一個啥樣人的大概架構~

常見的範疇:

  • ​代碼掌控力​
  • ​工程化能力​
  • ​解決問題能力​
  • ​技術廣度​
  • ​技術敏銳度​
  • ​技術影響力​

把這個架構的目标同步給候選人~然後讓他講述自己的工作經曆~并把經曆往架構上套,然後說服面試官雇傭自己~

友情連結

常見面試題;

  • ​FE-interview​
  • ​Front-end-Developer-Questions​
  • ​Front-end-Developer-Interview-Questions​
  • ​node-interview​

順便安利一下leetcode,不忙的時候解解各類經典題目

支援多種語言包括js,當場跑case,難易可選,能看通過率、耗時還有解法讨論~

繼續閱讀