前端面試題跟答案整理

前端工作面試問(wèn)題

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

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

記住: 很多問(wèn)題都是開(kāi)放的宏多,可以引發(fā)有趣的討論儿惫。這比直接的答案更能體現(xiàn)此人的能力。

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

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

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

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

[?] <a name='general'>常見(jiàn)問(wèn)題:</a>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 使用 XHTML 的局限有哪些?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 你熟悉 SVG 樣式的書(shū)寫嗎谨履?

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

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

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

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

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

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

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

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

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

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

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

    • 如果有渐苏,請(qǐng)問(wèn)是哪一套掀潮?如果可以,你如何改善CSS框架琼富?
  • 請(qǐng)問(wèn)你有使用過(guò) CSS Flexbox 或者 Grid specs 嗎仪吧?

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

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

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

  • 解釋下事件代理。

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

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

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

  • AMD vs. CommonJS唯咬?

  • 什么是哈希表纱注?

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

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

    • 該如何檢測(cè)它們狞贱?
  • 什么是閉包,如何使用它蜀涨,為什么要使用它瞎嬉?

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

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

    • 如果有提到無(wú)污染的命名空間氧枣,可以考慮加分。
    • 如果你的模塊沒(méi)有自己的命名空間會(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。

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

    • 如有使用過(guò)廷粒,請(qǐng)談?wù)勀愣际褂眠^(guò)哪些庫(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)問(wèn)題:</a>

  • 解釋"chaining"蜕煌。

  • 解釋"deferreds"。

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

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

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

  • 請(qǐng)說(shuō)出你可以傳遞給 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ū)別糖权,或者說(shuō)出 $.fn 的用途堵腹。

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

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

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

modulo(12, 5) // 2

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

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

問(wèn)題:上面的語(yǔ)句的返回值是什么?
答案:"goh angasal a m'i"

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

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

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

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

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

問(wèn)題:foo.length 的值是什么募判?
答案:2

[?] <a name='fun'>有趣的問(wèn)題:</a>

  • 你編寫過(guò)的最酷的代碼是什么荡含?其中你最自豪的是什么?

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

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

  • 你最愛(ài)的 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)系作者
  • 序言:七十年代末寝蹈,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子登淘,更是在濱河造成了極大的恐慌箫老,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,273評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件黔州,死亡現(xiàn)場(chǎng)離奇詭異耍鬓,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)流妻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門牲蜀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人绅这,你說(shuō)我怎么就攤上這事涣达。” “怎么了证薇?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,709評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵度苔,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我棕叫,道長(zhǎng)林螃,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,520評(píng)論 1 296
  • 正文 為了忘掉前任俺泣,我火速辦了婚禮疗认,結(jié)果婚禮上完残,老公的妹妹穿的比我還像新娘。我一直安慰自己横漏,他們只是感情好谨设,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著缎浇,像睡著了一般扎拣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上素跺,一...
    開(kāi)封第一講書(shū)人閱讀 52,158評(píng)論 1 308
  • 那天二蓝,我揣著相機(jī)與錄音,去河邊找鬼指厌。 笑死刊愚,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的踩验。 我是一名探鬼主播鸥诽,決...
    沈念sama閱讀 40,755評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼箕憾!你這毒婦竟也來(lái)了牡借?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,660評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤袭异,失蹤者是張志新(化名)和其女友劉穎钠龙,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體御铃,經(jīng)...
    沈念sama閱讀 46,203評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡俊鱼,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了畅买。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,427評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡细睡,死狀恐怖谷羞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情溜徙,我是刑警寧澤湃缎,帶...
    沈念sama閱讀 36,122評(píng)論 5 349
  • 正文 年R本政府宣布,位于F島的核電站蠢壹,受9級(jí)特大地震影響嗓违,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜图贸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評(píng)論 3 333
  • 文/蒙蒙 一蹂季、第九天 我趴在偏房一處隱蔽的房頂上張望冕广。 院中可真熱鬧,春花似錦偿洁、人聲如沸撒汉。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,272評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)睬辐。三九已至,卻和暖如春宾肺,著一層夾襖步出監(jiān)牢的瞬間溯饵,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工锨用, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留丰刊,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,808評(píng)論 3 376
  • 正文 我出身青樓黔酥,卻偏偏與公主長(zhǎng)得像藻三,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子跪者,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評(píng)論 2 359

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

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