1. 程式人生 > >web前端面試題系列:(二)

web前端面試題系列:(二)

html name 價值 編程 oct rom repeat 清除 frame

1、列舉你工作中遇到的IE6 BUG,談談解決方案

a.雙倍邊距bug:

例如:當給父元素內第一個浮動元素設置margin-left或margin-right的時候,margin屬性會加倍,此時需要添加屬性display:inline.
這樣能避免雙倍邊距

b當浮動元素與非浮動元素相鄰時,這個3像素的Bug就會出現,它會偏移3像素。我的解決辦法是給非浮動元素加上浮動就可以了

c.當子元素浮動未知高度時,使父容器適應子元素的高度bug
overflow:auto;——-讓父容器自適應子元素的高度

在IE6會自動擴展父層元素的高度,而IE8和FF等瀏覽器加上overflow:auto後,即可清除浮動。

2、如何用CSS分別單獨定義IE6、7、8的width屬性

所有瀏覽器 通用
height: 100px;
IE6 認:
_height: 100px;

IE6 ,IE7 都認:
*height: 100px;
IE7、FF 共用
height: 100px !important;

3、CSS中哪些屬性不可以從父元素繼承

例如border(邊框)、margin(邊距)、padding(補白)和背景

4、你如何理解HTML結構的語意化

HTML結構是頁面的骨架, 一個頁面就好像一幢房子, HTML結構就是鋼筋混泥土的墻,一幢房子如果沒有鋼筋混泥土的墻那就是一堆費磚頭, 不能住人,不能辦公。css是裝飾材料, css如果沒有html結構那就是一堆木板,一同油漆,沒有了實際使用價值。當我們提到“語義標記”的時候,我們所說的HTML應該是完全脫離表現信息的,其中的標簽應該都是語義化地定義了文檔的結構。

意義:

  • 這樣有利於讀取設備將根據自身條件合適地顯示頁面
  • 搜索引擎的爬蟲也根據語義化的結構進行搜索
  • 便於團隊開發和維護

5、做好SEO需要考慮什麽

SEO就是搜索引擎的優化

1、了解搜索引擎如何抓取網頁和如何索引網頁
你需要知道一些搜索引擎的基本工作原理,各個搜索引擎之間的區別

2、Meta標簽優化
主要包括主題(Title),網站描述(Description),和關鍵詞(Keywords)。還有一些其它的隱藏文字比如Author(作者),Category(目錄),Language(編碼語種)等。

3、如何選取關鍵詞並在網頁中放置關鍵詞
搜索就得用關鍵詞。關鍵詞分析和選擇是SEO最重要的工作之一。首先要給網站確定主關鍵詞(一般在5個上下),然後針對這些關鍵詞進行優化,包括關鍵詞密度(Density),相關度(Relavancy),突出性(Prominency)等等。

4、了解主要的搜索引擎
雖然搜索引擎有很多,但是對網站流量起決定作用的就那麽幾個。比如英文的主要有Google,Yahoo,Bing等;中文的有百度,搜狗,有道等。 不同的搜索引擎對頁面的抓取和索引、排序的規則都不一樣。還要了解各搜索門戶和搜索引擎之間的關系,比如AOL網頁搜索用的是Google的搜索技 術,MSN用的是Bing的技術。

5、主要的互聯網目錄

6、你得學會用最少的廣告投入獲得最多的點擊。

7、搜索引擎提交

8、鏈接交換和鏈接廣泛度(Link Popularity)
跟獲取你的訪問量有很大的關系

9、標簽的合理使用
比如盡量少用iframe,搜索引擎不會抓取到iframe裏的內容,重要內容不要放在框架中。
不可使用display:none;的方法讓文字隱藏,因為搜索引擎會過濾掉display:none;裏邊的內容,就不會被蜘蛛檢索了。可以設置text-indent為負數,偏離瀏覽器之外,然後再利用overflow:hidden屬性進行隱藏

6、我們知道可以以外鏈的方式引入CSS文件,請談談外鏈引入CSS有哪些方式,這些方式的性能有區別嗎

a.行內樣式
缺點:通用性差,效果特殊,優點:使用在CSS命令較少,並且不常改動的地方,使用這種方法反而是很好的選擇。

b.內嵌樣式:css寫在head標簽裏面
優點:直接在HTML文檔中,運用這樣式比較快。缺點:代碼臃腫,不利於維護

c.鏈接樣式:引入外部的css文件
比較易於維護和美觀的一種方式

d.導入樣式
優點:一次性導入多個css文件。用於css文件數量龐大的系統中

7、CSS Sprite是什麽,談談這個技術的優缺點

CSS Sprite其實就是把網頁中一些背景圖片整合到一張圖片文件中,再利用CSS的“background-image”,“background- repeat”,“background-position”的組合進行定位
CSS Sprites能減少圖片的字節,加快網頁的加載速度。缺點是開發和維護都是比較麻煩的。

8、以CSS3標準定義一個webkit內核瀏覽器識別的圓角(尺寸隨意)

border:30px;-webkit-border-radius:40px;

9、有這麽一段HTML,請挑毛病

<P>  哥寫的不是HTML,是寂寞。<br><br>  我說:<br>不要迷戀哥,哥只是一個傳說

缺少p標記的結束標記。

10、如何觸發這Doctype的標準模式和混雜模式?區分它們有何意義?

在標準模式中,瀏覽器根據規範呈現頁面。在混雜模式中,頁面以一種比較寬松的向後兼容的方式顯示。
觸發混亂模式:
IE6的觸發:

DOCTYPE前加入XML聲明<?xml version="1.0" encoding="utf-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">


IE7的觸發:

在XML聲明和DOCTYPE之間加入HTML註釋<?xml version="1.0" encoding="utf-8"?><!– … and keep IE7 in quirks mode –><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
IE6和IE7都可以觸發:

在HTML4.01的DOCTYPE文檔頭部加入HTML註釋<!– quirks mode –><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">


各個瀏覽器的混雜模式,基本就是各個瀏覽器的私有模式,不相互兼容。所以,除非是為了兼容的問題,才采用混雜模式

11、行內元素有哪些?塊級元素有哪些?CSS的盒模型?

行內元素有:a b span I img input select strong(input用於定義表單中的各個具體的表單元素)
塊級元素有:div ul ol li dl dt dd
盒模型:margin border padding content

12、前端頁面有哪三層構成,分別是什麽?作用是什麽?

網頁分成三個層次,即:結構層、表示層、行為層。
網頁的結構層:由HTML 或XHTML 之類的標記語言負責創建,即HTML的語義化。,說白了就是一些標簽
網頁的表示層:說白了就是CSS
網頁的行為層:說白了就是Javascript 語言和DOM 主宰的領域。

13、有沒有關註HTML5和CSS3?如有請簡單說一些您對它們的了解情況!

IE9以上開始支持
HTML5標簽的改變:<header>,<footer>, <dialog>, <aside>, <figure>, <section> 等
CSS3實現圓角,陰影(text-showdow)對文字加特效(text-overflow,word-wrap,font-size-adjust),增加了更多的CSS選擇器(全局選擇器,組合選擇器,繼承選擇器,偽類選擇器等)

14、怎樣添加、移除、移動、復制、創建和查找節點

(1)創建新節點

createDocumentFragment() //創建一個DOM片段

createElement_x() //創建一個具體的元素

createTextNode() //創建一個文本節點

(2)添加、移除、替換、插入

appendChild()

removeChild()

replaceChild()

insertBefore()

(3)查找

getElementsByTagName() //通過標簽名稱

getElementsByName() //通過元素的Name屬性的值

getElementById() //通過元素Id,唯一性

15、面向對象編程:b怎麽繼承a

function A{
    this.name=name?name:‘小剛‘;
    this.age=age?age:30;
    this.say=function{
        alert(this.name+"今年"+this.age+"歲了");
    }
}
function B{}
B.prototype=new A();
Var C= new B();
C.say();

16、請編寫一個JavaScript函數 parseQueryString,它的用途是把URL參數解析為一個對象

function parseQueryString(url) {
    var pos;
    var obj = {};
    if (pos = url.indexOf("?") != -1) {
        var urlstring = url.substring(pos + 1, url.lenght – 1);
        var urlArr = urlstring.split("&");
        var keyValue = [];
        for (var i = 0; i < urlArr.lenght; i++) {
            keyValue = urlArr[i].split("=");
            obj[keyValue[0]] = keyValue[1];
        }
    }
    return obj;
}
var objUrl = parseQueryString(url);

17、在工作中,對瀏覽器的兼容性怎麽看待的

在工作中會經常遇到一些瀏覽器的兼容性問題,考慮的主要有2塊方面的兼容性問題,一個是css樣式的兼容性,另一個是js的兼容性問題。

(1).對於css樣式來說,比如IE與火狐兩大瀏覽器,它們對自身的瀏覽器都有默認的padding,margin等值,我們只需要在寫樣式的時候先清除它們默認樣式的值,引入一個reset.css樣式有能很大程度上解決一些常見問題,除此之外當然還有其它的樣式問題,比如IE6的雙邊距問題,解決辦法對IE6寫樣式display:inline;就能解決問題,還比如當子元素浮動未知高度時,使父容器自適應子元素的高度bug,解決辦法就是在父容器樣式裏面加上overflow:auto就能解決(這個問題IE6中能適應子元素的高度,但是IE8跟火狐等其它瀏覽器不行,需要加上剛才的代碼才能實現自適應),還比如當一個浮動元素跟一個非浮動元素相鄰時就會出現3像素的bug,解決辦法其實很簡單給非浮動元素加上浮動就可以解決。

(2).對於js代碼來說,也有一些常見的瀏覽器兼容性問題,就拿瀏覽器事件處理來說,IE事件處理程序需要2個方法來實現,attachEvent()和detachEvent()兩個方法來實現,它們裏邊的參數只有2個,比如attachEvent()方法的兩個參數:事件處理程序名字與事件處理程序函數。其它瀏覽器用到的是addEventListener()和removeEventListener()兩個方法,但是它們的參數有3個,拿addEventListener()方法舉例,第一個參數,要處理的事件名,比如onclick,但是不需要加上on,參數裏面只需要click,第二個參事件處理程序的函數,最後一個參數是布爾值。布爾值如果是true,表示在捕獲階段調用事件處理程序;如果是false,表示在冒泡階段調用事件處理程序。

web前端面試題系列:(二)