開發(fā)及優(yōu)化面試題

1. 規(guī)避javascript多人開發(fā)函數(shù)重名問題

  • 命名空間
  • 封閉空間
  • js模塊化mvc(數(shù)據(jù)層、表現(xiàn)層、控制層)
  • seajs
  • 變量轉(zhuǎn)換成對(duì)象的屬性
  • 對(duì)象化

2. 請(qǐng)說出三種減低頁面加載時(shí)間的方法

  • 壓縮css、js文件
  • 合并js、css文件,減少http請(qǐng)求
  • 外部js、css文件放在最底下
  • 減少dom操作,盡可能用變量替代不必要的dom操作

3. 你所了解到的Web攻擊技術(shù)

  • XSS(Cross-Site Scripting,跨站腳本攻擊):指通過存在安全漏洞的Web網(wǎng)站注冊(cè)用戶的瀏覽器內(nèi)運(yùn)行非法的HTML標(biāo)簽或者JavaScript進(jìn)行的一種攻擊。
  • SQL注入攻擊
  • CSRF(Cross-Site Request Forgeries,跨站點(diǎn)請(qǐng)求偽造):指攻擊者通過設(shè)置好的陷阱,強(qiáng)制對(duì)已完成的認(rèn)證用戶進(jìn)行非預(yù)期的個(gè)人信息或設(shè)定信息等某些狀態(tài)更新。

4. web前端開發(fā),如何提高頁面性能優(yōu)化?

  • 內(nèi)容方面:

    1. 減少 HTTP 請(qǐng)求 (Make Fewer HTTP Requests)

    2. 減少 DOM 元素?cái)?shù)量 (Reduce the Number of DOM Elements)

    3. 使得 Ajax 可緩存 (Make Ajax Cacheable)

  • 針對(duì)CSS:

    1. 把 CSS 放到代碼頁上端 (Put Stylesheets at the Top)

    2. 從頁面中剝離 JavaScript 與 CSS (Make JavaScript and CSS External)

    3. 精簡(jiǎn) JavaScript 與 CSS (Minify JavaScript and CSS)

    4. 避免 CSS 表達(dá)式 (Avoid CSS Expressions)

  • 針對(duì)JavaScript :

    1. 腳本放到 HTML 代碼頁底部 (Put Scripts at the Bottom)

    2. 從頁面中剝離 JavaScript 與 CSS (Make JavaScript and CSS External)

    3. 精簡(jiǎn) JavaScript 與 CSS (Minify JavaScript and CSS)

    4. 移除重復(fù)腳本 (Remove Duplicate Scripts)

  • 面向圖片(Image):

    1. 優(yōu)化圖片

    2. 不要在 HTML 中使用縮放圖片

    3. 使用恰當(dāng)?shù)膱D片格式

    4. 使用 CSS Sprites 技巧對(duì)圖片優(yōu)化

5. 前端開發(fā)中,如何優(yōu)化圖像?圖像格式的區(qū)別?

  • 優(yōu)化圖像:

    1. 不用圖片,盡量用css3代替。 比如說要實(shí)現(xiàn)修飾效果,如半透明、邊框、圓角、陰影、漸變等,在當(dāng)前主流瀏覽器中都可以用CSS達(dá)成。

    2. 使用矢量圖SVG替代位圖。對(duì)于絕大多數(shù)圖案、圖標(biāo)等,矢量圖更小,且可縮放而無需生成多套圖。現(xiàn)在主流瀏覽器都支持SVG了,所以可放心使用!

    3. 使用恰當(dāng)?shù)膱D片格式。我們常見的圖片格式有JPEG、GIF、PNG?;旧?,內(nèi)容圖片多為照片之類的,適用于JPEG。而修飾圖片通常更適合用無損壓縮的PNG。GIF基本上除了GIF動(dòng)畫外不要使用。且動(dòng)畫的話,也更建議用video元素和視頻格式,或用SVG動(dòng)畫取代。

    4. 按照HTTP協(xié)議設(shè)置合理的緩存。

    5. 使用字體圖標(biāo)webfont、CSS Sprites等。

    6. 用CSS或JavaScript實(shí)現(xiàn)預(yù)加載。

    7. WebP圖片格式能給前端帶來的優(yōu)化。WebP支持無損、有損壓縮,動(dòng)態(tài)、靜態(tài)圖片,壓縮比率優(yōu)于GIF、JPEG、JPEG2000、PG等格式,非常適合用于網(wǎng)絡(luò)等圖片傳輸。

  • 圖像格式的區(qū)別:

    1. 矢量圖:圖標(biāo)字體,如 font-awesome;svg

    2. 位圖:gif,jpg(jpeg),png

    3. 區(qū)別:

      • gif:是是一種無損,8位圖片格式。具有支持動(dòng)畫,索引透明,壓縮等特性。適用于做色彩簡(jiǎn)單(色調(diào)少)的圖片,如logo,各種小圖標(biāo)icons等。

      • JPEG格式是一種大小與質(zhì)量相平衡的壓縮圖片格式。適用于允許輕微失真的色彩豐富的照片,不適合做色彩簡(jiǎn)單(色調(diào)少)的圖片,如logo,各種小圖標(biāo)icons等。

      • png:PNG可以細(xì)分為三種格式:PNG8,PNG24,PNG32。后面的數(shù)字代表這種PNG格式最多可以索引和存儲(chǔ)的顏色值。

      • 關(guān)于透明:PNG8支持索引透明和alpha透明;PNG24不支持透明;而PNG32在24位的PNG基礎(chǔ)上增加了8位(256階)的alpha通道透明;

    4. 優(yōu)缺點(diǎn):

      • 能在保證最不失真的情況下盡可能壓縮圖像文件的大小。

      • 對(duì)于需要高保真的較復(fù)雜的圖像,PNG雖然能無損壓縮,但圖片文件較大,不適合應(yīng)用在Web頁面上。

6. 瀏覽器是如何渲染頁面的?

渲染的流程如下:

  • 解析HTML文件,創(chuàng)建DOM樹。自上而下,遇到任何樣式(link、style)與腳本(script)都會(huì)阻塞(外部樣式不阻塞后續(xù)外部腳本的加載)。

  • 解析CSS。優(yōu)先級(jí):瀏覽器默認(rèn)設(shè)置<用戶設(shè)置<外部樣式<內(nèi)聯(lián)樣式<HTML中的style樣式;

  • 將CSS與DOM合并,構(gòu)建渲染樹(Render Tree)

  • 布局和繪制,重繪(repaint)和重排(reflow)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容