[TOC]
## 1.對HTML5的了解,還有HTML語義化
```
h5是一個標準,書寫代碼的一個標準
更加語義化,可以見名知意
Canvas繪圖
選擇器
語義化 就是看到這段代碼,我可以知道這塊內容是干嘛的,有什么意義,便于瀏覽器解析提高代碼的可維護性
```
## 2. 前端頁面有那三層‘
```
結構層,樣式層,行為層
```
## 3.web標準,以及對w3c的了解
```
web標準就是將:結構(HTML),樣式(CSS),和行為(javascript)分離
W3C對web標準提出了規范化的要求,
1)標簽字母要小寫;
2)標簽要閉合;
3)標簽不允許隨意嵌套。
盡量使用外聯css樣式表和js腳本,使樣式,結構,行為分離
id class 要見名知義 標簽越少,加載越快
提高了代碼的可維護性可復用性
```
## 4.什么是路由 vue、React 怎么設置路由
```
路由:根據URL地址的不同顯示不同的頁面
```
## 5.document.ready 和 window.onload的區別
```
document.ready : dom文檔樹加載完之后執行的一個函數
window.onLoad:dom文檔樹和所有文件加載完后執行的一個函數
```
## 6. 高質量的代碼具備那些條件
```
1.css命名規范
2.可讀性強,要添加必要的注釋
3.結構清晰,代碼精簡,
4.可復用性要強,模塊化代碼
```
## 7. 事件監聽
### JS
```
*element*.addEventListener(*event, function, useCapture*);
```
- 第一個參數是事件的類型 (如 "click" 或 "mousedown").//不要寫"on"
- 第二個參數是事件觸發后調用的函數。
- 第三個參數是個布爾值用于描述事件是冒泡還是捕獲。該參數是可選的。
```
*element*.addEventListener("click", function(){ alert("Hello World!"); });
```
### jQuery
```
$('div').on('click','p',function(){
$('p').css('color','red');
});
```
## 8.cookie和 Session的區別
```
cookie:存儲的是訪問某些網站后在本地存儲的一些網站相關信息:如密碼賬號等
存儲數據量較小,一般不超過4KB
session:是將用戶相關的信息存儲在服務器上,安全性更高,不易竊取,會占用服務器資源
```
## 9.css、script 的順序為什么會影響頁面加載
```
DOM文檔的加載順序是由上至下的順序加載
css文件的加載是與DOM的加載并行的,不影響DOM文檔加載,所以他應該放在上面,如果CSS在下面加載,就可能會出現頁面樣式混亂問題
而js文件不會與DOM并行加載,如果script 在上面 ,會阻塞DOM文檔的加載,如果js腳本文件過大,就會導致頁面顯示滯后
```
## 10.為什么js會阻塞其他資源加載
```
瀏覽器為了防止js修改dom樹,導致頁面需要重構
```
## 11.瀏覽器的內核
```
主要分為:渲染引擎和JS引擎
渲染引擎:主要負責獲取頁面的html,css,然后加載到頁面上
JS引擎:主要負責解析和執行JavaScript來實現網頁的動態效果
最開始渲染引擎和JS引擎并沒有區分的很明確,后來JS引擎越來越獨立,內核就傾向與只指渲染引擎
```
- 常見的瀏覽器內核有哪些?
```
Trident內核:IE,360,百度;
Webkit內核:Safari,Chrome
blink:Chrome
firefox:Gecko
```
## 12.mvvm框架和mvc框架的區別
> mvvm model-view 是通過數據來顯示視圖層,不再操作節點

> mvc 模型 視圖 控制器 單向操作

## 13.瀏覽器的緩存機制
```
1、瀏覽器判定是否有緩存
2、緩存是否過期
3、跟服務器協商是否使用緩存
4、協商緩存
```
#
## 14.ES6的新特性
- const 與 let 變量 塊級作用域,不能重復聲明,沒有聲明提前
- 解構和展開運算符
> 解構 var a = [ x , y , z ] ; var [ x , y , z ] = a console.log(x)
> 展開 [ ... ]
- ES6箭頭函數 改變函數中this
- ES6中添加了對類的支持,
### 1.什么是promise
> 是一個構造函數
## 1.對前端工程師這個職位是怎么樣理解的?它的前景會怎么樣?
* 前端是最貼近用戶的程序員,比后端、數據庫、產品經理、運營、安全都近。
1、實現界面交互
2、提升用戶體驗
3、有了Node.js,前端可以實現服務端的一些事情
* 前端是最貼近用戶的程序員,前端的能力就是能讓產品從 90分進化到 100 分,甚至更好,
```
參與項目,快速高質量完成實現效果圖,精確到1px;
與團隊成員,UI設計,產品經理的溝通;
做好的頁面結構,頁面重構和用戶體驗;
處理hack,兼容、寫出優美的代碼格式;
針對服務器的優化、擁抱最新前端技術。
```