金三銀四已經(jīng)過(guò)去了,你升值加薪了嗎?你重新找工作了嗎?你跳槽了嗎?你面試的時(shí)候緊張了嗎???你注意過(guò)面試管問(wèn)你的問(wèn)題了嗎?小猿圈web前端講師分享WEB前端面試題之AJAX面試題,希望對(duì)小伙伴們有所幫助。
1,Ajax是什么? 如何創(chuàng)建一個(gè)Ajax?
ajax是一種創(chuàng)建交互式網(wǎng)頁(yè)的計(jì)算,ajax的全稱(chēng):Asynchronous Javascript And XML。異步傳輸+js+xml。
所謂異步,在這里簡(jiǎn)單地解釋就是:向服務(wù)器發(fā)送請(qǐng)求的時(shí)候,我們不必等待結(jié)果,而是可以同時(shí)做其他的事情,等到有了結(jié)果它自己會(huì)根據(jù)設(shè)定進(jìn)行后續(xù)操作,與此同時(shí),頁(yè)面是不會(huì)發(fā)生整頁(yè)刷新的,提高了用戶(hù)體驗(yàn)
(1)創(chuàng)建XMLHttpRequest對(duì)象,也就是創(chuàng)建一個(gè)異步調(diào)用對(duì)象
(2)創(chuàng)建一個(gè)新的HTTP請(qǐng)求,并指定該HTTP請(qǐng)求的方法、URL及驗(yàn)證信息
(3)設(shè)置響應(yīng)HTTP請(qǐng)求狀態(tài)變化的函數(shù)
(4)發(fā)送HTTP請(qǐng)求
(5)獲取異步調(diào)用返回的數(shù)據(jù)
(6)使用JavaScript和DOM實(shí)現(xiàn)局部刷新
2,同步和異步的區(qū)別?
同步的概念應(yīng)該是來(lái)自于OS中關(guān)于同步的概念:不同進(jìn)程為協(xié)同完成某項(xiàng)工作而在先后次序上調(diào)整(通過(guò)阻塞,喚醒等方式).同步強(qiáng)調(diào)的是順序性.誰(shuí)先誰(shuí)后.異步則不存在這種順序性。
同步:瀏覽器訪問(wèn)服務(wù)器請(qǐng)求,用戶(hù)看得到頁(yè)面刷新,重新發(fā)請(qǐng)求,等請(qǐng)求完,頁(yè)面刷新,新內(nèi)容出現(xiàn),用戶(hù)看到新內(nèi)容,進(jìn)行下一步操作。
異步:瀏覽器訪問(wèn)服務(wù)器請(qǐng)求,用戶(hù)正常操作,瀏覽器后端進(jìn)行請(qǐng)求。等請(qǐng)求完,頁(yè)面不刷新,新內(nèi)容也會(huì)出現(xiàn),用戶(hù)看到新內(nèi)容。
3,如何解決跨域問(wèn)題?
jsonp、 iframe、window.name、window.postMessage、服務(wù)器上設(shè)置代理頁(yè)面
4,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)頁(yè)已永久移動(dòng)到新位置。
302 Found? ? ? 臨時(shí)性重定向。
303 See Other? 臨時(shí)性重定向,且總是使用 GET 請(qǐng)求新的 URI。
304? Not Modified 自從上次請(qǐng)求后,請(qǐng)求的網(wǎng)頁(yè)未修改過(guò)。
400 Bad Request? 服務(wù)器無(wú)法理解請(qǐng)求的格式,客戶(hù)端不應(yīng)當(dāng)嘗試再次使用相同的內(nèi)容發(fā)起請(qǐng)求。
401 Unauthorized 請(qǐng)求未授權(quán)。
403 Forbidden? 禁止訪問(wèn)。
404 Not Found? 找不到如何與 URI 相匹配的資源。
500 Internal Server Error? 最常見(jiàn)的服務(wù)器端錯(cuò)誤。
503 Service Unavailable 服務(wù)器端暫時(shí)無(wú)法處理請(qǐng)求(可能是過(guò)載或維護(hù))
5,一個(gè)頁(yè)面從輸入 URL 到頁(yè)面加載顯示完成,這個(gè)過(guò)程中都發(fā)生了什么?(流程說(shuō)的越詳細(xì)越好)
注:這題勝在區(qū)分度高,知識(shí)點(diǎn)覆蓋廣,再不懂的人,也能答出幾句,而高手可以根據(jù)自己擅長(zhǎng)的領(lǐng)域自由發(fā)揮,從URL規(guī)范、HTTP協(xié)議、DNS、CDN、數(shù)據(jù)庫(kù)查詢(xún)、到瀏覽器流式解析、CSS規(guī)則構(gòu)建、layout、paint、onload/domready、JS執(zhí)行、JS API綁定等等;
詳細(xì)版:
? ? 1、瀏覽器會(huì)開(kāi)啟一個(gè)線程來(lái)處理這個(gè)請(qǐng)求,對(duì) URL 分析判斷如果是 http 協(xié)議就按照 Web 方式來(lái)處理;
? ? 2、調(diào)用瀏覽器內(nèi)核中的對(duì)應(yīng)方法,比如 WebView 中的 loadUrl 方法;
? ? 3、通過(guò)DNS解析獲取網(wǎng)址的IP地址,設(shè)置 UA 等信息發(fā)出第二個(gè)GET請(qǐng)求;
? ? 4、進(jìn)行HTTP協(xié)議會(huì)話,客戶(hù)端發(fā)送報(bào)頭(請(qǐng)求報(bào)頭);
? ? 5、進(jìn)入到web服務(wù)器上的 Web Server,如 Apache、Tomcat、Node.JS 等服務(wù)器;
? ? 6、進(jìn)入部署好的后端應(yīng)用,如 PHP、Java、JavaScript、Python 等,找到對(duì)應(yīng)的請(qǐng)求處理;
? ? 7、處理結(jié)束回饋報(bào)頭,此處如果瀏覽器訪問(wèn)過(guò),緩存上有對(duì)應(yīng)資源,會(huì)與服務(wù)器最后修改時(shí)間對(duì)比,一致則返回304;
? ? 8、瀏覽器開(kāi)始下載html文檔(響應(yīng)報(bào)頭,狀態(tài)碼200),同時(shí)使用緩存;
? ? 9、文檔樹(shù)建立,根據(jù)標(biāo)記請(qǐng)求所需指定MIME類(lèi)型的文件(比如css、js),同時(shí)設(shè)置了cookie;
? ? 10、頁(yè)面開(kāi)始渲染DOM,JS根據(jù)DOM API操作DOM,執(zhí)行事件綁定等,頁(yè)面顯示完成。
簡(jiǎn)潔版:
? ? 瀏覽器根據(jù)請(qǐng)求的URL交給DNS域名解析,找到真實(shí)IP,向服務(wù)器發(fā)起請(qǐng)求;
? ? 服務(wù)器交給后臺(tái)處理完成后返回?cái)?shù)據(jù),瀏覽器接收文件(HTML、JS、CSS、圖象等);
? ? 瀏覽器對(duì)加載到的資源(HTML、JS、CSS等)進(jìn)行語(yǔ)法解析,建立相應(yīng)的內(nèi)部數(shù)據(jù)結(jié)構(gòu)(如HTML的DOM);
? ? 載入解析到的資源文件,渲染頁(yè)面,完成。
以上就是小猿圈web前端講師給大家分享的WEB前端面試題之AJAX面試題,希望對(duì)小伙伴們有所幫助,想要了解更多內(nèi)容的小伙伴可以到小猿圈去看視頻,里面有最新最全面的技術(shù),希望對(duì)你剛剛開(kāi)始學(xué)習(xí)web前端、Java、python的你有所幫助。