前端面試概念題

  1. CSS引入的方式有哪些惑折?link和@import的有什么區(qū)別学赛?各種方式的優(yōu)先級如何雹顺?

A.內(nèi)聯(lián)(行內(nèi)): 寫在頁面上

<header>
  <style>
    div{color : red;}
  <style>
</header>

B. 內(nèi)嵌: 直接在 HTML 標簽中的 style 屬性中添加 CSS

<div style="color: red;"><div>

C.外鏈(鏈接): 通過link 標簽引入外部文件

<link rel="stylesheet" type="text/css" href="style.css">

D.導入: 通過@import 導入外部文件

<header>
  <style type="text/css">
    @import url("css/style.css");
  </style>
</header>

link和@import兩者都是外部引用CSS的方式野来,但是存在一定的區(qū)別:

  • link是XHTML標簽,除了加載CSS外望拖,還可以定義RSS等其他事務渺尘;@import屬于CSS范疇,只能加載CSS说敏。
  • link是XHTML標簽,無兼容問題丢郊;@import是在CSS2.1提出的盔沫,低版本的瀏覽器不支持。
  • link引用CSS時枫匾,在頁面載入時同時加載架诞;@import需要頁面網(wǎng)頁完全載入以后加載。
  • link支持使用Javascript控制DOM去改變樣式干茉;而@import不支持谴忧。

優(yōu)先級情況

  • 理論上:內(nèi)聯(lián)(行內(nèi))>內(nèi)嵌>鏈接>導入;
  • 實際上:內(nèi)嵌角虫、鏈接沾谓、導入在同一個文件頭部,誰離相應的代碼近戳鹅,誰的優(yōu)先級高均驶;
  • 一般情況下,在webkit中優(yōu)先級情況為:!important > inline style > ID > class > tag枫虏;
  1. 前端頁面的三層結構:結構層(Html )妇穴,表示層(CSS)爬虱,行為層(Javascript)

  2. css的基本語句構成:選擇器{屬性1:值1;屬性2:值2;……}

  3. 主流瀏覽器內(nèi)核:Ie(Ie內(nèi)核) 火狐(Gecko) 谷歌(webkit) opear(Presto)

  4. 幾種IE6 BUG的解決方法:

    • 雙邊距BUG float引起的 使用display;
    • 3像素問題 使用float引起的 使用dislpay:inline -3px腾它;
    • 超鏈接hover 點擊后失效 使用正確的書寫順序 link visited hover active跑筝;
    • IE z-index問題 給父級添加position:relative;
    • Png 透明 使用js代碼 改瞒滴;
    • min-height 最小高度 !important 解決继蜡;
    • select 在ie6下遮蓋 使用iframe嵌套;
    • 為什么沒有辦法定義1px左右的寬度容器(IE6默認的行高造成的逛腿,使用over:hidden,zoom:0.08 line-height:1px)稀并;
  5. 標簽上title與alt屬性有什么區(qū)別:

    • alt 設置當圖片因各種原因(網(wǎng)絡故障、圖片丟失)不能顯示時用來代替顯示的文字单默,使用戶獲取的信息相對完整碘举;
    • title 設置當鼠標移上元素上是顯示的提示文本;
  6. CSS reset 重置瀏覽器的css默認屬性搁廓,讓其樣式統(tǒng)一引颈,達到兼容不同瀏覽器的目的;了解詳情

  7. css sprites(精靈) 是把一堆小的圖片整合到一張大的圖片上境蜕,減輕服務器對圖片的請求次數(shù)從而提高訪問效率蝙场,但是開發(fā)和維護相對麻煩;一般當有一堆圖標時用得比較多粱年。

  8. 在W3C標準出來前各瀏覽器不統(tǒng)一的渲染模式稱之為--怪異模式 售滤,在W3C標準出來后各瀏覽器統(tǒng)一的渲染模式稱之為--標準模式 ,兩種模式之間主要的區(qū)別在于對盒子模型渲染的方式不同 台诗。了解詳情

    • 在嚴格模式中 :width是內(nèi)容寬度 完箩,元素真正的寬度 = margin-left + border-left-width + padding-left + width + padding-right + border-right- width + margin-right;
    • 在怪異模式中 :width則是元素的實際寬度 拉队,內(nèi)容寬度 = width - ( padding-left + padding-right + border-left-width + border-right-width)弊知;
    • 通過指定DOCTYPE 可以指定以標準模式渲染;
    • 通過window.top.document.compatMode 可查看當前模式粱快;
  9. 語義化的HTML:合理的使用html標簽對于搜索引擎的抓取有好處秩彤;

  10. 清除浮動的幾種方式以及各自的優(yōu)缺點:

  • 使用空標簽清除浮動 clear:both(理論上能清除任何標簽的浮動,但是會增加無意義的標簽)事哭;
  • 使用overflow:auto(空標簽元素清除浮動而不得不增加無意義代碼的弊端漫雷,使用zoom:1用于兼容IE)
  • 使用:afert偽元素清除浮動(用于非IE瀏覽器);
  1. javascript的typeof()函數(shù)返回的數(shù)據(jù)類:object, number, function, boolean, underfind

  2. 常見的強制類型轉(zhuǎn)換隱式類型轉(zhuǎn)換

  • 制類型轉(zhuǎn)換(parseInt, parseFloat, Number)慷蠕;
  • 隱式類型轉(zhuǎn)換(== – ===)珊拼;
  1. Javascript 常用方法:
  • split() 切割成數(shù)組的形式;
  • join() 將數(shù)組轉(zhuǎn)換成字符串流炕;
  • push() 尾部添加澎现;
  • pop() 尾部刪除仅胞;
  • unshift() 頭部添加;
  • shift() 頭部刪除剑辫;
  1. 事件綁定普通事件 有的區(qū)別:普通事件中的onclick是DOM0級事件只支持單個 事件干旧,會被其他onclick事件覆蓋,而事件綁定中的addEventListener是DOM2級事件可以添加多個事件而不用擔心被覆蓋妹蔽;

  2. Javascript Event事件中IE與標準DOM事件流的區(qū)別:IE采用冒泡型事件 Netscape使用捕獲型事件 DOM使用先捕獲后冒泡型事件椎眯;了解詳情

  3. IE和標準下有哪些兼容性的寫法

   /* 
   在IE8或者IE8以下的瀏覽器中,事件處理函數(shù)中使用的時間對象是window.event胳岂,IE8以上瀏覽器既可以使用window.event也可以使用傳遞的事件對象编整,不過火狐瀏覽器只能夠使用傳遞的事件對象,所以以上代碼主要是為了兼容火狐瀏覽器
   */
   var ev = ev || window.event;
   //獲取視窗的高度
   var width = document.documentElement.clientWidth || document.body.clientWidth;
   //獲取事件的觸發(fā)源
   var target = ev.srcElement||ev.target;
  1. 常用的解析json的方式通常用JSON.parse()乳丰,但是eval()方法也可以解析掌测,兩者區(qū)別如下:
  • JSON.parse()解析json前會對其是否符合json格式進行檢查,如果格式不正確則不進行解析产园,為保證安全性推薦使用汞斧;但某些低級的瀏覽器尚不支持JSON.parse();
  • eval()可以解析任何字符串而不對格式進行檢查什燕,所以eval()是不安全的粘勒;
  1. js事件委托 :利用事件冒泡的原理,讓自己的所觸發(fā)的事件屎即,讓他的父元素代替執(zhí)行庙睡,事件監(jiān)聽器會分析從子元素冒泡上來的事件,找到是那個觸發(fā)事件的子元素剑勾,進而進行相關處理埃撵,這樣處理的目的是不需要為每一個子元素分別添加事件,特別是當子元素有增加或減少的時候虽另,提高性能,添加的元素還會有之前的事件饺谬。捂刺;了解詳情

  2. 閉包 閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù),由于在Javascript語言中募寨,只有函數(shù)內(nèi)部的子函數(shù)才能讀取局部變量族展,因此可以把閉包簡單理解成“定義在一個函數(shù)內(nèi)部的函數(shù)”。作用: 一個是前面提到的可以讀取函數(shù)內(nèi)部的變量拔鹰,另一個就是讓這些變量的值始終保持在內(nèi)存中仪缸。使用中需要注意的點:了解詳情

 > * 由于閉包會使得函數(shù)中的變量都被保存在內(nèi)存中,內(nèi)存消耗很大列肢,所以不能濫用閉包恰画,否則會造成網(wǎng)頁的性能問題宾茂,在IE中可能導致內(nèi)存泄露。解決方法是拴还,在退出函數(shù)之前跨晴,將不使用的局部變量全部刪除。
 > * 閉包會在父函數(shù)外部片林,改變父函數(shù)內(nèi)部變量的值端盆。所以,如果你把父函數(shù)當作對象(object)使用费封,把閉包當作它的公用方法(Public Method)焕妙,把內(nèi)部變量當作它的私有屬性(private value),這時一定要小心弓摘,不要隨便改變父函數(shù)內(nèi)部變量的值
  1. 阻止事件冒泡和默認事件的方法:
 ``` javascript
 //阻止事件冒泡
 function stopBubble(e) {  
   if(e && e.stopPropagation){  
       e.stopPropagation();  
   } else {  
     window.event.cancelBubble = true;  
   }  
 };  
 // 阻止瀏覽器的默認事件  
 function stopDefault(e){  
   if(e && e.preventDefault) {  
     e.preventDefault();  
   } else {  
     window.event.returnValue = false;  
   }  
   return false;  
 };  
 ```
  1. 解釋jsonp的原理焚鹊,以及為什么不是真正的ajax。了解詳情
 jsonp動態(tài)創(chuàng)建script標簽衣盾,回調(diào)函數(shù)
 Ajax是頁面無刷新請求數(shù)據(jù)操作
  1. javascript的本地對象寺旺,內(nèi)置對象和宿主對象
 > * 本地對象為array obj regexp等可以new實例化
 > * 內(nèi)置對象為gload Math 等不可以實例化的
 > * 宿主為瀏覽器自帶的document,window 等

 ?
  1. Javascript的同源策略: 一種安全策略,限制一段腳本只能讀取來自于同一來源的窗口和文檔的屬性势决,這里的同一來源指的是主機名阻塑、協(xié)議和端口號的組合。

  2. 什么是盒子模型:

 > 在網(wǎng)頁中果复,一個元素占有空間的大小由幾個部分構成陈莽,其中包括元素的內(nèi)容(content),元素的內(nèi)邊距(padding)虽抄,元素的邊框(border)走搁,元素的外邊距(margin)四個部分。這四個部分占有的空間中迈窟,有的部分可以顯示相應的內(nèi)容私植,而有的部分只用來分隔相鄰的區(qū)域或區(qū)域。4個部分一起構成了css中元素的盒模型车酣。
  1. 行內(nèi)元素有哪些曲稼?塊級元素有哪些? 空(void)元素有那些湖员?
 > 行內(nèi)元素:a贫悄、b、span娘摔、img窄坦、input、strong、select鸭津、label彤侍、em、button曙博、textarea
 > 塊級元素:div拥刻、ul、li父泳、dl般哼、dt、dd惠窄、p蒸眠、h1-h6、blockquote
 > 空元素:即系沒有內(nèi)容的HTML元素杆融,例如:br楞卡、meta、hr脾歇、link蒋腮、img
  1. 簡述一下src與href的區(qū)別:
 > * href 是指向網(wǎng)絡資源所在位置,建立和當前元素(錨點)或當前文檔(鏈接)之間的鏈接藕各,用于超鏈接池摧。
 > * src是指向外部資源的位置,指向的內(nèi)容將會嵌入到文檔中當前標簽所在位置激况;在請求src資源時會將其指向的資源下載并應用到文檔內(nèi)作彤,例如js腳本,img圖片和frame等元素乌逐。當瀏覽器解析到該元素時竭讳,會暫停其他資源的下載和處理,直到將該資源加載浙踢、編譯绢慢、執(zhí)行完畢,圖片和框架等元素也如此洛波,類似于將所指向資源嵌入當前標簽內(nèi)呐芥。這也是為什么將js腳本放在底部而不是頭部。
  1. 什么是CSS Hack?
    一般來說是針對不同的瀏覽器或同一瀏覽器不同的版本寫不同的CSS,就是 CSS Hack奋岁。
    IE瀏覽器Hack一般又分為三種,條件Hack荸百、屬性級Hack闻伶、選擇符Hack。例如:
 ``` css
 /* 條件Hack */
 <!--[if IE]>
   <style>
      .test{color:red;}
   </style>
 <![end if]-->

 /* 屬性Hack */
 .test{
   color:#090\9;     /* For IE8+ */
   color:#f00;       /* For IE7 and earlier */
   _color:#ff0;      /* For IE6 and earlier */
 }

 /* 選擇符Hack */
 - html .test{color:#090;}     /* For IE6 and earlier */
 -- html .test{color:#ff0;}    /* For IE7 */
 ```
  1. 簡述同步和異步的區(qū)別(過橋模型)
 > * 同步是**阻塞模式** 够话,異步是**非阻塞模式** 蓝翰。
 > * 同步就是指一個進程在執(zhí)行某個請求的時候光绕,若該請求需要一段時間才能返回信息,那么這個進程將會一直等待下去畜份,直到收到返回信息才繼續(xù)執(zhí)行下去诞帐;
 > * 異步是指進程不需要一直等下去,而是繼續(xù)執(zhí)行下面的操作爆雹,不管其他進程的狀態(tài)停蕉。當有消息返回時系統(tǒng)會通知進程進行處理,這樣可以提高執(zhí)行的效率钙态。
  1. 什么叫優(yōu)雅降級和漸進增強慧起?
 > * 漸進增強 progressive enhancement:
 >   針對低版本瀏覽器進行構建頁面,保證最基本的功能册倒,然后再針對高級瀏覽器進行效果蚓挤、交互等改進和追加功能達到更好的用戶體驗。
 > * 優(yōu)雅降級 graceful degradation:
 >   一開始就構建完整的功能驻子,然后再針對低版本瀏覽器進行兼容灿意。
 > * 區(qū)別:
 >   a. 優(yōu)雅降級是從復雜的現(xiàn)狀開始,并試圖減少用戶體驗的供給
 >   b. 漸進增強則是從一個非吵绾牵基礎的缤剧,能夠起作用的版本開始,并不斷擴充演熟,以適應未來環(huán)境的需要
 >   c. 降級(功能衰減)意味著往回看鞭执;而漸進增強則意味著朝前看,同時保證其根基處于安全地帶
  1. px和em都是長度單位芒粹,區(qū)別是px的值是固定的兄纺,指定是多少就是多少,計算比較容易化漆。em得值不是固定的估脆,并且em會繼承父級元素的字體大小 。瀏覽器的默認字體高都是16px座云。所以未經(jīng)調(diào)整的瀏覽器都符合: 1em=16px疙赠。那么12px=0.75em, 10px=0.625em

  2. 瀏覽器的內(nèi)核分別是什么?

  > * IE: trident內(nèi)核
  > * Firefox:gecko內(nèi)核
  > * Safari:webkit內(nèi)核
  > * Chrome:Blink(基于webkit,Google與Opera Software共同開發(fā))
  > * Opera:以前是presto內(nèi)核朦拖,Opera現(xiàn)已改用Google Chrome的Blink內(nèi)核
  1. 怎樣添加圃阳、移除、移動璧帝、復制捍岳、創(chuàng)建和查找節(jié)點?
  > * 1)創(chuàng)建新節(jié)點
  >   * createDocumentFragment() //創(chuàng)建一個DOM片段    
  >   * createElement() //創(chuàng)建一個具體的元素
  >   * createTextNode() //創(chuàng)建一個文本節(jié)點
  > * 2)添加、移除锣夹、替換页徐、插入
  >   * appendChild() //添加
  >   * removeChild() //移除
  >   * replaceChild() //替換
  >   * insertBefore() //插入
  > * 3)查找
  >   * getElementsByTagName() //通過標簽名稱
  >   * getElementsByName() //通過元素的Name屬性的值
  >   * getElementById() //通過元素Id,唯一性
  1. caller是返回一個對函數(shù)的引用银萍,該函數(shù)調(diào)用了當前函數(shù)变勇;callee是返回正在被執(zhí)行的function函數(shù),也就是所指定的function對象的正文贴唇,它是arguments的一個屬性搀绣。了解詳情

  2. 請描述一下cookies,sessionStorage和localStorage的區(qū)別

  > * sessionStorage用于本地存儲一個會話(session)中的數(shù)據(jù)滤蝠,這些數(shù)據(jù)只有在同一個會話中的頁面才能訪問并且當會話結束后數(shù)據(jù)也隨之銷毀豌熄。因此sessionStorage不是一種持久化的本地存儲,僅僅是會話級別的存儲
  > * localStorage用于持久化的本地存儲物咳,除非主動刪除數(shù)據(jù)锣险,否則數(shù)據(jù)是永遠不會過期的。
  > * web storage和cookie的區(qū)別Web Storage的概念和cookie相似览闰,區(qū)別是它是為了更大容量存儲設計的芯肤。
  >   * Cookie的大小是受限的;
  >   * 并且每次你請求一個新的頁面的時候Cookie都會被發(fā)送過去压鉴,這樣無形中浪費了帶寬崖咨;
  >   * 另外cookie還需要指定作用域,不可以跨域調(diào)用油吭;
  >   * Web Storage擁有setItem,getItem,removeItem,clear等方法击蹲,不像cookie需要前端開發(fā)者自己封裝setCookie,getCookie婉宰。
  >   * 但是Cookie也是不可以或缺的:Cookie的作用是與服務器進行交互歌豺,作為HTTP規(guī)范的一部分而存在 ,而Web Storage僅僅是為了在本地“存儲”數(shù)據(jù)而生心包。
  1. 一次完整的HTTP事務是怎樣的一個過程:
  > *  域名解析
  > * 發(fā)起TCP的3次握手
  > * 建立TCP連接后發(fā)起http請求
  > * 服務器端響應http請求类咧,瀏覽器得到html代碼
  > * 瀏覽器解析html代碼,并請求html代碼中的資源
  > * 瀏覽器對頁面進行渲染呈現(xiàn)給用戶
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蟹腾,一起剝皮案震驚了整個濱河市痕惋,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌娃殖,老刑警劉巖值戳,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異炉爆,居然都是意外死亡述寡,警方通過查閱死者的電腦和手機柿隙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鲫凶,“玉大人,你說我怎么就攤上這事衩辟∶牛” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵艺晴,是天一觀的道長昼钻。 經(jīng)常有香客問我,道長封寞,這世上最難降的妖魔是什么然评? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮狈究,結果婚禮上碗淌,老公的妹妹穿的比我還像新娘。我一直安慰自己抖锥,他們只是感情好亿眠,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著磅废,像睡著了一般纳像。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拯勉,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天竟趾,我揣著相機與錄音,去河邊找鬼宫峦。 笑死岔帽,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的斗遏。 我是一名探鬼主播山卦,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼诵次!你這毒婦竟也來了账蓉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤逾一,失蹤者是張志新(化名)和其女友劉穎铸本,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體遵堵,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡箱玷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年怨规,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锡足。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡波丰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出舶得,到底是詐尸還是另有隱情掰烟,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布沐批,位于F島的核電站纫骑,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏九孩。R本人自食惡果不足惜先馆,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望躺彬。 院中可真熱鬧煤墙,春花似錦、人聲如沸顾患。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽江解。三九已至设预,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間犁河,已是汗流浹背鳖枕。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留桨螺,地道東北人送朱。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓匠抗,卻偏偏與公主長得像爽雄,于是被迫代替她去往敵國和親嗅回。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案肝箱? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,728評論 1 92
  • <a name='html'>HTML</a> Doctype作用哄褒?標準模式與兼容模式各有什么區(qū)別? (1)、<...
    clark124閱讀 3,456評論 1 19
  • 進入12月就開始放慢腳步煌张,調(diào)整狀態(tài)呐赡,準備新一年的計劃。 每天都在有意識地提醒自己做清理:對不起骏融,請原諒链嘀,謝謝你萌狂,我...
  • 會議、商談 一定要留下記錄 堅持下去就會成為習慣 讓大家的溝通變得更加緊密
    芳瑩菇?jīng)?/span>閱讀 141評論 0 0
  • 沒有寫日記的習慣怀泊,因為通常不記事只記思想茫藏。抱著水水水的態(tài)度的大學選修我?guī)е鷻C和c一大早去等點名。我只能說聽著...
    追火車的人閱讀 371評論 0 2