166. 面试官:实现一个批量请求函数,要求能够限制并发量?

166期

1. 实现一个批量请求函数,要求能够限制并发量?
2. git 中 rebase、reset、revert 有什么区别?
3. Promise 的 finally 怎么实现的?

上面问题的答案会在第二天的公众号(程序员每日三问)推文中公布

也可以小程序刷题,已收录500+面试题及答案bfc10d0300ad075f921c4c37f59152e1.jpeg

165期问题及答案

1. 前端跨页面通信,你知道哪些方法?

前端跨页面通信主要有以下几种方法:

  1. Broadcast Channel API: 这是一种现代的方法,允许同源的不同窗口、标签页或iframe之间通信。它创建一个通道,页面可以通过这个通道发送或接收消息。

  2. LocalStorage: 利用localStorage可以实现跨页面通信。当一个页面改变localStorage的值时,其他页面可以通过监听storage事件来接收通知。

  3. Window.postMessage(): 这个方法允许安全地实现跨源通信。一个页面可以向另一个页面发送消息,接收方可以验证消息来源并相应处理。

  4. SharedWorker: SharedWorker可以在多个浏览器标签页、iframe或window之间共享。它们可以用来在不同的上下文中共享脚本和通信。

  5. Cookie: 通过在不同页面共享cookie来传递信息。但这种方法受限于cookie的大小和安全策略。

  6. URL Parameters: 通过在URL中加入参数,然后在另一个页面上解析这些参数来传递信息。

  7. IndexedDB: 这是一种在浏览器中存储大量结构化数据的方式,可以用于不同页面之间的数据共享和通信。

  8. Server-Side Events / WebSocket: 通过服务器作为中介,可以实现不同页面间的实时通信。Server-Side Events主要用于服务器到客户端的单向通信,而WebSocket则支持双向通信。

根据具体的应用场景和需求,可以选择最合适的方法进行跨页面通信。

2. 什么是 CI/CD?

CI/CD 是现代软件开发中的重要实践,主要用于自动化软件的构建、测试和部署过程。它由两个密切相关的概念组成:持续集成 (CI) 和持续部署或持续交付 (CD)。

  1. 持续集成 (Continuous Integration, CI): 这是一种开发实践,开发人员会频繁地(通常是每天多次)将代码更改合并到共享存储库中。每次代码提交后,会自动运行一系列测试(单元测试、集成测试等),这有助于尽早发现和解决问题。CI 的目标是通过减少集成所需的努力来提高软件质量。

  2. 持续部署 (Continuous Deployment)持续交付 (Continuous Delivery): 这两个术语经常被交替使用,但它们之间有细微的区别。

  • 持续交付 (CD): 这是持续集成的扩展,它确保软件除了能够被测试外,还随时准备部署到生产环境中。在持续交付中,每次更改通过所有的生产流水线阶段(包括测试)之后,最终的软件产品是准备好部署的,但部署到生产环境的决定是手动的。

  • 持续部署 (CD): 在这种实践中,每次更改通过所有的测试并被验证后,会自动部署到生产环境。这意味着如果更改通过了所有的自动化测试,它将自动部署到用户可以使用的生产环境中。

CI/CD 的实施通常依赖于自动化的构建和测试工具,如 Jenkins、Travis CI、GitLab CI、CircleCI 等。这些工具有助于实现快速、频繁且可靠的代码更改,提高软件交付的速度和质量,从而使团队能够更快地响应市场变化和客户需求。

3. flex 布局下,怎么改变元素的顺序?

在 Flexbox 布局中,可以通过使用 order 属性来改变元素的顺序。order 属性是专门用于控制 Flex 容器内项目的顺序的。在默认情况下,Flex 项目的 order 值为 0。通过更改这个值,你可以控制它们的显示顺序,而不必改变 HTML 结构。

如何使用 order 属性:

  1. 默认顺序:如果所有 Flex 项目的 order 属性都未被设置或都设置为相同的值,它们将按照 HTML 源代码中的顺序显示。

  2. 更改顺序:你可以给 Flex 项目分配一个整数值。这个值可以是正数、0 或负数。数值越小的项目会越早显示,即在 Flex 容器中的位置越靠前。

  3. 例子

    .container {
      display: flex;
    }
    
    .item1 {
      order: 2; /* 在第三个位置显示 (因为有 order: 3 的项) */
    }
    
    .item2 {
      order: 3; /* 在最后一个位置显示 */
    }
    
    .item3 {
      order: 1; /* 在第二个位置显示 */
    }

    在上面的例子中,即使 .item1 在 HTML 结构中排在前面,它也会在 .item3 之后显示,因为 .item3order 值更小。

通过使用 order 属性,你可以灵活地调整 Flex 项目的显示顺序,这在响应式布局和动态内容布局中特别有用。

因为微信公众号修改规则,如果标星或点在看,你可能会收不到我公众号文章的推送,原创不易,请大家将本公众号星标,看完文章后记得点下赞或者在看,谢谢各位!

学习不打烊,充电加油只为遇到更好的自己,每天早上9点纯手工发布面试题,每天坚持花20分钟来学习与思考,在千变万化,类库层出不穷的今天,不要等到找工作时才狂刷题,提倡每日学习。

  • 27
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值