教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

web前端面試題(匯總)

更新時間:2018年11月26日13時21分 來源:傳智播客 瀏覽次數(shù):

web前端面試題(匯總)
一、理論知識

1.1、講講輸入完網(wǎng)址按下回車,到看到網(wǎng)頁這個過程中發(fā)生了什么

a. 域名解析

b. 發(fā)起TCP的3次握手

c. 建立TCP連接后發(fā)起http請求

d. 服務(wù)器端響應(yīng)http請求,瀏覽器得到html代碼

e. 瀏覽器解析html代碼,并請求html代碼中的資源

f. 瀏覽器對頁面進(jìn)行渲染呈現(xiàn)給用戶

參考《一次完整的HTTP事務(wù)是怎樣一個過程》

web前端面試試題

1.2、談?wù)勀銓η岸诵阅軆?yōu)化的理解

a. 請求數(shù)量:合并腳本和樣式表,CSS Sprites,拆分初始化負(fù)載,劃分主域

b. 請求帶寬:開啟GZip,精簡JavaScript,移除重復(fù)腳本,圖像優(yōu)化,將icon做成字體

c. 緩存利用:使用CDN,使用外部JavaScript和CSS,添加Expires頭,減少DNS查找,配置ETag,使AjaX可緩存

d. 頁面結(jié)構(gòu):將樣式表放在頂部,將腳本放在底部,盡早刷新文檔的輸出

e. 代碼校驗:避免CSS表達(dá)式,避免重定向

參考《前端工程與性能優(yōu)化》

1.3、前端 MV*框架的意義

早期前端都是比較簡單,基本以頁面為工作單元,內(nèi)容以瀏覽型為主,也偶爾有簡單的表單操作,基本不太需要框架.

隨著 AJAX 的出現(xiàn),Web2.0的興起,人們可以在頁面上可以做比較復(fù)雜的事情了,然后前端框架才真正出現(xiàn)了。

如果是頁面型產(chǎn)品,多數(shù)確實不太需要它,因為頁面中的 JavaScript代碼,處理交互的絕對遠(yuǎn)遠(yuǎn)超過處理模型的,但是如果是應(yīng)用軟件類產(chǎn)品,這就太需要了。

長期做某個行業(yè)軟件的公司,一般都會沉淀下來一些業(yè)務(wù)組件,主要體現(xiàn)在數(shù)據(jù)模型、業(yè)務(wù)規(guī)則和業(yè)務(wù)流程,這些組件基本都存在于后端,在前端很少有相應(yīng)的組織。

從協(xié)作關(guān)系上講,很多前端開發(fā)團(tuán)隊每個成員的職責(zé)不是很清晰,有了前端的 MV框架,這個狀況會大有改觀。

之所以感受不到 MV*框架的重要性,是因為Model部分代碼較少,View的相對多一些。如果主要在操作View和Controller,那當(dāng)然 jQuery 這類庫比較好用了。

參考《前端 MV*框架的意義》

1.4、請簡述盒模型

IE6盒子模型與W3C盒子模型。

文檔中的每個元素被描繪為矩形盒子。盒子有四個邊界:外邊距邊界margin, 邊框邊界border, 內(nèi)邊距邊界padding與內(nèi)容邊界content。

CSS3中有個box-sizing屬性可以控制盒子的計算方式,

content-box:padding和border不被包含在定義的width和height之內(nèi)。對象的實際寬度等于設(shè)置的width值和border、padding之和。(W3C盒子模型)

border-box:padding和border被包含在定義的width和height之內(nèi)。對象的實際寬度就等于設(shè)置的width值。(IE6盒子模型)

參考《盒模型》

1.5、請你談?wù)凜ookie的弊端

a. 每個特定的域名下最多生成的cookie個數(shù)有限制

b. IE和Opera 會清理近期最少使用的cookie,F(xiàn)irefox會隨機清理cookie

c. cookie的最大大約為4096字節(jié),為了兼容性,一般不能超過4095字節(jié)

d. 安全性問題。如果cookie被人攔截了,那人就可以取得所有的session信息。

1.6、瀏覽器本地存儲

在HTML5中提供了sessionStorage和localStorage.

sessionStorage用于本地存儲一個會話(session)中的數(shù)據(jù),這些數(shù)據(jù)只有在同一個會話中的頁面才能訪問并且當(dāng)會話結(jié)束后數(shù)據(jù)也隨之銷毀,是會話級別的存儲。

localStorage用于持久化的本地存儲,除非主動刪除數(shù)據(jù),否則數(shù)據(jù)是永遠(yuǎn)不會過期的。

1.7、web storage和cookie的區(qū)別

a. Cookie的大小是受限的

b. 每次你請求一個新的頁面的時候Cookie都會被發(fā)送過去,這樣無形中浪費了帶寬

c. cookie還需要指定作用域,不可以跨域調(diào)用

d. Web Storage擁有setItem,getItem等方法,cookie需要前端開發(fā)者自己封裝setCookie,getCookie

e. Cookie的作用是與服務(wù)器進(jìn)行交互,作為HTTP規(guī)范的一部分而存在 ,而Web Storage僅僅是為了在本地“存儲”數(shù)據(jù)而生

f. IE7、IE6中的UserData通過簡單的代碼封裝可以統(tǒng)一到所有的瀏覽器都支持web storage

1.9、線程與進(jìn)程的區(qū)別

a. 一個程序至少有一個進(jìn)程,一個進(jìn)程至少有一個線程

b. 線程的劃分尺度小于進(jìn)程,使得多線程程序的并發(fā)性高

c. 進(jìn)程在執(zhí)行過程中擁有獨立的內(nèi)存單元,而多個線程共享內(nèi)存,從而極大地提高了程序的運行效率

d. 每個獨立的線程有一個程序運行的入口、順序執(zhí)行序列和程序的出口。但是線程不能夠獨立執(zhí)行,必須依存在應(yīng)用程序中,由應(yīng)用程序提供多個線程執(zhí)行控制

e. 多線程的意義在于一個應(yīng)用程序中,有多個執(zhí)行部分可以同時執(zhí)行。但操作系統(tǒng)并沒有將多個線程看做多個獨立的應(yīng)用,來實現(xiàn)進(jìn)程的調(diào)度和管理以及資源分配

1.10、請說出三種減少頁面加載時間的方法

a. 盡量減少頁面中重復(fù)的HTTP請求數(shù)量

b. 服務(wù)器開啟gzip壓縮

c. css樣式的定義放置在文件頭部

d. Javascript腳本放在文件末尾

e. 壓縮合并Javascript、CSS代碼

f. 使用多域名負(fù)載網(wǎng)頁內(nèi)的多個文件、圖片

參考《減低頁面加載時間的方法》

1.11、你都使用哪些工具來測試代碼的性能?

JSPerf, Dromaeo

1.12、你遇到過比較難的技術(shù)問題是?你是如何解決的?

1.13、常使用的庫有哪些?常用的前端開發(fā)工具?開發(fā)過什么應(yīng)用或組件?

1.14、列舉IE與其他瀏覽器不一樣的特性?

a. IE的排版引擎是Trident (又稱為MSHTML)

b. Trident內(nèi)核曾經(jīng)幾乎與W3C標(biāo)準(zhǔn)脫節(jié)(2005年)

c. Trident內(nèi)核的大量 Bug等安全性問題沒有得到及時解決

d. JS方面,有很多獨立的方法,例如綁定事件的attachEvent、創(chuàng)建事件的createEventObject等

e. CSS方面,也有自己獨有的處理方式,例如設(shè)置透明,低版本IE中使用濾鏡的方式

參考《Trident(排版引擎)》

1.15、什么叫優(yōu)雅降級和漸進(jìn)增強?

漸進(jìn)增強 progressive enhancement:

針對低版本瀏覽器進(jìn)行構(gòu)建頁面,保證最基本的功能,然后再針對高級瀏覽器進(jìn)行效果、交互等改進(jìn)和追加功能達(dá)到更好的用戶體驗。

優(yōu)雅降級 graceful degradation:

一開始就構(gòu)建完整的功能,然后再針對低版本瀏覽器進(jìn)行兼容。

區(qū)別:

a. 優(yōu)雅降級是從復(fù)雜的現(xiàn)狀開始,并試圖減少用戶體驗的供給

b. 漸進(jìn)增強則是從一個非?;A(chǔ)的,能夠起作用的版本開始,并不斷擴充,以適應(yīng)未來環(huán)境的需要

c. 降級(功能衰減)意味著往回看;而漸進(jìn)增強則意味著朝前看,同時保證其根基處于安全地帶

參考《優(yōu)雅降級和漸進(jìn)增強的區(qū)別》

1.16、WEB應(yīng)用從服務(wù)器主動推送Data到客戶端有那些方式?

a. html5 websoket

b. WebSocket 通過 Flash

c. XHR長時間連接

d. XHR Multipart Streaming

e. 不可見的Iframe

f.

0 分享到:
和我們在線交談!