面试官:
1.前端基础(html+css)
2.网络基础
3.问一些项目经验相关的
4.笔试题
面试开始:
你是怎么学习前端的? 卡卡巴巴,让面试官觉逻辑不清晰,沟通能力不强
一、网络部分
1.cookie的相关字段
提到httponly是跨站脚本攻击吗? 面试官:你知道什么就说什么不确定就说不知道
2.csrf又是什么?为什么cookie的httponly字段是防止跨站脚本攻击?
3.cookie没有设置过期时间呢?他是什么时候过期?
4.cookie的跨域传递 (不清楚)
要求:我希望a站点的数据带到b站点. a.com的cookie带到b.com。跨域之间的cookie如何共享?
这个需要前后端操作,前端需要做什么?后端需要做什么?
5.假设现在有2个站点,一个站点为 baidu.com。另外一个子站点 a.baidu.com。
把cookie放在baidu.com里面,子站点能否拿到主站点baidu.com的内容? (不清楚)
我的回答:把cookie放在同一个域(document.domain),就不是不同域的问题了
6.主域和子域算不算跨域?(不清楚)
回答:最后回答不算
面试官:不要去猜,凭你的经验
7.解决跨域的方式?先说前端,再说后端的
①cors 回答不好卡卡巴巴 简单请求有什么缺点?(不清楚)
回答:这个错误无法通过状态码识别,因为返回的状态码可能是200。
提问:简单请求有响应吗?有响应我为什么不知道他报错呢有响应的话,我就知道他的状态码就可以查到报错?
②jsonp为什么会执行callback?回调这个过程清楚吗
回答:浏览器解析callback,所以会执行(×)
提问:项目中有没有去接收过callback?
前后端的callback其实有约定一致性的前端要写有方法去执行访问这个callback
③nodejs实现跨域
提问:说一下中间键的概念
我的回答:相当于一个封装好的方法,然后进行复用(面试官说中间件其实相当于一个快递中转站,把你需要的东西返回给你就好)
提问:如果让你实现一个中间件呢? 实现一个跨域的子组件 你会怎么做?有无思路 (实现接口的转发的中间件)
回答:用到node的express,proxy代理模块(面试官说不是他想要的答案)
③-①说一下正向代理和反向代理?
二、前端部分
8.说一下eventloop?
提问:同步代码就是所有的宏任务吗?(我这里回答的不是,语气有点不确定)
提问:如果微任务里面又产生继续产生宏任务呢?
提问:宏任务和微任务主要解决的问题是什么?
回答:解决异步操作(×,不完整)
提问:假设现在我有一个for循环发了1000次请求,浏览器直接卡死,希望用宏任务微任务去解决,不要让请求一次性并发出去,借助eventloop
怎么去优化?
回答:用settimeout每隔一段时间就往外发请求 (面试官:大量请求发出去,浏览器有个并发限制,超过限制直接导致后面的请求卡死掉,用settime解决不了)
面试官:那我现在让你实现一个异步任务队列,把他作为一个笔试题(没答出来常见的)
异步任务队列支持的能力:
①.最大并发请求限制,
②.超出任务限制的请求,进入队列
③.请求完成,等待期的请求继续,依此类推
面试官:假设浏览器最大并发请求10个,在继续发的时候,把这请求存到队列中,队列里面有一个任务完成了队列 就+1个,直到队列任务执行完毕,清空队列