前端面試題總結:HTML5,JS,CSS3,兼容性。

 

 

一、 請寫出至少20個HTML5標籤css

複製代碼
<article><aside>
<audio><video>
<canvas><datalist><command> <details><embed>
<figcaption><figure>
<footer><header><nav><section>
<hgroup><keygen>
<mark><time><summary>
複製代碼

二、 簡述jpg。Gif。png-8.png-24的區別,分別使用場景html

  gif、jpg、png格式的圖片在網站製做中的區別前端

  Gif格式特色:
  1.透明性,Gif是一種布爾透明類型,既它能夠是全透明,也能夠是全不透明,可是它並無半透明(alpha透明)。
  2.動畫,Gif這種格式支持動畫。
  3.無損耗性,Gif是一種無損耗的圖像格式,這也意味着你能夠對gif圖片作任何操做也不會使得圖像質量產生損耗。
  4.水平掃描,Gif是使用了一種叫做LZW的算法進行壓縮的,當壓縮gif的過程當中,像素是由上到下水平壓縮的,這也意味着同等條件下,橫向的gif圖片比豎向的gif圖片更加小。例如500*10的圖片比10*500的圖片更加小
  5.間隔漸進顯示,Gif支持可選擇性的間隔漸進顯示
  由以上特色看出只有256種顏色的gif圖片不適合照片,但它適合對顏色要求不高的圖形(好比說圖標,圖表等),它並非最優的選擇,咱們會在後面中看到png是最優的選擇。
  Jpeg格式特色:
  1.透明性,它並不支持透明。
  2.動畫,它也不支持動畫。
  3.損耗性,除了一些好比說旋轉(僅僅是90、180、270度旋轉),裁切,從標準類型到先進類型,編輯圖片的原數據以外,全部其它操做對jpeg圖像的處理都會使得它的質量損失。因此咱們在編輯過程通常用png做爲過渡格式。
  4.隔行漸進顯示,它支持隔行漸進顯示(可是ie瀏覽器並不支持這個屬性,可是ie會在整個圖像信息徹底到達的時候顯示)。
  由上能夠看出Jpeg是最適web上面的攝影圖片和數字照相機中。
  Png格式特色:
  1.類型,Png這種圖片格式包括了許多子類,可是在實踐中大體能夠分爲256色的png和全色的png,你完成能夠用256色的png代替gif,用全色的png代替jpeg
  2.透明性,Png是徹底支持alpha透明的(透明,半透明,不透明),儘管有兩個怪異的現象在ie6(下面詳細討論)
  3.動畫,它不支持動畫
  PNG圖片格式如今包含三種類型:
  1.PNG8256色PNG的別名
  2.PNG24全色PNG的別名
  3.PNG32全色PNG的別名
  基本上PNG32就是PNG24,可是附帶了全alpha通道。就是說每一個像素上不只存儲了24位真色彩信息還存儲了8位的alpha通道信息,就如同GIF能存儲透明和不透明信息同樣。當咱們把圖片放到不太搭配的背景上的時候,透明PNG圖片的邊緣會顯示得更加平滑。
  固然,我也知道你的想法,「可是Photoshop也能生成帶透明通道的PNG圖片!」我也知道,它只是表面上這麼說是PNG24,讓我也產生困惑了。
  做爲一個傷感的Fireworks倡導者,我只使用PNG32支持附帶alpha通道的真色彩圖片。無論怎樣,若是你習慣使用Photoshop,你就應該知道,Photoshop在「存儲爲WEB格式」中只提供PNG8和PNG24兩種PNG格式。
  我敢確定你常常會勾選「支持透明」選項,以得到帶有透明度的PNG圖片,可是這樣你就獲取了一張PNG32圖片。——Photoshop只是以爲把PNG32這個名稱給隱藏掉了。奇怪吧?……
  對png8的誤解
  Png8的在ie中的怪異表現:
  半透明的png8在ie6如下的瀏覽器顯示爲全透明。
  Alpha透明的全色PNG(png32)在ie6中會出現背景顏色(一般是灰色)。
  由上面能夠總結:
  (a)全透明的png8能夠在任一瀏覽器正常顯示(就像gif同樣)。半透明的png8在除了ie6及其如下的瀏覽器下錯誤的顯示成全透明,其它瀏覽器都能正常顯示半透明。這個bug並不須要特殊對待,由於在不支持半透明的瀏覽器下只是顯示爲全透明,對用戶體驗影響不大,它反而是透明gif的增強版。
  (b)第二個bug沒有什麼好的方法解決,只能經過影響性能的方法AlphaImageLoader與須要加特殊標籤(VML)。
  所以得出結論就是:請使用PNG8。
  Png8的軟件問題:
  Photoshop只能導出布爾透明的PNG8。
  Fireworks既能導出布爾透明的PNG8,也能導出alpha透明的PNG8。html5

三、 可以設置文本加粗的樣式屬性是什麼java

字體加粗(font-weight)   webpack

功能:用於設置字體筆劃的粗細。   es6

屬性值:正常度 - normal   web

相對度 - bold, bolder, light, lighter   ajax

漸變度 - 100, 200, 300, 400(至關於normal), 500, 600, 700(至關於 bold、 lighter、 bolder、以及數值100-900。   算法

語法爲:h1 {font-weight: 屬性值}

四、 編寫一個佈局,頁面寬度自適應,最小寬度300px,左邊定寬35%,右邊定寬65%

複製代碼
 1 <div class="container">
 2 <div class="left"></div>
 3 <div class="right"></div>
 4 </div>
 5 
 6 <style>
 7 .container {
 8     height: 600px;
 9     _width: 300px;
10     min-width: 300px;
11 }
12 .left {
13     width: 35%;
14     height: 100%;
15     background: #ff0;
16     float: left;
17 }
18 .right {
19     overflow: hidden;
20     width: 65%;
21     height: 100%;
22     background: #0f0;
23 }
24 </style>
複製代碼

五、 談談對html5的瞭解

(1)、良好的移動性,以移動設備爲主。

(2)、響應式設計,以適應自動變化的屏幕尺寸

(3)、支持離線緩存技術,webStorage本地緩存

(4)、新增canvas,video,audio等新標籤元素。新特殊內容元素:article,footer,header,nav,section等,新的表單控件:calendar,date,time,email,url,search。

(5)、地理定位...

(6)、新增webSocket/webWork技術

六、 Js面向對象的幾種方式

(1)、對象的字面量 var obj = {}

(2)、建立實例對象 var obj = new Object();

(3)、構造函數模式 function fn(){} , new fn();

(4)、工廠模式:用一個函數,經過傳遞參數返回對象。function fn(params){var obj =new Object();obj.params = params; return obj;},fn(params);

(5)、原型模式:function clock(hour){} fn.prototype.hour = 0; new clock();

首先,每一個函數都有一個prototype(原型)屬性,這個指針指向的就是clock.prototype對象。而這個原型對象在默認的時候有一個屬性constructor,指向clock,這個屬性可讀可寫。而當咱們在實例化一個對象的時候,實例newClock除了具備構造函數定義的屬性和方法外(注意,只是構造函數中的),還有一個指向構造函數的原型的指針,ECMAScript管他叫[[prototype]],這樣實例化對象的時候,原型對象的方法並無在某個具體的實例中,由於原型沒有被實例。

七、前端頁面有哪三層構成,分別是什麼,做用是什麼

Css: 層疊樣式表 ,表現,  由css負責建立。css對「如何顯示有關內容」的問題作出了回答。

Html:超文本標記語言 ,結構,由 HTML 或 xhtml之類的標記語言負責建立。標籤,也就是那些出如今尖括號裏的單詞,對網頁內容的語義含義作出了描述,但這些標籤不包含任何關於如何顯示有關內容的信息。例如,P標籤表達了這樣一種語義:「這是一個文本段。」

Js: 客戶端腳本語言 ,行爲, 內容應該如何對事件作出反應。

八、 如何對網站的文件和資源進行優化

(1)、文件合併(目的是減小http請求)

(2)、文件壓縮 (目的是直接減小文件下載的體積)

(3)、使用cdn託管資源

(4)、使用緩存

(5)、gizp壓縮你的js和css文件

(6)、meta標籤優化(title,description,keywords),heading標籤的優化,alt優化

(7)、反向連接,網站外連接優化。

九、 JQuery中有幾種類型的選擇器

(1)、層疊選擇器$(「form input」)
(2)、基本過濾選擇器:first:last:not()
(3)、內容過濾選擇器:odd:eq():animated
(4)、可視化過濾選擇器:hidden:visible
(5)、屬性過濾選擇器:div[id]
(6)、子元素過濾選擇器:first-child:last-child:only:child
(7)、表單元素過濾選擇器:enabled:disabled:checked:selected
(8)、id,類,類型,元素...

十、說幾條javasprit的基本規範

(1)、不要在同一行聲明多個變量。
(2)、請使用 ===/!==來比較true/false或者數值
(3)、使用對象字面量替代new Array這種形式
(4)、不要使用全局函數。
(5)、Switch語句必須帶有default分支
(6)、函數不該該有時候有返回值,有時候沒有返回值。
(7)、For循環必須使用大括號
(8)、If語句必須使用大括號
(9)、for-in循環中的變量 應該使用var關鍵字明確限定做用域,從而避免做用域污染。

十一、 Html5中本地存儲概念是什麼,有什麼優勢

cookie是網站爲了標示用戶身份而儲存在用戶本地終端(Client Side)上的數據(一般通過加密)。

cookie數據始終在同源的http請求中攜帶(即便不須要),記會在瀏覽器和服務器間來回傳遞。

sessionStorage和localStorage不會自動把數據發給服務器,僅在本地保存。

存儲大小

    cookie數據大小不能超過4k。

    sessionStorage和localStorage 雖然也有存儲大小的限制,但比cookie大得多,能夠達到5M或更大。

有期時間

    localStorage    存儲持久數據,瀏覽器關閉後數據不丟失除非主動刪除數據;

    sessionStorage  數據在當前瀏覽器窗口關閉後自動刪除。

    cookie          設置的cookie過時時間以前一直有效,即便窗口或瀏覽器關閉

十二、什麼是ajax和json,它們的優缺點

ajax的全稱:Asynchronous Javascript And XML。

異步傳輸+js+xml。

所謂異步,在這裏簡單地解釋就是:向服務器發送請求的時候,咱們沒必要等待結果,而是能夠同時作其餘的事情,等到有告終果它本身會根據設定進行後續操做,與此同時,頁面是不會發生整頁刷新的,提升了用戶體驗。

(1)建立XMLHttpRequest對象,也就是建立一個異步調用對象

(2)建立一個新的HTTP請求,並指定該HTTP請求的方法、URL及驗證信息

(3)設置響應HTTP請求狀態變化的函數

(4)發送HTTP請求

(5)獲取異步調用返回的數據

(6)使用JavaScript和DOM實現局部刷新

1三、 你知道那些針對jQuery的優化方法

基於Class的選擇性的性能相對於Id選擇器開銷很大,由於需遍歷全部DOM元素。

頻繁操做的DOM,先緩存起來再操做。用Jquery的鏈式調用更好。

好比:var str=$("a").attr("href");

for (var i = size; i < arr.length; i++) {}

for 循環每一次循環都查找了數組 (arr) 的.length 屬性,在開始循環的時候設置一個變量來存儲這個數字,可讓循環跑得更快:

for (var i = size, length = arr.length; i < length; i++) {}

1四、編寫一個方法求一個字符串的字節長度,假設:一個英文字符佔用一個字節,一箇中文字符佔用兩個字節

複製代碼
 1 function num(str) {
 2     var num1 = str.length;
 3     var num2 = 0;
 4     for (var i = 0; i < str.length; i++) {
 5         if (str.charCodeAt(i) >= 10000) {
 6             num2++;
 7         }
 8     }
 9     console.log(num1 + num2)
10 }
複製代碼

1五、簡述ECMASCRIPT6的新特性

1.增長塊做用域

2.增長let const

3.解構賦值

4.函數參數擴展 (函數參數可使用默認值、不定參數以及拓展參數)

5.增長class類的支持

6.增長箭頭函數

7.增長模塊和模塊加載(ES6中開始支持原生模塊化啦)

8.math, number, string, array, object增長新的API

1六、Apply和call方法的異同

相同點:兩個方法產生的做用是徹底同樣的,第一個參數都是對象;

不一樣點:

call()方法參數將依次傳遞給借用的方法做參數,即fn.call(thisobj, arg1,arg2,arg3...argn),有n個參數

apply()方法第一個參數是對象,第二個參數是數組fn.apply(thisobj,arg),此處的arg是一個數組,只有兩個參數

 1七、 爲何利用多個域名來提供網站資源會更有效?

(1)、突破瀏覽器的併發限制(瀏覽器同一域名最大的併發請求數量爲6個,ie6爲2個)
(2)、節約cookie帶寬
(3)、CDN緩存更方便
(4)、防止沒必要要的安全問題(尤爲是cookie的隔離尤其重要)
(5)、節約主機域名鏈接數,優化頁面響應速度

1八、身爲覺得web前端工程師,你確定知道如今最流行的前端技術吧,有那些?

Vuejs2.0/Angular2.0/React Native /es6//Nodejs

http2

gulp/webpack

1九、 你如何從瀏覽器的URL中獲取參數信息

瀏覽器宿主環境中,有一個location對象,同時這個對象也是window對象和document對象的屬性。

location對象中提供了與當前窗口加載的文檔有關的的信息,即URL信息。

如 https://www.baidu.com/api/sousu?search=baidu&id=123#2

location.href: 完整URL

location.protocol: 返回協議(https:)

location.host: 返回服務器名稱和端口號(www.baidu.com

location.hostname: 返回服務器名稱(www.baidu.com

location.port:返回服務器端口號(http默認80,https默認443)

location.pathname:返回URL中的目錄和文件名(api/sousu)

location.search:返回查詢字符串(?search=baidu&id=123#2)

location.hash:返回hash值(#2)

20、 請戳出ie6/7下特有的cssbug

(1)、li邊距「無端」 增長

設置ul的顯示形式爲*display:inline-block;便可,前面加*是隻 針對IE6/IE7有效

(2)、IE6 不支持min-height屬性,但它卻認爲height就是最小高度

使用ie6不支持但其他瀏覽器支持的屬性!important。

(3)、Overflow:

在IE6/7中,overflow沒法正確的隱藏有相對定位position:relative;的子元素。解決方法就是給外包容器.wrap加上position:relative;。

(4)、border:none 在IE6不起做用: 寫成border:0 就能夠了,

(5)、100%高度

在IE6下,若是要給元素定義100%高度,必需要明肯定義它的父級元素的高度,若是你須要給元素定義滿屏的高度,就得先給html和body定義 height:100%;。

(6)、雙邊距 Bug

當元素浮動時,IE6會錯誤的的把浮動方式的margin值雙倍計算,給float的元素添加一個display:inline

(7)、躲貓貓bug

些定義了:hover的連接,當鼠標移到那些連接上時,在IE6下就會觸發躲貓貓。
1.在(那個未浮動的)內容以後添加一個<span style=」clear: both;」></span>
2.觸發包含了這些連接的容器的hasLayout,一個簡單的方法就是給其定義height:1%;

(8)、IE6 絕對定位的元素1px 間距bug

當絕對定位的父元素或寬度爲奇數時,bottom和right會多出現1px,

解決方案,針對IE6進行hack處理

 

***若是感受有一點點收得到話,請幫忙點下推薦!!!

相關文章
相關標籤/搜索