前端面試題集錦(高級(jí)篇)

常見(jiàn)的瀏覽器內(nèi)核有哪些?介紹一下你對(duì)瀏覽器內(nèi)核的理解英妓?
  1. Trident內(nèi)核:IE,MaxThon,TT,The World,360,搜狗瀏覽器等云头。[又稱(chēng)MSHTML]
  • ** Gecko內(nèi)核**:Mozilla Firefox.
  • WebKit內(nèi)核:Safari丐膝、Chrome.
  • Presto:OperaPresto

瀏覽器內(nèi)核主要分成兩部分:渲染引擎(layout engineer或Rendering Engine)和JS引擎量愧。

  • 渲染引擎:負(fù)責(zé)取得網(wǎng)頁(yè)的內(nèi)容(HTML钾菊、XML、圖像等等)侠畔、整理訊息(例如加入CSS等)结缚,以及計(jì)算網(wǎng)頁(yè)的顯示方式损晤,然后會(huì)輸出至顯示器或打印機(jī)软棺。瀏覽器的內(nèi)核的不同對(duì)于網(wǎng)頁(yè)的語(yǔ)法解釋會(huì)有不同,所以渲染的效果也不相同尤勋。所有網(wǎng)頁(yè)瀏覽器喘落、電子郵件客戶端以及其它需要編輯、顯示網(wǎng)絡(luò)內(nèi)容的應(yīng)用程序都需要內(nèi)核最冰。
  • **JS引擎 **:解析和執(zhí)行javascript來(lái)實(shí)現(xiàn)網(wǎng)頁(yè)的動(dòng)態(tài)效果瘦棋。

HTTP 狀態(tài)消息 200 302 304 403 404 500 分別表示什么?
  • 100 Continue 繼續(xù)暖哨,一般在發(fā)送post請(qǐng)求時(shí)赌朋,已發(fā)送了http header之后服務(wù)端將返回此信息,表示確認(rèn)篇裁,之后發(fā)送具體參數(shù)信息
  • 200:OK 請(qǐng)求已成功沛慢,請(qǐng)求所希望的響應(yīng)頭或數(shù)據(jù)體將隨此響應(yīng)返回。
  • 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í)性重定向。請(qǐng)求的資源臨時(shí)從不同的 URL 響應(yīng)請(qǐng)求黍聂。由于這樣的重定向是臨時(shí)的躺苦,客戶端應(yīng)當(dāng)繼續(xù)向原有地址發(fā)送以后的請(qǐng)求。只有在 Cache-Control 或 Expires 中進(jìn)行了指定的情況下产还,這個(gè)響應(yīng)才是可緩存的匹厘。
  • 303:See Other 臨時(shí)性重定向,且總是使用 GET 請(qǐng)求新的 URL
  • 304:Not Modified 自從上次請(qǐng)求后脐区,請(qǐng)求的網(wǎng)頁(yè)未修改過(guò)集乔。如果客戶端發(fā)送了一個(gè)帶條件的 GET 請(qǐng)求且該請(qǐng)求已被允許,而文檔的內(nèi)容(自上次訪問(wèn)以來(lái)或者根據(jù)請(qǐng)求的條件)并沒(méi)有改變坡椒,則服務(wù)器應(yīng)當(dāng)返回這個(gè)狀態(tài)碼扰路。304 響應(yīng)禁止包含消息體,因此始終以消息頭后的第一個(gè)空行結(jié)尾倔叼。
  • 400:** Bad Request** 服務(wù)器無(wú)法理解請(qǐng)求的格式汗唱,客戶端不應(yīng)當(dāng)嘗試再次使用相同的內(nèi)容發(fā)起請(qǐng)求。
  • 401:** Unauthorized** 請(qǐng)求未授權(quán)丈攒。
  • 403:Forbidden 禁止訪問(wèn)哩罪。服務(wù)器已經(jīng)理解請(qǐng)求授霸,但是拒絕執(zhí)行它。
  • 404:Not Found 找不到如何與 URL 相匹配的資源际插。請(qǐng)求失敗碘耳,請(qǐng)求所希望得到的資源未被在服務(wù)器上發(fā)現(xiàn)。
  • 500:Internal Server Error 最常見(jiàn)的服務(wù)器端錯(cuò)誤框弛。服務(wù)器遇到了一個(gè)未曾預(yù)料的狀況辛辨,導(dǎo)致了它無(wú)法完成對(duì)請(qǐng)求的處理。一般來(lái)說(shuō)瑟枫,這個(gè)問(wèn)題都會(huì)在服務(wù)器端的源代碼出現(xiàn)錯(cuò)誤時(shí)出現(xiàn)斗搞。
  • 503 Service Unavailable 服務(wù)器端暫時(shí)無(wú)法處理請(qǐng)求(可能是過(guò)載或維護(hù))。

一個(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綁定等等降淮;

簡(jiǎn)潔版(4次“握手”):

  1. 瀏覽器根據(jù)請(qǐng)求的URL交給DNS域名解析超埋,找到真實(shí)IP,向服務(wù)器發(fā)起請(qǐng)求佳鳖;
  2. 服務(wù)器交給后臺(tái)處理完成后返回?cái)?shù)據(jù)霍殴,瀏覽器接收文件(HTML、JS系吩、CSS来庭、圖象等);
  3. 瀏覽器對(duì)加載到的資源(HTML穿挨、JS月弛、CSS等)進(jìn)行語(yǔ)法解析肴盏,建立相應(yīng)的內(nèi)部數(shù)據(jù)結(jié)構(gòu)(如HTML的DOM);
  4. 載入解析到的資源文件帽衙,渲染頁(yè)面菜皂,完成。

詳細(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ì)話冀泻,客戶端發(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è)面顯示完成。

優(yōu)雅降級(jí)和漸進(jìn)增強(qiáng)班巩?
  • 優(yōu)雅降級(jí):Web站點(diǎn)在所有新式瀏覽器中都能正常工作,如果用戶使用的是老式瀏覽器,則代碼會(huì)針對(duì)舊版本的IE進(jìn)行降級(jí)處理了,使之在舊式瀏覽器上以某種形式降級(jí)體驗(yàn)卻不至于完全不能用追逮。 如:border-shadow
  • 漸進(jìn)增強(qiáng):從被所有瀏覽器支持的基本功能開(kāi)始泣栈,逐步地添加那些只有新版本瀏覽器才支持的功能,向頁(yè)面增加不影響基礎(chǔ)瀏覽器的額外樣式和功能的。當(dāng)瀏覽器支持時(shí)抑进,它們會(huì)自動(dòng)地呈現(xiàn)出來(lái)并發(fā)揮作用强经。 如:默認(rèn)使用flash上傳,但如果瀏覽器支持 HTML5 的文件上傳功能单匣,則使用HTML5實(shí)現(xiàn)更好的體驗(yàn)夕凝;

WEB應(yīng)用從服務(wù)器主動(dòng)推送Data到客戶端有那些方式宝穗?
  • html5提供的Websocket
  • 不可見(jiàn)的iframe
  • WebSocket通過(guò)Flash
  • XHR長(zhǎng)時(shí)間連接
  • XHR Multipart Streaming
  • <script>標(biāo)簽的長(zhǎng)時(shí)間連接(可跨域)

webSocket如何兼容低瀏覽器?
  • Adobe Flash Socket 码秉、
  • ActiveX HTMLFile (IE) 逮矛、
  • 基于 multipart 編碼發(fā)送 XHR 、
  • 基于長(zhǎng)輪詢(xún)的 XHR

對(duì)Node的優(yōu)點(diǎn)和缺點(diǎn)提出了自己的看法转砖?
  • 優(yōu)點(diǎn):因?yàn)镹ode是基于事件驅(qū)動(dòng)和無(wú)阻塞的须鼎,所以非常適合處理并發(fā)請(qǐng)求, 因此構(gòu)建在Node上的代理服務(wù)器相比其他技術(shù)實(shí)現(xiàn)(如Ruby)的服務(wù)器表現(xiàn)要好得多府蔗。 此外晋控,與Node代理服務(wù)器交互的客戶端代碼是由javascript語(yǔ)言編寫(xiě)的, 因此客戶端和服務(wù)器端都用同一種語(yǔ)言編寫(xiě)姓赤,這是非常美妙的事情赡译。
  • 缺點(diǎn):Node是一個(gè)相對(duì)新的開(kāi)源項(xiàng)目,所以不太穩(wěn)定不铆,它總是一直在變蝌焚, 而且缺少足夠多的第三方庫(kù)支持∈某猓看起來(lái)只洒,就像是Ruby/Rails當(dāng)年的樣子。

頁(yè)面重構(gòu)怎么操作劳坑?

該題應(yīng)謹(jǐn)慎回答自己擅長(zhǎng)的毕谴,避免給自己挖坑。

  1. 表格(table)布局改為DIV+CSS
  1. 使網(wǎng)站前端兼容于現(xiàn)代瀏覽器(針對(duì)于不合規(guī)范的CSS距芬、如對(duì)IE6有效的)
  2. 對(duì)于移動(dòng)平臺(tái)的優(yōu)化
  3. 針對(duì)于SEO進(jìn)行優(yōu)化
  4. 深層次的網(wǎng)站重構(gòu)應(yīng)該考慮的方面
  5. 減少代碼間的耦合 讓代碼保持彈性
  6. 嚴(yán)格按規(guī)范編寫(xiě)代碼
  7. 設(shè)計(jì)可擴(kuò)展的API 代替舊有的框架涝开、語(yǔ)言(如VB)
  8. 增強(qiáng)用戶體驗(yàn)
  9. 通常來(lái)說(shuō)對(duì)于速度的優(yōu)化也包含在重構(gòu)中
  10. 壓縮JS、CSS蔑穴、image等前端資源(通常是由服務(wù)器來(lái)解決)
  11. 程序的性能優(yōu)化(如數(shù)據(jù)讀寫(xiě))
  12. 采用CDN來(lái)加速資源加載
  13. 對(duì)于JS DOM的優(yōu)化
  14. HTTP服務(wù)器的文件緩存

網(wǎng)頁(yè)驗(yàn)證碼是干嘛的忠寻,是為了解決什么安全問(wèn)題?

增加驗(yàn)證碼的主要目的是減少非正常的請(qǐng)求,以保護(hù)用戶權(quán)益.所謂非正常的請(qǐng)求有以下:

  1. 爬蟲(chóng)腳本登錄,比如登錄之后批量發(fā)布不良信息.
  2. 掃號(hào)腳本暴力探測(cè)用戶帳號(hào),比如暴力破解某些用戶的密碼.
  3. 頻繁的使用某一個(gè)涉及后臺(tái)性能瓶頸的功能,導(dǎo)致系統(tǒng)負(fù)載過(guò)高.

如何解決跨域問(wèn)題?

jsonp存和、 iframe奕剃、window.name、window.postMessage捐腿、服務(wù)器上設(shè)置代理頁(yè)面


請(qǐng)描述一下 cookies纵朋,sessionStorage 和 localStorage 的區(qū)別?

cookie是網(wǎng)站為了標(biāo)示用戶身份而儲(chǔ)存在用戶本地終端(Client Side)上的數(shù)據(jù)(通常經(jīng)過(guò)加密)茄袖。
cookie數(shù)據(jù)始終在同源的http請(qǐng)求中攜帶(即使不需要)操软,記會(huì)在瀏覽器和服務(wù)器間來(lái)回傳遞。
sessionStorage和localStorage不會(huì)自動(dòng)把數(shù)據(jù)發(fā)給服務(wù)器宪祥,僅在本地保存聂薪。

存儲(chǔ)大小
cookie數(shù)據(jù)大小不能超過(guò)4k家乘。

sessionStorage和localStorage 雖然也有存儲(chǔ)大小的限制,但比cookie大得多藏澳,可以達(dá)到5M或更大仁锯。

有期時(shí)間
localStorage 存儲(chǔ)持久數(shù)據(jù),瀏覽器關(guān)閉后數(shù)據(jù)不丟失除非主動(dòng)刪除數(shù)據(jù)翔悠;
sessionStorage 數(shù)據(jù)在當(dāng)前瀏覽器窗口關(guān)閉后自動(dòng)刪除业崖。
cookie 設(shè)置的cookie過(guò)期時(shí)間之前一直有效,即使窗口或?yàn)g覽器關(guān)閉


頁(yè)面可見(jiàn)性(Page Visibility API) 可以有哪些用途蓄愁?
  • 通過(guò) visibilityState 的值檢測(cè)頁(yè)面當(dāng)前是否可見(jiàn)双炕,以及打開(kāi)網(wǎng)頁(yè)的時(shí)間等;
  • 在頁(yè)面被切換到其他后臺(tái)進(jìn)程的時(shí)候,自動(dòng)暫停音樂(lè)或視頻的播放撮抓;

如何在頁(yè)面上實(shí)現(xiàn)一個(gè)圓形的可點(diǎn)擊區(qū)域妇斤?

  1. border-radius
  1. map+area或者svg
  2. js實(shí)現(xiàn) 需要求一個(gè)點(diǎn)在不在圓上簡(jiǎn)單算法、獲取鼠標(biāo)坐標(biāo)等等
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末胀滚,一起剝皮案震驚了整個(gè)濱河市趟济,隨后出現(xiàn)的幾起案子乱投,更是在濱河造成了極大的恐慌咽笼,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件戚炫,死亡現(xiàn)場(chǎng)離奇詭異剑刑,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)双肤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén)施掏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人茅糜,你說(shuō)我怎么就攤上這事七芭。” “怎么了蔑赘?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵狸驳,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我缩赛,道長(zhǎng)耙箍,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任酥馍,我火速辦了婚禮辩昆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘旨袒。我一直安慰自己汁针,他們只是感情好术辐,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著施无,像睡著了一般术吗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上帆精,一...
    開(kāi)封第一講書(shū)人閱讀 51,301評(píng)論 1 301
  • 那天较屿,我揣著相機(jī)與錄音,去河邊找鬼卓练。 笑死隘蝎,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的襟企。 我是一名探鬼主播嘱么,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼顽悼!你這毒婦竟也來(lái)了曼振?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蔚龙,失蹤者是張志新(化名)和其女友劉穎冰评,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體木羹,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡甲雅,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了坑填。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抛人。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖脐瑰,靈堂內(nèi)的尸體忽然破棺而出妖枚,到底是詐尸還是另有隱情,我是刑警寧澤苍在,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布绝页,位于F島的核電站,受9級(jí)特大地震影響忌穿,放射性物質(zhì)發(fā)生泄漏抒寂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一掠剑、第九天 我趴在偏房一處隱蔽的房頂上張望屈芜。 院中可真熱鬧,春花似錦、人聲如沸井佑。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)躬翁。三九已至焦蘑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間盒发,已是汗流浹背例嘱。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宁舰,地道東北人拼卵。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蛮艰,于是被迫代替她去往敵國(guó)和親腋腮。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容