理论部分:
- 自我介绍
- 项目难点,我说的保存登录状态和ajax的异步请求
- cookie, sessionStroage, localStroage区别
- cookie, session你认为个人信息(姓名,地址,不考虑密码)应该存在cookie还是session?我说的cookie,因为经常会用到,但是可能有被窃听的风险,他问既然如此,为什么不放(vuex)?因为你只给了我两个选项。。(不好反驳)
- 异步相关,宏任务微任务,async,await,Promise
- 介绍HTTP?HTTP有几个版本,你用的是哪个版本?分别有什么变化,怎么实现?为什么?
- 三次握手,四次挥手,这些过程分别发送什么,为什么要发?
- 项目中跨域怎么实现?原理?
- js基础类型?判断类型?除了isArray怎么判断是不是数组?我说的原型链。他说如果伪造一个类我怎么判断?
- 对象的生成方法(我就说了字面量和构造函数)
- 浏览器缓存有了解吗(没有)
- 设计模式了解吗(没有)
- TypeScript有了解吗(我只会用一点点,不懂原理)
- 前端优化有了解吗?(比如说首屏加载速度?我说的懒加载)
- 前端安全呢?
- PC的扫码登录功能,怎么返回状态,扫码中,已登录。我说向服务端发起轮询请求,但是这样应该会很麻烦,他说目前很多都是这么做的。
代码部分:
作用域:(没答对)
{
let sum = 2;
}
console.log(sum);
var sum = 0;
let i;
for(i=0; i<2; i++) {
for(let j=0; j<2; j++) {
setTimeout(() => {
console.log(i,j);
}, 10)
}
}
异步:(答对了)
setTimeout(() => {
console.log(1);
}, 0);
console.log(2);
async function async1() {
console.log(3);
await async2();
console.log(4);
}
async function async2() {
setTimeout(() => {
console.log(5);
}, 0);
}
async1();
Promise.resolve().then(() => {
console.log(6);
});
new Promise(() => {
console.log(7);
}).then(() => {
console.log(8);
});
手写代码:(理解错题意)
/**
* @param {string} s
* @return {boolean}
*/
var isValid = function(s) {
const n = s.length;
const map = new Map([
[')','('],
[']','['],
['}','{']
])
const stack = [];
for(let ch of s) {
const find = map.get(ch);
if(find) {
if(stack[stack.length-1] !== find) {
return false;
}
else {
stack.pop();
}
}
else {
stack.push(ch);
}
}
return !stack.length;
};
反问:
Q:你对我接下来的学习有什么建议吗?
A:你可以多上网搜一下前端方向需要的知识,不能仅仅只是会用,要多挖掘他的原理。
Q:我知道今天的表现很不好,你能评价一下吗?
A:不方便透露
Q.E.D.