最近答的不好的面试题记录

举报
拿我格子衫来 发表于 2022/03/18 00:36:21 2022/03/18
【摘要】 面试是一种对自己知识漏洞的查漏补缺。 记录一下自己面试中表现不佳的问题   1:如果在保证3个接口全部返回成功后,执行相应的函数? 我首先想到是是使用promise.all和axios库的all方法支持 另外还有async加await 如 let urls = [ 'https://jsonplaceholder...

面试是一种对自己知识漏洞的查漏补缺。

记录一下自己面试中表现不佳的问题

 

1:如果在保证3个接口全部返回成功后,执行相应的函数?

我首先想到是是使用promise.allaxios库的all方法支持 另外还有async加await


  
  1. let urls = [
  2. 'https://jsonplaceholder.typicode.com/posts/1',
  3. 'https://jsonplaceholder.typicode.com/posts/2',
  4. 'https://jsonplaceholder.typicode.com/posts/3'
  5. ]
  6. let axiosList = []
  7. urls.forEach(url => {
  8. axiosList.push(axios.get(url))
  9. })
  10. axios.all(axiosList).then(function (res) {
  11. let p1 = (res[0].data)
  12. let p2 = (res[1].data)
  13. console.info(p1)
  14. console.info(p2)
  15. })

  
  1. var p1 = new Promise(function (resolve, reject) {
  2. setTimeout(resolve, 500, 'P1');
  3. });
  4. var p2 = new Promise(function (resolve, reject) {
  5. setTimeout(resolve, 600, 'P2');
  6. });
  7. // 同时执行p1和p2,并在它们都完成后执行then:
  8. Promise.all([p1, p2]).then(function (results) {
  9. console.log(results); // 获得一个Array: ['P1', 'P2']
  10. });

 

2:如何在vuex中a模块使用b模块的actions ?

 

3:http的复杂请求和简单请求,如何避免或优化option请求?

跨域请求分为两种:简单请求和复杂请求

符合以下任一一种情况的就为复杂请求:

1.使用方法put/delete/patch/post;

2.使用json格式的数据(content-type: application/json)

3.请求中带有自定义头部

其他情况都为简单请求

option请求出现的情况有两种

1:获取后台服务器支持的HTTP的通信方式

2:对跨域请求进行preflight request (预检请求)

预检请求首先需要向另外一个域名的资源发送一个Http Options的请求头,以检查实际发送的请求是否是安全的,options请求是浏览器自发起的preflight request(预检请求)

preflight request 请求报文中有两个需要关注的header字段

(1): Access-Control-Request-Method: 告知服务器实际请求所使用的HTTP方法

(2): Access-Control-Request-Headers: 告知服务器实际请求所携带的自定义Header字段

同时服务器也会添加origin header,告知服务器实际请求的客户端的地址。服务器基于从预检请求获得的信息来判断,是否接受接下来的实际请求。

服务器所返回的Access-Control-Allow-Methods首部字段将所有允许的请求方法告知客户端,返回将所有Access-Control-Request-Headers首部字段将所有允许的自定义首部字段告知客户端。此外,服务器端可返回Access-Control-Max-Age首部字段,允许浏览器在指定时间内,无需再发送预检请求,直接用本次结果即可。

 

如要优化Option的请求,可以在服务器端设置返回的Access-Control-Max-Age 为最大值, 指定一定时间内,此接口不需要在发送Options请求

4:js为什么会有变量提升?

js的诞生是为了解决客户端人机交互的问题,是一种弱类型的语言,在如果js设计的如java那样严谨,必须要先声明在使用,就会导致客户端代码很多错误,非常影响用户体验

此外,

javascript并不是严格的自上而下执行的语言

它会将当前作用域的所有变量的声明提升到程序的顶部。

js和其他语言一样,都要经历编译和执行阶段。而js在编译阶段的时候,会搜集所有的变量声明并且提前声明变量,而其他的语句都不会改变他们的顺序,因此,在编译阶段的时候,变量已经声明,第二步就是赋值了

 

  1. js会将变量的声明提升到js顶部执行,因此对于这种语句:var a = 2;其实上js会将其分为var a;和a = 2;两部分,并且将var a这一步提升到顶部执行。
  2. 变量提升的本质其实是由于js引擎在编译的时候,就将所有的变量声明了,因此在执行的时候,所有的变量都已经完成声明。
  3. 当有多个同名变量声明的时候,函数声明会覆盖其他的声明。如果有多个函数声明,则是由最后的一个函数声明覆盖之前所有的声明。

 

 

5:如何在nodejs中使用多线程的?

使用 cluster模块  worker_threads模块

 

worker_threads模块

cluster模块

 

 

6:移动端的布局方案有哪些?

百分比

rem

媒体查询

px2rem 库

前端常见的布局方案大全

 

7:vue-router的底层原理是怎样的

使用Html5的pushState 与hashChange事件的监听来实现根据url匹配对应的页面资源

文章来源: fizzz.blog.csdn.net,作者:拿我格子衫来,版权归原作者所有,如需转载,请联系作者。

原文链接:fizzz.blog.csdn.net/article/details/103729756

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。