Web前端經典面試試題(三)

一. 什麼是Ajax???

術語Ajax用來描述一組技術,它使瀏覽器能夠爲用戶提供更爲天然的瀏覽體驗。
Ajax它是「Asynchronous JavaScript + XML的簡寫」

定義Ajax:javascript

Ajax不是一種技術。實際上,它由幾種蓬勃發展的技術以新的強大方式組合而成。Ajax包含:
    * 基於XHTML和CSS標準的表示;
    * 使用Document Object Model進行動態顯示和交互;
    * 使用XMLHttpRequest與服務器進行異步通訊;
    * 使用JavaScript綁定一切。

二. 什麼是JSON

JSON來自於javascript,可是應用上面遠遠不止是javascript的json,它至關於xml,是一種比較流行的標準格式,是數據的載體
javascript json 是用於javascript程序的,它能夠支持對象引用以及函數;ajax json只是最簡單的字符串和數字,它不可能徹底支持javascript裏面的數據類型。
相對於XML,JSON更加易讀、更便於肉眼檢查。在語法的層面上,JSON與其餘格式的區別是在於分隔數據的字符

三.淺談一下如何避免用戶屢次點擊形成的屢次請求

咱們在訪問有的網站,輸入表單完成之後,單擊提交按鈕進行提交之後,提交按鈕就會變爲灰色,用戶不能再單擊第二次,直到從新加載頁面或者跳轉。這樣,能夠必定程度上防止用戶重複提交致使應用程序上邏輯錯誤。
   還有不少其餘的方式進行防止重複點擊提交,如
1> 定義標誌位:
 點擊觸發請求後,標誌位爲false量;請求(或者包括請求後具體的業務流程處理)後,標誌位爲true量。經過標誌位來判斷用戶點擊是否具有應有的響應。
2> 卸載及重載綁定事件:
   點擊觸發請求後,卸載點擊事件;請求(或者包括請求後具體的業務流程處理)後,從新載入綁定事件。
3> 替換(移除)按鈕DOM
   點擊觸發請求後,將按鈕DOM對象替換掉(或者將之移除),天然而然此時不在具有點擊事件;請求(或者包括請求後具體的業務流程處理)後,給新的按鈕DOM定義點擊事件。

更多講解參考:http://www.cnblogs.com/jinguangguo/archive/2013/05/20/3086925.html

四.同步和異步的區別?

同步的概念應該是來自於操做系統中關於同步的概念:
不一樣進程爲協同完成某項工做而在前後次序上調整(經過阻塞,喚醒等方式)。同步強調的是順序性,誰先誰後;異步則不存在這種順序性。
//
同步:瀏覽器訪問服務器請求,用戶看獲得頁面刷新,從新發請求,等請求完,頁面刷新,新內容出現,用戶看到新內容,進行下一步操做。
//
異步:瀏覽器訪問服務器請求,用戶正常操做,瀏覽器後端進行請求。等請求完,頁面不刷新,新內容也會出現,用戶看到新內容。

五.異步加載的方式有哪些?

(1)defer,只支持 IE
(2)async:
(3)建立 script,插入到 DOM 中,加載完畢後 callBack

六.27. CORS是什麼?對於跨域請求,如何將附帶憑證(HTTP Cookie及HTTP認證信息)的請求發送至服務器?(提示:後續真實工做中可能會用到)

跨域請求一直是網頁編程中的一個難題,在過去,絕大多數人都傾向於使用JSONP來解決這一問題。不過如今,咱們能夠考慮一下W3C中一項新的特性——CORS(Cross-Origin Resource Sharing)了。CORS是現代瀏覽器支持跨域資源請求的一種方式。    

解決方法:        
當你使用XMLHttpRequest發送請求時,瀏覽器發現該請求不符合同源策略,會給該請求加一個請求頭:Origin,後臺(php或者其它接收數據方)進行一系列處理,若是肯定接受請求則在返回結果中加入一個響應頭:Access-Control-Allow-Origin;瀏覽器判斷該相應頭中是否包含Origin的值,若是有則瀏覽器會處理響應,咱們就能夠拿到響應數據,若是不包含瀏覽器直接駁回,這時咱們沒法拿到響應數據。

更多參考地址:www.cnblogs.com/dojo-lzz/p/4265637.html
        http://www.cnblogs.com/rainman/archive/2011/02/20/1959325.html

七. 一次完整的HTTP事務是怎樣一個過程?

a.域名解析
b.發起TCP的三次握手
c.創建TCP鏈接後發起http請求
d.服務器端響應http請求,瀏覽器獲得html碼
e.瀏覽器解析html代碼,並請求html代碼中的資源
f.瀏覽器對頁面進行渲染並呈現給客戶

更多詳細參考地址:http://www.360doc.com/content/14/0725/20/1073512_397054861.shtml

八. get與post兩種方式的優缺點。

get:
    get是從服務器上獲取數據,post是向服務器傳送數據;
    get傳送的數據量較小,不能大於2KB。post傳送的數據量較大,通常被默認爲不受限制。但理論上,IIS4中最大量爲80KB,IIS5中爲100KB;
    get安全性很是低,post安全性較高。可是執行效率卻比Post方法好;
    get是把參數數據隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個字段一一對應,在URL中能夠看到;
    在作數據查詢時,建議用Get方式;

post:
    post是經過HTTP post機制,將表單內各個字段與其內容放置在HTML HEADER內一塊兒傳送到ACTION屬性所指的URL地址,用戶看不到這個過程;
    因此:包含機密信息的話,建議用Post數據提交方式;而在作數據添加、修改或刪除時,建議用Post方式。

九.對於request.status的http狀態碼 用於表示網頁服務器HTTP響應狀態的3位數字代碼。1,2,3,4,5開頭的狀態碼分別表明什麼(提示:404頁面表示禁止訪問等)

1xx(臨時響應)表示臨時響應並須要請求者繼續執行操做的狀態代碼。
2xx (成功)表示成功處理了請求的狀態代碼。
3xx (重定向) 表示要完成請求,須要進一步操做。 一般,這些狀態代碼用來重定向。
4xx(請求錯誤) 這些狀態代碼表示請求可能出錯,妨礙了服務器的處理。
5xx(服務器錯誤)這些狀態代碼表示服務器在嘗試處理請求時發生內部錯誤。 這些錯誤多是服務器自己的錯誤,而不是請求出錯。

十.jQuery與jQuery UI有啥區別?

`jQuery`是一個js庫,主要提供的功能是選擇器,屬性修改和事件綁定等等。
`jQuery UI`則是在jQuery的基礎上,利用jQuery的擴展性,設計的插件。提供了一些經常使用的界面元素,諸如對話框、拖動行爲、改變大小行爲等等

十一.$(document).ready與window.onload有何區別?

$(document).ready 對於支持DOMContentLoaded事件的瀏覽器,會使用該事件,全部的節點渲染完畢,就執行,能夠調用屢次,不支持的就使用 onload事件
window.onload事件要等到全部的資源加載完畢,如圖片,視頻,js腳本等,只能綁定一次,後面綁定的覆蓋前面所綁定的事件

十二.jQuery中,如何阻止事件冒泡和瀏覽器默認行爲?

e.preventDefault();
e.stopPropagation();

十三. Node.js的適用場景?

高併發、聊天、實時消息推送、服務器作前端資源壓縮

十四. 那些操做會形成內存泄漏?

內存泄漏是指任何對象在您再也不擁有或須要它以後任然存在。
垃圾回收器按期掃描對象,並計算引用了每一個對象的其餘對象的數量,若是一個對象的引用數量爲0(沒有其餘對象引用過該對象),或對該對象的唯一引用是循環的,那麼該對象的內存便可回收。
//
setTimeout 的第一個參數使用字符串而非函數的話,會引起內存泄漏。
閉包、控制檯日誌、循環(在兩個對象彼此引用且彼此保留時,就會產生一個循環)

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

call方法: 
    語法:call(thisObj,Object)
    定義:調用一個對象的一個方法,以另外一個對象替換當前對象。
    說明:
    call 方法能夠用來代替另外一個對象調用一個方法。call 方法可將一個函數的對象上下文從初始的上下文改變爲由 thisObj 指定的新對象。 
    若是沒有提供 thisObj 參數,那麼 Global 對象被用做 thisObj。 

apply方法: 
    語法:apply(thisObj,[argArray])
    定義:應用某一對象的一個方法,用另外一個對象替換當前對象。 
    說明: 
    若是 argArray 不是一個有效的數組或者不是 arguments 對象,那麼將致使一個 TypeError。 
    若是沒有提供 argArray 和 thisObj 任何一個參數,那麼 Global 對象將被用做 thisObj, 而且沒法被傳遞任何參數。
相關文章
相關標籤/搜索