前端面試問(wèn)題集錦

HTML部分

  • 對(duì)HTML5的理解

html5一些問(wèn)題
<!DOCTYPE html>
manifest的部分被MDN標(biāo)記為過(guò)時(shí)
storage部分
視頻温算,音頻,位置薇宠,
placeholder <input type="search" name="user_search" placeholder="Search W3School">
postMessage: XDM跨文檔消息傳送 當(dāng)前頁(yè)面的iframe或者當(dāng)前頁(yè)面彈出的窗口 MDN

  • Web語(yǔ)義化

語(yǔ)義化標(biāo)簽
優(yōu)點(diǎn):結(jié)構(gòu)清晰酒来,利于閱讀和seo

  • SEO
  • 頁(yè)面加載的過(guò)程

http://blog.jobbole.com/12749/
dom tree, style rules, render tree(layout),paiting

  • LocalStorage,cookie,session

localStorage 永久存儲(chǔ),本地存儲(chǔ)觅够,長(zhǎng)度沒(méi)有限制,setItem,getItem,鍵值對(duì)存儲(chǔ)
SessionStorage 瀏覽器會(huì)話關(guān)閉以后就會(huì)清理掉,其他和localStorage一樣
cookie 最好不要超過(guò)4K 給服務(wù)器發(fā)送請(qǐng)求的時(shí)候會(huì)帶上巷嚣,數(shù)量有限喘先,

  • history

history.go(-1)往前一個(gè)頁(yè)面
history.back() == history.go(-1)
history.forward() == history.go(1)

  • requestAnimationFrame

把所有的dom操作都集中在一次重繪中,跟隨瀏覽器刷新頻率廷粒,不可見(jiàn)或者隱藏的元素不會(huì)進(jìn)行重繪窘拯,cancelAnimationFrame

  • Canvas & SVG
  • https

在http和TCP之間放置一層SSL(安全套接層)
拿到公鑰
公開(kāi)密鑰加密

  • websocket

不是http協(xié)議,需要專門(mén)的服務(wù)器支持
ws:// ws://
帶寬小

var socket = new WebSocket("ws://example.com/")
socket.onopen = function(){}
socket.onerror = function(){}
socket.onclose = function(){}

CSS部分

布局

  • 幾種布局方式

固定布局: 像素布局
流體布局: 百分比
彈性布局: 字體為基礎(chǔ)單位 em? 還有說(shuō)flexbox的
左邊定寬坝茎,右邊自適應(yīng)
經(jīng)典的圣杯布局 我的總結(jié)
高度定寬+自適應(yīng) (初步想法是利用js)

  • 變形

transform: rotate() scale(0.8) skew() translate(50px,50px)

  • 動(dòng)畫(huà)

兼容性涤姊,需要加前綴
@keyframes myfirst
{
0% {background: red;}
25% {background: yellow;}
50% {background: blue;}
100% {background: green;}
}

- css3邊框
>圓角border-radius
陰影 box-shadow
- box-sizing
>box-sizing屬性可以為三個(gè)值之一:content-box(default),border-box嗤放,padding-box思喊。
content-box,border和padding不計(jì)算入width之內(nèi)
padding-box次酌,padding計(jì)算入width內(nèi)
border-box恨课,border和padding計(jì)算入width之內(nèi)舆乔,其實(shí)就是怪異模式了~
- flex
- css hack
>gulp post css autoprefixer
PostCSS插件 [CSSNext](https://github.com/cssnext/cssnext) 用下一代CSS書(shū)寫(xiě)方式兼容現(xiàn)在瀏覽器
PostCSS插件 [Autoprefixer](https://github.com/postcss/autoprefixer) 為CSS補(bǔ)全瀏覽器前綴
PostCSS插件 [CSS Grace](https://github.com/cssdream/cssgrace) 讓CSS兼容舊版IE
CSS3 transition transform animate
- CSS3選擇器 
>[w3c](http://www.w3school.com.cn/cssref/css_selectors.asp)
#### 組合選擇器
**E, F**:  E或者F
**E F**:  E的所有后代F
**E>F**:  E的子代F
**E+F**:  E之后的所有同級(jí)元素F 
偽類 (nth-of-type)
- w3c盒子模型 和 IE盒子模型,box-sizing屬性
- BFC
- 優(yōu)先級(jí)
> 內(nèi)聯(lián)1000 id 100 class 10 tag 1 
less 與 sass
background-*系列屬性剂公,這個(gè)不要忽視了希俩,還是很重要的


#JS部分
- 原型鏈的解釋
>每個(gè)構(gòu)造函數(shù)都有一個(gè)原型對(duì)象,實(shí)例有一個(gè)指向原型的指針纲辽,如果原型是別的構(gòu)造函數(shù)的實(shí)例的時(shí)候斜纪,層層遞進(jìn)就有了原型鏈

function SuperType(){
this.property = true;
}
SuperType.prototype.getSuperValue = function(){
return this.property;
};
function SubType(){
this.subproperty = false;
}
//繼承了SuperType
SubType.prototype = new SuperType();
SubType.prototype.getSubValue = function (){
return this.subproperty;
};
var instance = new SubType();
alert(instance.getSuperValue()); //true

- 作用域鏈
>
- 閉包(手寫(xiě))
- 繼承(手寫(xiě))
>利用原型鏈(就在上面)
利用call或者apply
綜合利用上面的兩種
或者是利用Object.create原型繼承
http://www.reibang.com/p/a82de7858dd7
- call,apply,bind
>call的話是單個(gè)參數(shù),apply是參數(shù)數(shù)組文兑,綁定函數(shù)執(zhí)行的活動(dòng)對(duì)象
- 聲明提升
>JavaScript引擎在執(zhí)行的時(shí)候,會(huì)把所有變量的聲明都提升到**當(dāng)前作用域**的最前面腺劣。
- new Object()  
>new其實(shí)是跟的是構(gòu)造函數(shù)
原型指針指向Object的原型绿贞,繼承Object的屬性
也可以用字面量方式生成  {}
關(guān)于[new](http://www.reibang.com/p/2b99d9ad83c5)
- 數(shù)據(jù)類型
>基本數(shù)據(jù)類型Undefined、Null橘原、Boolean籍铁、Number和String,按值訪問(wèn)
Object,后來(lái)ES6還除了Symbol趾断,
- typeof
>typeof是小寫(xiě)
其中Null的typeof是object
typeof顯示函數(shù)是function
正則表達(dá)式有可能是function拒名,ie會(huì)可能是object
es規(guī)定實(shí)現(xiàn)了[[call]]方法的typeof都顯示為函數(shù)
檢測(cè)類型建議用instanceof,數(shù)組的話建議Array.isArray()
- Number
> Number.MAX_VALUE  最大值 
Number.NEGATIVE_INFINITY 最小值芋酌、Number.MIN_VALUE
isFinite(num)
NaN與自身也不等
三個(gè)函數(shù)轉(zhuǎn)化 Number,ParseInt,parseFloat
- 高階函數(shù)
- JSON
- 跨域
>JSONP 利用動(dòng)態(tài)生成javascript標(biāo)簽增显,服務(wù)器動(dòng)態(tài)生成js代碼,callback函數(shù)里面有json的數(shù)據(jù)

var flightHandler = function(data){
alert('你查詢的航班結(jié)果是:票價(jià) ' + data.price + ' 元脐帝,' + '余票 ' + data.tickets + ' 張同云。');
};
// 提供jsonp服務(wù)的url地址(不管是什么類型的地址,最終生成的返回值都是一段javascript代碼)
var url = "http://flightQuery.com/jsonp/flightResult.aspx?code=CA1998&callback=flightHandler";
// 創(chuàng)建script標(biāo)簽堵腹,設(shè)置其屬性
var script = document.createElement('script');
script.setAttribute('src', url);
// 把script標(biāo)簽加入head炸站,此時(shí)調(diào)用開(kāi)始
document.getElementsByTagName('head')[0].appendChild(script);
</script>

iframe 通信 設(shè)置domain,前提是兩個(gè)為主域名
CORS疚顷,ajax的
onmessage,也是可以跟頁(yè)面產(chǎn)生的頁(yè)面進(jìn)行跨域通信
web worker也有g(shù)lobal的
- Ajax
> xhr
- 原生DOM操作(比如 逆序DOM節(jié)點(diǎn))
- 事件捕捉旱易,捕獲,冒泡腿堤,代理
- Array常用函數(shù)
>[mdn](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array)
length屬性阀坏,toString,toLocalString,valueOf      push,pop,shift,unshift, 
reverse sort,對(duì)當(dāng)前數(shù)組進(jìn)行排序
splice 刪除,插入笆檀,替換全释,針對(duì)當(dāng)前數(shù)組
concat slice針對(duì)當(dāng)前數(shù)組創(chuàng)建新數(shù)組
迭代方法 es5 every  filter  forEach  map some (item,index,array)
檢測(cè)是不是數(shù)組Array.isArray() ,instanceof 在框架不同的時(shí)候容易出問(wèn)題
- String常用函數(shù)
- Object常用的
>toString,toLocalString,valueOf
hasOwnProperty,isPrototypeOf,propertyIsEnumerable
- Function
>Object有的都有了,還有arguments,apply,call,bind,caller,constructor,length,name,prototype
- JS動(dòng)畫(huà)
- ES5
>[Object.create()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create)误债、[Object.defineProperty()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty)浸船、[getters](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get)和[setters](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/set)妄迁、[嚴(yán)格模式](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode)以及[JSON](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON)對(duì)象
- CommonJS、AMD李命、CMD 模塊化編程
- 多重繼承
>看到一個(gè)方案登淘,是利用設(shè)計(jì)模式的Mixin,比如Jquery的extend封字,其實(shí)本質(zhì)上是復(fù)制屬性
es6的proxy
- sort
>先大寫(xiě)再小寫(xiě)黔州,字母序
- es6
>箭頭函數(shù)(匿名函數(shù))
map
set
generator
proxy
class
模塊
super

## DOM&&BOM
- DOM操作
>添加節(jié)點(diǎn),appendChild,insertBefore
移除節(jié)點(diǎn) removeChild
復(fù)制節(jié)點(diǎn) cloneNode
創(chuàng)建 createElement
查找 getElementById get
- elements
- onready和onload的區(qū)別
>onready表示整個(gè)文檔加載完了阔籽,onload表示所有的資源都加載完
樣式控制可以在onload方面加載完流妻,onready事件觸發(fā)類的可以加載
- 事件流
>事件流描述的是從頁(yè)面中接收事件的順序
事件先捕獲,再冒泡
最開(kāi)始ie只支持冒泡笆制,Netscape是捕獲绅这,然后后面ie9就開(kāi)始用捕獲,最保險(xiǎn)的方式是用冒泡
- ajax

var xhr = XMLHttpRequest();
xhr.onreadystatechange = function(){
if(xhr.readyState == 4){
if (xhr.status === 200) {
option.onload(JSON.parse(xhr.responseText));
}
else {
option.onerror(xhr.status);
}
}
}
xhr.open("post",url,true);
xhr.send(form);


#框架部分(大部分按照簡(jiǎn)歷來(lái))
Angular臟檢查機(jī)制
手寫(xiě)Angular指令在辆,知道其生命周期
手動(dòng)實(shí)現(xiàn)MVC(考察)
Angular的理解
你心中的前端框架
Promise(感覺(jué)已經(jīng)成了必考項(xiàng)目)[極客學(xué)院](http://wiki.jikexueyuan.com/project/javascript-promise-mini-book/how-to-write-promise.html)
worker多線程計(jì)算
- require.js使用什么設(shè)計(jì)模式
>我覺(jué)得是 觀察者模式



##HTTP
- HTTP1/2 理解
報(bào)文
>報(bào)文分為請(qǐng)求報(bào)文和相應(yīng)報(bào)文
報(bào)文由報(bào)文首部和報(bào)文主體組成中間由第一個(gè)CR+LF分割
請(qǐng)求報(bào)文首部:請(qǐng)求行+請(qǐng)求首部字段+通用首部字段+實(shí)體首部字段
響應(yīng)報(bào)文首部:狀態(tài)行+響應(yīng)首部字段+通用首部字段+實(shí)體首部字段
![](http://upload-images.jianshu.io/upload_images/2099962-8591869039fad2e6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 狀態(tài)碼
>200 OK
204 No Content
206 Partial Content 斷點(diǎn)續(xù)傳
301/302 Moved Permanently 重定向
301 Permanently Moved 代表永久性轉(zhuǎn)移
302 Temporarily Moved 代表暫時(shí)性轉(zhuǎn)移
303 See Other 和302有點(diǎn)像证薇,但是指定用GET獲取新資源
304 Not Modified
403
404 Not Found 未找到資源
500 Internal Server Error 服務(wù)器錯(cuò)誤
[r](http://kb.cnblogs.com/page/168720/)
- 優(yōu)化
- 緩存控制(必考)
- 網(wǎng)絡(luò)協(xié)議,TCP三次握手匆篓,四次揮手
- XSS
>跨站腳本攻擊浑度,表單數(shù)據(jù)加入html代碼或者script將document.cookie通過(guò)img發(fā)送給其他服務(wù)器,植入攻擊代碼
- SQL注入攻擊
>url上面q=ss之類的鸦概,代碼的sql就發(fā)生改變
- CSRF跨域請(qǐng)求偽造(必考) 
通過(guò)已經(jīng)驗(yàn)證的信息箩张,然后發(fā)送腳本
避免方式1.ssl 2.每次都加上驗(yàn)證
>CSRF
- 跨域
>六種(document.domain+iframe,動(dòng)態(tài)創(chuàng)建script,利用iframe和location.hash,window.name,使用HTML5 postMessage,利用flash)
- 學(xué)習(xí)經(jīng)歷和方法
- 性能優(yōu)化
>文件合并,壓縮
減少dom操作
css動(dòng)畫(huà)代替js動(dòng)畫(huà)
web worker
局部變量代替全局變量
閉包記得回收
- 單元測(cè)試  [Mocha和chai.js](http://www.reibang.com/p/975de13d0406)
>測(cè)試驅(qū)動(dòng)開(kāi)發(fā)
- 瀏覽器有幾種內(nèi)核
>Trident  IE 
gecko Mozilla
WebKit chrome safari
Presto Opera

自動(dòng)化工具 gulp webpack 
模板引擎如何實(shí)現(xiàn)變量替換
代碼考察窗市,
排序算法實(shí)現(xiàn)
數(shù)組去重伏钠。 兩種,一種利用哈希谨设,比較快熟掂,另外一種先排序后去重,這種節(jié)約空間扎拣。
條件注釋
數(shù)據(jù)庫(kù)知識(shí)
MongoDB, PostgreSQL,Redis,HBase

兼容性問(wèn)題
polyfill,shim
autoprefixer postCSS
reset

## 開(kāi)放題
- 用戶說(shuō)網(wǎng)頁(yè)有問(wèn)題赴肚,你怎么判斷
> 不知道怎么回答
- 怎么知道自己的網(wǎng)頁(yè)出問(wèn)題了
> 我的思路,一個(gè)是爬蟲(chóng)定時(shí)二蓝,第二個(gè)是頁(yè)面加載后發(fā)送ajax來(lái)統(tǒng)計(jì)誉券。

這位同學(xué)總結(jié)了前端[面試題目](http://www.reibang.com/p/fe62c7e33ba8)
前端的一些資源,https://github.com/JacksonTian/fks
趴蓿客網(wǎng)上經(jīng)典問(wèn)題
http://www.nowcoder.com/ta/front-end-interview/review?page=1
折磨人的面試題 http://www.tuicool.com/articles/feiayiq
requirejs的源碼


書(shū)籍推薦
《javascript高級(jí)程序設(shè)計(jì)》
《es6》
《Node》
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末踊跟,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌商玫,老刑警劉巖箕憾,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異拳昌,居然都是意外死亡袭异,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)炬藤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)御铃,“玉大人,你說(shuō)我怎么就攤上這事沈矿∩险妫” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵羹膳,是天一觀的道長(zhǎng)睡互。 經(jīng)常有香客問(wèn)我,道長(zhǎng)溜徙,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任犀填,我火速辦了婚禮蠢壹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘九巡。我一直安慰自己图贸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布冕广。 她就那樣靜靜地躺著疏日,像睡著了一般。 火紅的嫁衣襯著肌膚如雪撒汉。 梳的紋絲不亂的頭發(fā)上沟优,一...
    開(kāi)封第一講書(shū)人閱讀 51,165評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音睬辐,去河邊找鬼挠阁。 笑死,一個(gè)胖子當(dāng)著我的面吹牛溯饵,可吹牛的內(nèi)容都是我干的侵俗。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼丰刊,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼隘谣!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起啄巧,我...
    開(kāi)封第一講書(shū)人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤寻歧,失蹤者是張志新(化名)和其女友劉穎掌栅,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體熄求,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡渣玲,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了弟晚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片忘衍。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖卿城,靈堂內(nèi)的尸體忽然破棺而出枚钓,到底是詐尸還是另有隱情,我是刑警寧澤瑟押,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布搀捷,位于F島的核電站,受9級(jí)特大地震影響多望,放射性物質(zhì)發(fā)生泄漏嫩舟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一怀偷、第九天 我趴在偏房一處隱蔽的房頂上張望家厌。 院中可真熱鬧,春花似錦椎工、人聲如沸饭于。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)掰吕。三九已至,卻和暖如春颅痊,著一層夾襖步出監(jiān)牢的瞬間殖熟,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工斑响, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留吗讶,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓恋捆,卻偏偏與公主長(zhǎng)得像照皆,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子沸停,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

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

  • 前端開(kāi)發(fā)面試知識(shí)點(diǎn)大綱: HTML&CSS: 對(duì)Web標(biāo)準(zhǔn)的理解膜毁、瀏覽器內(nèi)核差異、兼容性、hack瘟滨、CSS基本功:...
    秀才JaneBook閱讀 2,362評(píng)論 0 25
  • 前端面試題的簡(jiǎn)單整理候醒,都只是大概回答,具體某些問(wèn)題的具體理解后續(xù)會(huì)補(bǔ)上杂瘸。 前端頁(yè)面有哪三層構(gòu)成倒淫,分別是什么?作用是...
    李歡li閱讀 482評(píng)論 0 2
  • HTML HTML5標(biāo)簽 媒體查詢head部分寫(xiě)法 Doctype作用? 嚴(yán)格模式與混雜模式如何區(qū)分?它們有何意義...
    Mayo_閱讀 641評(píng)論 0 8
  • <a name='html'>HTML</a> Doctype作用败玉?標(biāo)準(zhǔn)模式與兼容模式各有什么區(qū)別? (1)敌土、<...
    clark124閱讀 3,474評(píng)論 1 19
  • 一點(diǎn)半準(zhǔn)時(shí)睜開(kāi)眼返干,電話同時(shí)振動(dòng)。是閨蜜老公豬頭的電話血淌,他那特有的大喇叭瞬間通過(guò)電話傳遍了整個(gè)辦公室矩欠,“還沒(méi)睡醒啊,...
    向行閱讀 390評(píng)論 6 5