前端工程師難道不應該熟悉 HTTP 協議,掌握 ECMAScript 么?

我從今年5月份開始幫助公司招聘前端開發,擔任面試官。之前尚無面試經驗,自己整理了一些面試題(純原創或是自己被問過的)。近四個月下來都是根據這些問題考察應聘者,我自認為效果還不錯。其中兩個基礎題我必問,一個是HTTP,一個是ECMAScript。今天來的這位應聘者,有4年前端經驗,我同樣問了這兩個基礎問題,我很明顯看出他一臉不屑,HTTP回答"沒什麼好說的",ECMAScript回答"不知道"。後面幾個問題他也心不在焉的,然後就找借口要走了…
期間他提到了fis,很多性能優化的事情都交給fis了,我問fis的底層原理你了解么,他又沒怎麼答上來。然後他似乎就真的不想繼續這次面試了。

說到我們公司需要的崗位,中高級都需要。而且這位應聘者顯然不屬於初學者了,我默認把他當做高級前端面試的,所以我覺得問他這兩個問題,並不過分。

ECMAScript其實蠻概念化的,即javascript核心,主要就是剔除了宿主環境API以外的內容。可以說,只要你在寫js,就會與ECMAScript打交道。詳見犀牛書。

我想問,一個合格的前端工程師難道不應該掌握HTTP和ECMAScript(最低要求es3,掌握es5,es6更佳)么?
順便想問問有前端面試經驗的同行們,有什麼經驗可以傳授一下么?哪些方面是需要重點考察的呢?


我覺得基本的知識還是要具備的。除了基本的前端編程,一個嚴肅的(注意我說的不是高級的,也不是能找到工作的,也不是合格的,我說的是「嚴肅的」)前端程序員應該了解這些:

http 協議,手寫請求,看懂 response 頭中的每一行(304,301,302,404,500,這些狀態碼的意思你總該知道吧)。
https 協議有什麼用,大致流程是什麼。
使用 wireshark、fiddler 等工具抓包。
手寫 ajax 請求。
手寫請求要不要考慮超時,為什麼。
消息隊列及其簡單實現。
ECMAScript 相關知識(至少能舉出一個 es6 的新特性並說明其意義,不過分吧)。
基礎 javascript 設計模式,簡單組件設計和封裝(封裝個 combo box 總該可以吧)。
js 垃圾收集基礎知識(至少要有資源、對象、引用、銷毀等基本概念吧)。
模板引擎簡單實現原理。
mv* 基本原理以及意義。
基礎的多線程編程知識。
英語四級以上水平。

以上這些不是矯情,這些知識點能保證你(必要非充分條件):

寫出可維護(倆月之後你自己還能看懂)的代碼。
能看懂英文文檔和官網。
使用框架時能迅速掌握原理和用法。
方便調試,出了問題有思路排查。
有能力從整體上把握一個項目的技術概況。
有能力跟進前沿發展,不落伍。
與其他組同事平等地展開技術社交。
在特殊情況下,可以短時間內轉型到其他領域。

以上真的有用,絕對不是蒙你。

ps:評論里有人說難,其實這些知識點看起來駁雜,實則難度不大(英語除外),仔細看看書,實踐幾次,就能掌握了。也不要求精通,但是概念要清楚,否則你跟別人沒法聊,工作中遇到問題思路也會受限。


態度,溝通能力,基礎技能,求知慾和項目經驗,舉一反三和刨根問底。 我喜歡這樣的同事。哪怕他不會你說的兩樣,因為我相信我可以教會他。 ps 你http和EcmaScript問的具體是啥?

fis不會用也罷,有文檔和教程能用就好。

看你是招聘什麼期望的工程師,高級的話還是要知道的。

多讓面試者說自己,再順著提問可以聊出對方很多東西。

我很反感,你必須順著面試官思路

走的面試。因為這種人不會換位思考,我面試不多,但是一般人都會緊張,多讓對方說可以緩解緊張也可以更了解對方喜歡什麼技術,興趣。

基本功重要,但是更重要的是開頭那幾點特質。

好的tl和面試官一樣,發揮和找到同事的長處我覺得比較重要。

最後是這人態度有問題,拒了吧。


說說我對面試的理解。

面試的目的無非就是尋找你需要的人來幫你幹活。公司需要招人肯定是有相關的崗位有缺口,那麼就應該主要圍繞這個崗位的職能來招聘,對於這個職位要求什麼技能對於你這個老員工來說肯定是再清楚不過了。就算如此的話,像http協議,ecmascript,fiddler之這類,應該是每個前端都必備的最基礎的技能,問一個沒畢業的玩過前端的大學生都知道,但是他工作四年?就算從事的是最底層的碼農工作,連這點都沒掌握估計連碼農都碼不好。所以由此可見,還好那人還有自知之明,題主不招他肯定是正確的。

同時應該一定程度上了解面試者的價值觀,貴公司需要有什麼樣的價值觀的人,就準備相關的問題來提問,比如上進心,自學能力,溝通能力等。以了解這些為目的再展開面試,如一般公司都過問項目經歷,問演算法等,都是為了對面試者是否具備他們想要的能力的一種考察。

從他的面試情況看,已經完全可以看出來這個人怎麼樣了:技術視野狹隘,視野這麼狹隘也說明了這個人沒有進取心,對一些基礎問題的不屑說明這個人要麼基礎差要麼不尊重人。走了對大家都好。


如果只是個寫功能的搬磚程序員,聽說過名詞就行;
如果是一個想要 NB 的前端開發,應該去事無巨細。


我最近遇到初學者,他說要實現客戶端的Socket編程

我和他說到可以利用PHP的Socket函數、Ajax,HTML的WebSocket實現長輪詢連接


然而和他說了半天,他和我堅持說要客戶端Socket實現,不要不要伺服器端Socket

知道最近我終於知道:


他分不清客戶端腳本和服務端腳本,甚至連Http無狀態性都不知道

但是他卻硬是扯Socket實現


我告訴他需要從特性和實現中出發連接實現原理,我本意是想讓他先別好高騖遠去,了解實現原理之後就很容易,而且我喜歡他能夠發現其中樂趣。

他和我這樣說:

"我只是想開車,我需要了解汽車構成、方向盤構成、輪胎構成嗎?我很急,只想快點學習之後就業。"


知道嗎?我當時很傷心,因為我以前進入IT當程序員是因為我發自內心喜歡這門行業,而且我也認為程序員們都是對著自身抱著精益求精的態度,卻不曾想到,在現在程序員僅僅是為了生活而生存。


最後,我寫了程序實給他看,32K大小,卻沒下載


強迫症,處女座,糾正一下 ECMAScript


會ecma指的是什麼…如果是通讀理解標準…
隨便問問,Data對象實例化的參數格式是什麼,哪個瀏覽器執行最嚴謹。正則對象實例化和直接用正則串的區別是什麼。number類型的詞法token組成是什麼。
我不大了解編譯原理,可能問的不嚴謹…
其實面試問點相關的沒什麼不好的,我覺得敢想的答錯也比不敢想的強得多~


首先,作為一個有一定面試經驗的應屆生,個人覺得http協議和es6的了解應該是需要的。像http協議,基礎的網站優化,前後端交互,都會涉及到。而ecmaScript的話,基礎的閉包,原型,作用域屬於js的基礎,對處理編程上的優化。而es6的類,塊作用域,新數據類型,generator,會對大型應用開發有很大幫助。但是,如果有個別特性沒了解到也沒辦法,說不定別人某些領域特別厲害?
而其次,招聘人更應該注重和團隊是否可以配合,他的技術是否特別符合團隊的需求吧?像樓上說的一樣,如溝通能力也是很重要咯。像題主你提出的這兩項問題(http,es),算是為了考驗基礎知識,然後往深一點可能是你們業務需求需要更多的接觸到這一類知識(優化,多訪問量應用部署,大型應用開發等)。這時候應該考慮的就是新加入的員工能不能很快加入工作中,或者如果要新學習會不會很困難。最重要的是會不會因為溝通不當而造成團隊出現分歧吧?

答得有點亂,之後會繼續整理


就算是你所說的高級前端開發,在真正的工作中需要用到http相關知識和es6的新語法特性的機會也是相當小的,得看具體項目的技術選型還有前端架構
如果不是招技術主管或大團隊的前端帶頭人,真沒必要問這些,因為大多時候需要的是知其然,不用知其所以然


知乎某17K粉絲的前端大V連http長連接和無狀態性都弄混了,人照樣開live出書掙鈔票啊。

老實承認吧,前端用不了太多http協議的內容,知道個名詞就行了。
對前端來說,了解就好,不了解也無傷大雅。


「你能給我描述一下ECMAScript嗎?」
「問得好,我選擇死亡」


應該。


需要具備,了解服務端和運維的一些知識,能幫助你快速定位bug!!!舉個栗子,比如上周有一次測試反饋給我說app內的嵌入頁面都點擊不了了。接著就是需要我定位問題,通過抓包發現點擊行為報錯content-security-policy:frame-src:*.http://gomeplus.com。我們定位到這是因為我們前端和app native交互的jsbridge的iframe請求在頁面里被服務端禁止創建了,因此找到了原因是因為服務端nginx header設置csp內容安全協議策略的問題,跟服務端配合很快就改好了。 可見前端了解服務端多重要了吧,要不現在這個問題前端僅用js和css的知識怎麼定位解決問題?


題主,我想問下作為一個四年前端 會做各種js交互效果和解決各類瀏覽器兼容問題但是不會正則,數據傳輸只會基本的json的一個人你是怎麼評價的。(我給自己的定義是視覺前端)


題主到底問了什麼問題,還是就給一個話題讓應聘者說呢?不給一個具體的問題確實有可能會出現「沒什麼好說的」這樣的感覺。

以http協議來說,到底問了什麼?也許題主可以問問下面這些:
1. 了解http報文的基本格式?
2. 知道一些的http頭部屬性,例如content-type,method?能夠利用這些屬性控實現制緩存,或者其他功能?(e.g. websocket)
3. 知道緩存機制怎麼運行,什麼時候瀏覽器使用緩存什麼時候不使用?
4. 對Https以及RSA很了解?
5. TCP的運行機制?
6. URL和URI是什麼,URL由哪些部分構成?

另外,關於F.I.S,我覺得按照題目的描述其實也太寬泛,F.I.S作為一個開發用的工具,包含了很多東西,MD5,Http Server,甚至編譯原理。單單問一個「底層」,很難讓人說出什麼東西來。我想,這其實跟前端開發不是很有聯繫,除非你們招人開發一個類似於F.I.S的工具或者Less這樣的語言。


依我面試的經驗,一個 「PUT 和 POST 的區別」都能拍死一群人。
如果真是問深入了,那就招不到人了。。。


話說,這不是看你要找的真正是什麼嗎?
或者說,你問的東西在 以後他的開發中會不會用到。
如果他以後 工作經常要用到 http ,那你問 是必須的。
如果他以後工作 幾乎不接觸,或者偶爾接觸下只是為了知道各個欄位的含義,你問http又有什麼意義?
面試難道不是應該問那些 以後工作中要用到的東西嗎?

舉個極端的例子: 我面前端,你問我c 語言,,,,,是不是很扯淡?

結論:
如果你想招的前端 只是做網頁,寫瀏覽器上的js, 問這兩個沒什麼意義。ECMA 6 功能現在瀏覽器裡面幾乎不支持吧?
如果你是要招個 服務端展現層次的 問http 是必須的。


PS: 求各位大神告知, ECMAScript 6, 除了寫node外,還有什麼地方會用?


合格的前端工程師要掌握好多東西,對吧,對吧。。。
比如:

  • ES
  • HTTP
  • 至少一種瀏覽器內核

要活學活用才行哦。

其他的,比如語言、MV**、框架/庫、同步非同步、設計模式、編程範式之類的,應該包含在更基礎的編程技能中。

噫,這樣一想,前端也就這麼幾塊,好像沒啥難的。。。(逃


問技術細節兩個人可能不匹配,要不讓他秀秀其他方面?之前項目業務的了解程度,溝通能力,思考深度,個人3年目標之類的
基本不用你發言的,稍微引導一下就行
有溝通,有思考深度,目標清晰的好青年,基本差不到哪裡去啊,就算他以前只切過頁面寫寫CSS,http es分分鐘拿下啊


1. 你是面試官,不是考試官。
2. 你的目的是找人幹活,不是考狀元。
3. ECMAScript什麼鬼,會用JavaScript不就得了。
4. 前端藝術性比技術性更重要,而且偏重實踐。你的考察方向顯然有問題。
5. 祝你能找到合適的人。


推薦閱讀:

公司怎麼識別水貨程序員&程序員談薪水?
如何看待面試官重視應聘者本科學校?
收到心儀的 offer,興奮得不能自已是種什麼樣的體驗?
一個剛畢業的會計學生簡歷上有哪些經歷會加分?
怎樣辨別面試你的產品經理(或者產品總監)水平高低?

TAG:前端開發 | 招聘技巧 | 面試 | 前端招聘 |