小部分 面试题 总结

目录

暂时没写

一、HTML 区

二、CSS 区

三、JavaScript 区

四、React 区

五、Vue 区

六、常见知识点


在下面  链接

一、HTML 区

  1. 行内标签,块标签,行内块标签

    行内 特点:共占一行,不可以设置宽高 例如:em strong i a b

    块 特点:独占一行,可以设置宽高 例如:ul ol li h1~h6 div p dl dt

    行内块 特点:共占一行,可以设置宽高 例如:img select textarea input

二、CSS 区

1、盒模型

一、相关的知识点:

(1)有两种盒子模型:IE盒模型(border-box)、W3C标准盒模型(content-box)
(2)盒模型:分为内容(content)、填充(padding)、边界(margin)、边框(border)四个部分
 
IE盒模型和W3C标准盒模型的区别:
 
(1)W3C标准盒模型:属性width,height只包含内容content,不包含border和padding
(2)IE盒模型:属性width,height包含content、border和padding,指的是content
+padding+border。
 
在ie8+浏览器中使用哪个盒模型可以由box-sizing(CSS新增的属性)控制,默认值为content-box,即标准盒模型;
如果将box-sizing设为border-box则用的是IE盒模型。如果在ie6,7,8中DOCTYPE缺失会将盒子模型解释为IE
盒子模型。若在页面中声明了DOCTYPE类型,所有的浏览器都会把盒模型解释为W3C盒模型。

二、回答:

              盒模型都是由四个部分组成的,分别是margin、border、padding和content。
              标准盒模型和IE盒模型的区别在于设置width和height时,所对应的范围不同。标准盒模型的width和height属性的
        范围只包含了content,而IE盒模型的width和height属性的范围包含了border、padding和content。
        一般来说,我们可以通过修改元素的box-sizing属性来改变元素的盒模型。

       

三、JavaScript 区

  1. 基本数据类型和引用数据类型

    基本:number string undefined null boolean

    引用:Object Data Array Fun ction 正则表达式

    基本数据类型存放在栈中,引用数据类型存放在堆中

  2. 监测数据类型

    typeof() - 只能检测基本的数据类型

    instanceof - 找的不单单是父级,也可能是父级的父级

    contrcutor - 直接找的是父级

    object.prototype.tostring.call() 什么数据类型都可以

四、React 区

  1. animation 和 transition 的区别

      animation 可以用 name 设置动画的名称,用 duration 设置动画完成的周期,用 timing-function 设置动画的速度曲线,delay 设置动画什么时候开始,iteration-count 设置动画播放的次数,direction 规定下一个周期是否逆向的播放,play-state 动画是否正在进行或者暂停,fill-mode 设置动画停了之后位置什么状态

      transition 用 property 去设置过渡效果的属性名称,duration 设置过渡效果的周期,timing-function 规定速度效果的速度曲线,delay 设定过渡效果什么时候开始;

      区别:

        1、transition 是过渡,是样式值的变化的过程,只有开始和结束;animation 其实也叫关键帧,通过和 keyframe 结合可以设置中间帧的一个状态;

        2、animation 配合 @keyframe 可以不触发时间就触发这个过程,而 transition 需要通过 hover 或者 js 事件来配合触发;

        3、animation 可以设置很多的属性,比如循环次数,动画结束的状态等等,transition 只能触发一次;

        4、animation 可以结合 keyframe 设置每一帧,但是 transition 只有两帧;

        5、在性能方面:浏览器有一个主线程和排版线程;主线程一般是对 js 运行的、页面布局、生成位图等等,然后把生成好的位图传递给排版线程,而排版线程会通过 GPU 将位图绘制到页面上,也会向主线程请求位图等等;我们在用使用 aniamtion 的时候这样就可以改变很多属性,像我们改变了 width、height、postion 等等这些改变文档流的属性的时候就会引起,页面的回流和重绘,对性能影响就比较大,但是我们用 transition 的时候一般会结合 tansfrom 来进行旋转和缩放等不会生成新的位图,当然也就不会引起页面的重排了;

  2. 2
  3. 3
  4. 4
  5. 5
  6. 6

五、Vue 区

   1.vue 生命周期

1、beforeCreate(创建前)

表示实例完全被创建出来之前,vue 实例的挂载元素$el和数据对象 data 都为 undefined,还未初始化。

2、created(创建后)

数据对象 data 已存在,可以调用 methods 中的方法,操作 data 中的数据,但 dom 未生成,$el 未存在 。

3、beforeMount(挂载前)

vue 实例的 $el 和 data 都已初始化,挂载之前为虚拟的 dom节点,模板已经在内存中编辑完成了,但是尚未把模板渲染到页面中。data.message 未替换。

4、mounted(挂载后)

vue 实例挂载完成,data.message 成功渲染。内存中的模板,已经真实的挂载到了页面中,用户已经可以看到渲染好的页面了。实例创建期间的最后一个生命周期函数,当执行完 mounted 就表示,实例已经被完全创建好了,DOM 渲染在 mounted 中就已经完成了。

5、beforeUpdate(更新前)

当 data 变化时,会触发beforeUpdate方法 。data 数据尚未和最新的数据保持同步。

6、updated(更新后)

当 data 变化时,会触发 updated 方法。页面和 data 数据已经保持同步了。

7、beforeDestory(销毁前)

组件销毁之前调用 ,在这一步,实例仍然完全可用。

8、destoryed(销毁后)

组件销毁之后调用,对 data 的改变不会再触发周期函数,vue 实例已解除事件监听和 dom绑定,但 dom 结构依然存在。

2.vue3.0生命周期

beforeCreate => setup()
created => setup()
beforeMount => onBeforeMount
mounted => onMounted
beforeUpdate => onBeforeUpdate
updated => onUpdated
beforeDestroy => onBeforeUnmount
destoryed => onUnmounted
errorCaptured => onErrorCaputed

3.vue中的插槽

插槽就是子组件中的提供给父组件使用的一个占位符,用 表示,父组件可以在这个占位符中填充任何模板代码,如 HTML、组件等,填充的内容会替换子组件的标签。简单理解就是子组件中留下个“坑”,父组件可以使用指定内容来补“坑”。

 4、Vuex的执行过程

1.state用来存放状态

2.mutations用来修改当前state里面的状态

3.actions通过里面的commit让mutations里面的方法进行触发

4.getter用来返回当前的一个状态值

5.module是将当前的状态转化成一个模块,而且每个模块就是vuex的一个vue对象

这就是stata里面的vuex

6.页面的vuex是引入map actions和mapgetters帮助我们进行触发的

7.首先是mapactions帮助我们把actions里面的方法直接从actions里面拿出来放到methods里面直接去使用

8.mapgetters是帮助我们去从getter里面的把方法取出来放到computed里面直接把它当成属性去使用

29.reudx的执行过程

5、Reudx的执行过程

        主入口index.js中 引入react-redux中的 Provider import { Provider } from 'react-redux';

           引入store 使用provider组件将所有的组件包裹起来,用绑定属性的形式绑定store到组中

app.js中

        引入react-redux中的 connect import { connect } from 'react-redux';

使用connect把所有的组件之间进行连接, connect使用时用两个小括号调用,第一个小括号有两个参数,一个是箭头函数,一个是json,回调中是使用assign将所有的状态合并到一起,第二个json参数是形成一个作用域,作用是传递action中的方法,第二个小括号是把当前组件传递进去

组件中使用时,取出react-redux的connect和在action中的方法,使用this.props.状态名,用来展示, 使用方法时,使用this.props.方法名,用来设置, 然后需要使用connect把所有的组件之间进行连接, connect使用时用两个小括号调用,第一个小括号有两个参数,一个是箭头函数,一个是json,回调中是使用assign将所有的状态合并到一起,第二个json参数是形成一个作用域,作用是传递action中的方法,第二个小括号是把当前组件传递进去 store文件夹中有两个文件, action.js中,定义type,然后返回设置状态的函数和type

index.js中 取出redux中的createStore,以及action中的type 最后需要将createStore返回出去,并且需要传递一个函数,定义这个函数时有两个参数,一个是状态,一个action,使用switch判断action中的type,当前所有条件都不成立时,将所有的状态返回,有条件成立时,就通过扩展运算符将state展开,并且将age进行操作,

6、Vue响应式原理

Vue 的响应式原理核心是通过 ES5 的保护对象的

Object.defindeProperty 中的访问器属性中的 get 和 set 方法,

data 中声明的,属性都被添加了访问器属性,

当读取 data 中的数据时自动调用 get 方法,当修改 data 中的数据时,

自动调用 set 方法,检测到数据的变化,会通知观察者 Wacher,

观察者 Wacher自动触发重新render 当前组件(子组件不会重新渲染),生成新的虚拟 DOM 树,

Vue 框架会遍历并对比新虚拟 DOM 树和旧虚拟 DOM 树中每个节点的差别,

并记录下来,最后,加载操作,将所有记录的不同点,局部修改到真实 DOM 树上。

六、常见知识点

  1. es6新增的方法

    1.var和let和const

    2.块级作用域let的优点

    3.this指向的问题

    4.三点运算符

    5.promise分为那几个状态

    三种状态

    pending-进行中

    fulfilled-成功

    rejected-失败

    6.箭头函数的简写

    7.反单引号

    8.结构赋值

    9....new Set

    10.map/filter/foreach/reduce都是循环的方法

    11.字符串模板

  2. 前端性能优化

    内容方面:

    1. 减少 HTTP 请求 (Make Fewer HTTP Requests)

    2. 减少 DOM 元素数量 (Reduce the Number of DOM Elements)

    3. 使得 Ajax 可缓存 (Make Ajax Cacheable)

    针对CSS:

    4. 把 CSS 放到代码页上端 (Put Stylesheets at the Top)

    5. 从页面中剥离 JavaScript 与 CSS (Make JavaScript and CSS External)

    6. 精简 JavaScript 与 CSS (Minify JavaScript and CSS)

    7. 避免 CSS 表达式 (Avoid CSS Expressions)

    针对JavaScript :

    8. 脚本放到 HTML 代码页底部 (Put Scripts at the Bottom)

    9. 从页面中剥离 JavaScript 与 CSS (Make JavaScript and CSS External)

    10. 精简 JavaScript 与 CSS (Minify JavaScript and CSS)

    11. 移除重复脚本 (Remove Duplicate Scripts)

    面向图片(Image):

    12. 优化图片

    13. 不要在 HTML 中使用缩放图片

    14. 使用恰当的图片格式

    15. 使用 CSS Sprites 技巧对图片优化

  3. js为什么是单线程

    JavaScript的单线程,与他的用途有关。作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM。这就决定了他只能是单线程,否则会带来很复杂的同步问题。

    如果JavaScript同时有两个线程,一个线程在某个DOM节点上添加内容,另一个线程删除了这个节点,这时浏览器应该以哪个线程为准?

  4. 节流和防抖

    防抖(deounce)

    给一个固定时间,如果你开始触发动作,并且在这个固定时间内不再有任何动作,我就执行一次,否则我每次都会重新开始计时

    节流(throttle)

    用户会反复触发一些操作,比如鼠标移动事件,此时只需要指定一个“巡视”的间隔时间,不管用户期间触发多少次,只会在间隔点上执行给定的回调函数





有道云这个点开里面有总结的面试题,可以点开看看很帮助的面试题总结

这个也是   有道云

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值