一、热门问题

  1. 介绍redux,主要解决什么问题
      是管理应用程序状态的库,解决数据管理和数据通信的问题
  2. Promise、Async有什么区别
    1. Async 更简洁,不需要用 then 连接
    2. Promise 中不能自定义使用 try/catch 进行错误捕获,但是在 Async/await 中可以像处理同步代码处理错误

    3. 调试更方便
    4. (Generator 函数可以暂停执行和恢复执行,这是它能封装异步任务的根本原因)
  3. 介绍react优化
    1. 用 shouldComponentUpdate 避免资源浪费 
    2. 复杂的页面不要在一个组件里面写完。
    3. 请尽量使用const element
    4. map里面添加key,并且key不要使用index(可变的)。具体可参考使用Perf工具研究React Key对渲染的影响
    5. 尽量少用setTimeOut或不可控的refs、DOM操作。
    6. propsstate的数据尽可能简单明了,扁平化。
    7. 使用return null而不是CSS的display:none来控制节点的显示隐藏。保证同一时间页面的DOM节点尽可能的少
  4. HTTP2.0和HTTP1.X相比的新特性
    1. 新的二进制格式,相对文本来说有更强的健壮性
    2. 多路复用(MultiPlexing),即连接共享。一个连接上可以有多个request,一个request对应一个id 。
    3. header压缩:HTTP1.x的header带有大量信息,而且每次都要重复发送,HTTP2.0使用encoder来减少需要传输的header大小,通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小。
    4. 服务端推送(server push)
  5. 通过什么做到并发请求
    1. 对请求并发数进行限制,并且使用排队机制让请求有序的发送出去
  6. http1.1时如何复用tcp连接
    1. 使用 keep-alive
  7. 介绍service worker
      • 一个独立的 worker 线程,独立于当前网页进程,有自己独立的 worker context。

      • 一旦被 install,就永远存在,除非被 uninstall

      • 需要的时候可以直接唤醒,不需要的时候自动睡眠(有效利用资源,此处有坑)

      • 可编程拦截代理请求和返回,缓存文件,缓存的文件可以被网页进程取到(包括网络离线状态)

      • 能向客户端推送消息

      • 不能直接操作 DOM,但是service worker可以通过postMessage与页面之间通信,把消息通知给页面,如果需要的话,让页面自己去操作DOM。

      • 出于安全的考虑,必须在 HTTPS 环境下才能工作

      • 异步实现,内部大都是通过 Promise 实现

  8. 三次握手
    1. 客户端向服务器发送一个 SYN 包,请求建立连接
    2. 服务器收到后会发一个对SYN包的确认包(SYN/ACK)回去
    3. 客户端发送一个确认包(ACK),通知服务器连接已建立
  9. 介绍css3中position:sticky
    1. 父级元素不能有任何overflow:visible以为的overflow设置,否则没有粘滞效果。因为改变了滚动容器(即使没有出现滚动条)。因此,如果你的position:sticky无效,看看是不是某一个祖先元素设置了overflow:hidden,移除之即可。
    2. 同一个父容器中的sticky元素,如果定位值相等,则会重叠;如果属于不同父元素,则会鸠占鹊巢,挤开原来的元素,形成依次占位的效果
  10. 浏览器事件流向
    1. “DOM2级事件”规定事件流包括三个阶段,事件捕获阶段、处于目标阶段和事件冒泡阶段。首先发生的事件捕获,为截获事件提供了机会,然后是实际的目标接收了事件,最后一个阶段是冒泡阶段
    2. 注意处于目标阶段的时候,既不是冒泡阶段、也不是捕获阶段,事件处理程序被调用的顺序是注册的顺序
  11. 介绍事件代理以及优缺点
    1. 减少事件注册,节省内存
    2. 减少了dom节点更新的操作,处理逻辑只需在委托元素上进行
    3. 缺点:事件委托基于冒泡,对于onfoucs和onblur等事件不支持;层级过多,冒泡过程中,可能会被某层阻止掉
  12. React组件中怎么做事件代理
    1. React 自己实现了一套高效的事件注册、存储、分发和重用的逻辑,在 DOM 事件体系基础上做了很大改进。不仅减少了内存消耗,最大化解决了 IE 等浏览器的不兼容问题,而且简化了事件逻辑,对开发者来说非常友好。它有如下的特点:

      • 使用事件委托技术进行事件代理,React 组件上声明的事件最终都转化为 DOM 原生事件,绑定到了 document 这个 DOM 节点上。从而减少了内存开销。
      • 自身实现了一套事件冒泡机制,以队列形式,从触发事件的组件向父组件回溯,调用在 JSX 中绑定的 callback。因此我们也没法用 event.stopPropagation() 来停止事件传播,应该使用 React 定义的 event.preventDefault()。
      • React 有一套自己的合成事件 SyntheticEvent,而不是单纯的使用 DOM 原生事件,但二者可以平滑转化。
      • React 使用对象池来管理合成事件对象的创建和销毁,这样减少了垃圾的生成和新对象内存的分配,大大提高了性能
  13. React组件事件代理的原理
  14. 前端怎么控制管理路由

  

一、for-of

  • 与 forEach 不同的是,它能正确响应 break、continue、return 语句
  • 避开了 for-in 循环的缺陷,for-in 是为普通对象设计的, 它会遍历自定义属性,而且你遍历得到的是字符串类型的键,因此不适用于数组遍历
  • 支持很多类型,像数组、类数组对象、字符串、Map 和 Set 对象,但不支持普通对象(这是 for-in 的用处)

二、默认参数

  1.  定义默认值时=后的部分是一个表达式,如果调用者没有传递相应参数,将使用该表达式的值作为参数默认值
  2.  表达式在函数调用时自左向右求值,这一点与Python不同。这也意味着,默认表达式可以使用该参数之前已经填充好的其它参数值
  3.  传递undefined值等效于不传值,没有默认值的参数隐式默认为undefined

三、普通函数和箭头函数的区别

  1. 箭头函数内的this值继承自外围作用域
  2. 箭头函数不会获取它们自己的arguments对象
  3. 使用了块语句的箭头函数不会自动返回值,你需要使用return语句将所需值返回
  4. 当使用箭头函数创建普通对象时,你总是需要将对象包裹在小括号里

ES6 memo的更多相关文章

  1. JavaScript ES6函数式编程(一):闭包与高阶函数

    函数式编程的历史 函数的第一原则是要小,第二原则则是要更小 -- ROBERT C. MARTIN 解释一下上面那句话,就是我们常说的一个函数只做一件事,比如:将字符串首字母和尾字母都改成大写,我们此 ...

  2. React.memo

    介绍React.memo之前,先了解一下React.Component和React.PureComponent. React.Component React.Component是基于ES6 class ...

  3. ES6模块import细节

    写在前面,目前浏览器对ES6的import支持还不是很好,需要用bable转译. ES6引入外部模块分两种情况: 1.导入外部的变量或函数等: import {firstName, lastName, ...

  4. webpack+react+redux+es6开发模式

    一.预备知识 node, npm, react, redux, es6, webpack 二.学习资源 ECMAScript 6入门 React和Redux的连接react-redux Redux 入 ...

  5. ES6的一些常用特性

    由于公司的前端业务全部基于ES6开发,于是给自己开个小灶补补ES6的一些常用特性.原来打算花两天学习ES6的,结果花了3天才勉强过了一遍阮老师的ES6标准入门(水好深,ES6没学好ES7又来了...) ...

  6. ES6(块级作用域)

    我们都知道在javascript里是没有块级作用域的,而ES6添加了块级作用域,块级作用域能带来什么好处呢?为什么会添加这个功能呢?那就得了解ES5没有块级作用域时出现了哪些问题. ES5在没有块级作 ...

  7. es6小白学习笔记(一)

    1.let和const命令 1.es6新增了let和const命令,与var用法类似,但它声明的变量只在let所在的代码块内有效(块级作用域,es5只有全局和函数作用域) { let a = 1; v ...

  8. ES6之变量常量字符串数值

    ECMAScript 6 是 JavaScript 语言的最新一代标准,当前标准已于 2015 年 6 月正式发布,故又称 ECMAScript 2015. ES6对数据类型进行了一些扩展 在js中使 ...

  9. ES6之let命令详解

    let与块级作用域 { var foo='foo'; let bar='bar'; } console.log(foo,'var'); //foo varconsole.log(bar ,'bar') ...

随机推荐

  1. JZ2440学习笔记之链接文件lds

    如果在Linux环境下用arm-linux-gcc来编译arm程序,需要编写链接文件lds: 1. 运行地址=链接地址,表示代码在SDRAM中执行的地址,如果程序中有对某部分代码执行过搬运,需要在ld ...

  2. telnet客户端操作memcached增删改查

    一,通过telnet连接进入memcached(telnet 本地ip/服务器ip 端口) 进入后回车看效果: 二, 添加数据和取出数据 添加命令: add     key名    0(固定)    ...

  3. 阿里云windows 2008 服务器处理挖矿程序 Miner

    阿里云盾最近报发现wanacry蠕虫病毒和挖矿进程异常 仔细检查进程后,发现两个奇怪的进程 Eternalblue-2.2.0.exe,winlogins.exe 特别是伪装成 winlogins.e ...

  4. CentOS 7编译OpenWRT

    安装必要的依赖 yum install subversion binutils bzip2 gcc gcc-c++ gawk gettext flex ncurses-devel zlib-devel ...

  5. gjt常用命令---chalee

    Git常用命令 一. git 基本操作流程 1. 从远程分支拉取并创建新的分支 git pull origin [远程分支名]:[本地分支名] // 从远程分支迁出本地分支,并切换到新的本地分支 gi ...

  6. 动态令牌验证遇到的问题(判断用户长按backspace键)

    因为最近负责泰康项目的前端工作,他们的登录需要进行安全验证,也就是所谓的双因素验证,即在OA平台登录过后,还需要安全部门发送安全令牌进行验证.令牌验证效果如下: 主要功能有:1.默认第一项focus. ...

  7. linux服务基础(三)之Httpd2.4配置

    httpd-2.4 新特性: . MPM支持运行DSO机制,以模块形式按需加载 . 支持event MPM . 支持异步读写 . 支持每模块及每个目录分别使用各自的日志级别 . 每请求配置 <I ...

  8. python程序—用户登录

    编写一个用户登录程序: 1.登录成功显示登录页面 2.登录失败,显示密码错误,并且显示错误几次 3.登录失败三次,退出程序 username= 'root' passwd= ' count= prin ...

  9. IOS高级开发之多线程(四)NSOperation

    1.什么是NSOperation,NSOperationQueue? NSOperation是一个抽象的基类,表示一个独立的计算单元,可以为子类提供有用且线程安全的建立状态,优先级,依赖和取消等操作. ...

  10. OceanBase迁移服务:向分布式架构升级的直接路径

    2019年1月4日,OceanBase迁移服务解决方案在ATEC城市峰会中正式发布.蚂蚁金服资深技术专家师文汇和技术专家韩谷悦共同分享了OceanBase迁移服务的重要特性和业务实践. 蚂蚁数据库架构 ...