原文: http://davidshariff.com/blog/...
做者: David Shariff
翻譯:瘋狂的技術宅
本文首發微信公衆號:jingchengyideng
歡迎關注,天天都給你推送新鮮的前端技術文章前端
在過去的幾年裏,我在亞馬遜和雅虎面試過許多前端工程師。在這篇文章中,我想分享一些技巧,幫助你們作好準備。web
免責聲明: 本文的目的並非爲你列出在前端面試中可能會被問到的問題,可是能夠將其視爲知識儲備。面試
面試很難,做爲候選人,一般會給你45分鐘的時間來讓你展現本身的技能。 做爲一名面試官,一樣難以在這麼短的時間裏評估這我的是否適合這項工做。 對於面試來講,沒有任何一種標準可以適合全部人,面試官一般會覆蓋某一個領域,但除此以外,他們會自行決定應該問哪些問題。算法
無論你坐在面試桌的哪一側,這篇文章都會盡量的涵蓋前端開發中那些最重要的領域。編程
我看到面試者犯的最大錯誤之一是喜歡準備一些瑣碎的問題,例如「什麼是盒子模型?」或「告訴我在JavaScript中==和===之間的區別?」等等。知道這些問題的答案當然很好,但它並不能讓面試官知道你真正的水平。後端
相反,你應該爲面試作一些很是實際的準備,可以真正體現出本身的JavaScript,CSS和HTML編碼水平。爲面試的準備包括去實現UI,構建窗口小部件或實現諸如Lodash和Underscore.js庫中常見的功能,例如:promise
說到庫,常見的另外一個錯誤是人們喜歡徹底依賴最新的框架來解決面試問題。你可能會想:既然在開發中我可使用jQuery,React,Angular等,爲何還要從新發明輪子,爲何不能在面試中使用它?這個問題很好,技術、框架和庫總會隨着時間的推移而發生變化 —— 我更感興趣的是:你須要瞭解前端開發的基本原理,而不是依賴更高級別的抽象。若是你不能在不依賴這些庫的狀況下回答的面試問題,我但願你至少能夠完全解釋和推測庫在背後都作了什麼。瀏覽器
總的來講,你應該指望大部分的面試都是很是實際的。緩存
你須要瞭解JavaScript,並且是深刻了解。 在面試中,越高級別的人對語言知識深度的指望也越高。 至少,如下是你應該熟悉的JavaScript內容:安全
如何遍歷和操做DOM很重要,若是他們依賴jQuery或者編寫了不少React和Angular類型的應用,那麼這就是大多數面試者應該努力的地方。你可能不會天天都作這些,由於咱們大多數人都使用抽象排序。可是若是不依賴第三方庫,你應該知道該如何進行如下操做:
document.querySelector
和舊版瀏覽器中的document.getElementsByTagName
選擇或查找節點。Node.parentNode
,Node.firstChild
,Node.lastChild
和Node.childNodes
。Node.previousSibling
和Node.nextSibling
。至少,你應該知道如何在頁面上佈局元素,如何使用子元素或直接用後代選擇器來定位元素,以及什麼時候使用classes與id。
知道哪些HTML標籤能最好的表現你正在顯示的內容以及相關屬性,應該掌握手寫HTML的技能。
針對後端系統設計的面試一般會涉及MapReduce、設計分佈式鍵值存儲或須要CAP定理等知識。 儘管你的前端工做不須要深刻了解此類系統是如何設計的,可是在被要求設計常見應用程序的前端架構時,千萬不要感到驚訝。 一般這些問題會問的含糊,好比「設計像Pinterest這樣的網站」或「告訴我如何構建購物結帳服務?」。 如下是須要考慮的領域:
除了通用編程技術以外,你應該指望面試官查看你的代碼或設計及其對性能的影響。 在之前將CSS放在頁面的頂部,並在底部放置JS腳本的作法就足夠了,可是Web正在快速發展,你應該熟悉這個領域的複雜性。
這點可能具備爭議,可是不瞭解高時間複雜度和常見運行時(如O(N)和O(N Log N)的基本知識會對你形成困擾。理解內存管理等方面的知識對當前十分常見的單頁應用很是有幫助。 例如:若是你要實現一個拼寫檢查功能,那麼瞭解常見的數據結構和算法將使你的工做變得更加輕鬆。
我不是說你須要一個CS學位,可是這個行業已經再也不是寫一個簡單的頁面了。 網上有不少資源,你能夠很快掌握這些基礎知識。
你須要掌握構成Web的技術和範例。
做爲Web開發人員或工程師,須要大量的知識。 不要拘泥於所需的知識深度,而要保持開放的心態,學習開發所需的全部複雜技術。
除了本文涉及的技術主題外,在面試中你還須要談談本身過去的項目,描述有趣的糾結點以及所作的權衡。
我知道前端面試中還有不少方面被我忽略了,因此我很想聽聽你的經歷,或者你認爲本身在面試時被問到,可是被我忽略的那些重要內容。
關注公衆號 jingchengyideng ,回覆「體系」,查看本文所講到的知識體系大圖
歡迎掃描二維碼關注公衆號,天天都給你推送新鮮的前端技術文章