好家伙,感恩同学,给的面试题和答案

69 阅读3分钟
  1. flex:1 这个是由哪些属性组合,分别代表什么意思?

    flex-grow1 自动增长系数,分配剩余空间
    flex-shrink1 自动收缩系数为1 宽度超出容器时,如何分配收缩
    flex-basis:auto 默认宽
    
  2. 204 301 302 304 400 401 403 404,你认识其中哪些状态码?

    • 204 成功处理,但是没有返回值
    • 301 永久重定向,表示 url 被重定向了一个新的 url
    • 304 表示访问的数据从缓存中获取
    • 400 客户端请求语法报错,服务器无法解析
    • 401 请求缺少用户信息 没权限
    • 403 客户端的请求发出,但是服务器拒绝处理
    • 404 服务器无法找到资源
  3. 箭头函数可以被被当做构造函数 new 实例化吗? 箭头函数可以调用 call 改变 this 指向吗

    不可以被new,因为箭头函数没有this
    不可以调用call,
    因为箭头函数是这个的变形 ==>function() {}.bind(this)
    
  4. fiber 对于 React 的意义是什么(React 技术栈作答)或者 说下 Vue 的 keep-alive 组件原理

    咱一个写 vue 的不懂 fiber

    • 关于 keep-alive,被其包裹的组件会有一个 keepalive 属性,在组件销毁之前判断是否存在这个标识,如果存在跳过这个规则,走 keepalive 独有的生命周期
    • 对于其内部其实就是沙箱操作,把不激活的组件重新放入,激活的拿出
    • 通过 name 去沙盒里匹配这个组件,对于这个组件其实就是一个虚拟 dom,当匹配成功拿出来进行 render 视图
    • 其中涉及 LRU 算法去清空沙盒中没有被重复使用的组件
    • 可以看俺同学的文章
  5. 观察者模式和发布订阅模式的区别是什么,你还知道哪些设计模式?

    发布—订阅模式又叫观察者模式

    • dom 的事件监听 node.addEventListener("click",() => {})
    • vue 中的事件总线等

    其他设计模式

    • 单例模式 如 vue2 的 new Vue
    • 策略模式 简化 ifelse
    • 命令模式 可以想象一个函数,通过执行不同的 api 可以实现不同的功能
    • 代理模式 Proxy
    • 迭代器模式 forEach 函数
    • 组合模式
    • 享元模式
    • 指责联模式
    • 中介者模式
    • 装饰者模式
    • 状态模式
    • 适配器模式
  6. 什么是浏览器内核包含哪些,常见的有哪些?

    • google 内核 Webkit(KHTML 分支) Blink(webkit 内核)
    • safari 内核 Webkit
    • IE Trident
    • Edge EdgeHTML
    • Opera Webkit 分支的 Chromium
    • Firefox Gecko
  7. 宏任务和微任务的区别?

    都是为了解决同步阻塞而来的

    • 宏任务
      • 主要为 script 标签内的代码
      • 定时器 api
      • UI 的 render
    • 微任务
      • promise.then 期约函数的 then 回调
      • mutationobserver 监听 dom 变化
      • queueMicrotask 微任务 api
      • nextTick nodejs 里的

    对于一段代码执行,

    • 首先执行 script 这个标签,代表一次宏任务
    • 执行宏任务中的同步代码
    • 遇到定时器任务,将其回调放入宏任务中
    • 遇到 promise.then 等微任务 api,将它们依次访问微任务队列
    • 代码执行完成后,扫描微任务,依次拿出执行
    • 当微任务执行后,如果存在微任务,继续放入队列
    • 继续扫描微任务,直到清空
    • 扫描宏任务的回调函数
    • 执行回调函数,如果存在宏任务或者微任务
    • 重复前面的操作,直至全部执行完成