第一周面试题

91 阅读6分钟

CSS3有哪些特性

  • border-radius:圆角边框
  • box-shadow:盒子阴影
  • background-size:背景图片大小
  • transition:过渡
  • transform:转换(位移 旋转 缩放)
  • animation:动画
  • linear-gradient:线性渐变
  • box-sizing:css3 盒子模型

git的核心概念有哪些?

image.png

git add README.md   #提交暂存区
git commit -m "随便起(名)"   #提交本地仓库
git remote add origin https://gitee.com/huitailang2021/mytest.git    #指定origin的地址
git push -u origin "master"   #提交远程仓库

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盒模型有什么区别

  • IE盒模型:
  • 四个部分组成:contentpaddingbordermargin
  • 盒子总宽度 = width + padding + border + margin;
  • 盒子总高度 = height + padding + border + margin

image.png

  • 怪异盒模型:
  • 盒子总宽度 = width + margin;
  • 盒子总高度 = height + margin;
  • 也就是,width/height 包含了 padding和 border

Box-sizing

box-sizing: content-box|border-box|inherit:
  • content-box 默认值,元素的 width/height 不包含 padding,border,与标准盒子模型表现一致
  • border-box 元素的 width/height 包含 padding,border,与怪异盒子模型表现一致
  • inherit 指定 box-sizing 属性的值,应该从父元素继承

event loop 事件循环如何理解?

因为js是单线程的,如果某段程序需要等待一会再执行,后面的程序都会被阻塞,这样也就带来了一些问题。为了解决这个问题,js出现了同步和异步两种任务,两种任务的差异就在于执行的优先级不同。event loop就是对任务的执行顺序做了详细的规范。 同步和异步任务 异步任务:异步任务分为宏任务和微任务。 常见的微任务有:Promise.then(),.then中的逻辑是微任务;process.nextTick(node环境)。 常见的宏任务有:setTimeout、setInterval、setImmediate(node环境)、xhr(发送网络请求),callback。 同步任务:除了上面的这些情况,都属于同步任务。 任务的执行顺序: 先到后:同步任务 -> 微任务 -> 宏任务。

数组方法有哪些(写出几个es5的方法),什么意思?

  • 遍历方法

    • map : 映射数组,得到一个映射之后的新数组
    • filter:筛选数组
    • forEach:遍历数组
    • some:判断数组是否有元素满足条件(相当于逻辑或:一真则真,全假为假)
    • every:判断数组是否所有满足都满足条件(相当于逻辑与:一假则假,全真为真)
    • findIndex:查找元素下标,一般用于元素是引用类型
    • reduce:给数组每一个元素执行一次回调,一般用于数组元素求和(也可以求最大值、最小值)
  • 增删改查方法

    • push() : 末尾新增元素,返回值是新数组长度
    • unshift():开头新增元素,返回值是新数组长度
    • pop() :末尾删除元素,返回值是删除的那个末尾元素
    • shift(): 开头删除元素,返回值是开头的那个末尾元素
    • splice() : 删除指定下标元素,第三个参数是一个剩余参数,可以在删除的元素后面插入元素
  • 其他方法

    • reverse:翻转数组,会修改数组自身
    • sort: 数组排序,会修改数组自身
    • json: 拼接数组元素,返回值是拼接之后的字符串
    • slice: 根据下标范围查询数组元素,返回值是查询后的新数组
    • indexOf: 查询元素下标,一般用于元素是值类型

扩展运算符与rest剩余参数什么意思,应用场景?

  • 扩展运算符:把数组或类数组展开成用逗号分隔的值
  1. 将数组展开成用逗号隔开的值:image.png
  2. 将两个数组合并成一个数组:image.png
  3. 扩展一个字符串: image.png
  • rest参数:把逗号隔开的值组成一个数组
  1. 不定参数的函数求和:image.png
  • 通过…来接收参数,把逗号隔开的值组合成一个数组:image.png
  1. 获取剩余的参数:image.png
  2. 用于解构赋值:image.png
  • 总结...有两种含义,这两种操作相当于是互逆操作:
  1. 若把…放在等号左边或者放在形参上面,那么它就是rest参数
  2. …若在等号的右边或者放在实参上,则是扩展运算符

es6新增数据解构Set,Map代表什么意思?利用期中一种去重?

  • Map :对象保存键值对,并且能够记住键的原始插入顺序。任何值(对象或者原始值)都可以作为一个键或一个值。
  • 特点 : Map 对象这种数据结构和和对象类型,都已键值对的形式存储数据,即 key-vlue 形式。 Map 对象存储的数据是有序的,而我们平常使用的对象是无序的,所以通常当我们需要使用对象形式(键值对)存储数据且需要有序时,采用 Map 对象进行存储。 Map 对象的键值可以是任意类型,我们平时使用的对象只能使用字符串作为键。 Set: 和 Map 类似,我们同样先来看一看官网是怎么解释 Set 这个数据结构的。 image.png Set 对象是一个类数组对象,它长得就很像数组。 Set 对象存储的值是不重复的,所以我们通常使用它来实现数组去重。 Set 对象存储的数据不是键值对的形式,而且它可以存储任何类型的数据。

说下你理解的Promise?用promise封装一个网络请求,代码核心?

  • promise 是 es6 新增的一种解决异步回调的一种方案,可以理解为就是把异步操作的回调函数的写法变成 链式写法.then .catch promise ⼀共有三个状态,分别是进⾏中,成功或者失败 如何成功的话可以通过 resolve ⽅法将正确结 果返回出去,通过.then 的⽅式进⾏接受,失败的话可以通过 reject 的⽅式将失败的结果返回出去,通 过.catch 的⽅式进⾏接受,pending 状态是进⾏中,⼀旦进⾏之后,他的状态是不可逆的 如果要使⽤ promise,我们需要对 promise 进⾏实例化,在实例化的构造函数⾥⾯有⼀个回调函数,这个 回调函数⾥⾯有两个参数,分别是 resolve 和 reject,我们可以通过 promise 的实例化对象调⽤.then 或 者.catch ⽅式接受结果 image.png

说一下es6的导入导出?

export default :导出 import from :导入