1.說說你對(duì)語義化的理解啊犬?
- 去掉或者丟失樣式的時(shí)候能夠讓頁面呈現(xiàn)出清晰的結(jié)構(gòu)
- 有利于SEO
- 方便其他設(shè)備解析
- 便于團(tuán)隊(duì)開發(fā)和維護(hù),語義化使得網(wǎng)頁更具可讀性
2.談?wù)凜ookie的弊端壁查?
- Cookie數(shù)量和長(zhǎng)度的限制觉至,20條,4KB
- 安全性問題
- 有些狀態(tài)不可能保存在客戶端
3.清除浮動(dòng)的技巧睡腿?
- 空標(biāo)簽清除:clear:both
- 給父元素添加overflow:auto
- 使用after偽元素清除
- 浮動(dòng)父元素
4.哪些操作會(huì)造成內(nèi)存泄漏语御?
- setTimeout 的第一個(gè)參數(shù)使用字符串而非函數(shù)
- 閉包
- 控制臺(tái)日志
- 循環(huán)(在兩個(gè)對(duì)象彼此引用且彼此保留時(shí),就會(huì)產(chǎn)生一個(gè)循環(huán))
5.性能優(yōu)化的方法席怪?
- 減少http請(qǐng)求次數(shù):CSS Sprites, JS应闯、CSS 源碼壓縮,data 緩存
- 減少 DOM 操作次數(shù)挂捻,優(yōu)化 javascript 性能碉纺,延遲,異步加載腳本
- 減少 IO 讀取操作
- 圖片預(yù)加載刻撒,將樣式表放在頂部骨田,將腳本放在底部
6.http狀態(tài)碼有那些?
- 100 Continue 繼續(xù)疫赎,一般在發(fā)送post請(qǐng)求時(shí)盛撑,已發(fā)送了http header之后服務(wù)端將返回此信息,表示確認(rèn)捧搞,之后發(fā)送具體參數(shù)信息
- 200 OK 正常返回信息
- 201 Created 請(qǐng)求成功并且服務(wù)器創(chuàng)建了新的資源
- 202 Accepted 服務(wù)器已接受請(qǐng)求抵卫,但尚未處理
- 301 Moved Permanently 請(qǐng)求的網(wǎng)頁已永久移動(dòng)到新位置
- 302 Found 臨時(shí)性重定向
- 303 See Other 臨時(shí)性重定向狮荔,且總是使用 GET 請(qǐng)求新的 URI
- 304 Not Modified 自從上次請(qǐng)求后,請(qǐng)求的網(wǎng)頁未修改過
- 400 Bad Request 服務(wù)器無法理解請(qǐng)求的格式介粘,客戶端不應(yīng)當(dāng)嘗試再次使用相同的內(nèi)容發(fā)起請(qǐng)求
- 401 Unauthorized 請(qǐng)求未授權(quán)
- 403 Forbidden 禁止訪問
- 404 Not Found 找不到如何與 URI 相匹配的資源
- 500 Internal Server Error 最常見的服務(wù)器端錯(cuò)誤
- 503 Service Unavailable 服務(wù)器端暫時(shí)無法處理請(qǐng)求(可能是過載或維護(hù))
7.頁面加載顯示過程殖氏?
- 當(dāng)發(fā)送一個(gè) URL 請(qǐng)求時(shí),不管這個(gè)URL是Web頁面的URL還是Web頁面上每個(gè)資源的 URL姻采,瀏覽器都會(huì)開啟一個(gè)線程來處理這個(gè)請(qǐng)求雅采,同時(shí)在遠(yuǎn)程DNS服務(wù)器上啟動(dòng)一個(gè) DNS查詢。這能使瀏覽器獲得請(qǐng)求對(duì)應(yīng)的IP地址慨亲。
- 瀏覽器與遠(yuǎn)程Web服務(wù)器通過TCP三次握手協(xié)商來建立一個(gè)TCP/IP連接婚瓜。該握手包括一個(gè)同步報(bào)文,一個(gè)同步-應(yīng)答報(bào)文和一個(gè)應(yīng)答報(bào)文刑棵,這三個(gè)報(bào)文在 瀏覽器和服務(wù)器之間傳遞巴刻。該握手首先由客戶端嘗試建立起通信,而后服務(wù)器應(yīng)答并接受客戶端的請(qǐng)求蛉签,最后由客戶端發(fā)出該請(qǐng)求已經(jīng)被接受的報(bào)文胡陪。
- 一旦TCP/IP連接建立,瀏覽器會(huì)通過該連接向遠(yuǎn)程服務(wù)器發(fā)送HTTP的GET請(qǐng)求碍舍,遠(yuǎn)程服務(wù)器找到資源并使用HTTP響應(yīng)返回該資源柠座,值為200的HTTP響應(yīng)狀態(tài)表示一個(gè)正確的響應(yīng)。
- 此時(shí)片橡,Web服務(wù)器提供資源服務(wù)妈经,客戶端開始下載資源。
8.ajax 的過程是怎樣的锻全?
- 創(chuàng)建XMLHttpRequest對(duì)象,也就是創(chuàng)建一個(gè)異步調(diào)用對(duì)象
- 創(chuàng)建一個(gè)新的HTTP請(qǐng)求,并指定該HTTP請(qǐng)求的方法狂塘、URL及驗(yàn)證信息
- 設(shè)置響應(yīng)HTTP請(qǐng)求狀態(tài)變化的函數(shù)
- 發(fā)送HTTP請(qǐng)求
- 獲取異步調(diào)用返回的數(shù)據(jù)
- 使用JavaScript和DOM實(shí)現(xiàn)局部刷新
9.GET和POST的區(qū)別?
GET:一般用于信息獲取鳄厌,使用URL傳遞參數(shù)荞胡,對(duì)所發(fā)送信息的數(shù)量也有限制,一般在2000個(gè)字符
POST:一般用于修改服務(wù)器上的資源了嚎,對(duì)所發(fā)送的信息沒有限制
GET方式需要使用 Request.QueryString 來取得變量的值
POST方式通過 Request.Form 來獲取變量的值
也就是說 Get 是通過地址欄來傳值泪漂,而 Post 是通過提交表單來傳值。
在以下情況中歪泳,請(qǐng)使用 POST 請(qǐng)求:
- 無法使用緩存文件(更新服務(wù)器上的文件或數(shù)據(jù)庫)
- 向服務(wù)器發(fā)送大量數(shù)據(jù)(POST 沒有數(shù)據(jù)量限制)
- 發(fā)送包含未知字符的用戶輸入時(shí)萝勤,POST 比 GET 更穩(wěn)定也更可靠
10.引用類型和基本類型的區(qū)別?
基本數(shù)據(jù)類型:Number呐伞,String敌卓,Boolean,Null伶氢,Undefined趟径,Symbol
引用類型:Object瘪吏,Array,function蜗巧,Date掌眠,RexExp等
區(qū)別:
- 基本類型的值不可變,引用類型的值可變
- 基本類型的比較是值的比較幕屹,引用類型的比較是引用的比較
- 基本類型的變量存放在棧區(qū)蓝丙,引用類型的值同時(shí)保存在棧內(nèi)存和堆內(nèi)存中
引用類型的賦值是對(duì)象保存在棧區(qū)地址指針的賦值,兩個(gè)變量指向同一個(gè)對(duì)象望拖,任何的操作都會(huì)相互影響
11.深拷貝和淺拷貝的區(qū)別?
- 深拷貝:兩數(shù)組指針指向不同的地址渺尘,數(shù)組元素發(fā)生改變時(shí)不會(huì)相互影響
- 淺拷貝:相當(dāng)于使兩個(gè)數(shù)組指針指向相同的地址,任一個(gè)數(shù)組元素發(fā)生改變靠娱,會(huì)影響另一個(gè)
12.js繼承的方式和特點(diǎn)沧烈?
- 原型鏈繼承:利用原型讓一個(gè)引用類型繼承另一個(gè)引用類型的屬性和方法
- 借用構(gòu)造函數(shù)繼承:在子類型構(gòu)造函數(shù)的內(nèi)部調(diào)用超類型構(gòu)造函數(shù)
- 組合繼承:集二者之長(zhǎng)
- 原型式繼承:借助原型并基于已有的對(duì)象創(chuàng)建新對(duì)象掠兄,不用創(chuàng)建自定義類型
- 寄生式繼承:創(chuàng)建一個(gè)僅用于封裝繼承過程的函數(shù)
- 寄生組合式繼承:解決兩次調(diào)用的問題
- 類繼承:通過extends關(guān)鍵字實(shí)現(xiàn)繼承
13.defer和async屬性的區(qū)別像云?
- defer:與文檔元素同步加載,腳本在文檔解析后執(zhí)行
- async:加載和渲染文檔元素的過程和腳本的加載與執(zhí)行并行進(jìn)行
14.前端的安全問題蚂夕?
- sql注入:通過把SQL命令插入到Web表單遞交或輸入域名或頁面請(qǐng)求的查詢字符串迅诬,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL命令。
- XSS攻擊:指的是攻擊者往Web頁面里插入惡意html標(biāo)簽或者javascript代碼婿牍。
- CSRF:跨站請(qǐng)求偽造
15.瀏覽器如何渲染網(wǎng)頁侈贷?
- 使用HTML創(chuàng)建文檔對(duì)象模型(DOM)
- 使用CSS創(chuàng)建CSS對(duì)象模型(CSSOM)
- 基于DOM和CSSOM執(zhí)行腳本(Scripts)
- 合并DOM和CSSOM形成渲染樹(Render Tree)
- 使用渲染樹布局(Layout)所有元素
- 渲染(Paint)所有元素
16.如何解決跨域問題?
- jsonp(動(dòng)態(tài)插入 script 標(biāo)簽)
- document.domain + iframe
- window.name等脂、window.postMessage
- 服務(wù)器上設(shè)置代理頁面