2020前端面試題(HTML、CSS、JS)

一. 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
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容