不少面試題是我本身面試BAT親身經歷碰到的。整理分享出來但願更多的前端er共同進步吧,不只適用於求職者,對於鞏固複習js更是大有裨益。php
而更多的題目是我一路以來收集的,也有往年的,答案不確保必定正確,若有錯誤或有更好的解法,還請斧正。css
前面幾題是會很基礎,越下越有深度。html
附上第一篇:BAT及各大互聯網公司2014前端筆試面試題–JavaScript篇前端
1.你作的頁面在哪些流覽器測試過?這些瀏覽器的內核分別是什麼?java
2.每一個HTML文件裏開頭都有個很重要的東西,Doctype,知道這是幹什麼的嗎?css3
答案:<!DOCTYPE> 聲明位於文檔中的最前面的位置,處於 <html> 標籤以前。此標籤可告知瀏覽器文檔使用哪一種 HTML 或 XHTML 規範。(重點:告訴瀏覽器按照何種規範解析頁面)git
3.Quirks模式是什麼?它和Standards模式有什麼區別github
答案:web
從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佈局有什麼優勢?
5.a:img的alt與title有何異同?b:strong與em的異同?
答案:
a:
b:
6.你能描述一下漸進加強和優雅降級之間的不一樣嗎?
區別:優雅降級是從複雜的現狀開始,並試圖減小用戶體驗的供給,而漸進加強則是從一個很是基礎的,可以起做用的版本開始,並不斷擴充,以適應將來環境的須要。降級(功能衰減)意味着往回看;而漸進加強則意味着朝前看,同時保證其根基處於安全地帶。
「優雅降級」觀點
「優雅降級」觀點認爲應該針對那些最高級、最完善的瀏覽器來設計網站。而將那些被認爲「過期」或有功能缺失的瀏覽器下的測試工做安排在開發週期的最後階段,並把測試對象限定爲主流瀏覽器(如 IE、Mozilla 等)的前一個版本。
在這種設計範例下,舊版的瀏覽器被認爲僅能提供「簡陋卻無妨 (poor, but passable)」 的瀏覽體驗。你能夠作一些小的調整來適應某個特定的瀏覽器。但因爲它們並不是咱們所關注的焦點,所以除了修復較大的錯誤以外,其它的差別將被直接忽略。
「漸進加強」觀點
「漸進加強」觀點則認爲應關注於內容自己。
內容是咱們創建網站的誘因。有的網站展現它,有的則收集它,有的尋求,有的操做,還有的網站甚至會包含以上的種種,但相同點是它們全都涉及到內容。 這使得「漸進加強」成爲一種更爲合理的設計範例。這也是它當即被 Yahoo! 所採納並用以構建其「分級式瀏覽器支 持 (Graded Browser Support)」策略的緣由所在。
那麼問題來了。如今產品經理看到IE6,7,8網頁效果相對高版本現代瀏覽器少了不少圓角,陰影(CSS3),要求兼容(使用圖片背景,放棄CSS3),你會如何說服他?
(自由發揮)
7.爲何利用多個域名來存儲網站資源會更有效?
8.請談一下你對網頁標準和標準制定機構重要性的理解。
(無標準答案)網頁標準和標準制定機構都是爲了能讓web發展的更‘健康’,開發者遵循統一的標準,下降開發難度,開發成本,SEO也會更好作,也不會由於濫用代碼致使各類BUG、安全問題,最終提升網站易用性。
9.請描述一下cookies,sessionStorage和localStorage的區別?
sessionStorage用於本地存儲一個會話(session)中的數據,這些數據只有在同一個會話中的頁面才能訪問而且當會話結束後數據也 隨之銷燬。所以sessionStorage不是一種持久化的本地存儲,僅僅是會話級別的存儲。而localStorage用於持久化的本地存儲,除非主 動刪除數據,不然數據是永遠不會過時的。
web storage和cookie的區別
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)開發的一種旨在加快圖片加載速度的圖片格式。圖片壓縮體積大約只有JPEG的2/3,並能節省大量的服務器帶寬資源和數據空間。Facebook Ebay等知名網站已經開始測試並使用WebP格式。
在質量相同的狀況下,WebP格式圖像的體積要比JPEG格式圖像小40%
12.知道什麼是微格式嗎?談談理解。在前端構建中應該考慮微格式嗎?
答案:
微格式(Microformats)是一種讓機器可讀的語義化XHTML詞彙的集合,是結構化數據的開放標準。是爲特殊應用而制定的特殊格式。
優勢:將智能數據添加到網頁上,讓網站內容在搜索引擎結果界面能夠顯示額外的提示。(應用範例:豆瓣,有興趣自行google)
13.在css/js代碼上線以後開發人員常常會優化性能,從用戶刷新網頁開始,一次js請求通常狀況下有哪些地方會有緩存處理?
答案:dns緩存,cdn緩存,瀏覽器緩存,服務器緩存。
14.一個頁面上有大量的圖片(大型電商網站),加載很慢,你有哪些方法優化這些圖片的加載,給用戶更好的體驗。
15.你如何理解HTML結構的語義化?
html自己是沒有表現的,咱們看到例如<h1>是粗體,字體大小2em,加粗;<strong>是加粗的,不要認爲這是 html的表現,這些其實html默認的css樣式在起做用,因此去掉或樣式丟失的時候能讓頁面呈現清晰的結構不是語義化的HTML結構的優勢,可是瀏覽 器都有有默認樣式,默認樣式的目的也是爲了更好的表達html的語義,能夠說瀏覽器的默認樣式和語義化的HTML結構是不可分割的。
例如,若是你使用的含語義的標記,屏幕閱讀器就會「逐個拼出」你的單詞,而不是試着去對它完整發音.
使用語義標記能夠確保這些設備以一種有意義的方式來渲染網頁.理想狀況下,觀看設備的任務是符合設備自己的條件來渲染網頁.
語義標記爲設備提供了所需的相關信息,就省去了你本身去考慮全部可能的顯示狀況(包括現有的或者未來新的設備).例如,一部手機能夠選擇使一段標記 了標題的文字以粗體顯示.而掌上電腦可能會以比較大的字體來顯示.不管哪一種方式一旦你對文本標記爲標題,您就能夠確信讀取設備將根據其自身的條件來合適地 顯示頁面.
過去你可能尚未考慮搜索引擎的爬蟲也是網站的「訪客」,但如今它們他們其實是極其寶貴的用戶.沒有他們的話,搜索引擎將沒法索引你的網站,而後通常用戶將很難過來訪問.
所以,若是頁面文件的標題被標記,而不是,那麼這個頁面在搜索結果的位置可能會比較靠後.除了提高易用性外,語義標記有利於正確使用CSS和JavaScript,由於其自己提供了許多「鉤鉤」來應用頁面的樣式與行爲.
SEO主要仍是靠你網站的內容和外部連接的。
W3C給咱們定了一個很好的標準,在團隊中你們都遵循這個標準,能夠減小不少差別化的東西,方便開發和維護,提升開發效率,甚至實現模塊化開發。
16.談談之前端角度出發作好SEO須要考慮什麼?
你須要知道一些搜索引擎的基本工做原理,各個搜索引擎之間的區別,搜索機器人(SE robot 或叫 web crawler)如何進行工做,搜索引擎如何對搜索結果進行排序等等。
主要包括主題(Title),網站描述(Description),和關鍵詞(Keywords)。還有一些其它的隱藏文字好比Author(做者),Category(目錄),Language(編碼語種)等。
搜索就得用關鍵詞。關鍵詞分析和選擇是SEO最重要的工做之一。首先要給網站肯定主關鍵詞(通常在5個上下),而後針對這些關鍵詞進行優化,包括關鍵詞密度(Density),相關度(Relavancy),突出性(Prominency)等等。
雖然搜索引擎有不少,可是對網站流量起決定做用的就那麼幾個。好比英文的主要有Google,Yahoo,Bing等;中文的有百度,搜狗,有道 等。不一樣的搜索引擎對頁面的抓取和索引、排序的規則都不同。還要了解各搜索門戶和搜索引擎之間的關係,好比AOL網頁搜索用的是Google的搜索技 術,MSN用的是Bing的技術。
Open Directory自身不是搜索引擎,而是一個大型的網站目錄,他和搜索引擎的主要區別是網站內容的收集方式不一樣。目錄是人工編輯的,主要收錄網站主頁;搜索引擎是自動收集的,除了主頁外還抓取大量的內容頁面。
搜索引擎也須要生存,隨着互聯網商務的愈來愈成熟,收費的搜索引擎也開始大行其道。最典型的有Overture和百度,固然也包括Google的廣 告項目Google Adwords。愈來愈多的人經過搜索引擎的點擊廣告來定位商業網站,這裏面也大有優化和排名的學問,你得學會用最少的廣告投入得到 最多的點擊。
網站作完了之後,別躺在那裏等着客人從天而降。要讓別人找到你,最簡單的辦法就是將網站提交(submit)到搜索引擎。若是你的是商業網站,主要 的搜索引擎和目錄都會要求你付費來得到收錄(好比Yahoo要299美圓),可是好消息是(至少到目前爲止)最大的搜索引擎Google目前仍是免費,而 且它主宰着60%以上的搜索市場。
網頁內容都是以超文本(Hypertext)的方式來互相連接的,網站之間也是如此。除了搜索引擎之外,人們也天天經過不一樣網站之間的連接來 Surfing(「衝浪」)。其它網站到你的網站的連接越多,你也就會得到更多的訪問量。更重要的是,你的網站的外部連接數越多,會被搜索引擎認爲它的重 要性越大,從而給你更高的排名。
1.有哪項方式能夠對一個DOM設置它的CSS樣式?
2.CSS都有哪些選擇器?
除了前3種基本選擇器,還有一些擴展選擇器,包括
那麼問題來了,CSS選擇器的優先級是怎麼樣定義的?
基本原則:
通常而言,選擇器越特殊,它的優先級越高。也就是選擇器指向的越準確,它的優先級就越高。
複雜的計算方法:
那麼問題來了,看下列代碼,<p>標籤內的文字是什麼顏色的?
1
2
3
4
5
6
7
8
9
10
11
|
<style>
.classA{ color:blue;}
.classB{ color:red;}
</style>
<body>
<p class=
'classB classA'
> 123 </p>
</body>
|
答案:red。與樣式定義在文件中的前後順序有關,便是後面的覆蓋前面的,與在<p class=’classB classA’>中的前後關係無關。
3.CSS中能夠經過哪些屬性定義,使得一個DOM元素不顯示在瀏覽器可視範圍內?
最基本的:
設置display屬性爲none,或者設置visibility屬性爲hidden
技巧性:
設置寬高爲0,設置透明度爲0,設置z-index位置在-1000
4.超連接訪問事後hover樣式就不出現的問題是什麼?如何解決?
答案:被點擊訪問過的超連接樣式不在具備hover和active了,解決方法是改變CSS屬性的排列順序: L-V-H-A(link,visited,hover,active)
5.什麼是Css Hack?ie6,7,8的hack分別是什麼?
答案:針對不一樣的瀏覽器寫不一樣的CSS code的過程,就是CSS hack。
示例以下:
1
2
3
4
5
6
7
8
9
10
11
12
|
#test {
width:300px;
height:300px;
background-color:blue;
/*firefox*/
background-color:red\9;
/*all ie*/
background-color:yellow;
/*ie8*/
+background-color:pink;
/*ie7*/
_background-color:orange;
/*ie6*/
}
:root
#test { background-color:purple\9; } /*ie9*/
@media all and (min-width:0px){
#test {background-color:black;} } /*opera*/
@media screen and (-webkit-min-device-pixel-ratio:0){
#test {background-color:gray;} } /*chrome and safari*/
|
6.請用Css寫一個簡單的幻燈片效果頁面
答案:知道是要用css3。使用animation動畫實現一個簡單的幻燈片效果。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/**HTML**/
div.ani
/**css**/
.ani{
width
:
480px
;
height
:
320px
;
margin
:
50px
auto
;
overflow
:
hidden
;
box-shadow:
0
0
5px
rgba(
0
,
0
,
0
,
1
);
background-
size
: cover;
background-position
:
center
;
-webkit-animation-name:
"loops"
;
-webkit-animation-duration:
20
s;
-webkit-animation-iteration-count: infinite;
}
@-webkit-keyframes
"loops"
{
0%
{
background
:
url
(http://d.hiphotos.baidu.com/image/w%
3
D
400
/sign=c
01
e
6
adca
964034
f
0
fcdc
3069
fc
27980
/e
824
b
899
a
9014
c
08
e
5
e
38
ca
4087
b
02087
af
4
f
4
d
3
.jpg)
no-repeat
;
}
25%
{
background
:
url
(http://b.hiphotos.baidu.com/image/w%
3
D
400
/sign=edee
1572
e
9
f
81
a
4
c
2632
edc
9
e
72
b
6029
/
30
adcbef
76094
b
364
d
72
bceba
1
cc
7
cd
98
c
109
dd
0
.jpg)
no-repeat
;
}
50%
{
background
:
url
(http://b.hiphotos.baidu.com/image/w%
3
D
400
/sign=
937
dace
2552
c
11
dfded
1
be
2353266255
/d
8
f
9
d
72
a
6059252
d
258
e
7605369
b
033
b
5
bb
5
b
912
.jpg)
no-repeat
;
}
75%
{
background
:
url
(http://g.hiphotos.baidu.com/image/w%
3
D
400
/sign=
7
d
37500
b
8544
ebf
86
d
71653
fe
9
f
9
d
736
/
0
df
431
adcbef
76095
d
61
f
0972
cdda
3
cc
7
cd
99
e
4
b.jpg)
no-repeat
;
}
100%
{
background
:
url
(http://c.hiphotos.baidu.com/image/w%
3
D
400
/sign=cfb
239
ceb
0
fb
43161
a
1
f
7
b
7
a
10
a
54642
/
3
b
87
e
950352
ac
65
ce
2
e
73
f
76
f
9
f
2
b
21192138
ad
1
.jpg)
no-repeat
;
}
}
|
7.行內元素和塊級元素的具體區別是什麼?行內元素的padding和margin可設置嗎?
塊級元素(block)特性:
內聯元素(inline)特性:
那麼問題來了,瀏覽器還有默認的天生inline-block元素(擁有內在尺寸,可設置高寬,但不會自動換行),有哪些?
答案:<input> 、<img> 、<button> 、<texterea> 、<label>。
8.什麼是外邊距重疊?重疊的結果是什麼?
答案:
外邊距重疊就是margin-collapse。
在CSS當中,相鄰的兩個盒子(多是兄弟關係也多是祖先關係)的外邊距能夠結合成一個單獨的外邊距。這種合併外邊距的方式被稱爲摺疊,而且於是所結合成的外邊距稱爲摺疊外邊距。
摺疊結果遵循下列計算規則:
9.rgba()和opacity的透明效果有什麼不一樣?
答案:
rgba()和opacity都能實現透明效果,但最大的不一樣是opacity做用於元素,以及元素內的全部內容的透明度,
而rgba()只做用於元素的顏色或其背景色。(設置rgba透明的元素的子元素不會繼承透明效果!)
10.css中可讓文字在垂直和水平方向上重疊的兩個屬性是什麼?
答案:
垂直方向:line-height
水平方向:letter-spacing
那麼問題來了,關於letter-spacing的妙用知道有哪些麼?
答案:能夠用於消除inline-block元素間的換行符空格間隙問題。
11.如何垂直居中一個浮動元素?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
// 方法一:已知元素的高寬
#div
1
{
background-color
:
#6699FF
;
width
:
200px
;
height
:
200px
;
position
:
absolute
; //父元素須要相對定位
top
:
50%
;
left
:
50%
;
margin-top
:
-100px
; //二分之一的height,width
margin-left
:
-100px
;
}
//方法二:未知元素的高寬
#div
1
{
width
:
200px
;
height
:
200px
;
background-color
:
#6699FF
;
margin
:
auto
;
position
:
absolute
; //父元素須要相對定位
left
:
0
;
top
:
0
;
right
:
0
;
bottom
:
0
;
}
|
那麼問題來了,如何垂直居中一個<img>?(用更簡便的方法。)
1
2
3
4
5
6
|
#container //<img>的容器設置以下
{
display
:
table-cell
;
text-align
:
center
;
vertical-align
:
middle
;
}
|
12.px和em的區別。
px和em都是長度單位,區別是,px的值是固定的,指定是多少就是多少,計算比較容易。em得值不是固定的,而且em會繼承父級元素的字體大小。
瀏覽器的默認字體高都是16px。因此未經調整的瀏覽器都符合: 1em=16px。那麼12px=0.75em, 10px=0.625em。
13.描述一個」reset」的CSS文件並如何使用它。知道normalize.css嗎?你瞭解他們的不一樣之處?
重置樣式很是多,凡是一個前端開發人員確定有一個經常使用的重置CSS文件並知道如何使用它們。他們是盲目的在作仍是知道爲何這麼作呢?緣由是不一樣的瀏覽器對一些元素有不一樣的默認樣式,若是你不處理,在不一樣的瀏覽器下會存在必要的風險,或者更有戲劇性的性發生。
你可能會用Normalize來代替你的重置樣式文件。它沒有重置全部的樣式風格,但僅提供了一套合理的默認樣式值。既能讓衆多瀏覽器達到一致和合理,但又不擾亂其餘的東西(如粗體的標題)。
在這一方面,沒法作每個復位重置。它也確實有些超過一個重置,它處理了你永遠都不用考慮的怪癖,像HTML的audio元素不一致或line-height不一致。
14.Sass、LESS是什麼?你們爲何要使用他們?
他們是CSS預處理器。他是CSS上的一種抽象層。他們是一種特殊的語法/語言編譯成CSS。
例如Less是一種動態樣式語言. 將CSS賦予了動態語言的特性,如變量,繼承,運算, 函數. LESS 既能夠在客戶端上運行 (支持IE 6+, Webkit, Firefox),也可一在服務端運行 (藉助 Node.js)。
爲何要使用它們?
15.display:none與visibility:hidden的區別是什麼?
便是,使用CSS display:none屬性後,HTML元素(對象)的寬度、高度等各類屬性值都將「丟失」;而使用visibility:hidden屬性後,HTML元素(對象)僅僅是在視覺上看不見(徹底透明),而它所佔據的空間位置仍然存在。