-
flex:1 这个是由哪些属性组合,分别代表什么意思?
flex-grow:1 自动增长系数,分配剩余空间 flex-shrink:1 自动收缩系数为1 宽度超出容器时,如何分配收缩 flex-basis:auto 默认宽 -
204 301 302 304 400 401 403 404,你认识其中哪些状态码?
- 204 成功处理,但是没有返回值
- 301 永久重定向,表示 url 被重定向了一个新的 url
- 304 表示访问的数据从缓存中获取
- 400 客户端请求语法报错,服务器无法解析
- 401 请求缺少用户信息 没权限
- 403 客户端的请求发出,但是服务器拒绝处理
- 404 服务器无法找到资源
-
箭头函数可以被被当做构造函数 new 实例化吗? 箭头函数可以调用 call 改变 this 指向吗
不可以被new,因为箭头函数没有this 不可以调用call, 因为箭头函数是这个的变形 ==>function() {}.bind(this) -
fiber 对于 React 的意义是什么(React 技术栈作答)或者 说下 Vue 的 keep-alive 组件原理
咱一个写 vue 的不懂 fiber
- 关于 keep-alive,被其包裹的组件会有一个 keepalive 属性,在组件销毁之前判断是否存在这个标识,如果存在跳过这个规则,走 keepalive 独有的生命周期
- 对于其内部其实就是沙箱操作,把不激活的组件重新放入,激活的拿出
- 通过 name 去沙盒里匹配这个组件,对于这个组件其实就是一个虚拟 dom,当匹配成功拿出来进行 render 视图
- 其中涉及 LRU 算法去清空沙盒中没有被重复使用的组件
- 可以看俺同学的文章
-
观察者模式和发布订阅模式的区别是什么,你还知道哪些设计模式?
发布—订阅模式又叫观察者模式
- dom 的事件监听 node.addEventListener("click",() => {})
- vue 中的事件总线等
其他设计模式
- 单例模式 如 vue2 的 new Vue
- 策略模式 简化 ifelse
- 命令模式 可以想象一个函数,通过执行不同的 api 可以实现不同的功能
- 代理模式 Proxy
- 迭代器模式 forEach 函数
- 组合模式
- 享元模式
- 指责联模式
- 中介者模式
- 装饰者模式
- 状态模式
- 适配器模式
-
什么是浏览器内核包含哪些,常见的有哪些?
- google 内核 Webkit(KHTML 分支) Blink(webkit 内核)
- safari 内核 Webkit
- IE Trident
- Edge EdgeHTML
- Opera Webkit 分支的 Chromium
- Firefox Gecko
-
宏任务和微任务的区别?
都是为了解决同步阻塞而来的
- 宏任务
- 主要为 script 标签内的代码
- 定时器 api
- UI 的 render
- 微任务
- promise.then 期约函数的 then 回调
- mutationobserver 监听 dom 变化
- queueMicrotask 微任务 api
- nextTick nodejs 里的
对于一段代码执行,
- 首先执行 script 这个标签,代表一次宏任务
- 执行宏任务中的同步代码
- 遇到定时器任务,将其回调放入宏任务中
- 遇到 promise.then 等微任务 api,将它们依次访问微任务队列
- 代码执行完成后,扫描微任务,依次拿出执行
- 当微任务执行后,如果存在微任务,继续放入队列
- 继续扫描微任务,直到清空
- 扫描宏任务的回调函数
- 执行回调函数,如果存在宏任务或者微任务
- 重复前面的操作,直至全部执行完成
- 宏任务