面试题

script标签里的async和defer有什么区别?

没有async和defer时:

  • 浏览器立即加载并执行指定的脚本

有async:

  • 加载和渲染后面元素的过程将和script的加载和执行并行进行(异)

有defer:

  • 加载和渲染后面元素的过程将和script的加载并行进行要等所有元素解析完成之后才会执行(异)

创造的时间节点,defer比async早,defer保证脚本顺序,async不会,谁先下载好就加载谁

setTimeout最小执行时间

setTimeout:4ms

setInterval:10ms,小于10ms就会被调整到10ms

为什么是这两个数字? ——> htlm5就是这么规定的

DOM树和渲染树区别

DOM树和HTML标签一一对应,包括head和隐藏元素

渲染树是不包含head和隐藏元素

git解决冲突

比如:

  1. 两个分支修改同一个文件
  2. 两个分支修改同一个文件的名字

解决:

  1. 当前分支上直接修改代码 add commit
  2. 本地当前分支上修改冲突 add commit push
redux核心原理

核心组成三部分:

  • Store
  • Action
  • Reducer:一个函数,接收两个参数,action和当前state

整个工作流程,数据流严格单向,只能通过dispatch action的方式触发数据状态的修改

Action进入对于Reducer进行处理最终得到新的状态State,再进一步触发Vaiew的数据更新

HashRouter和BrowserRouter区别

HashRouter:

  • 基于hash模式,跳转原理是使用了location.hash、location.replace在域名后,先拼接 /#,再拼接路径,也就是利用锚点,实现路由的跳转。如:http://www.dzm.com/#/xx

BrowserRouter:

  • 基于history模式,原理是了 HTML5 为浏览器全局的 history 对象新增了两个 API,包括 history.pushState、history.replaceState