前端面試題跟答案整理

前端工作面試問題

備注: 本 repo 包含了一些前端面試問題用于考查候選者。不建議對(duì)單個(gè)候選者問及每個(gè)問題(那需要好幾個(gè)小時(shí))。只要從列表里挑選一些,就能幫助你考查候選者是否具備所需要的技能了。

Rebecca MurpheyBaseline For Front-End Developers 是你在準(zhǔn)備面試前應(yīng)該閱讀的絕佳資源。

記?。?/strong> 很多問題都是開放的,可以引發(fā)有趣的討論。這比直接的答案更能體現(xiàn)此人的能力。

<a name='toc'>目錄</a>

  1. 最初的貢獻(xiàn)者
  2. 常見問題
  3. HTML 相關(guān)問題
  4. CSS 相關(guān)問題
  5. JS 相關(guān)問題
  6. jQuery 相關(guān)問題
  7. 代碼相關(guān)的問題
  8. 有趣的問題
  9. 其他參考資料
  10. 協(xié)議

[?] <a name='contributors'>最初貢獻(xiàn)者</a>

這里大部分的面試題都摘抄自 Paul Irish (@paul_irish) 在 oksoclap 創(chuàng)建的帖子,這份原帖的貢獻(xiàn)者還有:

[?] <a name='general'>常見問題:</a>

  • 你在昨天/本周學(xué)到了什么?

  • 編寫代碼的哪些方面能夠使你興奮或感興趣?

  • 在制作一個(gè)Web應(yīng)用或Web站點(diǎn)的過程中,你是如何考慮它的UI、安全性、高性能、SEO、可維護(hù)性以及技術(shù)因素的?

  • 談?wù)勀阆矚g的開發(fā)環(huán)境。(例如操作系統(tǒng),編輯器,瀏覽器,工具等等。)
    OSX, sublime Text3, Chrome, SourceTree...

  • 你最熟悉哪一套版本控制系統(tǒng)?
    git

  • 你能描述一下當(dāng)你制作一個(gè)網(wǎng)頁的工作流程嗎?

  • 你能描述一下漸進(jìn)增強(qiáng)和優(yōu)雅降級(jí)之間的不同嗎?

    • 如果提到了特性檢測(cè),可以加分。
  • 假若你有5個(gè)不同的 CSS 文件, 加載進(jìn)頁面的最好方式是?

    • 文件拼合
  • 你如何對(duì)網(wǎng)站的文件和資源進(jìn)行優(yōu)化?

    • 期待的解決方案包括:
      • 文件合并
      • 文件最小化/文件壓縮
      • 使用 CDN 托管
      • 緩存的使用
      • 其他
  • 為什么利用多個(gè)域名來提供網(wǎng)站資源會(huì)更有效?

  • 請(qǐng)說出三種減少頁面加載時(shí)間的方法。(加載時(shí)間指感知的時(shí)間或者實(shí)際加載時(shí)間)

  • 如果你參與到一個(gè)項(xiàng)目中,發(fā)現(xiàn)他們使用 Tab 來縮進(jìn)代碼,但是你喜歡空格,你會(huì)怎么做?

    • 建議這個(gè)項(xiàng)目使用像 EditorConfig (http://editorconfig.org/) 之類的規(guī)范
    • 為了保持一致性,接受項(xiàng)目原有的風(fēng)格
    • 直接使用 VIM 的 retab 命令
  • 請(qǐng)寫一個(gè)簡(jiǎn)單的幻燈效果頁面

    • 如果不使用JS來完成,可以加分。
  • 你都使用哪些工具來測(cè)試代碼的性能?

    • Profiler, JSPerf, Dromaeo
  • 如果今年你打算熟練掌握一項(xiàng)新技術(shù),那會(huì)是什么?

  • Long-Polling, Websockets, SSE(Server-Sent Event) 之間有什么區(qū)別?

  • 請(qǐng)談一下你對(duì)網(wǎng)頁標(biāo)準(zhǔn)和標(biāo)準(zhǔn)制定機(jī)構(gòu)重要性的理解。

  • 什么是 FOUC(無樣式內(nèi)容閃爍)?你如何來避免 FOUC?

  • 請(qǐng)盡可能完整得描述下從輸入U(xiǎn)RL到整個(gè)網(wǎng)頁加載完畢及顯示在屏幕上的整個(gè)流程

[?] <a name='html'>HTML相關(guān)問題:</a>

  • doctype(文檔類型)的作用是什么?

  • 瀏覽器標(biāo)準(zhǔn)模式和怪異模式之間的區(qū)別是什么?

  • 使用 XHTML 的局限有哪些?

    • 如果頁面使用 'application/xhtml+xml' 會(huì)有什么問題嗎?
  • 如果網(wǎng)頁內(nèi)容需要支持多語言,你會(huì)怎么做?

    • 在設(shè)計(jì)和開發(fā)多語言網(wǎng)站時(shí),有哪些問題你必須要考慮?
  • data-屬性的作用是什么?

  • 如果把 HTML5 看作做一個(gè)開放平臺(tái),那它的構(gòu)建模塊有哪些?

  • 請(qǐng)描述一下 cookies,sessionStorage 和 localStorage 的區(qū)別?

  • 請(qǐng)描述一下 GETPOST 的區(qū)別?

[?] <a name='css'>CSS 相關(guān)問題:</a>

  • CSS 中類(classes)和 ID 的區(qū)別。

  • 描述下 “reset” CSS 文件的作用和使用它的好處。

    • 期待能夠指出它的負(fù)面影響,或者提到它的一個(gè)更好的替換者"normalize"
  • 解釋下浮動(dòng)和它的工作原理。

  • 描述z-index和疊加上下文是如何形成的。

  • 列舉不同的清除浮動(dòng)的技巧,并指出它們各自適用的使用場(chǎng)景。

  • 解釋下 CSS sprites,以及你要如何在頁面或網(wǎng)站中實(shí)現(xiàn)它。

  • 你最喜歡的圖片替換方法是什么,你如何選擇使用。

  • 討論CSS hacks,條件引用或者其他。

  • 如何為有功能限制的瀏覽器提供網(wǎng)頁?

    • 你會(huì)使用哪些技術(shù)和處理方法?
  • 有哪些的隱藏內(nèi)容的方法(如果同時(shí)還要保證屏幕閱讀器可用呢?)

  • 你用過柵格系統(tǒng)嗎?如果使用過,你最喜歡哪種?

  • 你用過媒體查詢,或針對(duì)移動(dòng)端的布局/CSS 嗎?

  • 你熟悉 SVG 樣式的書寫嗎?

  • 如何優(yōu)化網(wǎng)頁的打印樣式?

  • 在書寫高效 CSS 時(shí)會(huì)有哪些問題需要考慮?

  • 使用 CSS 預(yù)處理器的優(yōu)缺點(diǎn)有哪些?(SASS,Compass,Stylus,LESS)

    • 描述下你曾經(jīng)使用過的 CSS 預(yù)處理的優(yōu)缺點(diǎn)。
  • 如果設(shè)計(jì)中使用了非標(biāo)準(zhǔn)的字體,你該如何去實(shí)現(xiàn)?

    • Webfonts (字體服務(wù)例如:Google Webfonts,Typekit 等等。)
  • 解釋下瀏覽器是如何判斷元素是否匹配某個(gè) CSS 選擇器?

  • 解釋一下你對(duì)盒模型的理解,以及如何在 CSS 中告訴瀏覽器使用不同的盒模型來渲染你的布局。

  • 請(qǐng)解釋一下 * { box-sizing: border-box; } 的作用, 并且說明使用它有什么好處?

  • 請(qǐng)羅列出你所知道的 display 屬性的全部值

  • 請(qǐng)解釋一下 inline 和 inline-block 的區(qū)別?

  • 請(qǐng)解釋一下 relative、fixed、absolute 和 static 元素的區(qū)別

  • 你目前在使用哪一套CSS框架,或者在產(chǎn)品線上使用過哪一套?(Bootstrap, PureCSS, Foundation 等等)

    • 如果有,請(qǐng)問是哪一套?如果可以,你如何改善CSS框架?
  • 請(qǐng)問你有使用過 CSS Flexbox 或者 Grid specs 嗎?

    • 如果有,請(qǐng)問在性能和效率的方面你是怎么看的?
  • 為什么響應(yīng)式設(shè)計(jì)(responsive design)和自適應(yīng)設(shè)計(jì)(adaptive design)不同?

  • 你有兼容 retina 屏幕的經(jīng)歷嗎?如果有,在什么地方使用了何種技術(shù)?

[?] <a name='js'>JS相關(guān)問題:</a>

  • 解釋下事件代理。

  • 解釋下 JavaScript 中 this 是如何工作的。

  • 解釋下原型繼承的原理。

  • 你是如何測(cè)試 JavaScript 代碼的?

  • AMD vs. CommonJS?

  • 什么是哈希表?

  • 解釋下為什么接下來這段代碼不是 IIFE(立即調(diào)用的函數(shù)表達(dá)式):function foo(){ }();.

    • 要做哪些改動(dòng)使它變成 IIFE?
  • 描述以下變量的區(qū)別:null,undefinedundeclared?

    • 該如何檢測(cè)它們?
  • 什么是閉包,如何使用它,為什么要使用它?

  • 請(qǐng)舉出一個(gè)匿名函數(shù)的典型用例?

  • 解釋 “JavaScript 模塊模式” 以及你在何時(shí)使用它。

    • 如果有提到無污染的命名空間,可以考慮加分。
    • 如果你的模塊沒有自己的命名空間會(huì)怎么樣?
  • 你是如何組織自己的代碼?是使用模塊模式,還是使用經(jīng)典繼承的方法?

  • 請(qǐng)指出 JavaScript 宿主對(duì)象和原生對(duì)象的區(qū)別?

  • 指出下列代碼的區(qū)別:

function Person(){}
var person = Person();
var person = new Person();
  • .call.apply 的區(qū)別是什么?

  • 請(qǐng)解釋 Function.prototype.bind?

  • 你何時(shí)優(yōu)化自己的代碼?

  • 在什么時(shí)候你會(huì)使用 document.write()?

    • 大多數(shù)生成的廣告代碼依舊使用 document.write(),雖然這種用法會(huì)讓人很不爽。
  • 請(qǐng)指出瀏覽器特性檢測(cè),特性推斷和瀏覽器 UA 字符串嗅探的區(qū)別?

  • 請(qǐng)盡可能詳盡的解釋 AJAX 的工作原理。

  • 請(qǐng)解釋 JSONP 的工作原理,以及它為什么不是真正的 AJAX。

  • 你使用過 JavaScript 模板系統(tǒng)嗎?

    • 如有使用過,請(qǐng)談?wù)勀愣际褂眠^哪些庫(kù),比如 Mustache.js,Handlebars 等等。
  • 請(qǐng)解釋變量聲明提升。

  • 請(qǐng)描述下事件冒泡機(jī)制。

  • "attribute" 和 "property" 的區(qū)別是什么?

  • 為什么擴(kuò)展 JavaScript 內(nèi)置對(duì)象不是好的做法?

  • 請(qǐng)指出 document load 和 document ready 兩個(gè)事件的區(qū)別。

  • ===== 有什么不同?

  • 請(qǐng)解釋一下 JavaScript 的同源策略。

  • 如何實(shí)現(xiàn)下列代碼:

[1,2,3,4,5].duplicator(); // [1,2,3,4,5,1,2,3,4,5]
  • 什么是三元表達(dá)式?“三元” 表示什么意思?

  • 什么是 "use strict"; ? 使用它的好處和壞處分別是什么?

[?] <a name='jquery'>jQuery 相關(guān)問題:</a>

  • 解釋"chaining"。

  • 解釋"deferreds"。

  • 你知道哪些針對(duì) jQuery 的優(yōu)化方法。

  • 請(qǐng)解釋 .end() 的用途。

  • 你如何給一個(gè)事件處理函數(shù)命名空間,為什么要這樣做?

  • 請(qǐng)說出你可以傳遞給 jQuery 方法的四種不同值。

    • 選擇器(字符串),HTML(字符串),回調(diào)函數(shù),HTML元素,對(duì)象,數(shù)組,元素?cái)?shù)組,jQuery對(duì)象等。
  • 什么是效果隊(duì)列?

  • 請(qǐng)指出 .get()[]eq() 的區(qū)別。

  • 請(qǐng)指出 .bind(),.live().delegate() 的區(qū)別。

  • 請(qǐng)指出 $$.fn 的區(qū)別,或者說出 $.fn 的用途。

  • 請(qǐng)優(yōu)化下列選擇器:

$(".foo div#bar:eq(0)")

[?] <a name='jscode'>代碼相關(guān)的問題:</a>

modulo(12, 5) // 2

問題:實(shí)現(xiàn)滿足上述結(jié)果的modulo函數(shù)

"i'm a lasagna hog".split("").reverse().join("");

問題:上面的語句的返回值是什么?
答案:"goh angasal a m'i"

( window.foo || ( window.foo = "bar" ) );

問題:window.foo 的值是什么?
答案:"bar"
只有 window.foo 為假時(shí)的才是上面答案,否則就是它本身的值。

var foo = "Hello"; (function() { var bar = " World"; alert(foo + bar); })(); alert(foo + bar);

問題:上面兩個(gè) alert 的結(jié)果是什么
答案: "Hello World" 和 ReferenceError: bar is not defined

var foo = [];
foo.push(1);
foo.push(2);

問題:foo.length 的值是什么?
答案:2

[?] <a name='fun'>有趣的問題:</a>

  • 你編寫過的最酷的代碼是什么?其中你最自豪的是什么?

  • 在你使用的開發(fā)工具中,最喜歡哪些方面?

  • 你有什么業(yè)余項(xiàng)目嗎?是哪種類型的?

  • 你最愛的 IE 特性是什么?

[?] <a name='references'>其他參考資料:</a>

[?] <a name='license'>協(xié)議:</a>

Copyright 2012 by Darcy Clarke, 基于MIT License 協(xié)議。點(diǎn)擊協(xié)議文件查看詳細(xì)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,908評(píng)論 6 541
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,324評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,018評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,675評(píng)論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,417評(píng)論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,783評(píng)論 1 329
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,779評(píng)論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,960評(píng)論 0 290
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,522評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,267評(píng)論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,471評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,009評(píng)論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,698評(píng)論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,099評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,386評(píng)論 1 294
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,204評(píng)論 3 398
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,436評(píng)論 2 378

推薦閱讀更多精彩內(nèi)容

  • 在線閱讀 http://interview.poetries.top[http://interview.poetr...
    前端進(jìn)階之旅閱讀 114,546評(píng)論 24 450
  • <a name='html'>HTML</a> Doctype作用?標(biāo)準(zhǔn)模式與兼容模式各有什么區(qū)別? (1)、<...
    clark124閱讀 3,531評(píng)論 1 19
  • 和男友第一次不愉快聊天,他表示我應(yīng)該有自己的人生軌跡,不應(yīng)該過于依賴他。 他是對(duì)的,我無力反駁。 每當(dāng)這時(shí),我都會(huì)...
    逸包包閱讀 544評(píng)論 0 2
  • 都說假期回來了難以進(jìn)入狀態(tài),網(wǎng)上的那些心靈雞湯也說了如何調(diào)節(jié),都知道有道理就是難做到??! 突然想起剛工作的時(shí)候,那...
    一瞬禪定閱讀 212評(píng)論 1 1