面试题总结

135 阅读3分钟

一:flex:1由哪些属性组成的

      第一个参数表示: flex-grow 狗肉 定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大

      第二个参数表示: flex-shrink 水客 定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小

      第三个参数表示: flex-basis 背色丝 给上面两个属性分配多余空间之前, 计算项目是否有多余空间, 默认值为 auto, 即项目本身的大小

      auto 为表示项目本身的大小, 如果设置为 auto, 那么这三个盒子就会按照自己内容的多少来等比例的放大和缩小, 所以出现了上图中三个盒子不一样大的情况

      那我们如果随便设置一个其他带有长度单位的数字呢, 那么他就不会按项目本身来计算, 所以它不关心内容, 只是把空间等比收缩和放大

二:不定宽高的盒子水平居中,有几种办法

  1. display: flex;

    justify-content: center;

    align-items: center;

2. 父元素  position: relative;

         自身元素  position: absolute;

                   top: 50%;

                   left: 50%;

                   margin-left: 负的自身元素宽度一半;

                   margin-top: 负的自身元素高度一半;

三: 标准盒模型和怪异盒模型的区别****

 css盒模型本质是一个盒子,它由内外边距、边框、填充和实际内容组成。

        标准盒与怪异盒的区别在于他们的总宽度的计算公式不一样。标准模式下总宽度=width+margin(左右)+padding(左右)border(左右);怪异模式下总宽度=width+margin(左右)(就是说width已经包含了padding和border值)。当设置为box-sizing:content-box时,将采用标准模式解析计算,也是默认模式;当设置为box-sizing:border-box时,将采用怪异模式解析计算

四:重绘(repaint)和回流(reflow)****

      回流:当操作dom改变元素位置大小就会发生回流,

      重绘:当元素位置大小不发生改变,只是进行比如换个颜色这种的会发生重绘

      回流一定会引发重绘,而重绘不一定会引发回流

五:操作dom为什么会不好?

      因为js引擎和渲染引擎是独立实现的,当用js去操作dom,本质上是js引擎和渲染引擎之间进行了“跨界交流”。 而跨界的次数多了,就会产生明显的性能问题。

如何优化?

      1.减少dom操作,将多次dom操作合并成单次进行操作,

      2.使用文档片段

六: 手写nuw

function  shouNew(fn,...args){

      // 1创建一个新对象

      let obj = {}

      // 2新创建的对象原型指向构造函数原型

      obj. __ proto__ = fn.prototype

      // 3替换构造函数中的this为创建的新对象,并执行构造函数中的代码

      fn.apply(obj,args)

      // 4返回创建的对象

      return obj

}

七:闭包以及闭包应用场景

      完成

八:new做了那几件事情

      完成

九:set和map区别

      Set只有值,没有键名,map是键值对结构类似对象

      Set会自动进行去重,map不允许键名重复并且是不能修改的,但是值可以更改

十:垃圾回收机制

 

十一:状态码304

 

十二:父子组件通信有多少种方式

 

十三:nextTick