1 你做的頁(yè)面在哪些流覽器測(cè)試過(guò)?這些瀏覽器的內(nèi)核分別是什麼? IE: trident內(nèi)核 Firefox:gecko內(nèi)核 Safari:webkit內(nèi)核 O
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共同開(kāi)發(fā))
2.每個(gè)HTML文件裡開(kāi)頭都有個(gè)很重要的東西,Doctype,知道這是幹什麼的嗎?
答案: 聲明位於文檔中的最前面的位置,處於 標(biāo)籤之前。此標(biāo)籤可告知瀏覽器文檔使用哪種 HTML 或 XHTML 規(guī)範。(重點(diǎn):告訴瀏覽器按照何種規(guī)範解析頁(yè)面)
3.Quirks模式是什麼?它和Standards模式有什麼區(qū)別
答案:
從IE6開(kāi)始,引入了Standards模式,標(biāo)準(zhǔn)模式中,瀏覽器嘗試給符合標(biāo)準(zhǔn)的文檔在規(guī)範上的正確處理達(dá)到在指定瀏覽器中的程度。
在IE6之前CSS還不夠成熟,所以IE5等之前的瀏覽器對(duì)CSS的支持很差, IE6將對(duì)CSS提供更好的支持,然而這時(shí)的問(wèn)題就來(lái)了,因為有很多頁(yè)面是基於舊的布局方式寫(xiě)的,而如果IE6 支持CSS則將令這些頁(yè)面顯示不正常,如何在即保證不破壞現(xiàn)有頁(yè)面,又提供新的渲染機(jī)制呢?
在寫(xiě)程序時(shí)我們也會(huì)經(jīng)常遇到這樣的問(wèn)題,如何保證原來(lái)的接口不變,又提供更強(qiáng)大的功能,尤其是新功能不兼容舊功能時(shí)。遇到這種問(wèn)題時(shí)的一個(gè)常見(jiàn)做法是增加參數(shù)和分支,即當(dāng)某個(gè)參數(shù)為真時(shí),我們就使用新功能,而如果這個(gè)參數(shù) 不為真時(shí),就使用舊功能,這樣就能不破壞原有的程序,又提供新功能。IE6也是類(lèi)似這樣做的,它將DTD當(dāng)成了這個(gè)“參數(shù)”,因為以前的頁(yè)面大家都不會(huì)去寫(xiě)DTD,所以IE6就假定 如果寫(xiě)了DTD,就意味著這個(gè)頁(yè)面將採用對(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)容來(lái)決定的,如果父元素沒有設(shè)置百分比的高度,子元素設(shè)置一個(gè)百分比的高度是無(wú)效的用margin:0 auto設(shè)置水平居中:使用margin:0 auto在standards模式下可以使元素水平居中,但在quirks模式下卻會(huì)失效。
(還有很多,答出什麼不重要,關(guān)鍵是看他答出的這些是不是自己經(jīng)驗(yàn)遇到的,還是說(shuō)都是看文章看的,甚至完全不知道。)
4.div+css的布局較table布局有什麼優(yōu)點(diǎn)?
改版的時(shí)候更方便 只要改css文件。
頁(yè)面加載速度更快、結(jié)構(gòu )化清晰、頁(yè)面顯示簡(jiǎn)潔。
表現(xiàn)與結(jié)構(gòu )相分離。
易於優(yōu)化(seo)搜尋引擎更友好,排名更容易靠前。
5.a:img的alt與title有何異同?b:strong與em的異同?
答案:
a:
alt(alt text):為不能顯示圖像、窗體或applets的用戶(hù)代理(UA),alt屬性用來(lái)指定替換(huàn)文字。替換(huàn)文字的語言由lang屬性指定。(在IE瀏覽器下會(huì)在沒有title時(shí)把alt當(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 )建頁(yè)面,保證最基本的功能,然後再針對(duì)高級(jí)瀏覽器進(jìn)行效果、交互等改進(jìn)和追加功能達(dá)到更好的用戶(hù)體驗(yàn)。
優(yōu)雅降級(jí) graceful degradation:一開(kāi)始就構(gòu )建完整的功能,然後再針對(duì)低版本瀏覽器進(jìn)行兼容。
區(qū)別:優(yōu)雅降級(jí)是從複雜的現(xiàn)狀開(kāi)始,並試圖減少用戶(hù)體驗(yàn)的供給,而漸進(jìn)增強(qiáng)則是從一個(gè)非常基礎(chǔ)的,能夠起作用的版本開(kāi)始,並不斷擴充,以適應(yīng)未來(lái)環(huán)境的需要。降級(jí)(功能衰減)意味著往回看;而漸進(jìn)增強(qiáng)則意味著朝前看,同時(shí)保證其根基處於安全地帶。
“優(yōu)雅降級(jí)”觀(guān)點(diǎn)
“優(yōu)雅降級(jí)”觀(guān)點(diǎn)認(rèn)為應(yīng)該針對(duì)那些最高級(jí)、最完善的瀏覽器來(lái)設(shè)計(jì)網(wǎng)站。而將那些被認(rèn)為“過(guò)時(shí)”或有功能缺失的瀏覽器下的測(cè)試工作安排在開(kāi)發(fā)周期的最後階段,並把測(cè)試對(duì)象限定為主流瀏覽器(如 IE、Mozilla 等)的前一個(gè)版本。
在這種設(shè)計(jì)範例下,舊版的瀏覽器被認(rèn)為僅能提供“簡(jiǎn)陋卻無(wú)妨 (poor, but passable)” 的瀏覽體驗(yàn)。你可以做一些小的調(diào)整來(lái)適應(yīng)某個(gè)特定的瀏覽器。但由於它們並非我們所關(guān)注的焦點(diǎn),因此除了修復較大的錯誤之外,其它的差異將被直接忽略。
“漸進(jìn)增強(qiáng)”觀(guān)點(diǎn)
“漸進(jìn)增強(qiáng)”觀(guān)點(diǎn)則認(rèn)為應(yīng)關(guān)注於內(nèi)容本身。
內(nèi)容是我們建立網(wǎng)站的誘因。有的網(wǎng)站展示它,有的則收集它,有的尋求,有的操作,還有的網(wǎng)站甚至會(huì)包含以上的種種,但相同點(diǎn)是它們全都涉及到內(nèi)容。這使得“漸進(jìn)增強(qiáng)”成為一種更為合理的設(shè)計(jì)範例。這也是它立即被 Yahoo! 所採納並用以構(gòu )建其“分級(jí)式瀏覽器支持 (Graded Browser Support)”策略的原因所在。
那麼問(wèn)題了。現(xiàn)在產(chǎn)品經(jīng)理看到IE6,7,8網(wǎng)頁(yè)效果相對(duì)高版本現(xiàn)代瀏覽器少了很多圓角,陰影(CSS3),要求兼容(使用圖片背景,放棄CSS3),你會(huì)如何說(shuō)服他?
(自由發(fā)揮)
7.為什麼利用多個(gè)域名來(lái)存儲(chǔ)網(wǎng)站資源會(huì)更有效?
CDN緩存更方便
突破瀏覽器並發(fā)限制
節(jié)約cookie帶寬
節(jié)約主域名的連接數(shù),優(yōu)化頁(yè)面響應(yīng)速度
防止不必要的安全問(wèn)題
8.請談一下你對(duì)網(wǎng)頁(yè)標(biāo)準(zhǔn)和標(biāo)準(zhǔn)制定機(jī)構(gòu )重要性的理解。
(無(wú)標(biāo)準(zhǔn)答案)網(wǎng)頁(yè)標(biāo)準(zhǔn)和標(biāo)準(zhǔn)制定機(jī)構(gòu )都是為了能讓web發(fā)展的更‘健康’,開(kāi)發(fā)者遵循統(tǒng)一的標(biāo)準(zhǔn),降低開(kāi)發(fā)難度,開(kāi)發(fā)成本,SEO也會(huì)更好做,也不會(huì)因為濫用代碼導(dǎo )致各種BUG、安全問(wèn)題,最終提高網(wǎng)站易用性。
9.請描述一下cookies,sessionStorage和localStorage的區(qū)別?
sessionStorage用於本地存儲(chǔ)一個(gè)會(huì)話(huà)(session)中的數(shù)據(jù),這些數(shù)據(jù)只有在同一個(gè)會(huì)話(huà)中的頁(yè)面才能訪(fǎng)問(wèn)並且當(dāng)會(huì)話(huà)結(jié)束後數(shù)據(jù)也隨之銷(xiāo)毀。因此sessionStorage不是一種持久化的本地存儲(chǔ),僅僅是會(huì)話(huà)級(jí)別的存儲(chǔ)。而localStorage用於持久化的本地存儲(chǔ),除非主動(dòng)刪除數(shù)據(jù),否則數(shù)據(jù)是永遠(yuǎn)不會(huì)過(guò)期的。
web storage和cookie的區(qū)別
Web Storage的概念和cookie相似,區(qū)別是它是為了更大容量存儲(chǔ)設(shè)計(jì)的。Cookie的大小是受限的,並且每次你請求一個(gè)新的頁(yè)面的時(shí)候Cookie都會(huì)被發(fā)送過(guò)去,這樣無(wú)形中浪費(fèi)了帶寬,另外cookie還需要指定作用域,不可以跨域調(diào)用。
除此之外,Web Storage擁有setItem,getItem,removeItem,clear等方法,不像cookie需要前端開(kāi)發(fā)者自己封裝setCookie,getCookie。但是Cookie也是不可以或缺的:Cookie的作用是與伺服器進(jìn)行交互,作為HTTP規(guī)範的一部分而存在 ,而Web Storage僅僅是為了在本地“存儲(chǔ)”數(shù)據(jù)而生。
10.簡(jiǎn)述一下src與href的區(qū)別。
答案:
src用於替換(huàn)當(dāng)前元素,href用於在當(dāng)前文檔和引用資源之間確立聯(lián)繫。
src是source的縮寫(xiě),指向外部資源的位置,指向的內(nèi)容將會(huì)嵌入到文檔中當(dāng)前標(biāo)籤所在位置;在請求src資源時(shí)會(huì)將其指向的資源下載並應(yīng)用到文檔內(nèi),例如js腳本,img圖片和frame等元素。
當(dāng)瀏覽器解析到該元素時(shí),會(huì)暫停其他資源的下載和處理,直到將該資源加載、編譯、執(zhí)行完畢,圖片和框架等元素也如此,類(lèi)似於將所指向資源嵌入當(dāng)前標(biāo)籤內(nèi)。這也是為什麼將js腳本放在底部而不是頭部。
href是Hypertext Reference的縮寫(xiě),指向網(wǎng)絡(luò)資源所在位置,建立和當(dāng)前元素(錨點(diǎn))或當(dāng)前文檔(連結(jié))之間的連結(jié),如果我們在文檔中添加
那麼瀏覽器會(huì)識別該文檔為css文件,就會(huì)並行下載資源並且不會(huì)停止對(duì)當(dāng)前文檔的處理。這也是為什麼建議使用link方式來(lái)加載css,而不是使用@import方式。
11.知道的網(wǎng)頁(yè)製作會(huì)用到的圖片格式有哪些?
答案:
png-8,png-24,jpeg,gif,svg。
但是上面的那些都不是面試官想要的最後答案。面試官希望聽到是Webp,Apng。(是否有關(guān)注新技術(shù),新鮮事物)
科普一下Webp:WebP格式,谷歌(google)開(kāi)發(fā)的一種旨在加快圖片加載速度的圖片格式。圖片壓縮體積大約只有JPEG的2/3,並能節(jié)省大量的伺服器帶寬資源和數(shù)據(jù)空間。Facebook Ebay等知名網(wǎng)站已經(jīng)開(kāi)始測(cè)試並使用WebP格式。
在質(zhì)量相同的情況下,WebP格式圖像的體積要比JPEG格式圖像小40%。
Apng:全稱(chēng)是“Animated Portable Network Graphics”, 是PNG的位圖動(dòng)畫擴展,可以實(shí)現(xiàn)png格式的動(dòng)態(tài)圖片效果。04年誕生,但一直得不到各大瀏覽器廠(chǎng)商的支持,直到日前得到 iOS safari 8的支持,有望代替GIF成為下一代動(dòng)態(tài)圖標(biāo)準(zhǔn)。
12.知道什麼是微格式嗎?談談理解。在前端構(gòu )建中應(yīng)該考慮微格式嗎?
答案:
微格式(Microformats)是一種讓機(jī)器可讀的語義化XHTML詞彙的集合,是結(jié)構(gòu )化數(shù)據(jù)的開(kāi)放標(biāo)準(zhǔn)。是為特殊應(yīng)用而制定的特殊格式。
優(yōu)點(diǎn):將智能數(shù)據(jù)添加到網(wǎng)頁(yè)上,讓網(wǎng)站內(nèi)容在搜尋引擎結(jié)果界面可以顯示額外的提示。(應(yīng)用範例:豆瓣,有興趣自行google)
13.在css/js代碼上線(xiàn )之後開(kāi)發(fā)人員經(jīng)常會(huì)優(yōu)化性能,從用戶(hù)刷新網(wǎng)頁(yè)開(kāi)始,一次js請求一般情況下有哪些地方會(huì)有緩存處理?
答案:dns緩存,cdn緩存,瀏覽器緩存,伺服器緩存。
14.一個(gè)頁(yè)面上有大量的圖片(大型電商網(wǎng)站),加載很慢,你有哪些方法優(yōu)化這些圖片的加載,給用戶(hù)更好的體驗(yàn)。
圖片懶加載,在頁(yè)面上的未可視區(qū)域可以添加一個(gè)滾動(dòng)條事件,判斷圖片位置與瀏覽器頂端的距離與頁(yè)面的距離,如果前者小於後者,優(yōu)先加載。
如果為幻燈片、相冊(cè)等,可以使用圖片預加載技術(shù),將當(dāng)前展示圖片的前一張和後一張優(yōu)先下載。
如果圖片為css圖片,可以使用CSSsprite,SVGsprite,Iconfont、Base64等技術(shù)。
如果圖片過(guò)大,可以使用特殊編碼的圖片,加載時(shí)會(huì)先加載一張壓縮的特別厲害的縮略圖,以提高用戶(hù)體驗(yàn)。
如果圖片展示區(qū)域小於圖片的真實(shí)大小,則因在伺服器端根據(jù)業(yè)務(wù)需要先行進(jìn)行圖片壓縮,圖片壓縮後大小與展示一致。
15.你如何理解HTML結(jié)構(gòu )的語義化?
去掉或樣式丟失的時(shí)候能讓頁(yè)面呈現(xiàn)清晰的結(jié)構(gòu ):
html本身是沒有表現(xiàn)的,我們看到例如
是粗體,字體大小2em,加粗;是加粗的,不要認(rèn)為這是html的表現(xiàn),這些其實(shí)html默認(rèn)的css樣式在起作用,所以去掉或樣式丟失的時(shí)候能讓頁(yè)面呈現(xiàn)清晰的結(jié)構(gòu )不是語義化的HTML結(jié)構(gòu )的優(yōu)點(diǎn),但是瀏覽器都有有默認(rèn)樣式,默認(rèn)樣式的目的也是為了更好的表達(dá)html的語義,可以說(shuō)瀏覽器的默認(rèn)樣式和語義化的HTML結(jié)構(gòu )是不可分割的。
屏幕閱讀器(如果訪(fǎng)客有視障)會(huì)完全根據(jù)你的標(biāo)記來(lái)“讀”你的網(wǎng)頁(yè).
例如,如果你使用的含語義的標(biāo)記,屏幕閱讀器就會(huì)“逐個(gè)拼出”你的單詞,而不是試著去對(duì)它完整發(fā)音.
PDA、手機(jī)等設(shè)備可能無(wú)法像普通電腦的瀏覽器一樣來(lái)渲染網(wǎng)頁(yè)(通常是因為這些設(shè)備對(duì)CSS的支持較弱)
使用語義標(biāo)記可以確保這些設(shè)備以一種有意義的方式來(lái)渲染網(wǎng)頁(yè).理想情況下,觀(guān)看設(shè)備的任務(wù)是符合設(shè)備本身的條件來(lái)渲染網(wǎng)頁(yè).
語義標(biāo)記為設(shè)備提供了所需的相關(guān)信息,就省去了你自己去考慮所有可能的顯示情況(包括現(xiàn)有的或者將來(lái)新的設(shè)備).例如,一部手機(jī)可以選擇使一段標(biāo)記了標(biāo)題的文字以粗體顯示.而掌上電腦可能會(huì)以比較大的字體來(lái)顯示.無(wú)論哪種方式一旦你對(duì)文本標(biāo)記為標(biāo)題,您就可以確信讀取設(shè)備將根據(jù)其自身的條件來(lái)合適地顯示頁(yè)面.
搜尋引擎的爬蟲(chóng)也依賴於標(biāo)記來(lái)確定上下文和各個(gè)關(guān)鍵字的權(quán)重
過(guò)去你可能還沒有考慮搜尋引擎的爬蟲(chóng)也是網(wǎng)站的“訪(fǎng)客”,但現(xiàn)在它們他們實(shí)際上是極其寶貴的用戶(hù).沒有他們的話(huà),搜尋引擎將無(wú)法索引你的網(wǎng)站,然後一般用戶(hù)將很難過(guò)來(lái)訪(fǎng)問(wèn).
你的頁(yè)面是否對(duì)爬蟲(chóng)容易理解非常重要,因為爬蟲(chóng)很大程度上會(huì)忽略用於表現(xiàn)的標(biāo)記,而只注重語義標(biāo)記.
因此,如果頁(yè)面文件的標(biāo)題被標(biāo)記,而不是,那麼這個(gè)頁(yè)面在搜索結(jié)果的位置可能會(huì)比較靠後.除了提升易用性外,語義標(biāo)記有利於正確使用CSS和JavaScript,因為其本身提供了許多“鉤鉤”來(lái)應(yīng)用頁(yè)面的樣式與行為.
SEO主要還是靠你網(wǎng)站的內(nèi)容和外部連結(jié)的。
便於團(tuán)隊(duì)開(kāi)發(fā)和維護(hù)
W3C給我們定了一個(gè)很好的標(biāo)準(zhǔn),在團(tuán)隊(duì)中大家都遵循這個(gè)標(biāo)準(zhǔn),可以減少很多差異化的東西,方便開(kāi)發(fā)和維護(hù),提高開(kāi)發(fā)效率,甚至實(shí)現(xiàn)模塊化開(kāi)發(fā)。
16.談談以前端角度出發(fā)做好SEO需要考慮什麼?
了解搜尋引擎如何抓取網(wǎng)頁(yè)和如何索引網(wǎng)頁(yè)
你需要知道一些搜尋引擎的基本工作原理,各個(gè)搜尋引擎之間的區(qū)別,搜索機(jī)器人(SE robot 或叫 web crawler)如何進(jìn)行工作,搜尋引擎如何對(duì)搜索結(jié)果進(jìn)行排序等等。
Meta標(biāo)籤優(yōu)化
主要包括主題(Title),網(wǎng)站描述(Description),和關(guān)鍵詞(Keywords)。還有一些其它的隱藏文字比如Author(作者),Category(目錄),Language(編碼語種)等。
如何選取關(guān)鍵詞並在網(wǎng)頁(yè)中放置關(guān)鍵詞
搜索就得用關(guān)鍵詞。關(guān)鍵詞分析和選擇是SEO最重要的工作之一。首先要給網(wǎng)站確定主關(guān)鍵詞(一般在5個(gè)上下),然後針對(duì)這些關(guān)鍵詞進(jìn)行優(yōu)化,包括關(guān)鍵詞密度(Density),相關(guān)度(Relavancy),突出性(Prominency)等等。
了解主要的搜尋引擎
雖然搜尋引擎有很多,但是對(duì)網(wǎng)站流量起決定作用的就那麼幾個(gè)。比如英文的主要有Google,Yahoo,Bing等;中文的有百度,搜狗,有道等。不同的搜尋引擎對(duì)頁(yè)面的抓取和索引、排序的規(guī)則都不一樣。還要了解各搜索門(mén)戶(hù)和搜尋引擎之間的關(guān)係,比如AOL網(wǎng)頁(yè)搜索用的是Google的搜索技術(shù),MSN用的是Bing的技術(shù)。
主要的網(wǎng)際網(wǎng)路目錄
Open Directory自身不是搜尋引擎,而是一個(gè)大型的網(wǎng)站目錄,他和搜尋引擎的主要區(qū)別是網(wǎng)站內(nèi)容的收集方式不同。目錄是人工編輯的,主要收錄網(wǎng)站主頁(yè);搜尋引擎是自動(dòng)收集的,除了主頁(yè)外還抓取大量的內(nèi)容頁(yè)面。
按點(diǎn)擊付費(fèi)的搜尋引擎
搜尋引擎也需要生存,隨著網(wǎng)際網(wǎng)路商務(wù)的越來(lái)越成熟,收費(fèi)的搜尋引擎也開(kāi)始大行其道。最典型的有Overture和百度,當(dāng)然也包括Google的廣(guǎng)告項(xiàng)目Google Adwords。越來(lái)越多的人通過(guò)搜尋引擎的點(diǎn)擊廣(guǎng)告來(lái)定位商業(yè)網(wǎng)站,這裡面也大有優(yōu)化和排名的學(xué)問(wèn),你得學(xué)會(huì)用最少的廣(guǎng)告投入獲得最多的點(diǎn)擊。
搜尋引擎登錄
網(wǎng)站做完了以後,別躺在那裡等著客人從天而降。要讓別人找到你,最簡(jiǎn)單的辦法就是將網(wǎng)站提交(submit)到搜尋引擎。如果你的是商業(yè)網(wǎng)站,主要的搜尋引擎和目錄都會(huì)要求你付費(fèi)來(lái)獲得收錄(比如Yahoo要299美元),但是好消息是(至少到目前為止)最大的搜尋引擎Google目前還是免費(fèi),而且它主宰著60%以上的搜索市場(chǎng)。
連結(jié)交換(huàn)和連結(jié)廣(guǎng)泛度(Link Popularity)
網(wǎng)頁(yè)內(nèi)容都是以超文本(Hypertext)的方式來(lái)互相連結(jié)的,網(wǎng)站之間也是如此。除了搜尋引擎以外,人們也每天通過(guò)不同網(wǎng)站之間的連結(jié)來(lái)Surfing(“衝浪”)。其它網(wǎng)站到你的網(wǎng)站的連結(jié)越多,你也就會(huì)獲得更多的訪(fǎng)問(wèn)量。更重要的是,你的網(wǎng)站的外部連結(jié)數(shù)越多,會(huì)被搜尋引擎認(rèn)為它的重要性越大,從而給你更高的排名。
合理的標(biāo)籤使用
Python交流群
635448130點(diǎn)擊加入群聊UI設(shè)計(jì)交流群
579150876點(diǎn)擊加入群聊Unity交流群
495609038點(diǎn)擊加入群聊HTML5交流群
645591648點(diǎn)擊加入群聊