前端问题
1.vue-loader作用:
转换vue单文件,解析各个部分,交由其他loader处理。
2.刷新或进入网页过程:
浏览器缓存和操作系统(OS)缓存 (dns和host)和DNS服务器
3.https过程:https://zhuanlan.zhihu.com/p/43789231
发送http请求-服务器数字签名后传CA证书(日期,hash,公钥等)-浏览器验证证书日期,及真伪-浏览器生成随机key公钥加密-服务器私钥解密获取随机key-两边都有随机key后,传输数据通过key加密
Hash作用是散列化减少数据量,加密算法对数据大小有一定要求。总结:非对称加密方式通过传输加密key,完成对称加密方式传输数据
4.webpack钩子和生命周期:
钩子内部使用了tapable;
Webpack的插件就是通过规定的命名,实现apply方法,调用webpack封装的内部钩子对象,挂载执行函数
5.webpack包分离,可以让不变的包让浏览器缓存,包hash不变,提高加载效率
6.网络层:
tcp 4/5层 OSI七层:
7.diff:https://www.cnblogs.com/wind-lanyan/p/9061684.html;
孩子比较时利用头尾指针,交换进行,先对旧节点进行交换,最后根据index添加新增的节点;结束条件:1.旧节点完,加新;2.新节点完,去旧;
key为了唯一性,避免算法导致的复用错误
8.vue3:https://juejin.cn/post/6892295955844956167
9.数据双向绑定原理
10.hash算法:
散列值策略:1.取余;2.乘余取整;3.平方取中;4.数字分析法;5.基数转换法;6.折叠法;;
冲突策略:1.开放寻址,冲突就跳跃别的地址;2.链表法;3.多表分离,溢出区 4.再哈希法
11.Tcp与udp,tcp为什么传输稳定;tcp阻塞与重传机制
tcp与udp:https://juejin.cn/post/6844903800336023560
tcp可靠传输:https://juejin.cn/post/6844903799253909512
tcp阻塞:https://juejin.cn/post/ 6844904004711874567
12.虚拟滚动:https://juejin.cn/post/6844903938894872589
固定高度,直接根据各项高度距离计算 非固定高度,通过预估高度,进行缓存展示
13.promise标准实现
https://segmentfault.com/a/1190000023157856
https://juejin.cn/post/6994594642280857630?utm_source=gold_browser_extension
14.promise并发限制
通过promise.race,控制并发池 https://www.cnblogs.com/fuGuy/p/13112876.html
15.执行顺序,同步,异步任务,宏任务
https://juejin.cn/post/6844903638238756878
https://zhuanlan.zhihu.com/p/74339572
串行异步:await for循环 或者 while then链式进入异步队列 let i=0;
let promise=Promise.resolve();
while(i<this.task.length){
promise=promise.then(this.task[i]);
promise.then((data)=>{console.log})
i++;
}Promise和await进入队列区别:promise.then的函数会直接进入微任务队列等待。await从右向左执行完会阻塞,直接线程跳出,导致上一层promise.then不直接进入队列(因为async
/await异步时,相当于yiled 后面的代码,这是会将后面的代码的context一并加到微任务的。)(不是稳定的)
https://www.cnblogs.com/fundebug/p/10095355.htmlpromise.then会直接进入异步队列。 Await在不同浏览器,node环境下,进入异步队列的时机不一致。
16.防抖,节流:https://juejin.cn/post/6844903651278848014