立刻要換工做了,感受本身不少東西都只知道怎麼弄,不會查百度,不知道原理,網上整理了面試題,做爲複習資料。javascript
首先是各大公司的面試題css
原始地址
http://www.jackpu.com/2016ge-da-hu-lian-wang-gong-si-qian-duan-mian-shi-ti-hui-zong/html
百度
寫出JavaScript運行結果java
for(var i=0; i<10; i++){} alert(i);
1
answer:web
Cookie、sessionStorage、localStorage的區別面試
answer:跨域
SessionStorage 和 localStorage 是HTML5 storage API 提供的, 能夠把數據保存在本地,避免了數據在瀏覽器和服務器之間沒必要要的通訊。瀏覽器
sessionStorage,localStorage, cookie 都是在瀏覽器存儲的數據。安全
不一樣:
cookie數據始終在同源http中攜帶,即便不須要,也會在瀏覽器和服務器間來回傳遞。Storage只存在本地。
cookie數據有路徑概念,能夠限制cookie只能在某路徑下。服務器
大小不一樣
cookie:4k Storage:5M
有效期不一樣
sessionStorage: 僅在當前瀏覽器關閉前有效
localStorage:始終有效
cookie:過時以前有效
做用域不一樣
sessionStorage在打開的不一樣瀏覽器窗口不共享,即便同一頁面
localStorage 在同源頁面共享
cookie 同源頁面共享
JSONP原理
answer:
Ajax存在不能跨域請求數據的問題。而Web上調用js是不受跨域影響的。由於JSON數據格式剛好被Js支持,web客戶端經過調用跨域服務器上動態生成的Js,從而達到跨域請求到JSON包的需求。 爲了便於客戶端調用JSON數據,造成了非正式的傳輸協議,也就是JSONP。 客戶端傳一個callback參數給跨域服務器,跨域服務器返回一個以callback爲函數名包裹的JSON數據,這樣客戶端就能夠處理跨域獲得的JSON數據了。
簡述css盒模型
answer:
一個盒子包括 內容 填充 邊框 邊界,而盒子模型包括這些屬性,外邊距,邊框,內邊距,內容。
說說get和post請求的區別
answer:
get: 將請求攜帶的參數直接拼接在url後面,傳送的體積小
post: 將請求寫在body裏,傳送的體積大。安全。
通常get用於獲取數據,post是將數據傳給服務器,進行修改。
這裏推薦一篇文章,也細緻的講了區別,值得思考。
http://www.nowamagic.net/librarys/veda/detail/1919
運行結果
var a = {n: 1}
var b = a;
a.x = a = {n: 2};
console.log(a.x);
console.log(b.x);
2
4
1
3
5
answer:
(a.x)->undefined
(b.x)->[object Object ]
解析:
http://www.bubuko.com/infodetail-712767.html
本題主要考查了js引用模式。
var a = {n: 1}
var b = a;
這兩行代碼
a 指向了一個對象 A{n:1}
b 也指向了對象A{n:1}
下一行代碼很關鍵
a.x = a = {n: 2};
因爲js賦值運算是從右往左的,可是 . 的運算等級最高, 因此 a.x 爲對象A 新增了屬性 x:undefined。 同時,因爲b也指向對象A,因此b.x也是undefined。接着,因爲從右往左的特性,先執行a={n:2},這時a指向了對象B{n:2}。
接着執行 a.x=a
不少人會認爲這裏是「對象B也新增了一個屬性x,並指向對象B本身」
但實際上並不是如此,
因爲( . 運算符最早計算)一開始js已經先計算了a.x,便已經解析了這個a.x是對象A的x,因此在同一條公式的狀況下再回來給a.x賦值,也不會說從新解析這個a.x爲對象B的x。
因此 a.x=a 應理解爲對象A的屬性x指向了對象B.
這時,對象A: {n:1 x:對象B} 對象B: {n:2}
因此結果 a.x是輸出對象B的x屬性,因爲遍歷到頂端,也沒有這個屬性,因此輸出undefined。 而b.x是輸出的對象B。注意這裏的[object Object]可不是2個對象的意思,對象的字符串形式,是隱式調用了Object對象的toString()方法,形式是:」[object Object]」。因此[object Object]表示的就只是一個對象罷了。
說說類的建立、繼承和閉包
answer:
建議閱讀javascript高級程序設計4-7章。
建立類:factory法,constructor法,prototype法,prototype+constructor結合,動態prototype法。
繼承類:
原型鏈繼承 構造繼承 實例繼承 拷貝繼承 組合繼承 寄生組合繼承
閉包: 在函數外訪問函數內變量的方法
是否有設計過通用的組件? 請設計一個 Dialog(彈出層) / Suggestion(自動完成) / Slider(圖片輪播) 等組件,你會提供什麼接口?調用過程是怎樣的?可能會遇到什麼細節問題?
answer:
具體靠本身經驗了。
一個頁面從輸入 URL 到頁面加載完的過程當中都發生了什麼事情?越詳細越好(考察知識廣度)
answer: 輸入地址-》瀏覽器查找域名的IP地址(DNS查找)-》瀏覽器向web服務器發送請求-》服務器永久重定向迴應-》瀏覽器跟蹤重定向地址-》服務器處理請求-》服務器返回http響應-》瀏覽器顯示html-》瀏覽器發送請求獲取在html中嵌套的資源-》瀏覽器發送異步請求 什麼是 「use strict」? 使用它的好處和壞處是什麼? answer: 使用嚴格模式。消除語法不嚴謹的地方,保證代碼安全,增進代碼速度。缺點不知道,失去代碼靈活性算嗎?