面试
1 css3 有哪些新增属性?
border-radius:圆角边框
box-shadow:盒子阴影
background-size:背景图片大小
transition:过渡
transform:转换(位移 旋转 缩放)
animation:动画
linear-gradient:线性渐变
box-sizing:css3 盒子模型
2 git中的核心概念有哪些?
客户端 与 服务器端的交互
服务器端分
工作区workSpace通过 git add .将数据上传至暂存区 (index) ,
暂存区(index)通过 git commit - m"提交" 至本地仓库 (repository),
本地仓库 通过 git push 将数据送至 远程仓库(remote repository),
远程仓库 用git pull 将数据从远程仓库拉到工作台wordSpace
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
4 怪异盒模型盒标准盒模型有什么区别?
- 盒子模型组成有 4 部分,分别为:内容 内边距 外边距(一般不计入盒子实际宽度) 边框
- 盒子模型有 2 种:标准盒子模型与怪异盒子模型
- 标准盒子模型=content(内容)+borde r(边框)+padding(内边距)
- 怪异盒子模型=content(内容)(已经包含了 padding 和 border)
- css3 种可以通过设置 box-sizing 属性来完成标准或许怪异盒子模型之间的切换,怪异盒子模型:box-sizing: border-box;标准盒子模型:box-sizing:content-box
5 event loop 事件循环如何理解?
JavaScript 是⼀⻔单线程的语⾔,意味着同⼀时间内只能做⼀件事,但是这并不意味着 单线程就是阻塞,⽽实现单线程⾮阻塞的⽅法就是事件循环 在 JavaScript 中,所有的任务都可以分为 同步任务:⽴即执⾏的任务,同步任务⼀般会直接进⼊到主线程中执⾏ 异步任务:异步执⾏的任务, 异步任务 有分为 宏任务和微任务 宏任务 setTimeout/setInterval setImmediate 微任务 Promise.then .finally .catch process.nextTick MutaionObserver
同步任务 - 微任务 - 宏任务
1.先执行所有的同步任务,碰到异步任务放到任务队列里排队
2.同步任务执行完,开始执行所有的异步任务
3.先执行任务队列里所有的微任务
4.开始下一个宏任务
5.然后再执行所有的微任务
6.在执行下一个宏任务
这样就形成了一个时间循环
规则 :异步的任务队列里,同等条件下,一定先执行微任务
宏任务由浏览器发起的 微任务是由js发起的
6 数组方法有哪些?
- concat 合并数组 返回新数组
- join 数组变成字符串
- shift 头部删除 返回 删除的元素
- unshift 头部添加 返回数组长度 原数组改变
- pop 末尾删除 返回删除的元素 原数组改变
- push 末尾添加 返回数组长度 原数组改变
- sort 排序 原数组改变
- reverse 翻转数组
- slice(start,end) 从start开始截,截取到end个,不包含end
- splice 可以删除 替换 添加 (注意:替换时第二个参数是0)
两个参数是删除:splice(从哪里开始,删除的个数), 原数组会发生改变 返回删除的内容
三个参数是替换:splice(从哪开始,替换的个数,替换的元素) 返回值是被删掉的元素
三个参数添加 splice(开始位置,0,添加的元素
- indexOf 找下标 有的话返回位置下标 没有返回-1
- lastIndexOf 从右向左找下标
- includes 判断是否包含某一项 返回布尔值 原数组不变
- forEach 循环遍历操作原数组 没有返回值 循序回调函数的元素更改数组的元素
- find 查找目标元素,找到就返回该元素,找不到返回undefined
- findIndex 也是查找目标元素,找到就返回元素的位置,找不到就返回-1。
- map 循环 返回一个新的数组 原数组不变
- filter 过滤 返回一个新数组 原数组不变
- foreach 和map的区别
7 扩展运算符与rest剩余参数 什么意思?
如果函数形参的最后一个命名参数以...为前缀则它将会成为一个由剩余参数组成的真数组 剩余参数语法允许我们将一个不定量的参数表示为一个数组 且只能在最后位置使用
8 es6新增数据结构 Set ,Map代表什么意思?利用其中一种去重?
数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。
Set本身是一个构造函数,用来生成 Set 数据结构
Set函数可以接受一个数组(或者具有 iterable 接口的其他数据结构)作为参数,用来初始化。
-
Set.prototype.keys():返回键名的遍历器 -
Set.prototype.values():返回键值的遍历器 -
Set.prototype.entries():返回键值对的遍历器 -
Set.prototype.forEach():使用回调函数遍历每个成员
Array.from方法可以将 Set 结构转为数组。
Map 数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。
9 说下你理解的promise?用promise封装一个网络请求?
promise 是 es6 提供的一种异步解决方案, promise 可以解决回调地狱的问题 promise ⼀共有三个状态,分别是进⾏中,成功或者失败 如何成功的话可以通过 resolve ⽅法将正确结 果返回出去,通过.then 的⽅式进⾏接受,失败的话可以通过 reject 的⽅式将失败的结果返回出去,通 过.catch 的⽅式进⾏接受,pending 状态是进⾏中,⼀旦进⾏之后,他的状态是不可逆的
使⽤ promise,我们需要对 promise 进⾏实例化,在实例化的构造函数⾥⾯有⼀个回调函数,这个 回调函数⾥⾯有两个参数,分别是 resolve 和 reject,我们可以通过 promise 的实例化对象调⽤.then 或 者.catch ⽅式接受结果
promise提供了.all 和 race, 其中 all ⽅法的作⽤是将多个请求合并成⼀个请求, ⽐如当⾸⻚ 要请求 10 个接⼝,我们可以 promise.all 进⾏合并,.race 的作⽤也可以将多个请求合并成⼀个请求,不过 是谁先请求成功就先返回谁.
10 es6导出与导入
- 导入: import {名字} from ‘模块’
- 导出: export const 名字 = 值 ::: tip 提示
- 导出时必须要赋值