怎樣判斷面試者是否有紮實的前端基礎?
最近朋友去面試,得到反饋說 ta 的「前端基礎」不好。我突然覺得這是一個很有趣的問題,比如對於武術家來說,你讓他扎一個小時馬步,就知道他基礎好不好;對於歌手,你讓他視唱視奏一下,就知道他基礎好不好。
而技術面試,大家往往都是最開始面的幾家公司會炮灰,然後隨著面試過程不斷刷題或者背概念,在背下來 HTTP協議概念,網路攻擊,非同步標準之後,終於在面到第 N 家的時候拿到了 offer。
問題是,短短几個禮拜的時間其實並不會增加多少知識和經驗,但是就能輕易的從「基礎不好」變成」基礎紮實「,到底是我們對」基礎「的定義有問題,還是對」基礎「的評價標準有問題?亦或是前端本來就沒什麼內涵。
按理說基礎的考察應該是可以有一個開放標準的,就是無論是否提前知道題目,都幾乎不會影響獲得的分數,那麼對於前端來說,什麼是長期積累下才能夯實的基礎呢?我們在面試的時候又應該怎麼量化去評判它?
2年以下的考智商,說白了就是這個哥們聰明不聰明,各個方面的,考法太多了…
2年-5年左右的考做過什麼東西,能否說明白,是否符合整體前端發展趨勢,業餘時間做過什麼。說白了,幹了這麼久,幹活肯定沒問題,就看看有沒有一直保持學習的習慣,學習方法,業餘時間是否努力,而不是混吃等死。
5年-10年的考考後端和成功項目經驗,管理能力,情商,溝通,前端技術在產品上的體現和價值。主要是考察一下這麼久工作經驗,是否還給自己局限到前端這個圈子,是否能夠從產品,運營等公司角度來看待前端技術到底作用和意義是啥。
10年以上的,輪不到你面,輪到你面的都淘汰了吧……沒幾個能用的了。都幹了十年了還要拿去做一做筆試題,拉出來問一問代碼實現細節而不是直接甩出來幾個牛逼成功項目框架,真的,後10年更寫不出來了…
(我智商不太行,從業前兩年過得很辛苦,不過我挺愛學的,中間5,6年就過的還可以,現在什麼都學一點,在努力找一個牛逼的項目想蹭點貢獻)
很同意輪子哥,前端這麼簡單,只要智商別比我低都能做的好啊… 考什麼基礎,直接考智商進來再學就夠了。考演算法咯和http協議咯……入職之後根據公司需要分配項目,到時候要用react vue 還是jQuery ,一邊學一邊做項目。
這特問題是偽命題。考察一個程序員對於某個具體的工具的基礎是沒有意義的。公司的業務會變,需求會變,哪怕是前端的領域自己的工具也每年翻新。不如就只面試真正的基礎知識,要什麼進來再學好了,學不會就在試用期幹掉。
題主是作為面試官的角度, 我作為面試者來說下:
我認為在電腦敲代碼是最好的,既能體現編碼能力,又能體現調試能力。
吐槽一下白紙手寫應用題的,你叫我手寫演算法題我接受,你讓我手寫原生dom操作,ajax我覺得沒啥意義。
很多都是看了網上的一些視頻和文章,自己總結一下就當自己的,其實是知識的搬運工,比如說從HTTP談到HTTPS,各種TLS handshake, 查找證書鏈....我就想問下你搭過https嗎?沒搭過能不能說出它的價值和優缺點?
by the way, 以上是一會寫代碼的月半子自我吐槽。
不久前被分分鐘教育的人,白紙手寫代碼且一次性通過
面試官寫出來了,說自己下筆如有神
我佩服,在下甘拜下風,雖然我不知道你面試了多少人讓人手寫這段代碼
我一直在想一個事情,一個絕逼牛逼的人可能會下筆如有神,想到什麼都能寫出來
但是對於絕大多數人來說,不管前端還是後端,最主要還是去解決問題,人的經歷或者說真真兒做過項目的經驗才是這個人的財富,如果匹配的話,也是未來公司的財富。
舉個不是特別恰當的例子,很多技術經理、總監已經不懂很多技術了,但是他們知道方法論啊,知道什麼場景下能使用什麼方法去解決問題,你讓他用react寫個頁面試試?
回到題目,如果你真想檢驗一個人的水平
第一從他做過的實際項目入手去問,怎麼做的,為什麼這樣做,有沒有更好的方式,然後從某個技術點去逐層追問,看看面試者考慮問題的深度到什麼階段,能不能經過提醒,激發麵試者的思考
也可以從自己實際工作中解決過的一個問題去詢問面試者
以上考察的是思路
第二你想考察他的編碼能力,好,你給他一台電腦,開放網路查詢,出一道不是那麼容易就從網上查查找找就能做出來的東西,可以從自己工作中遇到的一個場景給他出題,你找的同事進來也是要和你一起開發的
以上考察的是實際編碼能力
基礎這個東西,單一考察和背誦文章差不多
但是一個複雜問題的解決,是需要運用紮實的基礎知識再綜合經驗,最終實踐出來的
實話說,我個人比較討厭在有過幾年的工作經驗後還讓寫程序輸出什麼,typeof輸出什麼一類的問題
這說明你連鑒別面試人簡歷的能力都沒有,然後通過問問題你還不能鑒別一個人的能力有沒有達到預期的話,那面試官水平可以打上個問號。
最後,有時候也靠運氣這麼來判斷:
1. 讓候選人介紹一個自己覺得做過的最值得一說的項目,這可以考察他/她的表達能力和自信心。
2. 讓候選人用代碼實現一個實際功能,這可以考察他/她的編碼能力和解決問題能力;
3. 給候選人一個極端情境的設計問題,這可以考察他/她的工程思維和權衡能力。
你可能會問,說了這麼多和前端都沒有關係啊!相信我,前面3題表現得好的,說明工程師素質基礎紮實,啥前端基礎問題在這種人面前都不在話下,現在不會也很快可以學會。
你要招的是一個基礎紮實的工程師,而不是找一個所謂前端基礎紮實的寫代碼的。
我有一個Live專門講如何做好面試官 https://www.zhihu.com/lives/873973775413170176我都不想吐槽某些面試官了,總是問一些死知識,就是那種去 google 或者看文檔就能知道準確答案的知識。尤其是在面試初級前端時。應付這種面試官很簡單:
1 刷題
2 把上個面試官問的問題都記下來,回去查清楚,如此反覆,就能應付這幫面試官了你覺得面試的重點是什麼,我給你兩個選項
A 這個面試者目前知道哪些知識
B 這個面試者未來能否搞定我們的工作大部分面試官都選 A。但我個人更關注 B。這個跟我個人的特點有關,稍後會說。
我曾經在阿里面試過不少應屆畢業生,都是中國不錯的大學。我發現我跟其他面試官的理念差異很大,有的二面面試官問我,這個人連 AMD 都沒聽說過,你怎麼不把他拒了。
嗯?AMD 很重要嗎,不知道就要拒嗎?這東西不就是兩個函數約定嗎?在指導下學起來很快啊。沒踩過坑的不要?我踩過啊,你們團隊沒有code review 嗎?
其實是因為我更看重面試者其他方面的特質。前端這些基礎,說實話,教(罵)兩個月基本就全會了。如果你從來沒打算教新人就當我沒說。
我更關心的他英語水平如何,他是否有編程思維,他是否能跟我有效溝通,他遇到問題是否會立即反饋給我而不是悶頭干,他是否能快速掌握目前不會的知識,他是否會被團隊里的人喜歡。
這些就夠了。基礎不會?我教唄。
我之前工作時把好幾個小白教(罵)成了不錯的前端。
說句不好聽的,有些前端團隊不好好培訓新人,盡想著用新人的價格招一個中級前端,這些團隊也是想瞎了心了,早點死心吧。
有人貌似不理解罵的意思,我在工作中的罵永遠都是不動氣的,罵只是為了顯示我的態度,而且都不帶髒字。考察基礎不是讓面試者基礎知識什麼都懂,是考察面試者對知識掌握是否體系化,考察面試者的邏輯思維能力。
再說了,如果基礎不紮實,看到很多源碼中到處是原型,閉包,這些東西不懂,連源碼都看不懂更別說發展了。這些基礎知識都是開發中遇到過的問題,如果基礎都不懂,很難看出面試者有過多少項目經驗。基礎知識很重要,重要的是體系化的知識,而不是碎片化的知識。這決定你能走多遠。如果你覺得我這樣面試還算合理,趕緊發我簡歷~
----
我覺得你有一句話說的很對啊,「前端就是沒有什麼內涵」……-_-
「前端基礎」好不好,有區別嗎?可能有區別,就是基礎不好的人,幹活手慢一點,有時候寫html/css會瞎搞,其他的好像並沒有。
所以我從上家公司開始面前端,基本上所謂的「前端基礎」,就是象徵性的問一下,保證候選人知道 js/css 是什麼就完了。
自己面試的流程大致是這樣:
第一步先考察一下基本的編程基礎,問幾個基本的編程問題,可以和前端相關也可以無關。比如垃圾收集大致是怎麼做的,setTimeout 大致做了什麼(說會在另一個線程里執行回調的直接斃掉)。
第二步考察一下知識面,問問http、tcp的基本知識,dns是怎麼工作的,或者常用框架的實現原理,看看候選人是不是除了自己的一畝三分地什麼都不關心。
第三步考察hold業務邏輯的能力,從一個簡單的註冊也,或者查詢頁開始,先讓說下代碼的基本架構,然後需求、性能、可靠性、安全層層加碼,看看能不能很快的反饋出解決方案。能對答如流的要麼做過,要麼對他來說這種複雜度的東西是小case。
前三步都沒問題,基本上說明候選人已經還行了,但是行到什麼程度,不知道。如果想找比較厲害的,就增加個第四步,亮點項目考察。
你說你多牛多牛,ok,你做過什麼讓你覺得很得意的玩意兒?要麼你github上有挺狠的repo(不一定star多,但是一個項目難不難,巧不巧,其實看一下就知道),要麼你能詳細口述你做的一個挺狠的東西,然後再問一下看看是不是自己做的,如果確實自己做的而且確實不錯(所謂「不錯」,我的標準是我自己一時半會兒根本做不出來,或者我壓根沒想過還能做這種東西),那應該是比較厲害的。比如,假設有個人用 webgl 做了個代碼編輯器,那必然是「前端基礎好」,能力也強,而且有技術激情對吧?
以上四步如果都表現很好,那我覺得這個人完全可以「代替我製作人的位置」,綽綽有餘對吧。不過也不一定,畢竟業務上的東西,總要有個熟悉的過程。
ps:我覺得前端的招聘,如果你想找一個「資深前端」,或者說牛人,其實本質上你是想找一個「做界面很厲害的人」。如果你想找一個「合格前端」,本質上你想找的是一個「擅長做界面的人」。這才是這件事的核心,一切都應該圍繞這個進行。什麼閉包不閉包,什麼es6,跟這事兒其實沒多大關係。
那怎麼叫「做界面厲害」啊?咱們說高點,能做google doc、gmail、processon這種複雜界面,那必然是很厲害的,能做vue、antd 這種標準化的東西,那必然也是很厲害的。可能我表述的不是特別清楚,我就是想說,所謂的前端能力,其實我們想衡量的是一個人多大程度上能像這種水平靠攏的能力,那反過來說,你覺得所謂「前端基礎」,跟這種能力有相關性嘛?我在面試他人的時候其實主要是問項目的問題,但大部分前端都會說自己項目中沒有什麼困難或者複雜的地方,但當我問一些基礎性的問題,比如網路,比如框架原理,他們又答不上。
感覺這事純粹看人品,遇到對眼的面試官,隨便聊幾句就拿下offer了,遇到不對眼的,分分鐘懟死你。
首先,「基礎不好」並不一定是拒絕的關鍵點。應聘者在面試之後得到的反饋是失敗原因之一,但更多原因還是要靠自身復盤總結。基礎是很重要的,不求深入至少懂個概念,不然後續入職會有很多溝通障礙。所以重視基礎,但又不只看基礎,最好的方法就是多輪面試,大量地問,沒有開源項目的話讓面試者多寫,遇到基礎問題只要應聘者能講得結構清楚,即使細節錯了也沒有關係。最後以一個立體全面的考核來做最終評定。
基礎不重要,有時間考他基礎都不如看看這個人有沒有做事思路,有沒有幹活醫院,有沒有自己的思維。it就不要把自己局限在語言,工具使用上換個工具換個環境就不會幹活的人比基礎不好的可怕很多倍
比如一個四年的前端連閉包都解釋不清楚?
評論里還有人認為這個真解釋不清楚,看來網上大神真的不少
上一個網頁好了
MDN
前端基礎這個問題不同的面試官應該都有不同的答案,完全看面試官自己的關注點是啥。從我個人招前端或者後端開發來看。基本的技術,這裡基本的技術不是指具體的框架啊,工具庫啊啥的是肯定要掌握的。因為框架和工具庫隨著不同產品、產品的不同時期都會發生變化。
每一個優秀的開源項目都有著非常良好的代碼風格。一個代碼風格都不好的人我想沒有幾個會是優秀的開發工程師。因此我會先了解面試人的代碼編寫風格。最好的了解方式就是上機了。通過上機編寫一段程序的過程可以看出面試者的編程風格。比如 if 後面會否很自然的加上空格;if、for 這些語句前後是否會留空行。變數賦值的「=」前後是否會加上空格等等。當然風格不一定和我的習慣一樣,但是一個良好的風格無論如何看起來都會整潔和舒服。
其次我很關注面試者對代碼中 class、methods、variables 的命名。起名這個看似很不起眼的事情其實很能反應面試者的基礎能力。一個閱讀過大量代碼並且自己寫過很多代碼的開發者才能得心應手的對 class、methods、variables 起名,並且這個名字能很好的表達出來其代表的含義。俗話說:「最好的注釋就是代碼」,這話不全對,但是至少名字起的好的代碼看起來就很是易懂了吧。代碼的注釋能力也是考察的一個重點,給面試者一段代碼,讓面試者用文字寫出注釋而不是用語言表達出來。看寫注釋的過程和結果可以看出面試者的思維理解能力和表達能力。
其中我會針對面試者就他自己工作項目中用的最熟練最深入的框架或者工具庫提出更深入的一些問題。當然具體的問題要隨著框架和工具庫是什麼來選擇。比如面試者說
koa 1.x 框架用的很多很熟練,那麼我可能會問 yield 方面的一些知識點。如果是用的 async / await 多,那麼我可能會考察 Promise 方面的一些知識點。如果面試者用 React 比較多了,那麼我可能會考察對 HOC 組件的理解、組件 ref 為什麼推薦採用回調函數而不是 String?這幾天在找工作,視頻剪輯,影視製作類的,大部分都是工作室什麼的,,就算是某個非影視公司的部門也是讓專業的負責人來面試我的,然鵝某次一個小哥面試我,說了幾句我就能感覺到他並不是專業的,我應聘的是後期製作啊剪輯啊,,結果他說他們需要我既會做前期策劃又要會拍攝又要負責剪輯,我當時EXO me?你招聘啟事不是這麼寫的啊喂!!然後就問了我一堆非專業性的問題,,我並沒有不尊重這位小哥哥,,相反我覺得這家公司不尊重我,,,
針對你提的這個問題,我想說死記硬背之後你只是給了面試官基礎很好的「錯覺」。 日常工作抱著不求甚解的態度,或者是不夠熟練,才是導致基礎問題需要背才能想起來的原因
1、考察下經常用到的演算法(這個對前端也是很有必要的)2、處理問題的能力,項目中出現的問題而答案又不是唯一的,看看面試者的解決方案,基礎好不好從答案里就可以很輕鬆的看出來!3、工作生活中有好習慣的
這個很容易,在W3C找基礎內容,考察他的html css js,這些都是基礎!能搭上說明人家下功夫學習基礎知識了,即使現在什麼都不會,學起來也很快的!大家可以關注微信號,裡面有騰訊和阿里大牛的學習技巧和經驗!
所以這個故事告訴我們,工作也離不開應試教育………這能高效的篩選人出來。
就像大學的時候,你發現你室友是學渣,你也是學渣,你倆平時都總逃課,結果期末考試,他背了兩周,你呢,沒背,然後他過了,你掛了,但是你覺得你倆水平差不多啊,為什麼他過了你沒過,這他么不公平………但是這真怨不得別人。
至於學習本來就還行,平時也不逃課認真聽講的同學,背兩個周能考過他的概率有多少呢?
這個故事又告訴我們,平時的積累是非常重要的。前端框架,前端路由,往深了看就好了
剛好要換工作,但是個人對筆試題那是相當的鄙視,因為我不會啊
利益相關:應屆生,目前參加了各大一線大廠的前端面試。BAT,餓了么,美圖。即將參加京東,美團的面試。目前阿里,餓了么,美圖待定中。還是0 offer狀態如果哪位大廠的大佬看中小弟還望給個面試的機會。先吐槽一下百度,說好的有3面經理面會給我打電話的結果還是放我飛機。2面完還以為穩了呢
說一下個人的想法,我比較討厭面試官問那些能夠直接百度到標準答案式的背書式問題,例如說一下原生對象和宿主對象有哪些,閉包是什麼,原型鏈是什麼。這些問題我實在是沒有興趣來背書式的背一遍。如果是用文字的形式來寫,我比較討厭問你知道的性能優化方案,跨域方案。光性能優化這一點我就至少可以寫個3000字作文好嗎,這種題目你真的要作為在白紙上的題目?還有我比較討厭那些深究源碼的面試官,應屆生大三的你真的覺得有看源碼的必要嗎?為了看源碼而去看源碼有意思嗎?我一般這種問題我都直接回答我並不覺得現在有看源碼的必要。這裡吐槽一波上周去面試的cvte二面試官開頭就問你知道webpack的底層原理嗎?你知道node什麼版本開始支持async await嗎。。。。
由於最近從UC實習準備離職了而且我這個組只有我一個前端,我也面試了幾個準備接替我的有2年工作經驗的前端。不過不是那些985名校出來的,所以雖然2年經驗其實水平也就和我大三上學期差不多吧。我比較喜歡問那些沒有標準答案的問題,完全可以根據你自己的理解來暢談。例如我一般會問你覺得現在的vue,react開發和傳統的jquery開發有什麼區別呢。如果面試者能夠答到virtualdom,數據視圖綁定思想,組件化模塊化開發,其中一點能夠答的比較好就ok這裡就涉及到了前端工程化的領域。然後會讓他挑一個他最有成就感的項目,講講他在其中的角色,使用了哪些技術,為什麼要選用該技術,有什麼心得。以上兩個問題如果能答的好的話什麼源碼什麼底層原理完全不會也ok。
最後我想說,不是你技術好你就能夠去面試別人的,懂得如何提出一個好問題也是對面試官的考察。面試是一個雙向選擇的過程,如果我覺得你提的問題很沒有營養我是真的沒興趣去回答。
推薦閱讀:
※關於面試背後的邏輯分析,看這一篇文章就夠了
※【面試寶典第一部】我做了一年半團隊,面試了幾百號人,這是我的經驗
※我們總結出了寶潔八大問的標準答案
※如何回答「你的期望薪資是多少?」
※特別瘦的女生穿什麼樣的正裝好看?