166期
1. 实现一个批量请求函数,要求能够限制并发量?
2. git 中 rebase、reset、revert 有什么区别?
3. Promise 的 finally 怎么实现的?
上面问题的答案会在第二天的公众号(程序员每日三问)推文中公布
也可以小程序刷题,已收录500+面试题及答案
165期问题及答案
1. 前端跨页面通信,你知道哪些方法?
前端跨页面通信主要有以下几种方法:
Broadcast Channel API: 这是一种现代的方法,允许同源的不同窗口、标签页或iframe之间通信。它创建一个通道,页面可以通过这个通道发送或接收消息。
LocalStorage: 利用
localStorage
可以实现跨页面通信。当一个页面改变localStorage
的值时,其他页面可以通过监听storage
事件来接收通知。Window.postMessage(): 这个方法允许安全地实现跨源通信。一个页面可以向另一个页面发送消息,接收方可以验证消息来源并相应处理。
SharedWorker: SharedWorker可以在多个浏览器标签页、iframe或window之间共享。它们可以用来在不同的上下文中共享脚本和通信。
Cookie: 通过在不同页面共享cookie来传递信息。但这种方法受限于cookie的大小和安全策略。
URL Parameters: 通过在URL中加入参数,然后在另一个页面上解析这些参数来传递信息。
IndexedDB: 这是一种在浏览器中存储大量结构化数据的方式,可以用于不同页面之间的数据共享和通信。
Server-Side Events / WebSocket: 通过服务器作为中介,可以实现不同页面间的实时通信。Server-Side Events主要用于服务器到客户端的单向通信,而WebSocket则支持双向通信。
根据具体的应用场景和需求,可以选择最合适的方法进行跨页面通信。
2. 什么是 CI/CD?
CI/CD 是现代软件开发中的重要实践,主要用于自动化软件的构建、测试和部署过程。它由两个密切相关的概念组成:持续集成 (CI) 和持续部署或持续交付 (CD)。
持续集成 (Continuous Integration, CI): 这是一种开发实践,开发人员会频繁地(通常是每天多次)将代码更改合并到共享存储库中。每次代码提交后,会自动运行一系列测试(单元测试、集成测试等),这有助于尽早发现和解决问题。CI 的目标是通过减少集成所需的努力来提高软件质量。
持续部署 (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
属性:
默认顺序:如果所有 Flex 项目的
order
属性都未被设置或都设置为相同的值,它们将按照 HTML 源代码中的顺序显示。更改顺序:你可以给 Flex 项目分配一个整数值。这个值可以是正数、0 或负数。数值越小的项目会越早显示,即在 Flex 容器中的位置越靠前。
例子:
.container { display: flex; } .item1 { order: 2; /* 在第三个位置显示 (因为有 order: 3 的项) */ } .item2 { order: 3; /* 在最后一个位置显示 */ } .item3 { order: 1; /* 在第二个位置显示 */ }
在上面的例子中,即使
.item1
在 HTML 结构中排在前面,它也会在.item3
之后显示,因为.item3
的order
值更小。
通过使用 order
属性,你可以灵活地调整 Flex 项目的显示顺序,这在响应式布局和动态内容布局中特别有用。
因为微信公众号修改规则,如果不标星或点在看,你可能会收不到我公众号文章的推送,原创不易,请大家将本公众号星标,看完文章后记得点下赞或者在看,谢谢各位!
学习不打烊,充电加油只为遇到更好的自己,每天早上9点纯手工发布面试题,每天坚持花20分钟来学习与思考,在千变万化,类库层出不穷的今天,不要等到找工作时才狂刷题,提倡每日学习。