第一次正式面试,等面试官的时候紧张到发抖,手心都出汗了,但是面了一会会轻松很多,面试官很温柔,会一步步引导。
1.自我介绍和项目介绍,这一块会问道很多简历里面提到的,所以把简历里面涉及到的知识点复习一下,复习深一点。
这一块问到了我对称加密和非对称加密。
如何使别人获取不到cookie的值
答:设置http-only字段
3.同源策略
4.跨域的方法
我回答了JSONP
CORS,CORS里面我提到了一个 Access-Control-Allow-Origin只能设置通配符或者一个域名,然后他说想设置多域名这个问题很好解决,问我如何解决,给了点提示,最后方法是先判断再设置。
这里说到cookie默认不允许携带cookie,那么如何允许CORS允许携带跨域,答案是服务器设置响应头Access-Control-Allow-Credentials ,但其实请求时也应该设置这个参数。
document.domain
window.name + iframe,追问window.name中window是iframe的还是跨域的window
代理的原理说了服务器没有同源策略
proxy
5.写一个函数
function log(arr){}
arr=[‘a’,‘b’,‘c’];
我是这样写的,其实是对的,但是牛客网老有一个红色的波浪线提示错误,搞的我慌的一批
function log(arr) {
for(let key in arr){
setTimeout(function(){
console.log(arr[key])
},1000*key)
}
}
面试官让不用let再写一个,我说了立即执行函数
但是立即执行函数错了好多次,慢慢提示才写对的
function log(arr){
for(var key in arr){
(function(key){
setTimeout(function(){
console.log(arr[key]);
},1000*key)
})(key)
}
}
6.js的事件队列
同步任务
宏任务
微任务
判断宏任务微任务队列是否执行完成,是每执行一个宏任务就判断是否执行完毕还是代码执行完毕再判断,这一块答的不太好
7.写了一个instanceof
写法我背了所以写出来,但是原理问的很深,所以还要再复习一遍。
function myInstanceof(left,right) {
let proto = left.__proto__;
let prototype = right.prototype;
while(1){
if(proto===null){
return false;
}
if(proto===prototype){
return true;
}
proto = proto.__proto__;
}
}