Front End Developer Questions

原文鏈接:http://markyun.github.io/2015/Front-end-Developer-Questions/

前言

只看問題點這里

看全部問題和答案點這里

本文由我收集總結了一些優質的前端面試題,初學者閱后也要用心鉆研其中的原理,重要知識需要系統學習、透徹學習,形成自己的知識鏈。萬不可投機取巧,只求面試過關是錯誤的!

前端還是一個年輕的行業,新的行業標準, 框架, 庫都不斷在更新和新增,正如赫門在2015深JS大會上的《前端服務化之路》主題演講中說的一句話:“每18至24個月,前端都會難一倍”,這些變化使前端的能力更加豐富、創造的應用也會更加完美。所以關注各種前端技術, 跟上快速變化的節奏, 也是身為一個前端程序員必備的技能之一。

最近也收到許多微博私信的鼓勵和更正題目信息,后面會經常更新題目和答案到github博客,但其他舊版本的分支和其他網站出現的拷貝版本上面的錯誤回答我也管不了嘞。希望更多的前端開發可以達到既能使用也會表達,對理論知識有自己的理解,也可根據下面的知識點一個一個去進階學習,形成自己的職業技能鏈。

面試有幾點需注意:(來源寒冬winter老師,github:@wintercn)

面試題目: 根據你的等級和職位的變化,入門級到專家級,廣度和深度都會有所增加。

題目類型: 理論知識,算法,項目細節、技術視野、開放性題,工作案例。

細節追問: 可以確保問到你開始不懂或面試官開始不懂為止,這樣可以大大延展題目的區分度和深度,知道你的實際能力。因為這種知識關聯是長時期的學習,臨時抱佛腳絕對是記不住的。

回答問題再棒,面試官(可能是你面試職位的直接領導),會考慮我要不要這個人做我的同事?所以態度很重要、除了能做事,還要會做人。(感覺更像是相親( ????????????????? ))

資深的前端開發能把absolute和relative弄混,這樣的人不要也罷,因為團隊需要的是:你這個人具有可以依靠的才能(靠譜)。

前端開發面試知識點大綱:

HTML&CSS:

對Web標準的理解、瀏覽器內核差異、兼容性、hack、CSS基本功:布局、盒子模型、選擇器優先級及使用、HTML5、CSS3、移動端頁面開發

JavaScript:

數據類型、面向對象、繼承、閉包、插件、作用域、跨域、原型鏈、模塊化、自定義事件、內存泄漏、事件機制、異步裝載回調、模板引擎、前端MVC、路由、Nodejs、JSON、ajax等。

其他:

HTTP、WEB安全、正則、優化、重構、響應式、團隊協作、可維護、SEO、UED、架構、職業生涯、快速學習能力

作為一名前端工程師,無論工作年頭長短都應該必須掌握的知識點

此條由 王子墨 發表在攻城師的實驗室

1、DOM結構 —— 兩個節點之間可能存在哪些關系以及如何在節點之間任意移動。

2、DOM操作 ——如何添加、移除、移動、復制、創建和查找節點等。

3、事件 —— 如何使用事件,以及IE和標準DOM事件模型之間存在的差別。

4、XMLHttpRequest —— 這是什么、怎樣完整地執行一次GET請求、怎樣檢測錯誤。

5、嚴格模式與混雜模式 —— 如何觸發這兩種模式,區分它們有何意義。

6、盒模型 —— 外邊距、內邊距和邊框之間的關系,及IE8以下版本的瀏覽器中的盒模型

7、塊級元素與行內元素 —— 怎么用CSS控制它們、以及如何合理的使用它們

8、浮動元素 ——怎么使用它們、它們有什么問題以及怎么解決這些問題。

9、HTML與XHTML ——二者有什么區別,你覺得應該使用哪一個并說出理由。

10、JSON —— 作用、用途、設計結構。

備注:

根據自己需要選擇性閱讀,面試題是對理論知識的總結,讓自己學會應該如何表達。

資料答案不夠正確和全面,歡迎歡迎Star和提交issues、最好是現在網上沒有的。

格式不斷修改更新中。


HTML

Doctype作用?嚴格模式與混雜模式如何區分?它們有何意義?

行內元素有哪些?塊級元素有哪些? 空(void)元素有那些?

介紹一下標準的CSS的盒子模型?與IE的盒子模型有什么不同的?

頁面導入樣式時,使用link和@import有什么區別?

CSS選擇符有哪些?哪些屬性可以繼承?

CSS優先級算法如何計算?

CSS3新增偽類有那些?

如何居中div?如何居中一個浮動元素?

常見的瀏覽器內核有哪些?

html5有哪些新特性、移除了那些元素?如何處理HTML5新標簽的瀏覽器兼容問題?如何區分 HTML 和 HTML5?

簡述一下你對HTML語義化的理解?

(寫)描述一段語義的html代碼吧。

HTML5的離線儲存怎么用,工作原理能不能解釋一下?

瀏覽器是怎么對HTML5的離線儲存資源進行管理和加載的呢?

請描述一下 cookies,sessionStorage 和 localStorage 的區別?

iframe有那些缺點?

Label的作用是什么?是怎么用的?(加 for)

HTML5的form如何關閉自動完成功能?給不想要提示的input是設置autocomplete=off即可

如何實現瀏覽器內多個標簽頁之間的通信? (阿里)

如何使用websocket?如何兼容低瀏覽器?(阿里)

頁面可見性(Page Visibility)API 可以有哪些用途?

CSS

display有哪些值?說明他們的作用。position的值relative和absolute定位原點是?

CSS3有哪些新特性(包含哪些模塊)?

請解釋一下CSS3的Flexbox(彈性盒布局模型),以及適用場景?

用純CSS創建一個三角形的原理是什么?

一個滿屏 品 字布局 如何設計?

li與li之間有看不見的空白間隔是什么原因引起的?有什么解決辦法?

經常遇到的瀏覽器的兼容性有哪些?原因,解決方法是什么,常用hack的技巧 ?

為什么要初始化CSS樣式。

absolute的containing block計算方式跟正常流有什么不同?

CSS里的visibility屬性有個collapse屬性值是干嘛用的?在不同瀏覽器下以后什么區別?

position跟display、margin collapse、overflow、float這些特性相互疊加后會怎么樣?

對BFC規范的理解?

CSS權重優先級是如何計算的?

請解釋一下浮動和它的工作原理?清除浮動的技巧

移動端的布局用過媒體查詢嗎?

使用 CSS 預處理器嗎?喜歡那個,Why?

CSS優化、提高性能的方法有哪些?

瀏覽器是怎樣解析CSS選擇器的?

在網頁中的應該使用奇數還是偶數的字體?為什么呢?

margin和padding分別適合什么場景使用?

元素豎向的百分比設定是相對于容器的高度嗎?

全屏滾動的原理是什么?用到了CSS的那些屬性?

什么是響應式設計?響應式設計的基本原理是什么?如何兼容低版本的IE?

視差滾動效果,如何給每頁做不同的動畫?(回到頂部,向下滑動要再次出現,和只出現一次分別怎么做?)

::before 和 :after中雙冒號和單冒號 有什么區別?解釋一下這2個偽元素的作用。

如何修改chrome記住密碼后自動填充表單的黃色背景 ?

你對line-height是如何理解的?

設置元素浮動后,該元素的display值是多少?(自動變成display:block)

怎么讓Chrome支持小于12px 的文字?

讓頁面里的字體變清晰,變細用CSS怎么做?(-webkit-font-smoothing: antialiased;)

font-style屬性可以讓它賦值為“oblique” oblique是什么意思?

position:fixed;在android下無效怎么處理?

如果需要手動寫動畫,你認為最小時間間隔是多久,為什么?(阿里)

display:inline-block 什么時候會顯示間隙?(攜程)

overflow: scroll時不能平滑滾動的問題怎么處理?

JavaScript

用原生JavaScript的實現過什么功能嗎?

介紹JavaScript的基本數據類型。

說說寫JavaScript的基本規范?

請解釋一下JavaScript原型(prototype)? 每個JS對象都有原型屬性嗎?

JavaScript有幾種類型值?(堆:原始值和 棧:引用值),你能畫一下他們的內存圖嗎?

Javascript如何實現繼承?

如何創建一個對象? (畫出此對象的內存圖)

談談This對象的理解。

eval是做什么的?

什么是window對象? 什么是document對象?

null,undefined的區別?

寫一個通用的事件偵聽器函數(機試題)。

["1", "2", "3"].map(parseInt) 答案是多少?

關于事件,IE與火狐的事件機制有什么區別? 如何阻止冒泡?

什么是閉包(closure),為什么要用它?

"use strict";是什么意思 ? 使用它的有什么好處或壞處?

如何判斷一個對象是否屬于某個類?

new操作符具體干了什么呢?

Javascript中,有一個函數,執行時對象查找時,永遠不會去查找原型,這個函數是?

對JSON的了解?

[].forEach.call($$("*"),function(a){ a.style.outline="1px solid #"+(~~(Math.random()*(1<<24))).toString(16) })能解釋一下這段代碼的意思嗎?

js延遲加載的方式有哪些?

ajax是什么,解釋一下它的工作原理?

同步和異步的區別?

如何解決跨域問題?

JS模塊化開發怎么做?

requireJS的核心原理是什么?(如何動態加載的?如何避免多次加載的?如何 緩存的?)

談一談你對ECMAScript6的了解?

ECMAScript6 怎么寫class么,為什么會出現class這種東西?

AMD(Modules/Asynchronous-Definition)、CMD(Common Module Definition)規范區別?

異步加載的方式有哪些?

.call() 和 .apply() 的區別?

JavaScript中的作用域與變量聲明提升?

如何編寫高性能的Javascript?

那些操作會造成內存泄漏?

JQuery的源碼看過嗎?能不能簡單概況一下它的實現原理?

jQuery.fn的init方法返回的this指的是什么對象?為什么要返回this?

jquery中如何將數組轉化為json字符串,然后再轉化回來?

jQuery 的屬性拷貝(extend)的實現原理是什么,如何實現深拷貝?

jquery.extend 與 jquery.fn.extend的區別?

jQuery 的隊列是如何實現的?隊列可以用在哪些地方?

談一下Jquery中的bind(),live(),delegate(),on()的區別?

JQuery一個對象可以同時綁定多個事件,這是如何實現的?

jQuery 是通過哪個方法和 Sizzle 選擇器結合的?(jQuery.fn.find()進入Sizzle)

針對 jQuery性能的優化方法?

Jquery與jQuery UI有啥區別?

jQuery和Zepto的區別?各自的使用場景?

Zepto的點透問題如何解決?

jQueryUI如何自定義組件?

需求:實現一個頁面操作不會整頁刷新的網站,并且能在瀏覽器前進、后退時正確響應。給出你的技術實現方案?

如何判斷當前腳本運行在瀏覽器還是node環境中?(阿里)

移動端最小觸控區域是多大?

jQuery 的 slideUp動畫 ,如果目標元素是被外部事件驅動, 當鼠標快速地連續觸發外部元素事件, 動畫會滯后的反復執行,該如何處理呢? 把 Script 標簽 放在頁面的最底部的body封閉之前 和封閉之后有什么區別?瀏覽器會如何解析它們?

移動端的點擊事件的有延遲,時間是多久,為什么會有? 怎么解決這個延時?(click 有 300ms 延遲,為了實現safari的雙擊事件的設計,瀏覽器要知道你是不是要雙擊操作。)

知道各種JS框架(Angular, Backbone, Ember, React, Meteor, Knockout...)么? 能講出他們各自的優點和缺點么? Underscore 對哪些 JS 原生對象進行了擴展以及提供了哪些好用的函數方法?

Node.js的適用場景?

(如果會用node)知道route, middleware, cluster, nodemon, pm2, server-side rendering么? 解釋一下 Backbone 的 MVC 實現方式?

什么是“前端路由”?什么時候適合使用“前端路由”? “前端路由”有哪些優點和缺點?

知道什么是webkit么? 知道怎么用瀏覽器的各種工具來調試和debug代碼么?

如何測試前端代碼么? 知道BDD, TDD, Unit Test么? 知道怎么測試你的前端工程么(mocha, sinon, jasmin, qUnit..)?

前端templating(Mustache, underscore, handlebars)是干嘛的, 怎么用?

簡述一下 Handlebars 的基本用法?

簡述一下 Handlerbars 的對模板的基本處理流程, 如何編譯的?如何緩存的?

其他問題

原來公司工作流程是怎么樣的,如何與其他人協作的?如何夸部門合作的?

你遇到過比較難的技術問題是?你是如何解決的?

設計模式 知道什么是singleton, factory, strategy, decrator么?

常使用的庫有哪些?常用的前端開發工具?開發過什么應用或組件?

頁面重構怎么操作?

列舉IE與其他瀏覽器不一樣的特性?

99%的網站都需要被重構是那本書上寫的?

什么叫優雅降級和漸進增強?

WEB應用從服務器主動推送Data到客戶端有那些方式?

對Node的優點和缺點提出了自己的看法?

你有用過哪些前端性能優化的方法?

http狀態碼有那些?分別代表是什么意思?

一個頁面從輸入 URL 到頁面加載顯示完成,這個過程中都發生了什么?(流程說的越詳細越好)

除了前端以外還了解什么其它技術么?你最最厲害的技能是什么?

你用的得心應手用的熟練地編輯器&開發環境是什么樣子?

對前端界面工程師這個職位是怎么樣理解的?它的前景會怎么樣?

你怎么看待Web App 、hybrid App、Native App?

你移動端前端開發的理解?(和 Web 前端開發的主要區別是什么?)

你對加班的看法?

平時如何管理你的項目?

每個模塊的代碼結構都應該比較簡單,且每個模塊之間的關系也應該非常清晰,隨著功能和迭代次數越來越多,你會如何去保持這個狀態的?

Git知道branch, diff, merge么?

如何設計突發大規模并發架構?

當團隊人手不足,把功能代碼寫完已經需要加班的情況下,你會做前端代碼的測試嗎?

說說最近最流行的一些東西吧?平時常去哪些網站?

知道什么是SEO并且怎么優化么? 知道各種meta data的含義么?

移動端(Android IOS)怎么做好用戶體驗?

你在現在的團隊處于什么樣的角色,起到了什么明顯的作用?

你認為怎樣才是全端工程師(Full Stack developer)?

介紹一個你最得意的作品吧?

你有自己的技術博客嗎,常去那些博客?

對前端安全有什么看法?

最近在學什么東西嗎?

能談談你未來3,5年給自己的規劃嗎?

有趣的問題

.A、B兩人分別在兩座島上。B生病了,A有B所需要的藥。C有一艘小船和一個可以上鎖的箱子。C愿意在A和B之間運東西,但東西只能放在箱子里。只要箱子沒被上鎖,C都會偷走箱子里的東西,不管箱子里有什么。如果A和B各自有一把鎖和只能開自己那把鎖的鑰匙,A應該如何把東西安全遞交給B?

答案:A把藥放進箱子,用自己的鎖把箱子鎖上。B拿到箱子后,再在箱子上加一把自己的鎖。

箱子運回A后,A取下自己的鎖。箱子再運到B手中時,B取下自己的鎖,獲得藥物。

Amazon主頁的左上角有一個商品分類瀏覽的下拉菜單 沒有延遲,而且子菜單也不會在不應該的時候消失。它是怎樣做到這一點的呢?

答案是通過探測鼠標移動的方向和軌跡,具體查看Khan Academy工程師 Ben Kamens 寫的 jQuery插件

前端學習網站推薦

1. 極客標簽:? ? http://www.gbtags.com/

2. 碼農周刊:? ? http://weekly.manong.io/issues/

3. 前端周刊:? ? http://www.feweekly.com/issues

4. 慕課網:? ? ? http://www.imooc.com/

5. div.io:? ? ? ? http://div.io

6. Hacker News: https://news.ycombinator.com/news

7. InfoQ:? ? ? http://www.infoq.com/

8. w3cplus:? ? http://www.w3cplus.com/

9. Stack Overflow: http://stackoverflow.com/

10.w3school:? ? http://www.w3school.com.cn/

11.mozilla:? ? https://developer.mozilla.org/zh-CN/docs/Web/

文檔推薦

jQuery 基本原理

JavaScript 秘密花園

CSS參考手冊

更新時間: 2015-9-12?

資料答案不夠正確和全面,歡迎歡迎Star和提交issues。我的微博:http://weibo.com/920802999

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,702評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,143評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 175,553評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,620評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,416評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,940評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,024評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,170評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,709評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,597評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,784評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,291評論 5 357
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,029評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,407評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,663評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,403評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,746評論 2 370

推薦閱讀更多精彩內容

  • <a name='html'>HTML</a> Doctype作用?標準模式與兼容模式各有什么區別? (1)、<...
    clark124閱讀 3,523評論 1 19
  • 在線閱讀 http://interview.poetries.top[http://interview.poetr...
    前端進階之旅閱讀 114,505評論 24 450
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,774評論 1 92
  • 有人愿意飛躍千山萬水去尋找愛戀可是真的會堅持到最后么又有多少癡情沉淪苦海呢我只愿意在天涯的盡頭等你等愛也許有艱辛也...
    一言半語閱讀 220評論 0 0
  • 畫歪了 都畫完時候才發現 畫的時候還覺得挺正挺對稱呢 需要再仔細一點 加油
    Miao喵了個咪閱讀 120評論 0 0