keep-alive的原理
for of 和for of 的区别
vue原理
scss
vuex
vue-router hash和history的区别 https://www.jianshu.com/p/6f69ed8ce59d
vue-router的钩子函数 https://www.cnblogs.com/qdlhj/p/9838426.html
事件循环
浏览器地址寻址过程
网络协议http和https
一. 样式面试题
-
盒模型
-
IE盒模型和标准盒模型的区别
-
边距坍塌
-
布局方式有哪些
-
CSS优化,提高性能的方法有哪些?https://www.cnblogs.com/1463069300limingzhi/p/10853697.html
-
浮动 https://www.cnblogs.com/tusong1126/p/13582043.html
-
BFC
-
伪类和伪元素 :hover ::after
二. js -
闭包 https://blog.csdn.net/weixin_43558749/article/details/90905723
-
this指向问题
-
prototype _ proto _ https://blog.csdn.net/lc237423551/article/details/80010100
-
垃圾回收
-
柯里化
https://www.jianshu.com/p/2975c25e4d71
用一个参数把返回的方法保存下来,这样就可以实现参数复用、提前确认、延迟运行
https://blog.csdn.net/weixin_39798049/article/details/88648672 -
手写new
function C没有返回值,既result instanceof Object : false
result instanceof Object : true -
es6 class是如何实现的
https://blog.csdn.net/weixin_33681778/article/details/88038531 -
变量提升和函数提升
function up() {
var a = 1
console.log(a);
function a() {}
console.log(a);
}
up() // 1 1 -
2 8 16进制和10进制的互相转换 https://blog.csdn.net/sinat_28771747/article/details/76242262?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-1.pc_relevant_paycolumn_v3&spm=1001.2101.3001.4242.2&utm_relevant_index=4
-
隐式转换和显示转换
二. 网络 -
https 实现原理
HTTPS在传输的过程中会涉及到三个密钥:
服务器端的公钥和私钥,用来进行非对称加密
客户端生成的随机密钥,用来进行对称加密
一个HTTPS请求实际上包含了两次HTTP传输,可以细分为8步。
1.客户端向服务器发起HTTPS请求,连接到服务器的443端口
2.服务器端有一个密钥对,即公钥和私钥,是用来进行非对称加密使用的,服务器端保存着私钥,不能将其泄露,公钥可以发送给任何人。
3.服务器将自己的公钥发送给客户端。
4.客户端收到服务器端的证书之后,会对证书进行检查,验证其合法性,如果发现发现证书有问题,那么HTTPS传输就无法继续。严格的说,这里应该是验证服务器发送的数字证书的合法性,关于客户端如何验证数字证书的合法性,下文会进行说明。如果公钥合格,那么客户端会生成一个随机值,这个随机值就是用于进行对称加密的密钥,我们将该密钥称之为client key,即客户端密钥,这样在概念上和服务器端的密钥容易进行区分。然后用服务器的公钥对客户端密钥进行非对称加密,这样客户端密钥就变成密文了,至此,HTTPS中的第一次HTTP请求结束。
5.客户端会发起HTTPS中的第二个HTTP请求,将加密之后的客户端密钥发送给服务器。
6.服务器接收到客户端发来的密文之后,会用自己的私钥对其进行非对称解密,解密之后的明文就是客户端密钥,然后用客户端密钥对数据进行对称加密,这样数据就变成了密文。
7.然后服务器将加密后的密文发送给客户端。
8.客户端收到服务器发送来的密文,用客户端密钥对其进行对称解密,得到服务器发送的数据。这样HTTPS中的第二个HTTP请求结束,整个HTTPS传输完成。
三. 算法
直接选择排序 https://blog.csdn.net/qq_42381297/article/details/100011020
四、vue -
路由传参
https://www.jianshu.com/p/d276dcde6656
https://blog.csdn.net/weixin_45644335/article/details/120786797
问题记录:params传参时
这样无法正常跳转
这样可以跳转,原因未知。但是如果是2个以上的参数就都可以正常跳转。 -
vue2.x响应式之Object.defineProperty()局限性 https://blog.csdn.net/weixin_45780818/article/details/119083648
-
vue2.x重写了数组的哪些方法
https://blog.csdn.net/wytraining/article/details/114321846
五、面试记录 -
数组去重
-
数组交集 https://blog.csdn.net/MMFerry/article/details/114022052
-
Map和Object的区别
https://blog.csdn.net/ckwang6/article/details/89215396 -
Promise.all有一个失败会进入reject。如何让一个reject了但是其他方法继续执行。如果在单个请求中定义了catch方法,那么就不会进Promise.all的catch方法。因此,可以在单个的catch中将失败的promise放入一个list,待一轮请求完成后,再去请求失败的请求。
https://blog.csdn.net/q3254421/article/details/84347433
const promise1 = function () {
return new Promise((resolve, reject) => {
const timer = setTimeout(() => {
resolve(“promise1 success”);
}, 5000);
});
};
const promise2 = function () {
return new Promise((resolve, reject) => {
const timer = setTimeout(() => {
resolve(“promise2 success”);
}, 3000);
});
};
const promise3 = function () {
return new Promise((resolve, reject) => {
const timer = setTimeout(() => {
reject(“promise3 failed”);
}, 2000);
})
.catch(err => {
console.log(‘catch’,err);
})
};
// 注意需要加括号去调用方法
const prList = [promise1(), promise2(), promise3()]
const prAll = function () {
Promise.all(prList).then(
(res) => {
console.log(‘all’, res);
},
(rej) => {
console.log(‘all’, rej);
}
)
};
document.querySelector("#debounce").addEventListener(“click”, prAll); -
严格模式的特点 https://blog.csdn.net/weixin_33672109/article/details/88738336
-
垂直水平居中 https://blog.csdn.net/weixin_42291381/article/details/81624935
-
提高首屏加载速度,检测加载时间 https://blog.csdn.net/VhWfR2u02Q/article/details/80115498
-
怎样检测内存泄露
-
箭头函数的特点 https://blog.csdn.net/lan128lan/article/details/105409837
-
继承重定向的问题 https://blog.csdn.net/u013578282/article/details/46595755