- 整理面试知识,学习笔记
- 认识自身不足,弥补缺陷
1. webpack按需加载原理
2. react和jquery的差异
React.js的提供了一整套
Virtual DOM
,所有的操作都在这个Virtual DOM上,只有当事件发生的时候,state
才发生改变,之后,React自动调用render()
来更新UI- React中把各个UI组件独立出来,有利于提高UI组件的复用率同时降低各个UI组件的耦合
jQuery只是一个工具库,基本思路是: 用选择器选择DOM元素,并对DOM元素监听,然后在事件监听函数里进行相应的处理
3. TCP三次握手
三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.在socket编程中,客户端执行connect()时。将触发三次握手。
[x] 第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。
[x] 第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。
[x] 第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手。
形象比喻(引用自) :
两个素未谋面的人遇见了,一个人(client端)想认识对方(server端)..于是那个人(client端)主动向对方(server端)挥手(意味着接下来有握手的冲动,即是带SYN标志的TCP报文到服务器),而对方(server端)也向那个人(client端)挥手(对刚才客户端SYN报文的回应;同时又标志SYN给客户端,询问客户端是否准备好进行数据通讯),这时候对方(server端)是否愿意握那个人(client端)的手(取决于防火墙等定义的规则决定),那个人(client端)确认了对方(server端)愿意,才能走过去握手(客户必须再次回应服务段一个ACK报文),这样就达到三次握手(建立连接)的原理;
4. MVVM (参考链接)
5. V8渲染引擎怎么解析js
简单来说,JavaScript 引擎会加载你的源代码,把它分解成字符串(又叫做分词),再 把这些字符串转换 成编译器可以理解的字节码,然后执行这些字节码。
Google 的 V8 引擎 是用 C++ 编写的,它也能够编译并执行 JavaScript 源代码、处理内存分配和垃圾回收。它被设计成由两个编译器组成,可以把源码直接编译成机器码:
- [x] Full-codegen:输出未优化代码的快速编译器
- [x] Crankshaft: 输出执行效率高、优化过的代码的慢速编译器
6. 移动端性能优化
7. 并发请求,合并请求
8. redux实现原理
9. webpack打包机制
10. 了解cookie和session工作机制
HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份。怎么办呢?就给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。这就是Cookie的工作原理。
- Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。
Cookie: 中文译为小甜饼,由Netscape公司发明,是最常用的跟踪用户会话的方式。Cookies是一种由服务器发送给客户端的片段信息,存储在客户端的内存或者硬盘上,在客户随后对该服务器的请求中发回它。其实主要就是把服务器为客户端分配的session ID保存在Cookies中,每次发送请求时把Cookies附加到请求对象中一起发过去,服务器得到这个唯一的session ID,从而可以唯一的标识一个客户端
Cookie cookie = new Cookie("username","helloweenvsfei"); // 新建Cookie
cookie.setMaxAge(Integer.MAX_VALUE); // 设置生命周期为MAX_VALUE
response.addCookie(cookie); // 输出到客户端
//如果maxAge属性为正数,则表示该Cookie会在maxAge秒之后自动失效。浏览器会将maxAge为正数的Cookie持久化,即写到对应的Cookie文件中。无论客户关闭了浏览器还是电脑,只要还在maxAge秒之前,登录网站时该Cookie仍然有效。下面代码中的Cookie信息将永远有效