更新時(shí)間:2023-02-03 15:56:04 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1815次
就目前來說,互聯(lián)網(wǎng)技術(shù)已經(jīng)越來越成熟了,很多企業(yè)在提問面試者的時(shí)候,除了要考察他們技術(shù)的掌握情況,還會(huì)注重對理論知識的理解等等,也就是說,全方面的都會(huì)考到你,針對程序員們,小編準(zhǔn)備了一些ajax面試題及答案,希望可以幫助到你們:

1、什么是Ajax和JSON,它們的優(yōu)缺點(diǎn)
Ajax是全稱是asynchronous JavaScript andXML,即異步JavaScript和xml,用于在Web頁面中實(shí)現(xiàn)異步數(shù)據(jù)交互,實(shí)現(xiàn)頁面局部刷新
優(yōu)點(diǎn):可以實(shí)現(xiàn)異步通信效果,頁面局部刷新,帶來更好的用戶體驗(yàn)
JSON是一種輕量級的數(shù)據(jù)交換格式,看著像對象,本質(zhì)是字符串
優(yōu)點(diǎn):輕量級、易于人的閱讀和編寫,便于js解析,支持復(fù)合數(shù)據(jù)類型
2、ajax的交互流程有哪幾步?
1)創(chuàng)建ajax對象
xhr = new XMLHttpRequest
2)規(guī)定請求地址
xhr.open(method,url,async)
3)等待服務(wù)器相應(yīng)
xhr.onload
4)向服務(wù)器發(fā)送請求
xhr.send()
3、AJAX應(yīng)用和傳統(tǒng)Web應(yīng)用有什么不同
在傳統(tǒng)的Js中,如果想發(fā)送客戶端信息到服務(wù)器,需要建立一個(gè)HTML表單然后GET或者POST數(shù)據(jù)到服務(wù)器端
用戶需要點(diǎn)擊提交按鈕來發(fā)送數(shù)據(jù)信息,然后等待服務(wù)器響應(yīng)請求,頁面重新加載
使用AJAX技術(shù),就可以使Javascript通過XMLHttpRequest對象直接與服務(wù)器進(jìn)行交互
4、XMLHttpRequest對象在IE和Firefox中創(chuàng)建方式有沒有不同?
IE中通過new ActiveXObject()得到,F(xiàn)irefox中通過newXMLHttpRequest()得到
使用jquery封裝好的ajax,會(huì)避免這些問題
擴(kuò)展:
IE內(nèi)核為:trident;
Chrome內(nèi)核為:blink(基于webkit,谷歌與Opera software共同開發(fā));
Firefox內(nèi)核為:gecko;
Safari內(nèi)核為:webkit內(nèi)核;
Opera內(nèi)核為:blink (跟Chrome一樣),之前為presto;
5、ajax如何解決瀏覽器緩存問題,有幾種解決方案?
方案1)在ajax發(fā)送請求前加上 anyAjaxObj.setRequestHeader(“If-Modified-Since”,“0”)
方案2)在ajax發(fā)送請求前加上 anyAjaxObj.setRequestHeader(“Cache-Control”,“no-cache”)
方案3)在URL后面加上一個(gè)隨機(jī)數(shù): “fresh=” + Math.random();
方案4)在URL后面加上時(shí)間戳:“nowtime=” + new Date().getTime()
方案5)在jq ajax下,使用 $.ajaxSetup({cache:false}) 這樣就不會(huì)保存緩存記錄
6、簡述ajax的優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
1)無刷新更新數(shù)據(jù)(在不刷新整個(gè)頁面的情況下維持與服務(wù)器通信)
2)異步與服務(wù)器通信(使用異步的方式與服務(wù)器通信,不打斷用戶的操作)
3)前端和后端負(fù)載均衡(將一些后端的工作交給前端,減少服務(wù)器與寬度的負(fù)擔(dān))
4)界面和應(yīng)用相分離(ajax將界面和應(yīng)用分離也就是數(shù)據(jù)與呈現(xiàn)相分離)
缺點(diǎn):
1)ajax不支持瀏覽器back按鈕
2)安全問題 Aajax暴露了與服務(wù)器交互的細(xì)節(jié)
3)對搜索引擎的支持比較弱
4)破壞了Back與History后退按鈕的正常行為等瀏覽器機(jī)制
7、闡述一下異步加載JS的幾種方案(異步加載:瀏覽器在下載執(zhí)行js的同時(shí),還會(huì)繼續(xù)進(jìn)行后續(xù)頁面的處理)
方案1)異步加載的方案: 動(dòng)態(tài)插入 script 標(biāo)簽
方案2)通過 ajax 去獲取 js 代碼,然后通過 eval 執(zhí)行
方案3)script 標(biāo)簽上添加 defer 或者 async 屬性
方案4)創(chuàng)建并插入 iframe,讓它異步執(zhí)行 js
8、json字符串與對象如何相互轉(zhuǎn)換
把JSON格式轉(zhuǎn)成對象:JSON.parse()
把對象轉(zhuǎn)成標(biāo)準(zhǔn)json:JSON.stringify()
使用eval能夠把字符串盡量轉(zhuǎn)成js運(yùn)行的代碼 eval(’(’ + jsonstr + ‘)’)
eval是不安全的(可能會(huì)注入不必要的東西),通過new Function(’’,‘return’+json)();可以解決該問題
9、介紹一下XMLHttpRequest對象,他有哪些常用方法和屬性
XMLHttpRequest是ajax的核心,通過XMLHttpRequest對象,Web開發(fā)人員可以在頁面加載以后進(jìn)行頁面的局部更新
常用的方法:
open(get/post,url,是否異步)創(chuàng)建http請求
send()發(fā)送請求給服務(wù)器
setRequestHeader()設(shè)置頭信息(使用post才會(huì)用到,get并不需要調(diào)用該方法)
常用的屬性:
onreadystatechange 用于監(jiān)聽ajax的工作狀態(tài)(readyState變化時(shí)會(huì)調(diào)用此方法)
readyState 用來存放XMLHttpRequest的狀態(tài)
status 服務(wù)器返回的狀態(tài)碼
responseText 服務(wù)器返回的文本內(nèi)容
10、說下readyState屬性是干嘛的,都有哪幾個(gè)狀態(tài)
readyState屬性用來存放XMLHttpRequest的狀態(tài),監(jiān)聽從0-4發(fā)生不同的變化
0:請求未初始化(此時(shí)還沒有調(diào)用open)
1:服務(wù)器連接已建立,已經(jīng)發(fā)送請求開始監(jiān)聽
2:請求已接收,已經(jīng)收到服務(wù)器返回的內(nèi)容
3:請求處理中,解析服務(wù)器響應(yīng)內(nèi)容
4:請求已完成,且響應(yīng)就緒
以上就是“絕對經(jīng)典的ajax面試題及答案”,你能回答上來嗎?如果想要了解更多的Java面試題相關(guān)內(nèi)容,可以關(guān)注動(dòng)力節(jié)點(diǎn)Java官網(wǎng)。
相關(guān)閱讀

初級 202925

初級 203221

初級 202629

初級 203743