一. HTML
1. 你是如何理解HTML語義化的?
根據內容的結構化, 選擇合適的標簽。
例如:文章就用article標簽,標題就用h1標簽,代碼就用code標簽等。
便于開發(fā)者閱讀和寫出更優(yōu)雅的代碼。
好處:(1)有利于SEO(搜索引擎優(yōu)化)
(2)呈現較好的內容結構和代碼結構。
(3)便于開發(fā)和維護。
(4)方便其它設備解析。
2. meta-viewport 是做什么的?怎么寫?
meta標簽主要用于描述頁面中的一些信息。
寫法:
<meta name="viewport"
content="width=device-width,
initial-scale=1,
maximum-scale=1">
name = "viewport" 表示可供移動設備使用
content = "width=device-width" 表示移動設備下顯示的寬度為設備寬度
initial-scale = 1 表示設備與視口的縮放比率
maximum 和 minimum 表示縮放的最大和最小值,等于1.0則不可縮放。
3. 你用過哪些HTML5標簽?
<hader></header>
<content></content>
<footer></footer>
<main></main>
<section></section>
<h1> - <h5>
<pre></pre>
<article></article>
4. H5是什么?
HTML5并不是一項技術,而是一個標準,所以嚴格意義上說,H5不是用來“做的”,
H5只是一個標準,通俗的說就是一種準則,不是一項技術。H5是指HTML第五次
重大修改版本,也指用H5語言制作的一切數字產品
二. CSS
1. 兩種盒模型說一下。
border-box: width = border + padding + 內容的寬度
content-box: width = 內容的寬度
border-box更好的原因: content-box改變padding 和 border之后需要重新計算寬度,
而border-box不需要,但是boder-box的內容區(qū)域會被擠壓。
2. 如何垂直居中?
1. .content{
display: flex;
aligin-item: center;
justicfy-content: center;
}
2. .content{
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
3. .coontent{
width: 50px;
height: 50px;
position: absolute;
left: 50%;
top: 50%;
margin-top: -25px;
margin-left: -25px;
} <!-- 子元素寬高固定 -->
4. .content{
width: 50px;
height: 50px;
position: absolute;
left: 0;
top: 0;
bottom: 0;
right: 0;
margin: auto
} <!-- 子元素寬高固定 -->
3. flex怎么用?常用屬性有哪些?
4. BFC是什么?
BFC的全稱是塊級格式化上下文
BFC的概念比較抽象,浮動元素、display:inline-
block、絕對定位元素和overflow: hidden等都形成BFC
BFC的作用:使內部浮動元素不會亂跑,并可以和
浮動元素產生邊界margin。
5. CSS選擇器的優(yōu)先級?
1. 越具體優(yōu)先級越高
2. 寫在后面的覆蓋寫在前面的。
3. important! 優(yōu)先級最高
6. 如何清除浮動?
.clearfix{
content: '',
display: block;
clear: both;
}
三. 原生JS
1. ES6語法知道哪些?分別怎么用?
2. promise、promise.all、promise.race 分別怎么用?
Promise是異步編程的一種解決方案,可以將異步操作以同步操作的流程
表達出來。Promise必須為以下三種狀態(tài):
Pending(等待),FullFilled(執(zhí)行態(tài)),和Reject(拒絕)
狀態(tài)的改變只能是單向的,且變化后不可變。
一個Promise必須調用一個then方法已返回其當前值、終值和拒因。
Promise.then回調函數只能執(zhí)行一次,且返回Promise對象。
(1)Promise.all()方法將多個Promise實例,包裝成
一個新的Promise實例。
Promise.all([promise1,promise2]).then(success, fali)
當Promise1和promise2都成功才會調用success。
(2)Promise.race()同樣將多個Promise實例,包裝
成一個新的Promise實例。
Promise.race([promise1,promise2]).then(success, fali)
promise1和promise2只要有一個成功就會調用success
3. 手寫函數防抖和函數節(jié)流。
4. 手寫Ajax
5. 這段代碼里面的this是什么?
6. 閉包、立即執(zhí)行函數是什么?
7. 什么是JSONP?什么是CORS?什么是跨域?
8. async/await 怎么用?如何捕獲異常?
9. 如何實現深拷貝?
10. 如何用正則實現trim()?
11. 不用class如何實現繼承?
12. 如何實現數組去重?
13. 手寫一個Promise