ajax常考的面試題彙總

(面試題從網上收集)javascript

一、什麼是AJAX,它的特色是什麼,爲何要使用Ajax(請談一下你對Ajax的認識)css

  AJAX的全稱是Asynchronous JavaScript And XML.java

  Ajax能夠實現動態不刷新(局部刷新) 就是能在不更新整個頁面的前提下維護數據。這使得Web應用程序更爲迅捷地迴應用戶動做,並避免了在網絡上發送那些沒有改變過的信息。web

  AJAX是2005年由Google發起並流行起來的編程方法, AJAX不是一個新的編程語言,可是它是一個使用已有標準的新的編程技術。
  使用AJAX能夠建立更好,更快,更用戶界面友好的Web應用。
  AJAX技術基於Javascript和HTTP Request.面試

二、什麼樣的狀況會形成跨域,跨域解決方案有哪些?ajax

  同源策略限制 不一樣源會形成跨域。子域名不一樣,主域名不一樣,端口號不一樣,ip地址和網址不一樣都會形成跨域。編程

  解決方案有三種:json

  一、代理服務器小程序

  二、設置請求頭:Access-Control-Allow-Origin: * //容許全部域名訪問跨域

         Access-Control-Allow-Origin: http://a.com //只容許全部域名訪問

  三、jsonp(只能解決get跨域

    原理:動態建立一個script標籤。利用script標籤的src屬性不受同源策略限制。由於全部的src屬性和href屬性都不受同源策略限制。能夠請求第三方服務器數據內容。

    步驟:

    1.   去建立一個script標籤
    2.   script的src屬性設置接口地址
    3.   接口參數,必需要帶一個自定義函數名 要否則後臺沒法返回數據。
    4. 經過定義函數名去接收後臺返回數據

三、http常見狀態碼有哪些?  

  狀態碼:

 

    0: 請求未初始化

 

    1: 服務器鏈接已創建

 

    2: 請求已接收

 

    3: 請求處理

 

    4: 請求已完成,且響應已就緒

 

  http狀態響應碼:
    1xx 信息類

 

      100   (繼續)請求者應當繼續提出請求。服務器返回此代碼表示已收到請求的第一部分,正在等待其他部分

 

    2xx 成功

 

      200   (成功)  服務器已成功處理了請求。一般,這表示服務器提供了請求的網頁。

 

    3xx 重定向

 

      304   (未修改)自從上次請求後,請求的網頁未修改過。服務器返回此響應時,不會返回網頁內容。

 

    4xx 客戶端錯誤

 

      404   (未找到)服務器找不到請求的網頁。

 

    5xx 服務端錯誤 

 

      503   (服務不可用)服務器目前沒法使用(因爲超載或停機維護)。一般,這只是暫時狀態。

 

四、簡述原生js ajax請求的幾個步驟?

//建立 XMLHttpRequest 對象
var ajax = new XMLHttpRequest();
//規定請求的類型、URL 以及是否異步處理請求。
ajax.open('GET',url,true);
//發送信息至服務器時內容編碼類型
ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
//發送請求
ajax.send(null);  
//接受服務器響應數據
ajax.onreadystatechange = function () {
    if (obj.readyState == 4 && (obj.status == 200 || obj.status == 304)) { 
    }
};

  

五、介紹ajax中get和post的請求方式及他們的優缺點?

   代碼上的區別

    1:get經過url傳遞參數

    2:post設置請求頭 規定請求數據類型

  使用上的區別

    1:post比get安全 (由於post參數在請求體中。get參數在url上面)

     2:get傳輸速度比post快 根據傳參決定的。 (post經過請求體傳參,後臺經過數據流接收。速度稍微慢一些。而get經過url傳參能夠直接獲取)

     3:post傳輸文件大理論沒有限制 get傳輸文件小大概7-8k ie4k左右

    4:get獲取數據 post上傳數據 (上傳的數據比較多 並且上傳數據都是重要數據。因此不論在安全性仍是數據量級 post是最好的選擇)

六、Ajax和javascript的區別。

  javascript是一種在瀏覽器端執行的腳本語言,Ajax是一種建立交互式網頁應用的開發技術 ,它是利用了一系列相關的技術其中就包括javascript。

  Javascript是由網景公司開發的一種腳本語言,它和sun公司的java語言是沒有任何關係的,它們類似的名稱只是一種行銷策略。
  在通常的web開發中,javascript是在瀏覽器端執行的,咱們能夠用javascript控制瀏覽器的行爲和內容。
  在 Ajax應用中信息是如何在瀏覽器和服務器之間傳遞的,經過XML數據或者字符串

七、Ajax都有哪些優勢和缺點?

  優勢:

  一、最大的一點是頁面無刷新,用戶的體驗很是好。

  二、使用異步方式與服務器通訊,具備更加迅速的響應能力。
  三、能夠把之前一些服務器負擔的工做轉嫁到客戶端,利用客戶端閒置的能力來處理,減輕服務器和帶寬的負擔,節約空間和寬帶租用成本。而且減輕服務器的負擔,ajax的原則是「按需取數據」,能夠最大程度的減小冗餘請求,和響應對服務器形成的負擔。
  四、基於標準化的並被普遍支持的技術,不須要下載插件或者小程序。

  缺點:
  一、ajax不支持瀏覽器back按鈕。
  二、安全問題 AJAX暴露了與服務器交互的細節。
  三、對搜索引擎的支持比較弱。
  四、破壞了程序的異常機制。
  五、不容易調試。

8json字符串轉換集json對象、json對象轉換json字符串

//字符串轉對象
JSON.parse(json)
eval('(' + jsonstr + ')')   
// 對象轉字符串
JSON.stringify(json)

九、Ajax主要包含了哪些技術?  

  Ajax(Asynchronous JavaScript + XML)的定義
  基於web標準(standards-based presentation)XHTML+CSS的表示;
  使用 DOM(Document Object Model)進行動態顯示及交互;
  使用 XML 和 XSLT 進行數據交換及相關操做;
  使用XMLHttpRequest 進行異步數據查詢、檢索;
  使用 JavaScript 將全部的東西綁定在一塊兒。英文參見Ajax的提出者Jesse James Garrett的原文,原文題目(Ajax: A New Approach to Web Applications)。
  相似於DHTML或LAMP,AJAX不是指一種單一的技術,而是有機地利用了一系列相關的技術。事實上,一些基於AJAX的「派生/合成」式(derivative/composite)的技術正在出現,如「AFLAX」。
  AJAX的應用使用支持以上技術的web瀏覽器做爲運行平臺。這些瀏覽器目前包括:Mozilla、Firefox、Internet Explorer、Opera、Konqueror及Safari。可是Opera不支持XSL格式對象,也不支持XSLT。

十、AJAX技術體系的組成部分有哪些。

   HTML,css,dom,xml,xmlHttpRequest,javascript

十一、請解釋一下 JavaScript 的同源策略。

  同源策略是客戶端腳本(尤爲是Javascript)的重要的安全度量標準。它最先出自Netscape Navigator2.0,其目的是防止某個文檔或腳本從多個不一樣源裝載。所謂同源指的是:協議,域名,端口相同,同源策略是一種安全協議,

    指一段腳本只能讀取來自同一來源的窗口和文檔的屬性。

十二、AJAX請求總共有多少種CALLBACK

   Ajax請求總共有八種Callback 
    onSuccess 
    onFailure 
    onUninitialized 
    onLoading 
    onLoaded 
    onInteractive 
    onComplete 
    onException 

1三、介紹一下XMLHttpRequest對象的經常使用方法和屬性。 

  open(「method」,」URL」) 創建對服務器的調用,第一個參數是HTTP請求 方式能夠爲GET,POST或任何服務器所支持的您想調用的方式。
  第二個參數是請求頁面的URL。
  send()方法,發送具體請求
  abort()方法,中止當前請求
  readyState屬性 請求的狀態 有5個可取值0=未初始化 ,1=正在加載
  2=以加載,3=交互中,4=完成
  responseText 屬性 服務器的響應,表示爲一個串
  reponseXML 屬性 服務器的響應,表示爲XML
  status 服務器的HTTP狀態碼,200對應ok 400對應not found

1四、解釋jsonp的原理,以及爲何不是真正的ajax  

  Jsonp並非一種數據格式9,而json是一種數據格式,jsonp是用來解決跨域獲取數據的一種解決方案,具體是經過動態建立script標籤,而後經過標籤的src屬性獲取js文件中的js腳本,該腳本的內容是一個函數調用,

  參數就是服務器返回的數據,爲了處理這些返回的數據,須要事先在頁面定義好回調函數,本質上使用的並非ajax技術

1五、一個頁面從輸入 URL 到頁面加載顯示完成,這個過程當中都發生了什麼?

  分爲4個步驟:

    1. 當發送一個 URL 請求時,無論這個 URL 是 Web 頁面的 URL 仍是 Web 頁面上每一個資源的 URL,瀏覽器都會開啓一個線程來處理這個請求,同時在遠程 DNS 服務器上啓動一個 DNS 查詢。這能使瀏覽器得到請求對應的 IP 地址。

    2. 瀏覽器與遠程 Web 服務器經過 TCP 三次握手協商來創建一個 TCP/IP 鏈接。該握手包括一個同步報文,一個同步-應答報文和一個應答報文,這三個報文在 瀏覽器和服務器之間傳遞。該握手首先由客戶端嘗試創建起通訊,然後服

      務器應答並接受客戶端的請求,最後由客戶端發出該請求已經被接受的報文。

    3. 一旦 TCP/IP 鏈接創建,瀏覽器會經過該鏈接向遠程服務器發送 HTTP 的 GET 請求。遠程服務器找到資源並使用 HTTP 響應返回該資源,值爲 200 的 HTTP 響應狀態表示一個正確的響應。

    4. 此時,Web 服務器提供資源服務,客戶端開始下載資源。

1六、介紹一下Prototype的$()函數,$F()函數,$A()函數都是什麼做用

  $() 方法是在DOM中使用過於頻繁的document.getElementByIdx_x_x() 方法的一個便利的簡寫,就像這個DOM方法同樣,這個方法返回參數傳入的id的那個元素。
  $F()函數是另外一個大收歡迎的「快捷鍵」,它能用於返回任何表單輸入控件的值,好比textbox,drop-down list。這個方法也能用元素id或元素自己作爲參數。
  $A()函數能把它接收到的單個的參數轉換成一個Array對象。
 
1七、同步和異步的區別?

  同步:瀏覽器向服務器請求數據,服務器比較忙,瀏覽器一直等着(頁面白屏),直到服務器返回數據,瀏覽器才能顯示頁面。

  異步:瀏覽器向服務器請求數據,服務器比較忙,瀏覽器能夠自如的幹原來的事情(顯示頁面),服務器返回數據的時候通知瀏覽器一聲,瀏覽器把返回的數據再渲染到頁面,局部更新。

1八、爲何利用多個域名來存儲網站資源會更有效?
 
   確保用戶在不一樣地區能用最快的速度打開網站,其中某個域名崩潰用戶也能經過其餘域名訪問網站,而且不一樣的資源放到不一樣的服務器上有利於減輕單臺服務器的壓力。
相關文章
相關標籤/搜索