在過(guò)去的幾年里,我在亞馬遜和雅虎面試過(guò)許多前端工程師。在這篇文章中,我想分享一些技巧,幫助大家做好準(zhǔn)備。
面試很難,作為候選人,通常會(huì)給你45分鐘的時(shí)間來(lái)讓你展示自己的技能。 作為一名面試官,同樣難以在這么短的時(shí)間里評(píng)估這個(gè)人是否適合這項(xiàng)工作。 對(duì)于面試來(lái)說(shuō),沒(méi)有任何一種標(biāo)準(zhǔn)能夠適合所有人,面試官通常會(huì)覆蓋某一個(gè)領(lǐng)域,但除此之外,他們會(huì)自行決定應(yīng)該問(wèn)哪些問(wèn)題。 不管你坐在面試桌的哪一側(cè),這篇文章都會(huì)盡可能的涵蓋前端開(kāi)發(fā)中那些最重要的領(lǐng)域。 常見(jiàn)的誤解 我看到面試者犯的最大錯(cuò)誤之一是喜歡準(zhǔn)備一些瑣碎的問(wèn)題,例如“什么是盒子模型?”或“告訴我在JavaScript中 相反,你應(yīng)該為面試做一些非常實(shí)際的準(zhǔn)備,能夠真正體現(xiàn)出自己的JavaScript,CSS和HTML編碼水平。為面試的準(zhǔn)備包括去實(shí)現(xiàn)UI,構(gòu)建窗口小部件或?qū)崿F(xiàn)諸如Lodash和Underscore.js庫(kù)中常見(jiàn)的功能,例如:
說(shuō)到庫(kù),常見(jiàn)的另一個(gè)錯(cuò)誤是人們喜歡完全依賴最新的框架來(lái)解決面試問(wèn)題。你可能會(huì)想:既然在開(kāi)發(fā)中我可以使用jQuery,React,Angular等,為什么還要重新發(fā)明輪子,為什么不能在面試中使用它?這個(gè)問(wèn)題很好,技術(shù)、框架和庫(kù)總會(huì)隨著時(shí)間的推移而發(fā)生變化 —— 我更感興趣的是:你需要了解前端開(kāi)發(fā)的基本原理,而不是依賴更高級(jí)別的抽象。如果你不能在不依賴這些庫(kù)的情況下回答的面試問(wèn)題,我希望你至少可以徹底解釋和推測(cè)庫(kù)在背后都做了什么。 總的來(lái)說(shuō),你應(yīng)該期望大部分的面試都是非常實(shí)際的。 HTML 知道哪些HTML標(biāo)簽?zāi)茏詈玫谋憩F(xiàn)你正在顯示的內(nèi)容以及相關(guān)屬性,應(yīng)該掌握手寫(xiě)HTML的技能。
CSS 至少,你應(yīng)該知道如何在頁(yè)面上布局元素,如何使用子元素或直接用后代選擇器來(lái)定位元素,以及何時(shí)使用classes與id。
JavaScript 你需要了解JavaScript,而且是深入了解。 在面試中,越高級(jí)別的人對(duì)語(yǔ)言知識(shí)深度的期望也越高。 至少,以下是你應(yīng)該熟悉的JavaScript內(nèi)容:
DOM 如何遍歷和操作DOM很重要,如果他們依賴jQuery或者編寫(xiě)了很多React和Angular類型的應(yīng)用,那么這就是大多數(shù)面試者應(yīng)該努力的地方。你可能不會(huì)每天都做這些,因?yàn)槲覀兇蠖鄶?shù)人都使用抽象排序。但是如果不依賴第三方庫(kù),你應(yīng)該知道該如何進(jìn)行以下操作:
系統(tǒng)設(shè)計(jì) 針對(duì)后端系統(tǒng)設(shè)計(jì)的面試通常會(huì)涉及MapReduce、設(shè)計(jì)分布式鍵值存儲(chǔ)或需要CAP定理等知識(shí)。 盡管你的前端工作不需要深入了解此類系統(tǒng)是如何設(shè)計(jì)的,但是在被要求設(shè)計(jì)常見(jiàn)應(yīng)用程序的前端架構(gòu)時(shí),千萬(wàn)不要感到驚訝。 通常這些問(wèn)題會(huì)問(wèn)的含糊,比如“設(shè)計(jì)像Pinterest這樣的網(wǎng)站”或“告訴我如何構(gòu)建購(gòu)物結(jié)賬服務(wù)?”。 以下是需要考慮的領(lǐng)域:
網(wǎng)絡(luò)表現(xiàn) 除了通用編程技術(shù)之外,你應(yīng)該期望面試官查看你的代碼或設(shè)計(jì)及其對(duì)性能的影響。 在以前將CSS放在頁(yè)面的頂部,并在底部放置JS腳本的做法就足夠了,但是Web正在快速發(fā)展,你應(yīng)該熟悉這個(gè)領(lǐng)域的復(fù)雜性。
數(shù)據(jù)結(jié)構(gòu)和算法 這點(diǎn)可能具有爭(zhēng)議,但是不了解高時(shí)間復(fù)雜度和常見(jiàn)運(yùn)行時(shí)(如O(N)和O(N Log N)的基本知識(shí)會(huì)對(duì)你造成困擾。理解內(nèi)存管理等方面的知識(shí)對(duì)當(dāng)前十分常見(jiàn)的單頁(yè)應(yīng)用非常有幫助。 例如:如果你要實(shí)現(xiàn)一個(gè)拼寫(xiě)檢查功能,那么了解常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)和算法將使你的工作變得更加輕松。 我不是說(shuō)你需要一個(gè)CS學(xué)位,但是這個(gè)行業(yè)已經(jīng)不再是寫(xiě)一個(gè)簡(jiǎn)單的頁(yè)面了。 網(wǎng)上有很多資源,你可以很快掌握這些基礎(chǔ)知識(shí)。 常用Web知識(shí) 你需要掌握構(gòu)成Web的技術(shù)和范例。
總結(jié) 作為Web開(kāi)發(fā)人員或工程師,需要大量的知識(shí)。 不要拘泥于所需的知識(shí)深度,而要保持開(kāi)放的心態(tài),學(xué)習(xí)開(kāi)發(fā)所需的所有復(fù)雜技術(shù)。 除了本文涉及的技術(shù)主題外,在面試中你還需要談?wù)勛约哼^(guò)去的項(xiàng)目,描述有趣的糾結(jié)點(diǎn)以及所做的權(quán)衡。 |
|
來(lái)自: 前端技術(shù)分享 > 《前端技術(shù)分享》