積跬步無以至千里,下面的內(nèi)容是對(duì)網(wǎng)上原有的前端面試題集及答案進(jìn)行了全面修訂之后給出的負(fù)責(zé)任的題目和答案。原來的題目中有很多重復(fù)題目和無價(jià)值的題目,還有不少的參考答案也是錯(cuò)誤的。修改后的前端面試題集去掉了過時(shí)的技術(shù)和框架,補(bǔ)充了現(xiàn)代前端開發(fā)所需的相關(guān)知識(shí),包括HTML5、CSS3、JavaScript最新特性和最佳實(shí)踐、響應(yīng)式設(shè)計(jì)、前端性能優(yōu)化、前端框架等內(nèi)容。同時(shí),修改后的題目集還對(duì)常見的面試算法題和設(shè)計(jì)模式等進(jìn)行了深入剖析,相信對(duì)準(zhǔn)備前端工程師職位的候選人一定有所幫助。
這里會(huì)不斷收集和更新web前端相關(guān)的面試題,目前已收集100題。
轉(zhuǎn)發(fā)本文+關(guān)注+私信【學(xué)習(xí)】獲取以下完整面試PDF
SS
Web前端面試題及答案
本周面試題及答案題分享,請(qǐng)注意收藏喲~
Q:
Px 、em 、 rem、的區(qū)別?
A:
像素px是相對(duì)于顯示器屏幕分辨率而言的。
em指的是一個(gè)字體的大小,它會(huì)繼承父級(jí)元素的字體大小,因此并不是一個(gè)固定的值。
rem是CSS3新增的一個(gè)相對(duì)單位,相對(duì)的只是HTML根元素。
Q:
BFC 是什么? 在什么時(shí)候會(huì)觸發(fā)? 觸發(fā)方式有哪些?
A:
BFC:塊級(jí)格式化上下文,它是一塊獨(dú)立的區(qū)域,它決定了區(qū)域內(nèi)部的塊級(jí)元素怎么布局,并且內(nèi)部的布局不影響外部
觸發(fā):· float的值不為none;· overflow的值不為visible;·
display的值為inline-block、table-cell、table-caption;· position的值為absolute或fixed;
Q:
css3新增屬性?
A:
新增選擇器如:nth-child(), :not()等
其他:圓角radius 多列布局column 陰影和反射:shadow\reflect 文本特效text-shadow 文本渲染:text-decoration 線性漸變:gradient
Q:
如何設(shè)置陰影? 有哪些值?
A:
box-shadow: 10px 10px 5px #888888;
box-shadow: 水平 垂直 距離 尺寸 color inset 后面4個(gè)可選
Q:
relative和absolute分別是相對(duì)于誰進(jìn)行定位的?
A:
relative 生成相對(duì)定位的元素,相對(duì)于其自身在普通流中的位置進(jìn)行定位。
absolute 生成絕對(duì)定位的元素,相對(duì)于其向上查找第一個(gè)不為 static 定位的其他定位祖先元素進(jìn)行定位。
Q:
介紹一下box-sizing,常用的屬性有哪些?分別有什么作用?
A:
box-sizing: content-box|border-box|inherit;
content-box:在寬度和高度之外繪制元素的內(nèi)邊距和邊框。常規(guī)
border-box:為元素指定的任何內(nèi)邊距和邊框都將在已設(shè)定的寬度和高度內(nèi)進(jìn)行繪制
Inherit:規(guī)定應(yīng)從父元素繼承 box-sizing 屬性的值。
Q:
div+css的布局較table布局有什么優(yōu)點(diǎn)?
A:
1.符合W3C標(biāo)準(zhǔn),代碼結(jié)構(gòu)清晰明了,結(jié)構(gòu)、樣式和行為分離,帶來足夠好的可維護(hù)性。
2.布局精準(zhǔn),網(wǎng)站版面布局修改簡(jiǎn)單。
3.加快了頁(yè)面的加載速度(最重要的)(在IE中要將整個(gè)table加載完了才顯示內(nèi)容)。
4.節(jié)約站點(diǎn)所占的空間和站點(diǎn)的流量。
5.用只包含結(jié)構(gòu)化內(nèi)容的HTML代替嵌套的標(biāo)簽,
6.提高搜索引擎對(duì)網(wǎng)頁(yè)的搜索效率。
往期回顧
Review of previous periods
●科普| 那些年,我們錯(cuò)過的Web前端成長(zhǎng)之路
●初級(jí)前端工程師面試指南——先從做題開始!
●Web| 關(guān)于HTML的面試題了解一下!(內(nèi)含福利)
大家如果覺得這些面試題太少太簡(jiǎn)單,
或者對(duì)以上問題答案有疑問!
那可以私信發(fā)送【微信】加朗妹兒微信溝通喲
備注“面試題”
即可免費(fèi)獲得更多面試題及答案喲~
法
用兩個(gè)空格來代替制表符(tab) -- 這是唯一能保證在所有環(huán)境下獲得一致展現(xiàn)的方法。
嵌套元素應(yīng)當(dāng)縮進(jìn)一次(即兩個(gè)空格)。
對(duì)于屬性的定義,確保全部使用雙引號(hào),絕不要使用單引號(hào)。
不要在自閉合(self-closing)元素的尾部添加斜線 -- HTML5 規(guī)范中明確說明這是可選的。
不要省略可選的結(jié)束標(biāo)簽(closing tag)(例如,</li>
或 </body>
)。
實(shí)例:
<!DOCTYPE html><html>
HTML5 doctype
為每個(gè) HTML 頁(yè)面的第一行添加標(biāo)準(zhǔn)模式(standard mode)的聲明,這樣能夠確保在每個(gè)瀏覽器中擁有一致的展現(xiàn)。
實(shí)例:
<!DOCTYPE html><html>
語言屬性
根據(jù) HTML5 規(guī)范:
強(qiáng)烈建議為 html 根元素指定 lang 屬性,從而為文檔設(shè)置正確的語言。這將有助于語音合成工具確定其所應(yīng)該采用的發(fā)音,有助于翻譯工具確定其翻譯時(shí)所應(yīng)遵守的規(guī)則等等。
lang
屬性的知識(shí)可以從 此規(guī)范 中了解。
這里列出了語言代碼表。
<html lang="zh-CN">
IE 兼容模式
IE 支持通過特定的 <meta>
標(biāo)簽來確定繪制當(dāng)前頁(yè)面所應(yīng)該采用的 IE 版本。除非有強(qiáng)烈的特殊需求,否則最好是設(shè)置為 edge mode,從而通知 IE 采用其所支持的最新的模式。
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
字符編碼
通過明確聲明字符編碼,能夠確保瀏覽器快速并容易的判斷頁(yè)面內(nèi)容的渲染方式。這樣做的好處是,可以避免在 HTML 中使用字符實(shí)體標(biāo)記(character entity),從而全部與文檔編碼一致(一般采用 UTF-8 編碼)。
<head>
引入 CSS 和 JavaScript 文件
根據(jù) HTML5 規(guī)范,在引入 CSS 和 JavaScript 文件時(shí)一般不需要指定 type
屬性,因?yàn)?text/css
和 text/javascript
分別是它們的默認(rèn)值。
HTML5 spec links
Using link
Using style
Using script
<!-- External CSS --><link rel="stylesheet" href="code-guide.css"><!-- In-document CSS --><style>
實(shí)用為王
盡量遵循 HTML 標(biāo)準(zhǔn)和語義,但是不要以犧牲實(shí)用性為代價(jià)。任何時(shí)候都要盡量使用最少的標(biāo)簽并保持最小的復(fù)雜度。
屬性順序
HTML 屬性應(yīng)當(dāng)按照以下給出的順序依次排列,確保代碼的易讀性。
class
id
, name
data-*
src
, for
, type
, href
title
, alt
aria-*
, role
class 用于標(biāo)識(shí)高度可復(fù)用組件,因此應(yīng)該排在首位。id 用于標(biāo)識(shí)具體組件,應(yīng)當(dāng)謹(jǐn)慎使用(例如,頁(yè)面內(nèi)的書簽),因此排在第二位。
<a class="..." id="..." data-modal="toggle" href="#">
布爾(boolean)型屬性
布爾型屬性可以在聲明時(shí)不賦值。XHTML 規(guī)范要求為其賦值,但是 HTML5 規(guī)范不需要。
更多信息請(qǐng)參考 WhatWG section on boolean attributes:
元素的布爾型屬性如果有值,就是 true,如果沒有值,就是 false。
如果一定要為其賦值的話,請(qǐng)參考 WhatWG 規(guī)范:
如果屬性存在,其值必須是空字符串或 [...] 屬性的規(guī)范名稱,并且不要在首尾添加空白符。
簡(jiǎn)單來說,就是不用賦值。
<input type="text" disabled><input type="checkbox" value="1" checked><select>
減少標(biāo)簽的數(shù)量
編寫 HTML 代碼時(shí),盡量避免多余的父元素。很多時(shí)候,這需要迭代和重構(gòu)來實(shí)現(xiàn)。請(qǐng)看下面的案例:
<!-- Not so great --><span class="avatar">
JavaScript 生成的標(biāo)簽
通過 JavaScript 生成的標(biāo)簽讓內(nèi)容變得不易查找、編輯,并且降低性能。能避免時(shí)盡量避免。
如您還有不明白的可以在下面與我留言或是與我探討QQ群308855039,我們一起飛!
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。