19年面试总结
1.懒加载,预加载的实现
懒加载:
原理:使用一张loding图片作为占位图,当当前需要加载的图片在可视区时等原图加载完成替换loding图片
预加载:
原理:使用一张低清晰度小图顶住原图片位置,待原图片下载完成替换成高清原图
2.前端优化方案
1. js/css等使用不同地址cdn分发,单个有速度限制
2. js/css压缩/合并/混淆
3. 按需加载
4.合理利用sync/defer(sync无法确定顺序异步加载,defer等页面完成后顺序加载css/js)
3.小程序的登录
1.前端使用wx.login 获取code
2.通过wx.requer将请求回来的code传递给后台
3.后台通过将code和appid,appsecret组合加密后向微信请求open_id 和sesstion_key
4.后台接收后处理返回给前端,前端存储在缓存中
5.以后每次请求将返回的密钥附带提交给后端
4.vue 和react 的异同
相同点:都推崇组件开发
只关注视图部分
都有配套的全家桶
都可以使用构建工具快速构建项目
都有props想子组件传递数据的概念
差异: vue推崇使用模板语法 react使用jsx语法
vue是数据双向绑定 react是单向数据流
vue的是mvvm react是mvc
5.小程序跟vue 对比异同
6.作用域/闭包
作用域(即上下文)
作用域分为两种
1.全局作用域(window) 整个程序中都可以访问到
2.局部作用域 局部作用域能访问全局作用域,全局作用域访问局部作用域报错
闭包 是能够读取其他函数内部变量的函数
function closure(){ let test = 10 ; return function(){ return test++; } } // 调用函数(该函数调用后因为在返回函数中有test的引用所有计数器并不为0 所以并未释放空间) let test = closure(); // 第一次调用 test(); // 11 // 第二次调用 test(); //12 // 若并未赋值给变量直接使用则每次使用完后释放空间 closure()(); // 11 closure()(); //11
8.cookie,sessionStorage,localStorage区别
1.cookie(大小限制4K,且每次提交cookie都会携带给后台)
2.sessionStorage 窗口关闭时 缓存数据清空
3.localStorage 当前浏览器永久缓存(大小比较大5M)
3.1 在隐私模式下无法读取
3.2 字符串类型
3.3 占用内存大小过多页面容易变卡
3.4不能被爬虫抓取