千锋教育web前端高频面试题视频教程,kerwin大话前端面试秘籍(附答案)

p7 js面试题
事件循环:实现单线程非阻塞的方法
事件循环的过程:
1,所有同步任务先放在在主线程执行,形成执行栈,碰到异步任务放到任务队列中;当执行栈的所有同步任务执行完后,读取任务队列执行异步任务
2,先执行任务队列里面所有的微任务,然后执行一个宏任务,再执行所有的微任务,再执行一个宏任务,再执行所有的微任务....以此类推
同步任务: 按顺序执行的任务,每个任务必须等待上一个任务完成才能执行。
异步任务: 异步任务又分为宏任务和微任务(在任务队列中,不进入主线程)。
宏任务:包括整体代码script,setTimeout,setInterval,I/O,UI,Renderin
微任务: 包括 Promise,process,nextTick
http相关
http的状态码:
200 成功
200~300之间都算正常
301 请求的网页已水 久移动到新位置。
302 临时性重定向。
307 内部重定向
304 自从比次请求后。请求的网页未修改过。
401 需要验证
403 禁止访问
404 找不到资源(请求的目标不存在)
405 请求的方式错误
500 服务器错误
501 服务器没有该功能
502 网络错误
503 服务器过载或过载
p13 vue面试题
1,解释单向数据流和双向数据绑定
单向数据流:组件之间的数据传输,只能通过一个方向来修改数据
双向数据绑定:当数据发生变化的时候。视图也就发生变化。当视图发生变化的时候。数据也会跟着同少变化。两个数据流之间互为影响
object.defineProperty的缺点
1,无法监听es6的Set. Map变化
2,无法监听CIass类型的数据:
3,属性的新加或者删除也无法监听:
4,数组元素的增加和删除也无法监听。
Vue响应式原理:
vue的响应式实现主要是利用了oject. defineProperty的方法里面的setter与getter 方法的观察者模式来实现。
在组件初始化时会给每一个data属性注册getter和setter.然后再new一个自己的watcher对象,此时watcher会立
即调用组件的render函数去生成虚扣DOM.在调用render的时候,就会需要用到data的属性值,此时会触发getter函
数,将当前的watcher函数注册进sub里。当data属性发生改变之后, 就会遍历sub 电所有的watcher对象,通知它们去
重新谊染组件。
proxy的优势:
Proxy可以直接监听对象而非属性,可以直接监听数组的变化:
Proxy有多达13种拦截方法,不限于apply. ounkeys、deleteProperty. has等等是
object . defineProperty不具备的:
Proxy返回的是: -个新对象,我们可以只操作新的对象达到目的,面object. defineProperty只能遍历对象属性直接修改