轉自: http://blog.csdn.net/mr_yuan24/article/details/40457765
答案不確保一定正確,如有錯誤或有更好的解法,還請指正。
前面幾題是會很基礎,越下越有深度。 Html篇:
1.你做的頁面在哪些流覽器測試過。這些瀏覽器的核心分別是什麼? IE: trident核心 Firefox:gecko核心 Safari:webkit核心 Opera:以前是presto核心,Opera現已改用Google Chrome的Blink核心 Chrome:Blink(基於webkit,Google與Opera Software共同開發)
2.每個HTML檔案裡開頭都有個很重要的東西,Doctype,知道這是幹什麼的嗎。
答案:<!DOCTYPE> 聲明位於文檔中的最前面的位置,處於 <html> 標籤之前。此標籤可告知瀏覽器文檔使用哪種 HTML 或 XHTML 規範。(重點:告訴瀏覽器按照何種規範解析頁面)
3.Quirks模式是什麼。它和Standards模式有什麼區別
答案:
從IE6開始,引入了Standards模式,標準模式中,瀏覽器嘗試給符合標準的文檔在規範上的正確處理達到在指定瀏覽器中的程度。
在IE6之前CSS還不夠成熟,所以IE5等之前的瀏覽器對CSS的支援很差, IE6將對CSS提供更好的支援,然而這時的問題就來了,因為有很多頁面是基於舊的布局方式寫的,而如果IE6 支援CSS則將令這些頁面顯示不正常,如何在即保證不破壞現有頁面,又提供新的渲染機制呢。
在寫程式時我們也會經常遇到這樣的問題,如何保證原來的介面不變,又提供更強大的功能,尤其是新功能不相容舊功能時。遇到這種問題時的一個常見做法是增加參數和分支,即當某個參數為真時,我們就使用新功能,而如果這個參數 不為真時,就使用舊功能,這樣就能不破壞原有的程式,又提供新功能。IE6也是類似這樣做的,它將DTD當成了這個“參數”,因為以前的頁面大家都不會去寫DTD,所以IE6就假定 如果寫了DTD,就意味著這個頁面將採用對CSS支援更好的布局,而如果沒有,則採用相容之前的布局方式。這就是Quirks模式(怪癖模式,詭異模式,怪異模式)。
區別:
總體會有布局、樣式解析和指令碼執行三個方面的區別。
盒模型:在W3C標準中,如果設定一個元素的寬度和高度,指的是元素內容的寬度和高度,而在Quirks 模式下,IE的寬度和高度還包含了padding和border。
設定行內元素的高寬:在Standards模式下,給<span>等行內元素設定wdith和height都不會生效,而在quirks模式下,則會生效。
設定百分比的高度:在standards模式下,一個元素的高度是由其包含的內容來決定的,如果父元素沒有設定百分比的高度,子項目設定一個百分比的高度是無效的用margin:0 auto設定水平置中:使用margin:0 auto在standards模式下可以使元素水平置中,但在quirks模式下卻會失效。
(還有很多,答出什麼不重要,關鍵是看他答出的這些是不是自己經驗遇到的,還是說都是看文章看的,甚至完全不知道。)
4.div+css的布局較table布局有什麼優點。 改版的時候更方便 只要改css檔案。 頁面載入速度更快、結構化清晰、頁面顯示簡潔。 表現與結構相分離。 易於最佳化(seo)搜尋引擎更友好,排名更容易靠前。
5.a:img的alt與title有何異同。b:strong與em的異同。
答案:
a: alt(alt text):為不能顯示映像、表單或applets的使用者代理程式(UA),alt屬性用來指定替換文字。替換文字的語言由lang屬性指定。(在IE瀏覽器下會在沒有title時把alt當成 tool tip顯示) title(tool tip):該屬性為設定該屬性的元素提供建議性的資訊。
b: strong:粗體強調標籤,強調,表示內容的重要性 em:斜體強調標籤,更強烈強調,表示內容的強調點
6.你能描述一下漸進增強和優雅降級之間的不同嗎? 漸進增強 progressive enhancement:針對低版本瀏覽器進行構建頁面,保證最基本的功能,然後再針對進階瀏覽器進行效果、互動等改進和追加功能達到更好的使用者體驗。 優雅降級 graceful degradation:一開始就構建完整的功能,然後再針對低版本瀏覽器進行相容。
區別:優雅降級是從複雜的現狀開始,並試圖減少使用者體驗的供給,而漸進增強則是從一個非常基礎的,能夠起作用的版本開始,並不斷擴充,以適應未來環境的需要。降級(功能衰減)意味著往回看;而漸進增強則意味著朝前看,同時保證其根基處於安全地帶。
“優雅降級”觀點
“優雅降級”觀點認為應該針對那些最進階、最完善的瀏覽器來設計網站。而將那些被認為“過時”或有功能缺失的瀏覽器下的測試工作安排在開發週期的最後階段,並把測試對象限定為主流瀏覽器(如 IE、Mozilla 等)的前一個版本。
在這種設計範例下,舊版的瀏覽器被認為僅能提供“簡陋卻無妨 (poor, but passable)” 的瀏覽體驗。你可以做一些小的調整來適應某個特定的瀏覽器。但由於它們並非我們所關注的焦點,因此除了修複較大的錯誤之外,其它的差異將被直接忽略。
“漸進增強”觀點
“漸進增強”觀點則認為應關注於內容本身。
內容是我們建立網站的誘因。有的網站展示它,有的則收集它,有的尋求,有的操作,還有的網站甚至會包含以上的種種,但相同點是它們全都涉及到內容。這使得“漸進增強”成為一種更為合理的設計範例。這也是它立即被 Yahoo! 所採納並用以構建其“分級式瀏覽器支援 (Graded Browser Support)”策略的原因所在。
那麼問題來了。現在產品經理看到IE6,7,8網頁效果相對高版本現代瀏覽器少了很多圓角,陰影(CSS3),要求相容(使用圖片背景,放棄CSS3),你會如何說服他。
(自由發揮)
7.為什麼利用多個網域名稱來儲存網站資源會更有效。 CDN緩衝更方便 突破瀏覽器並發限制 節約cookie頻寬 節約主網域名稱的串連數,最佳化頁面響應速度 防止不必要的安全問題
8.請談一下你對網頁標準和標準制定機構重要性的理解。
(無標準答案)網頁標準和標準制定機構都是為了能讓web發展的更‘健康’,開發人員遵循統一的標準,降低開發難度,開發成本,SEO也會更好做,也不會因為濫用代碼導致各種BUG、安全問題,最終提高網站易用性。
9.請描述一下cookies,sessionStorage和localStorage的區別。
sessionStorage用於本機存放區一個會話(session)中的資料,這些資料只有在同一個會話中的頁面才能訪問並且當會話結束後資料也隨之銷毀。因此sessionStorage不是一種持久化的本機存放區,僅僅是會話層級的儲存。而localStorage用於持久化的本機存放區,除非主動刪除資料,否則資料是永遠不會到期的。
web storage和cookie的區別 Web Storage的概念和cookie相似,區別是它是為了更大型存放區設計的。Cookie的大小是受限的,並且每次你請求一個新的頁面的時候Cookie都會被發送過去,這樣無形中浪費了頻寬,另外cookie還需要指定範圍,不可以跨域調用。 除此之外,Web Storage擁有setItem,getItem,removeItem,clear等方法,不像cookie需要前端開發人員自己封裝setCookie,getCookie。但是Cookie也是不可以或缺的:Cookie的作用是與伺服器進行互動,作為HTTP規範的一部分而存在 ,而Web Storage僅僅是為了在本地“儲存”資料而生。
10.簡述一下src與href的區別。
答案:
src用於替換當前元素,href用於在當前文檔和引用資源之間確立聯絡。
src是source的縮寫,指向外部資源的位置,指向的內容將會嵌入到文檔中當前標籤所在位置;在請求src資源時會將其指向的資源下載並應用到文檔內,例如js指令碼,img圖片和frame等元素。
<script src =”js.js”></script>
當瀏覽器解析到該元素時,會暫停其他資源的下載和處理,直到將該資源載入、編譯、執行完畢,圖片和架構等元素也如此,類似於將所指向資源嵌入當前標籤內。這也是為什麼將js指令碼放在底部而不是頭部。
href是Hypertext Reference的縮寫,指向網路資源所在位置,建立和當前元素(錨點)或當前文檔(連結)之間的連結,如果我們在文檔中添加
<link href=”common.css” rel=”stylesheet”/>
那麼瀏覽器會識別該文檔為css檔案,就會並行下載資源並且不會停止對當前文檔的處理。這也是為什麼建議使用link方式來載入css,而不是使用@import方式。
11.知道的網頁製作會用到的圖片格式有哪些。
答案:
png-8,png-24,jpeg,gif,svg。
但是上面的那些都不是面試官想要的最後答案。面試官希望聽到是Webp。(是否有關注新技術,新鮮事物)
科普一下Webp:WebP格式,Google(google)開發的一種旨在加快圖片載入速度的圖片格式。圖片壓縮體積大約只有JPEG的2/3,並能節省大量的伺服器頻寬資源和資料空間。Facebook Ebay等知名網站已經開始測試並使用WebP格式。
在品質相同的情況下,WebP格式映像的體積要比JPEG格式映像小40%
12.知道什麼是微格式嗎。談談理解。在前端構建中應該考慮微格式嗎。
答案:
微格式(Microformats)是一種讓機器可讀的語義化XHTML詞彙的集合,是結構化資料的開放標準。是為特殊應用而制定的特殊格式。
優點:將智能資料添加到網頁上,讓網站內容在搜尋引擎結果介面可以顯示額外的提示。(應用範例:豆瓣,有興趣自行google)
13.在css/js代碼上線之後開發人員經常會最佳化效能,從使用者重新整理網頁開始,一次js請求一般情況下有哪些地方會有緩衝處理。
答案:dns緩衝,cdn緩衝,瀏覽器緩衝,伺服器緩衝。
14.一個頁面上有大量的圖片(大型電商網站),載入很慢,你有哪些方法最佳化這些圖片的載入,給使用者更好的體驗。 圖片懶載入,在頁面上的未可視地區可以添加一個捲軸事件,判斷圖片位置與瀏覽器頂端的距離與頁面的距離,如果前者小於後者,優先載入。 如果為投影片、相簿等,可以使用圖片預先載入技術,將當前展示圖片的前一張和後一張優先下載。 如果圖片為css圖片,可以使用CSSsprite,SVGsprite,Iconfont、Base64等技術。 如果圖片過大,可以使用特殊編碼的圖片,載入時會先載入一張壓縮的特別厲害的縮圖,以提高使用者體驗。 如果圖片展示地區小於圖片的真實大小,則因在伺服器端根據業務需要先行進行圖片壓縮,圖片壓縮後大小與展示一致。
15.你如何理解HTML結構的語義化。 去掉或樣式丟失的時候能讓頁面呈現清晰的結構:
html本身是沒有表現的,我們看到例如<h1>是粗體,字型大小2em,加粗;<strong>是加粗的,不要認為這是html的表現,這些其實html預設的css樣式在起作用,所以去掉或樣式丟失的時候能讓頁面呈現清晰的結構不是語義化的HTML結構的優點,但是瀏覽器都有有預設樣式,預設樣式的目的也是為了更好的表達html的語義,可以說瀏覽器的預設樣式和語義化的HTML結構是不可分割的。 螢幕助讀程式(如果訪客有視障)會完全根據你的標記來“讀”你的網頁.
例如,如果你使用的含語義的標記,螢幕助讀程式就會“逐個拼出”你的單詞,而不是試著去對它完整發音. PDA、手機等裝置可能無法像普通電腦的瀏覽器一樣來渲染網頁(通常是因為這些裝置對CSS的支援較弱)
使用語義標記可以確保這些裝置以一種有意義的方式來渲染網頁.理想情況下,觀看裝置的任務是符合裝置本身的條件來渲染網頁.
語義標記為裝置提供了所需的相關資訊,就省去了你自己去考慮所有可能的顯示情況(包括現有的或者將來新的裝置).例如,一部手機可以選擇使一區段標記了標題的文字以粗體顯示.而掌上型電腦可能會以比較大的字型來顯示.無論哪種方式一旦你對文本標記為標題,您就可以確信讀取裝置將根據其自身的條件來合適地顯示頁面. 搜尋引擎的爬蟲也依賴於標記來確定上下文和各個關鍵字的權重
過去你可能還沒有考慮搜尋引擎的爬蟲也是網站的“訪客”,但現在它們他們實際上是極其寶貴的使用者.沒有他們的話,搜尋引擎將無法索引你的網站,然後一般使用者將很難過來訪問. 你的頁面是否對爬蟲容易理解非常重要,因為爬蟲很大程度上會忽略用於表現的標記,而只注重語義標記.
因此,如果分頁檔的標題被標記,而不是,那麼這個頁面在搜尋結果的位置可能會比較靠後.除了提升易用性外,語義標記有利於正確使用CSS和JavaScript,因為其本身提供了許多“鉤鉤”來應用頁面的樣式與行為.
SEO主要還是靠你網站的內容和外部連結的。 便於團隊開發和維護
W3C給我們定了一個很好的標準,在團隊中大家都遵循這個標準,可以減少很多差異化的東西,方便開發和維護,提高開發效率,甚至實現模組化開發。
16.談談以前端角度出發做好SEO需要考慮什麼。 瞭解搜尋引擎如何抓取網頁和如何索引網頁