一道很熟悉的前端面试题,你怎么答?
大家好,我是若川。
最近這幾年,云計(jì)算的普及和 HTML5 技術(shù)的快速發(fā)展,越來(lái)越多的應(yīng)用轉(zhuǎn)向了瀏覽器 / 服務(wù)器(B/S)架構(gòu),這種改變讓瀏覽器的重要性與日俱增,視頻、音頻、游戲幾大核心場(chǎng)景也都在逐漸往 Web 使用場(chǎng)景切換。可以說(shuō),在 PC 端,瀏覽器已經(jīng)處于絕對(duì)的統(tǒng)治地位。
作為開(kāi)發(fā)工程師,理解瀏覽器是如何工作的,對(duì)我們做業(yè)務(wù)的技術(shù)選型、架構(gòu)設(shè)計(jì)等都有非常重要的作用,讓我們可以準(zhǔn)確評(píng)估 Web 開(kāi)發(fā)項(xiàng)目的可行性,站在更高維度審視頁(yè)面,以及在快節(jié)奏的技術(shù)迭代中把握住問(wèn)題的本質(zhì)。
可是我發(fā)現(xiàn),大部分前端工程師對(duì)瀏覽器的理解,其實(shí)并不深入透徹。比如,一道大家都熟悉的面試題:“在瀏覽器里,從輸入 URL 到頁(yè)面展示中間發(fā)生了什么?”
這道題涉及到網(wǎng)絡(luò)、操作系統(tǒng)、Web 等一系列的知識(shí),如果你要開(kāi)發(fā)流暢的頁(yè)面,或者診斷 Web 頁(yè)面中的性能問(wèn)題,那你就需要了解 URL 是怎么變成頁(yè)面的,只有弄懂這些之后,你才可以站在全局的角度定位問(wèn)題或者寫(xiě)出高效的代碼。
瀏覽器確實(shí)會(huì)涉及很多概念,不僅繁多而且瑣碎,包括網(wǎng)絡(luò)、渲染、安全,以及大前端相關(guān)的大量概念。比如,首屏的顯示就涉及了 DNS、HTTP、DOM 解析、CSS 阻塞、JavaScript 阻塞等技術(shù)因素,其中一項(xiàng)沒(méi)處理好就可能導(dǎo)致整個(gè)頁(yè)面的延時(shí)。如果沒(méi)有系統(tǒng)的學(xué)習(xí),很容易出現(xiàn)遺漏和盲點(diǎn)。
所以,一開(kāi)始就得建立起來(lái)瀏覽器的宏觀視角,搭建起“瀏覽器知識(shí)大廈”的腳手架,這樣就可以把這些知識(shí)點(diǎn)串成線,連成網(wǎng),最終形成自己的知識(shí)體系,練就像專(zhuān)家一樣思考問(wèn)題、解決問(wèn)題的能力。
剛開(kāi)始研究這東西時(shí),沒(méi)少在網(wǎng)上找資料。讓我覺(jué)得很有收獲的,是李兵寫(xiě)的《瀏覽器工作原理與實(shí)踐》,老李是前盛大創(chuàng)新院高級(jí)研究員,現(xiàn)在是一名創(chuàng)業(yè)者,深耕瀏覽器和前端領(lǐng)域十多年,經(jīng)驗(yàn)很是豐富。
他的經(jīng)歷也非常傳奇(下面詳細(xì)說(shuō)),自然寫(xiě)的專(zhuān)欄也是與眾不同,更具實(shí)操性。我現(xiàn)在也經(jīng)常拿出來(lái) 2 刷,整體讀起來(lái)的感覺(jué),就是通俗易懂,深入淺出,讓我把瀏覽器,把網(wǎng)絡(luò)、頁(yè)面渲染、JavaScript、瀏覽器安全、V8 原理等知識(shí)都串聯(lián)起來(lái),對(duì)整個(gè)前端體系有了全新的認(rèn)識(shí)。
而且圖文并茂的展現(xiàn),比如下面是“線程之間共享進(jìn)程中的數(shù)據(jù)示意圖”:
最重要的是,他把前端性能優(yōu)化的底層邏輯能講明白講透徹,讓我再碰到一些奇怪的問(wèn)題,不用一句一句地看代碼,很大程度提高了自我查找和解決問(wèn)題的能力。現(xiàn)在有一萬(wàn)多人學(xué)習(xí),即將恢復(fù)到原價(jià)?129 元了,建議先買(mǎi)后看。
拼團(tuán)+口令「liulanqi8」立省?¥40
原價(jià)¥129,僅限?50?個(gè)名額
說(shuō)起李兵,是個(gè)傳奇人物。08年的時(shí)候,他就基于 Chromium 和 IE 發(fā)布了一款雙核瀏覽器:太陽(yáng)花。?這是國(guó)內(nèi)第一款雙核瀏覽器?,你在使用它的時(shí)候,除了能享受到Chrome的快捷之外,還能兼容只支持IE的站點(diǎn)。
開(kāi)發(fā)過(guò)程中最大的挑戰(zhàn)是如何在 Chromium 中集成 IE 模塊,為此花了大量時(shí)間來(lái)研究 Chromium 的進(jìn)程架構(gòu)以及渲染流程。可能現(xiàn)在你不覺(jué)得有多厲害,但在當(dāng)時(shí),這款瀏覽器,在沒(méi)有任何宣傳的情況下,?日活達(dá)到了20多萬(wàn)。
之后李兵去了盛大創(chuàng)新院,參與研發(fā)WebOS項(xiàng)目,?基于WebKit內(nèi)核打造一個(gè)能和安卓并存的操作系統(tǒng)。在團(tuán)隊(duì)中負(fù)責(zé) HTML5 特性的實(shí)現(xiàn),比如實(shí)現(xiàn) Web Workers、Application Cache、LocalStorage、IndexedDB、CSS3 部分動(dòng)畫(huà)效果等。
后來(lái),他又到了順網(wǎng)科技,和團(tuán)隊(duì)打造了一款給?全國(guó)網(wǎng)吧使用的“F1瀏覽器”,日啟量達(dá)到2000萬(wàn)。?大家都知道,網(wǎng)吧的電腦環(huán)境異常復(fù)雜,頁(yè)面劫持經(jīng)常發(fā)生,再加上每天千萬(wàn)級(jí)別的啟動(dòng)量,?對(duì)頁(yè)面安全、加載速度和流暢度都有很高的要求。
可以說(shuō),這些經(jīng)歷,讓李兵在瀏覽器的渲染流程、瀏覽器安全、頁(yè)面性能的優(yōu)化等核心技術(shù)上,有獨(dú)到理解和獨(dú)家經(jīng)驗(yàn)。
這個(gè)課也幫助到很多人,截了點(diǎn)評(píng)價(jià)供參考。
有多干貨,看看目錄吧。
學(xué)習(xí)前端最重要的是要理解瀏覽器的工作原理,畢竟我們寫(xiě)的代碼最終是要被瀏覽器處理的,理解瀏覽器背后的原理可以幫我們更快速定位問(wèn)題,找到問(wèn)題的解決方案。了解瀏覽器是如何工作的,能夠讓你站在更高的角度去理解前端。
重要的事情,再說(shuō)一遍:
拼團(tuán)+口令「liulanqi8」立省?¥40
原價(jià)¥129,僅限?50?個(gè)名額
幫你到這了
2 杯奶茶的錢(qián),就能掌握前端知識(shí)本源,以不變應(yīng)萬(wàn)變,幾年后的你,會(huì)感謝自己今天的投資。?
👇 點(diǎn)擊「閱讀原文」,到手立省¥80,僅限 50 個(gè)名額!。
需要購(gòu)買(mǎi)可以先加我 ruochuan12 溝通, 可以返現(xiàn)20左右,超值。
總結(jié)
以上是生活随笔為你收集整理的一道很熟悉的前端面试题,你怎么答?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 《数学建模与数学实验》第5版 统计分析
- 下一篇: 前端学习(3174):react-hel