推荐阅读:
一。朋友面的一家公司
1.说下let,var,const。
var定义的变量,没有块的概念,可以跨块访问, 不能跨函数访问。
let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问。
const用来定义常量,使用时必须初始化(即必须赋值),只能在块作用域里访问,而且不能修改。
2.如何保证this的指向是正确的。
分析:先从原理上说明this指向问题为什么会出现,什么情况下会出现,然后再说做法呗
为了防止作用域变化,闭包问题。把this保存 传递过去,或者用bind传进去。
3.如何写出高质量的代码。
让函数成为编码的基本单位,每个函数只做 1 件事情;
省略不必要的代码;
使用主动式;
避免连串的松散表达式;
把相关的代码放在一起;
多用肯定语句;
善用平行结构;
详细解释
4.怎么查内存泄漏,怎么防止内存泄漏?
分析:performance可以持续追踪,是最宏观的分析;然后用memory,可以细化定位,用source可以断点排查
5.说一下什么是websocket。什么是三次握手?为什么需要三次握手。
WebSocket是一种网络通信协议,服务端有新消息可以自动推送。
HTTP协议:通信只能由客户端发起。
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
完成三次握手,客户端与服务器就可以开始传送数据了
6.做一个成长系统的前端需要几天的工作量?
7.说下用合图有什么好处。
合图是减少Http请求数。合图的时候提个建议:png不要与jpg混合在一起合,否则,合图后图片的大小将可能比不合图时所有图资源大小大,另外,合图宽与高不能超过2048px,否则,极有可能出现渲染上的问题~~
8.如何实现一个循环链表。
9.