各大互聯(lián)網(wǎng)公司2014前端面試題總結(jié)
HTML 篇:1. 你做的頁面在哪些流覽器測(cè)試過?這些瀏覽器的內(nèi)核分別是什么?? IE: trident內(nèi)核? Firefox:gecko 內(nèi)核? Safari:webkit內(nèi)核? Opera
HTML 篇:
1. 你做的頁面在哪些流覽器測(cè)試過?這些瀏覽器的內(nèi)核分別是什么?
? IE: trident內(nèi)核
? Firefox:gecko 內(nèi)核
? Safari:webkit內(nèi)核
? Opera:以前是presto 內(nèi)核,Opera 現(xiàn)已改用Google Chrome的Blink 內(nèi)核 ? Chrome:Blink(基于webkit ,Google 與Opera Software共同開發(fā))
2. 每個(gè)HTML 文件里開頭都有個(gè)很重要的東西,Doctype ,知道這是干什么的嗎?
答案: 聲明位于文檔中的最前面的位置,處于 標(biāo)簽之前。此標(biāo)簽可告知瀏覽器文檔使用哪種 HTML 或 XHTML 規(guī)范。(重點(diǎn):告訴瀏覽器按照何種規(guī)范解析頁面)
3.Quirks 模式是什么?它和Standards 模式有什么區(qū)別
答案:
從IE6開始,引入了Standards 模式,標(biāo)準(zhǔn)模式中,瀏覽器嘗試給符合標(biāo)準(zhǔn)的文檔在規(guī)范上的正確處理達(dá)到在指定瀏覽器中的程度。
在IE6之前CSS 還不夠成熟,所以IE5等之前的瀏覽器對(duì)CSS 的支持很差, IE6將對(duì)CSS 提供更好的支持,然而這時(shí)的問題就來了,因?yàn)橛泻芏囗撁媸腔谂f的布局方式寫的,而如果IE6 支持CSS 則將令這些頁面顯示不正常,如何在即保證不破壞現(xiàn)有頁面,又提供新的渲染機(jī)制呢?
在寫程序時(shí)我們也會(huì)經(jīng)常遇到這樣的問題,如何保證原來的接口不變,又提供更強(qiáng)大的功能,尤其是新功能不兼容舊功能時(shí)。遇到這種問題時(shí)的一個(gè)常見做法是增加參數(shù)和分支,即當(dāng)某
,個(gè)參數(shù)為真時(shí),我們就使用新功能,而如果這個(gè)參數(shù) 不為真時(shí),就使用舊功能,這樣就能不破壞原有的程序,又提供新功能。IE6也是類似這樣做的,它將DTD 當(dāng)成了這個(gè)“參數(shù)”,因?yàn)橐郧暗捻撁娲蠹叶疾粫?huì)去寫DTD ,所以IE6就假定 如果寫了DTD ,就意味著這個(gè)頁面將采用對(duì)CSS 支持更好的布局,而如果沒有,則采用兼容之前的布局方式。這就是Quirks 模式(怪癖模式,詭異模式,怪異模式)。
區(qū)別:
總體會(huì)有布局、樣式解析和腳本執(zhí)行三個(gè)方面的區(qū)別。
盒模型:在W3C 標(biāo)準(zhǔn)中,如果設(shè)置一個(gè)元素的寬度和高度,指的是元素內(nèi)容的寬度和高度,而在Quirks 模式下,IE 的寬度和高度還包含了padding 和border 。
設(shè)置行內(nèi)元素的高寬:在Standards 模式下,給等行內(nèi)元素設(shè)置wdith 和height 都不會(huì)生效,而在quirks 模式下,則會(huì)生效。
設(shè)置百分比的高度:在standards 模式下,一個(gè)元素的高度是由其包含的內(nèi)容來決定的,如果父元素沒有設(shè)置百分比的高度,子元素設(shè)置一個(gè)百分比的高度是無效的用
margin:0 auto設(shè)置水平居中:使用margin:0 auto在standards 模式下可以使元素水平居中,但在quirks 模式下卻會(huì)失效。

(還有很多,答出什么不重要,關(guān)鍵是看他答出的這些是不是自己經(jīng)驗(yàn)遇到的,還是說都是看文章看的,甚至完全不知道。)
4.div css的布局較table 布局有什么優(yōu)點(diǎn)?
?
?
?
? 改版的時(shí)候更方便 只要改css 文件。 頁面加載速度更快、結(jié)構(gòu)化清晰、頁面顯示簡(jiǎn)潔。 表現(xiàn)與結(jié)構(gòu)相分離。 易于優(yōu)化(seo )搜索引擎更友好,排名更容易靠前。
5.a :img 的alt 與title 有何異同?b :strong 與em 的異同?
答案:
a:
? alt(alt text):為不能顯示圖像、窗體或applets 的用戶代理(UA ),alt 屬性用來指定
替換文字。替換文字的語言由lang 屬性指定。(在IE 瀏覽器下會(huì)在沒有title 時(shí)把a(bǔ)lt 當(dāng)成 tool tip顯示)
? title(tool tip):該屬性為設(shè)置該屬性的元素提供建議性的信息。
b:
? strong:粗體強(qiáng)調(diào)標(biāo)簽,強(qiáng)調(diào),表示內(nèi)容的重要性
? em:斜體強(qiáng)調(diào)標(biāo)簽,更強(qiáng)烈強(qiáng)調(diào),表示內(nèi)容的強(qiáng)調(diào)點(diǎn)
6. 你能描述一下漸進(jìn)增強(qiáng)和優(yōu)雅降級(jí)之間的不同嗎?
? 漸進(jìn)增強(qiáng) progressive enhancement:針對(duì)低版本瀏覽器進(jìn)行構(gòu)建頁面,保證最基本
的功能,然后再針對(duì)高級(jí)瀏覽器進(jìn)行效果、交互等改進(jìn)和追加功能達(dá)到更好的用戶體驗(yàn)。
,優(yōu)雅降級(jí) graceful degradation:一開始就構(gòu)建完整的功能,然后再針對(duì)低版本瀏覽
器進(jìn)行兼容。
區(qū)別:優(yōu)雅降級(jí)是從復(fù)雜的現(xiàn)狀開始,并試圖減少用戶體驗(yàn)的供給,而漸進(jìn)增強(qiáng)則是從一個(gè)非?;A(chǔ)的,能夠起作用的版本開始,并不斷擴(kuò)充,以適應(yīng)未來環(huán)境的需要。降級(jí)(功能衰減)意味著往回看;而漸進(jìn)增強(qiáng)則意味著朝前看,同時(shí)保證其根基處于安全地帶。 “優(yōu)雅降級(jí)”觀點(diǎn)
“優(yōu)雅降級(jí)”觀點(diǎn)認(rèn)為應(yīng)該針對(duì)那些最高級(jí)、最完善的瀏覽器來設(shè)計(jì)網(wǎng)站。而將那些被認(rèn)為“過時(shí)”或有功能缺失的瀏覽器下的測(cè)試工作安排在開發(fā)周期的最后階段,并把測(cè)試對(duì)象限定為主流瀏覽器(如 IE、Mozilla 等)的前一個(gè)版本。
在這種設(shè)計(jì)范例下,舊版的瀏覽器被認(rèn)為僅能提供“簡(jiǎn)陋卻無
妨 (poor, but passable)” 的瀏覽體驗(yàn)。你可以做一些小的調(diào)整來適應(yīng)某個(gè)特定的瀏覽器。但由于它們并非我們所關(guān)注的焦點(diǎn),因此除了修復(fù)較大的錯(cuò)誤之外,其它的差異將被直接忽略。
“漸進(jìn)增強(qiáng)”觀點(diǎn)
“漸進(jìn)增強(qiáng)”觀點(diǎn)則認(rèn)為應(yīng)關(guān)注于內(nèi)容本身。
內(nèi)容是我們建立網(wǎng)站的誘因。有的網(wǎng)站展示它,有的則收集它,有的尋求,有的操作,還有的網(wǎng)站甚至?xí)陨系姆N種,但相同點(diǎn)是它們?nèi)忌婕暗絻?nèi)容。這使得“漸進(jìn)增強(qiáng)”成為一種更為合理的設(shè)計(jì)范例。這也是它立即被 Yahoo! 所采納并用以構(gòu)建其“分級(jí)式瀏覽器支持 (Graded Browser Support)”策略的原因所在。
那么問題了。現(xiàn)在產(chǎn)品經(jīng)理看到IE6,7,8網(wǎng)頁效果相對(duì)高版本現(xiàn)代瀏覽器少了很多圓角,陰影(CSS3),要求兼容(使用圖片背景,放棄CSS3),你會(huì)如何說服他?
(自由發(fā)揮)
7. 為什么利用多個(gè)域名來存儲(chǔ)網(wǎng)站資源會(huì)更有效?
,?
?
?
?
? CDN 緩存更方便 突破瀏覽器并發(fā)限制 節(jié)約cookie 帶寬 節(jié)約主域名的連接數(shù),優(yōu)化頁面響應(yīng)速度 防止不必要的安全問題
8. 請(qǐng)談一下你對(duì)網(wǎng)頁標(biāo)準(zhǔn)和標(biāo)準(zhǔn)制定機(jī)構(gòu)重要性的理解。
(無標(biāo)準(zhǔn)答案)網(wǎng)頁標(biāo)準(zhǔn)和標(biāo)準(zhǔn)制定機(jī)構(gòu)都是為了能讓web 發(fā)展的更‘健康’,開發(fā)者遵循統(tǒng)一的標(biāo)準(zhǔn),降低開發(fā)難度,開發(fā)成本,SEO 也會(huì)更好做,也不會(huì)因?yàn)闉E用代碼導(dǎo)致各種BUG 、安全問題,最終提高網(wǎng)站易用性。
9. 請(qǐng)描述一下cookies ,sessionStorage 和localStorage 的區(qū)別?
sessionStorage 用于本地存儲(chǔ)一個(gè)會(huì)話(session )中的數(shù)據(jù),這些數(shù)據(jù)只有在同一個(gè)會(huì)話中的頁面才能訪問并且當(dāng)會(huì)話結(jié)束后數(shù)據(jù)也隨之銷毀。因此sessionStorage 不是一種持久化的本地存儲(chǔ),僅僅是會(huì)話級(jí)別的存儲(chǔ)。而localStorage 用于持久化的本地存儲(chǔ),除非主動(dòng)刪除數(shù)據(jù),否則數(shù)據(jù)是永遠(yuǎn)不會(huì)過期的。
web storage和cookie 的區(qū)別
? Web Storage的概念和cookie 相似,區(qū)別是它是為了更大容量存儲(chǔ)設(shè)計(jì)的。Cookie
的大小是受限的,并且每次你請(qǐng)求一個(gè)新的頁面的時(shí)候Cookie 都會(huì)被發(fā)送過去,這樣無形中浪費(fèi)了帶寬,另外cookie 還需要指定作用域,不可以跨域調(diào)用。
? 除此之外,Web Storage擁有setItem,getItem,removeItem,clear 等方法,不像
cookie 需要前端開發(fā)者自己封裝setCookie ,getCookie 。但是Cookie 也是不可以或缺的:Cookie 的作用是與服務(wù)器進(jìn)行交互,作為HTTP 規(guī)范的一部分而存在 ,而Web Storage僅僅是為了在本地“存儲(chǔ)”數(shù)據(jù)而生。
,10. 簡(jiǎn)述一下src 與href 的區(qū)別。
答案:
src 用于替換當(dāng)前元素,href 用于在當(dāng)前文檔和引用資源之間確立聯(lián)系。
src 是source 的縮寫,指向外部資源的位置,指向的內(nèi)容將會(huì)嵌入到文檔中當(dāng)前標(biāo)簽所在位置;在請(qǐng)求src 資源時(shí)會(huì)將其指向的資源下載并應(yīng)用到文檔內(nèi),例如js 腳本,img 圖片和frame 等元素。
當(dāng)瀏覽器解析到該元素時(shí),會(huì)暫停其他資源的下載和處理,直到將該資源加載、編譯、執(zhí)行完畢,圖片和框架等元素也如此,類似于將所指向資源嵌入當(dāng)前標(biāo)簽內(nèi)。這也是為什么將js 腳本放在底部而不是頭部。
href 是Hypertext Reference的縮寫,指向網(wǎng)絡(luò)資源所在位置,建立和當(dāng)前元素(錨點(diǎn))或當(dāng)前文檔(鏈接)之間的鏈接,如果我們?cè)谖臋n中添加
那么瀏覽器會(huì)識(shí)別該文檔為css 文件,就會(huì)并行下載資源并且不會(huì)停止對(duì)當(dāng)前文檔的處理。這也是為什么建議使用link 方式來加載css ,而不是使用@import方式。
11. 知道的網(wǎng)頁制作會(huì)用到的圖片格式有哪些?
答案:
png-8,png-24,jpeg ,gif ,svg 。
但是上面的那些都不是面試官想要的最后答案。面試官希望聽到是Webp,Apng 。(是否有關(guān)注新技術(shù),新鮮事物)
,科普一下Webp :WebP 格式,谷歌(google )開發(fā)的一種旨在加快圖片加載速度的圖片格式。圖片壓縮體積大約只有JPEG 的2/3,并能節(jié)省大量的服務(wù)器帶寬資源和數(shù)據(jù)空間。Facebook Ebay等知名網(wǎng)站已經(jīng)開始測(cè)試并使用WebP 格式。
在質(zhì)量相同的情況下,WebP 格式圖像的體積要比JPEG 格式圖像小40。
Apng :全稱是“Animated Portable Network Graphics”, 是PNG 的位圖動(dòng)畫擴(kuò)展,可以實(shí)現(xiàn)png 格式的動(dòng)態(tài)圖片效果。04年誕生,但一直得不到各大瀏覽器廠商的支持,直到日前得到 iOS safari 8的支持,有望代替GIF 成為下一代動(dòng)態(tài)圖標(biāo)準(zhǔn)。
12. 知道什么是微格式嗎?談?wù)劺斫?。在前端?gòu)建中應(yīng)該考慮微格式嗎?
答案:
微格式(Microformats )是一種讓機(jī)器可讀的語義化XHTML 詞匯的集合,是結(jié)構(gòu)化數(shù)據(jù)的開放標(biāo)準(zhǔn)。是為特殊應(yīng)用而制定的特殊格式。
優(yōu)點(diǎn):將智能數(shù)據(jù)添加到網(wǎng)頁上,讓網(wǎng)站內(nèi)容在搜索引擎結(jié)果界面可以顯示額外的提示。(應(yīng)用范例:豆瓣,有興趣自行g(shù)oogle )
13. 在css/js代碼上線之后開發(fā)人員經(jīng)常會(huì)優(yōu)化性能,從用戶刷新網(wǎng)頁開始,一次js 請(qǐng)求一般情況下有哪些地方會(huì)有緩存處理?
答案:dns 緩存,cdn 緩存,瀏覽器緩存,服務(wù)器緩存。
14. 一個(gè)頁面上有大量的圖片(大型電商網(wǎng)站),加載很慢,你有哪些方法優(yōu)化這些圖片的加載,給用戶更好的體驗(yàn)。
? 圖片懶加載,在頁面上的未可視區(qū)域可以添加一個(gè)滾動(dòng)條事件,判斷圖片位置與瀏覽器
頂端的距離與頁面的距離,如果前者小于后者,優(yōu)先加載。
? 如果為幻燈片、相冊(cè)等,可以使用圖片預(yù)加載技術(shù),將當(dāng)前展示圖片的前一張和后一張
優(yōu)先下載。
? 如果圖片為css 圖片,可以使用CSSsprite ,SVGsprite ,Iconfont 、Base64等技術(shù)。
,? 如果圖片過大,可以使用特殊編碼的圖片,加載時(shí)會(huì)先加載一張壓縮的特別厲害的縮略
圖,以提高用戶體驗(yàn)。
? 如果圖片展示區(qū)域小于圖片的真實(shí)大小,則因在服務(wù)器端根據(jù)業(yè)務(wù)需要先行進(jìn)行圖片壓
縮,圖片壓縮后大小與展示一致。
15. 你如何理解HTML 結(jié)構(gòu)的語義化?
? 去掉或樣式丟失的時(shí)候能讓頁面呈現(xiàn)清晰的結(jié)構(gòu):
html 本身是沒有表現(xiàn)的,我們看到例如