Web前端開發工程師--面試要求

基本知識

下面我列出一些基本的知識點,這些都是我認爲一名前端工程師(無論工作年頭長短)在沒有任何外來幫助的情況應該知道的。

  • DOM結構——兩個節點之間可能存在哪些關係以及如何在節點之間任意移動。
  • DOM操作——怎樣添加、移除、移動、複製、創建和查找節點。
  • 事件——怎樣使用事件以及IE和DOM事件模型之間存在哪些主要差別。
  • XMLHttpRequest——這是什麼、怎樣完整地執行一次GET請求、怎樣檢測錯誤。
  • 嚴格模式與混雜模式——如何觸發這兩種模式,區分它們有何意義。
  • 盒模型——外邊距、內邊距和邊框之間的關係,IE 8以下版本的瀏覽器中的盒模型有什麼不同。
  • 塊級元素與行內元素——怎麼用CSS控制它們、它們怎樣影響周圍的元素以及你覺得應該如何定義它們的樣式。
  • 浮動元素——怎麼使用它們、它們有什麼問題以及怎麼解決這些問題。
  • HTML與XHTML——二者有什麼區別,你覺得應該使用哪一個並說出理由。
  • JSON——它是什麼、爲什麼應該使用它、到底該怎麼使用它,說出實現細節來。

重申一下,上述這些知識點都應該是你應該“想都不用想”的東西。我一開始問的所有問題都是想摸清你對所有這些領域知識的掌握程度。雖然上面列出的這些知識點並沒有面面俱到,但我覺得你至少應該掌握這些,纔有可能跟我坐到一間辦公室裏來。


少量提問

我非常贊同面試者問的問題越少越好。反覆問應聘者各種問題既不公平,也很無聊。我在任何一次面試中,通常只問三個大問題,但每個問題又會涉及我所能想到的多個方面。回答每個大問題一般要經過幾個步驟,這樣我就可以在每個步驟中穿插着問一些小問題。比如說:


現在有一個正顯示着Yahoo!股票價格的頁面。頁面上有一個按鈕,你可以單擊它來刷新價格,但不會重新加載頁面。請你描述一下實現這個功能的過程,假設服務器會負責準備好正確的股票價格數據。

這個問題牽扯到一組我想要考察的基本知識點:DOM結構、DOM操作、事件處理、XHR和JSON。如果我要求你對換一種處理股票價格的方式,或者 讓你在頁面中顯示其他信息,就可以把更多的知識點包括進來。對於經驗比較豐富應聘者,我也可以自如地擴展要考察的知識範圍,最簡單像JOSN與XML的區 別、安全問題、容量問題,等等。


我還希望應聘者給出的任何解決方案中都不要使用庫。我想看到最原生態的代碼,你就當頁面中沒有包含任何庫。你說你對哪個庫瞭解多少多少,但我不能把 關於庫的知識作爲評判能力的因素,因爲庫是會隨時間變化的。我需要的是真正理解庫背後的機制,特別是能夠徒手寫出一個自己的庫的人


解決問題

        做爲一名前端工程師,最值得高興的事莫過於解決同一個問題會有很多種不同的方法,而你要做的就是找出最合適的方法來。我在提問的時候,經常會在應聘 者解釋完一種方法後問他們還有沒有第二種方法。此時我會跟他們說,假設你的這個方法由於種種原因被否決了,那麼你還能不能給出另一種方法。這樣做可以達到 兩個目的。

        首先,可以測試出他們是否在毫無意義地複述書本中的東西。不能不承認,某些人確實有過目不忘的天賦,聽他們在那裏滔滔不絕地講,你會覺得他們什麼都 明白。可是,只要一跟這些人談到怎麼查找方案無效的原因,以及能否拿出一個新方案來,他們往往就傻眼了。這時候,如果我聽到“我不明白這個方案爲什麼不夠 好”之類的反問,心裏立刻就明白我的問題已經超出了他們的能力範圍,而他們只是想拿自己死記硬背的結論來矇混過關。

        其次,可以測試出他們已經掌握的(還是那句話,“想都不用想”)瀏覽器技術知識。如果他們對瀏覽器平臺的核心知識有較好的理解,想出解決同一問題的不同方案根本沒有那麼難。


對一名前端工程師來說,這絕對是最重要的能力。前端工程師在工作中遇到本該如此卻並未如此的難題(說你啦,IE6),應該說是一件很平常的事。一個方案無效就無計可施的人,做不了前端工程師。


        考覈應聘者解決問題能力的另一層原因,與我的個人喜好有關。在搞清楚應聘者知道什麼不知道什麼之後,我就會想着問一個他們知識領域之外的問題。這樣 做的目的,就是想看看他們怎樣運用已有的知識解決新問題。在解決問題的每一步,我也準備了一些提示,以防有人會卡殼打艮(在我面前15分鐘一言不發,對我 評價這個人毫無幫助)。我真正感興趣的,是他們能夠從上一步前進到下一步。我希望看到一個人就在我眼前學到新知識。


注意:所有問題都與瀏覽器技術相關。我不相信出幾道抽象的邏輯題,就能夠考出某人解決Web技術問題的能力。在我看來,這無異於讓素描大師畫肖像(或者讓劉翔跟博爾特同場競技),沒有意義,也得不到任何有價值的信息。


有激情

        要成爲一名優秀的前端工程師,最重要的莫過於對自己做的事要有激情。我們技能都不是從學校中或者從研討會上學來的,因此前端工程師必須具備自學能 力。瀏覽器技術的變化可謂日新月異,所以也只有不斷提升自己的技能才做得到與時俱進。我雖然不能強迫誰必須多看博客、不斷學習,但想應聘前端工程師的人恐 怕還是必須這麼做的。


        你怎麼知道誰對這種工作有沒有激情?實際上非常簡單。我只問一個簡單的問題:“目前你對什麼Web技術最感興趣?”這個問題永遠不會過期,而且也幾 乎不可能出錯……除非你答不上來。就眼下來說,我希望你對這個問題給出的技術中包括WebSocket、HTML、WebGL、客戶端數據庫,等等。只有 對Web開發充滿激情的人,纔會堅持不懈地學習新知識、掌握新技能;這些人才是我真正想要的。當然,我會讓他們詳細解釋自己提到的技術,以保證他們不是隨 口說了幾個時髦的新詞彙。


最後一點

        計算機科學或者Web設計方面的知識當然也有用,但那都是基本知識之外的東西。只要基本知識在那兒了,一切就都有了基礎,想擴充知識面也不難。可 是,如果等到正式上班以後,還得從頭學習基本技能,那種難度是不可同日而語的。另外,高級前端工程師與一般工程師相比,肯定需要掌握更多的技能。而面試幾 乎沒有經驗大學畢業生,同樣也會有一套完全不同的程序。我在這篇文章裏列出來的都是一些最基本的東西。


對於那些還沒有多少面試經驗的人,我總是喜歡告訴他們,面試完了只要問自己一個問題就行:你想以後跟這個人在一起共事嗎?如果不管爲什麼,回答是不,那就是不。


轉載自互聯網
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章