1、 css3有哪些新特性:
常见的如下:
- border-radius:圆角边框
- box-shadow:盒子阴影
- background-size:背景图片大小
- transition:过渡
- transform:转换(位移 旋转 缩放)
- animation:动画
- linear-gradient:线性渐变
- box-sizing:css3 盒子模型
2、 git的核心概念有哪些
- 工作区(Workspace)是电脑中实际的目录。
- 暂存区(Index)类似于缓存区域,临时保存你的改动。
- 仓库区(Repository),分为本地仓库和远程仓库。
3、 git中与分支有关的操作
本地分支
- 查看本地分支:
git branch - 创建本地分支:
git branch lizhihui - 删除本地分支:
git branch -d lizhihui - 切换分支:
git checkout lizhihui - 合并分支:
git merge master
远程分支
- 推送到远程分支(创建远程分支dev):
git push origin master:dev - 查看所有分支:
git branch -a - 删除远程分支:
git push origin :dev(推送一个空分支到远程分支,相当于删除远程分支) - 删除远程分支:
git push origin --delete dev
标准盒模型和IE盒模型(怪异盒模型)的区别
- 盒子模型组成有 4 部分,分别为:内容 内边距 外边距(一般不计入盒子实际宽度) 边框
- 盒子模型有 2 种:标准盒子模型与怪异盒子模型
- 标准盒子模型=content(内容)+border(边框)+padding(内边距)
- 怪异盒子模型=content(内容)(已经包含了 padding 和 border)
- css3 种可以通过设置 box-sizing 属性来完成标准或许怪异盒子模型之间的切换,怪异盒子模型:box-sizing: border-box;标准盒子模型:box-sizing:content-box
event loop事件循环如何理解
⾸先, JavaScript 是⼀⻔单线程的语⾔,意味着同⼀时间内只能做⼀件事,但是这并不意味着
单线程就是阻塞,⽽实现单线程⾮阻塞的⽅法就是事件循环
在 JavaScript 中,所有的任务都可以分为
-
同步任务:⽴即执⾏的任务,同步任务⼀般会直接进⼊到主线程中执⾏
-
异步任务:异步执⾏的任务,⽐如 ajax ⽹络请求, setTimeout 定时函数等
微任务
⼀个需要异步执⾏的函数,执⾏时机是在主函数执⾏结束之后、当前宏任务结束之前
常⻅的微任务有:
-
Promise.then
-
MutaionObserver
-
Object.observe(已废弃;Proxy 对象替代)
-
process.nextTick(Node.js)
宏任务
宏任务的时间粒度⽐较⼤,执⾏的时间间隔是不能精确控制的,对⼀些⾼实时性的需求就不太符合
常⻅的宏任务有:
-
script (可以理解为外层同步代码)
-
setTimeout/setInterval
-
UI rendering/UI事件
-
postMessage、MessageChannel
-
setImmediate、I/O(Node.js)
执行的顺序是先执行同步然后是异步中的微任务最后是宏任务
数组的方法有哪些
数组的方法有很多,大概分为以下几类
-
遍历方法
- map : 映射数组,得到一个映射之后的新数组
- filter:筛选数组
- forEach:遍历数组
- some:判断数组是否有元素满足条件(相当于逻辑或:一真则真,全假为假)
- every:判断数组是否所有满足都满足条件(相当于逻辑与:一假则假,全真为真)
- findIndex:查找元素下标,一般用于元素是引用类型
- reduce:给数组每一个元素执行一次回调,一般用于数组元素求和(也可以求最大值、最小值)
-
增删改查方法
- push() : 末尾新增元素,返回值是新数组长度
- unshift():开头新增元素,返回值是新数组长度
- pop() :末尾删除元素,返回值是删除的那个末尾元素
- shift(): 开头删除元素,返回值是开头的那个末尾元素
- splice() : 删除指定下标元素,第三个参数是一个剩余参数,可以在删除的元素后面插入元素
-
其他方法
- reverse:翻转数组,会修改数组自身
- sort: 数组排序,会修改数组自身
- json: 拼接数组元素,返回值是拼接之后的字符串
- slice: 根据下标范围查询数组元素,返回值是查询后的新数组
- indexOf: 查询元素下标,一般用于元素是值类型
7、 扩展运算符与rest剩余运算符什么意思?应用场景
扩展运算符的意思就是把外皮拨开,获取里面的数据,而剩余运算符是把数据收集在一起
8、 es6中新增数据结构Set、Map代表什么意思?利用其中哪一种可以实现数组的去重
Set数据结构中不能有重复的元素,可以实现数组去重
Map数据结构中的keys可以是任意数据类型
9、 Promise是什么
Promise ,译为承诺,是异步编程的⼀种解决⽅案,⽐传统的解决⽅案(回调函数)更加合理和
更加强⼤
状态
promise 对象仅有三种状态
-
pending (进⾏中)
-
fulfilled (已成功)
-
rejected (已失败)
Promise 构造函数接受⼀个函数作为参数,该函数的两个参数分别是 resolve 和 reject
resolve 函数的作⽤是,将 Promise 对象的状态从“未完成”变为“成功”
reject 函数的作⽤是,将 Promise 对象的状态从“未完成”变为“失败”
特点
对象的状态不受外界影响,只有异步操作的结果,可以决定当前是哪⼀种状态
⼀旦状态改变(从 pending 变为 fulfilled 和从 pending 变为 rejected ),就不会再变,
任何时候都可以得到这个结果
promis本身是同步的,可以把它看作一个存放异步代码的盒子
promise可以解决回调地狱的问题
当我们的请求成功后,我们可以通过promise的resolve把成功的结果返回出去,通过.then来接受,而当失败后可以通过reject把失败的结果返回出去,通过.catch接受
实例上的⽅法
Promise 构建出来的实例存在以下⽅法:
-
then()
-
catch()
-
finally()
then()
then 是实例状态发⽣改变时的回调函数,第⼀个参数是 resolved 状态的回调函数,第⼆个参数
是 rejected 状态的回调函数
catch
catch() ⽅法是 .then(null, rejection) 或 .then(undefined, rejection) 的别名,⽤于指
定发⽣错误时的回调函数
finally()
finally() ⽅法⽤于指定不管 Promise 对象最后状态如何,都会执⾏的操作
构造函数⽅法
Promise 构造函数存在以下⽅法:
-
all()
-
race()
-
allSettled()
-
resolve()
-
reject()
-
try()
all()
Promise.all() ⽅法⽤于将多个 Promise 实例,包装成⼀个新的 Promise 实例
race()
Promise.race() ⽅法同样是将多个 Promise 实例,包装成⼀个新的 Promise 实例
allSettled()
Promise.allSettled() ⽅法接受⼀组 Promise 实例作为参数,包装成⼀个新的 Promise 实例
resolve()
将现有对象转为 Promise 对象
reject()
Promise.reject(reason) ⽅法也会返回⼀个新的 Promise 实例,该实例的状态为 rejected
10、es6的导入导出
在es6中我们可以通过export把文件导出,通过import把文件导入