立刻要換工做了,感受本身不少東西都只知道怎麼弄,不會查百度,不知道原理,網上整理了面試題,做爲複習資料。 首先是各大公司的面試題 原始地址 http://www.jackpu.com/2016ge-da-hu-lian-wang-gong-si-qian-duan-mian-shi-ti-hui-zong/ 百度 1 寫出JavaScript運行結果 for(var i=0; i<10; i++){} alert(i); 1 1 answer: 10 2 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 同源頁面共享 3 JSONP原理 answer: Ajax存在不能跨域請求數據的問題。而Web上調用js是不受跨域影響的。由於JSON數據格式剛好被Js支持,web客戶端經過調用跨域服務器上動態生成的Js,從而達到跨域請求到JSON包的需求。 爲了便於客戶端調用JSON數據,造成了非正式的傳輸協議,也就是JSONP。 客戶端傳一個callback參數給跨域服務器,跨域服務器返回一個以callback爲函數名包裹的JSON數據,這樣客戶端就能夠處理跨域獲得的JSON數據了。 4 簡述css盒模型 answer: 一個盒子包括 內容 填充 邊框 邊界,而盒子模型包括這些屬性,外邊距,邊框,內邊距,內容。 5 說說get和post請求的區別 answer: get: 將請求攜帶的參數直接拼接在url後面,傳送的體積小 post: 將請求寫在body裏,傳送的體積大。安全。 通常get用於獲取數據,post是將數據傳給服務器,進行修改。 這裏推薦一篇文章,也細緻的講了區別,值得思考。 http://www.nowamagic.net/librarys/veda/detail/1919 6 運行結果 var a = {n: 1} var b = a; a.x = a = {n: 2}; console.log(a.x); console.log(b.x); 1 2 3 4 5 1 2 3 4 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]表示的就只是一個對象罷了。 7 說說類的建立、繼承和閉包 answer: 建議閱讀javascript高級程序設計4-7章。 建立類:factory法,constructor法,prototype法,prototype+constructor結合,動態prototype法。 繼承類: 原型鏈繼承 構造繼承 實例繼承 拷貝繼承 組合繼承 寄生組合繼承 閉包: 在函數外訪問函數內變量的方法 8 是否有設計過通用的組件? 請設計一個 Dialog(彈出層) / Suggestion(自動完成) / Slider(圖片輪播) 等組件,你會提供什麼接口?調用過程是怎樣的?可能會遇到什麼細節問題? answer: 具體靠本身經驗了。 9 一個頁面從輸入 URL 到頁面加載完的過程當中都發生了什麼事情?越詳細越好(考察知識廣度) answer: 輸入地址-》瀏覽器查找域名的IP地址(DNS查找)-》瀏覽器向web服務器發送請求-》服務器永久重定向迴應-》瀏覽器跟蹤重定向地址-》服務器處理請求-》服務器返回http響應-》瀏覽器顯示html-》瀏覽器發送請求獲取在html中嵌套的資源-》瀏覽器發送異步請求 10 什麼是 「use strict」? 使用它的好處和壞處是什麼? answer: 使用嚴格模式。消除語法不嚴謹的地方,保證代碼安全,增進代碼速度。缺點不知道,失去代碼靈活性算嗎?