1.前端跨域CORS
所有的网站跨域资源共享是一种机制, 为了保障浏览器的安全。
同源策略: 协议, 域名, 端口 三者必须统一
解决方法:
- 后端加请求头: Access-Control-Allow-Origin:*
- 前端使用JSONP非官方跨域解决方案
- 使用代理模式(nodejs)
- 挂载服务器(nginx)
2.防抖和节流
防抖: 是短时间内多次触发同一个函数, 只执行最后一次或开始是执行
节流: 在一段时间内只允许函数执行一次, 可通过时间戳和定时器实现(输入框的联想)
3. JS常见内存泄漏
意外的全部变量; 被遗忘的计时器; 脱离DOM的引用; 闭包
4. 闭包
闭包是在函数里面声明函数, 使子函数可以访问父函数中所有的局部变量, 保护变量不收外界污染, 使其一直存在内存中, 因为闭包太消耗内存, 尽量不适用, 优点是能够实现封装和缓存。
5. 垃圾回收和内存泄漏
垃圾回收机制: 标记清除和引用计数清除
将内存中不再用到的内存及时释放, 避免内存泄漏。
内存泄漏优化: 全局变量先声明再使用; 避免过多使用闭包; 注意清除定时器和监听。
6. 三种缓存
cookie的大小在4-5K左右, cookie数据会自动传递到服务器, 服务端也可以写cookie到客户端, 另外两种缓存不会自动传递数据到服务器, 且cookie在设置的时间内会一直有效。
localstorage虽然也有大小限制 但是比cookie大, 在浏览器关闭之后数据也不会丢失。
sessionstorage的大小可以达到5M或更大, cookie是因session而产生的缓存机制, 所以在sessionstorage在浏览器关闭之后自动删除。
7. 回调函数是什么
回调函数是通过函数的指针调用函数, 缺点是容易造成回调地狱, 所以可以通过观察者模式, promise或async/await去处理这个问题。
8. 字符串常用方法
concat(合并); indexOf(); slice(剪切); replace(); split();
toLowerCase(改大写); toUpperCase(改小写)
9. Axios和Ajax
Axios可以从浏览器中创建XMLHttpRequest, 可以有nodejs创建HTTP请求, 支持promiseAPI拦截请求和响应, 可以转换拦截请求和响应数据, 取消请求,自动转换成JSON格式, 发送参数prams是跟请求地址一起发送, data是作为一个请求体进行发送, 客户端支持防止XSRF。
Ajax是与服务器进行数据交互的一种技术, 能够实现同步或异步的局部刷新; 先创建ajax核心对象; 在准备参数; 监听请求状态; 最后发送请求,接受结果。
10.Axios怎么设置拦截器
先请求拦截器: 请求前传入token之类的参数, 请求成功操作, 请求错误操作
再响应拦截器: 接收前跳转登录注册界面, 响应成功操作, 响应失败操作
11. var, let, const的区别
var没有块级作用域, 支持变量提升, 声明之后会挂载到window上面。
let有块级作用域, 不支持变量提升, 声明之后不会挂载到window上面, 不允许重复声明同一个变量, 有临时性死去。
const声明常量, 不支持变量提升,不允许重复声明, 一旦声明类型就不会被改变。
12. JS中基础数据类型
栈: String(); Number(); Boolean(); Object(); undefined(); null()
堆: 对象, 数组, 函数
13: JSON和JSONP
JSON是一种轻量级的数据格式, 他可以跨平台, 还可以做配置文件。
JSONP是一种非官方的解决跨域问题的方法, 是利用带有src属性的标签不受限制的访问外部资源, 并结合回调函数获取数据。
14.JS严格模式ES5
- 不可以省略var声明变量;
- 禁止使用八进制
- 禁止使用this关键字指向全局变量
- 不允许在非函数的代码内声明函数
- 严格模式下的argument变量形参不会变
15. 同步异步
浏览器是多线程, 而js是单线程, 只能从下往上执行, 同步会在页面中造成阻塞, 执行完一个才能执行下一个; 异步可以解决并发, 多个任务一起执行, 无需等待结果。
16. 高阶函数
map(); redule(); filter('过滤'); sort();
17. 浏览器渲染过程
- HTML先生成DOM树
- 计算所有的节点位置
- 内容呈现
18. 常见的异步事件
- 定时器
- ajax
- 事件绑定
- 回调函数
- promise
19. 页面优化的方法
- 减少请求
- 合理设置HTTP缓存
- 资源合并与压缩
- 合并图片, 懒加载
- 减少闭包
- 使用字体图标或svg
- 减少DOM操作
- 避免死循环
- 多事件委托
20. http和https的区别
http是超文本传输协议,信息是明文传输,端口默认是80, http连接是简单且无状态的
https则具安全性的ssl/tls加密传输协议, 端口默认是443, https是由SSL/TLS+HTTP协议构建的网络协议,可用于加密传输和身份认证, 比http协议更安全。
21. 常见HTTP的状态码有哪些
200
– 请求成功301
– 资源(网页等)被永久转移到其它URL404
– 请求的资源不存在405
– 不允许的请求方法500
– 内部服务器错误501
– 服务器不支持请求方法503
– 服务器临时错误
22. HTTP的优缺点
优点: 支持客户/服务器模式; 应用广泛且跨平台; 简单快速、灵活
缺点: 无连接;无状态; 明文传输; 不安全
注释: 如有不对的, 欢迎补充和指出,我也是一边面试一边收集