前端面试每日三题 - Day 24
这是我为准备前端/全栈开发工程师面试整理的第24天每日三题练习,涵盖了:
- JavaScript 中的
Promise.all()
、Promise.race()
和Promise.allSettled()
的实际应用和性能差异 - React 中的 Concurrent Rendering 和
useTransition
API - 如何设计一个高并发的在线支付系统架构
✅ 题目1:JavaScript - 深入理解 Promise.all()
、Promise.race()
和 Promise.allSettled()
的实际应用和性能差异
📘 解析说明
Promise
是 JavaScript 中非常重要的异步编程工具,而 Promise.all()
、Promise.race()
和 Promise.allSettled()
是三个常用的 Promise 静态方法。它们的差异主要体现在如何处理多个异步操作,并且适用于不同的应用场景。
Promise.all()
:接收一个包含多个 Promise 的数组,当所有 Promise 都成功时返回一个新的 Promise,否则返回失败的第一个 Promise。Promise.race()
:接收一个包含多个 Promise 的数组,返回第一个成功或失败的 Promise,并忽略其他 Promise。Promise.allSettled()
:接收一个包含多个 Promise 的数组,等待所有 Promise 都完成(无论是成功还是失败),并返回一个包含每个 Promise 结果的数组。
📎 示例代码
// Promise.all 示例
const promise1 = Promise.resolve(3);
const promise2 = new Promise((resolve, reject) => setTimeout(resolve, 100, 'foo'));
const promise3 = 42;Promise.all([promise1, promise2, promise3]).then(values => {console.log(values); // [3, 'foo', 42]
}).catch(error => {console.error(error); // 若任意 Promise 失败,将跳转到此
});// Promise.race 示例
const promise4 = new Promise((resolve, reject) => setTimeout(resolve, 500, 'First'));
const promise5 = new Promise((resolve, reject) => setTimeout(resolve, 100, 'Second'));Promise.race([promise4, promise5]).then(value => {console.log(value); // 'Second'
}).catch(error => {console.error(error);
});// Promise.allSettled 示例
const promise6 = Promise.resolve(1);
const promise7 = Promise.reject('Error');
const promise8 = new Promise((resolve) => setTimeout(resolve, 2000, 'Delayed'));Promise.allSettled([promise6, promise7, promise8]).then(results => {console.log(results);// [{status: 'fulfilled', value: 1}, {status: 'rejected', reason: 'Error'}, {status: 'fulfilled', value: 'Delayed'}]
});
⚠️ 常见用法与适用场景
Promise.all()
:适用于需要等待多个异步操作都成功时再执行后续操作的场景。例如并发请求多个 API。- Promise.race():适用于需要等待第一个完成的异步操作的场景。例如设置请求超时机制,谁先返回就使用哪个。
- Promise.allSettled():适用于需要等待所有异步操作完成并且需要处理每个操作的结果(无论成功或失败)的场景。例如同时请求多个 API,并且你希望在每个请求完成时都能得到结果。
🧠 脑图建议
✅ 题目2:React - 解析 Concurrent Rendering 和 useTransition
API
📘 解析说明
Concurrent Rendering 是 React 中的一项重要功能,它能够允许 React 在多个任务之间切换,而不会让用户界面(UI)卡顿。通过合理的任务调度,React 能够在后台完成繁重的渲染工作,从而提高渲染性能和用户体验。
- Concurrent Rendering:通过将渲染任务拆分为多个较小的任务,使得 React 可以在需要时暂停渲染,继续处理高优先级的任务,并最终完成渲染。
useTransition API
:是 React 18 中新增的一个 Hook,允许开发者标记某些渲染为“非紧急”任务,从而让这些任务在用户交互中优先级较低。
📎 典型示例
import React, { useState, useTransition } from 'react';function App() {const [isPending, startTransition] = useTransition();const [inputValue, setInputValue] = useState("");const handleChange = (event) => {const value = event.target.value;startTransition(() => {setInputValue(value);});};return (<div><inputtype="text"value={inputValue}onChange={handleChange}placeholder="Type something..."/>{isPending ? <div>Loading...</div> : <div>{inputValue}</div>}</div>);
}export default App;
💼 工作原理
- Concurrent Rendering:当 React 渲染一个复杂的组件时,它会将渲染过程分成多个小任务,并根据任务的优先级处理它们。这样即使在执行复杂任务时,用户界面也能保持响应。
useTransition API
:useTransition
返回一个布尔值 isPending,表示渲染任务是否在进行中。开发者可以通过startTransition
方法将某些操作标记为非紧急任务,从而延迟这些操作的执行,以便优先处理用户的交互操作。
🧠 脑图建议
✅ 题目3:系统设计 - 设计一个高并发的在线支付系统架构
📘 解析说明
在设计一个高并发的在线支付系统时,我们需要考虑系统的可扩展性、容错性、性能优化和安全性。一个典型的在线支付系统架构应包括多个关键组件,如支付网关、事务处理、数据库、负载均衡和分布式缓存等。
✨ 关键组件
- 支付网关:负责接收支付请求并与外部支付平台(如支付宝、微信支付)进行通信。
- 事务处理系统:负责处理支付交易的逻辑,包括资金的冻结、支付确认和事务记录。
- 数据库:存储交易信息、用户数据和支付历史,采用高可用的数据库架构,保证数据的一致性。
- 负载均衡:通过负载均衡器分发请求,确保系统高并发时仍然稳定运行。
- 分布式缓存:利用 Redis 等分布式缓存来缓存热点数据,减少数据库负担,提高响应速度。
- 安全性设计:采用加密技术保护用户支付信息,防止攻击和数据泄露。
🏠架构图示
+---------------------+ +-----------------+ +-------------------+
| Payment Gateway | --> | Transaction | --> | Payment Database |
| (API, Webhooks) | | Processor | | (MySQL, NoSQL) |
+---------------------+ +-----------------+ +-------------------+^ | || v vLoad Balancer Cache (Redis) Security Layer (SSL)| |+----------------------------------------------------+
🧠 脑图建议
📅 明日预告:
- HTML/CSS/JS - CSS中如何实现一个保持宽高比的自适应正方形元素
- Angular - Angular的变更检测(Change Detection)机制
- 项目实战 - 微前端架构的前端应用
💪 坚持每日三题,未来更进一步!如果你也在准备面试,欢迎一起刷题打卡!
相关文章:
前端面试每日三题 - Day 24
这是我为准备前端/全栈开发工程师面试整理的第24天每日三题练习,涵盖了: JavaScript 中的 Promise.all()、Promise.race() 和 Promise.allSettled() 的实际应用和性能差异React 中的 Concurrent Rendering 和 useTransition API如何设计一个高并发的在线…...
正态分布习题集 · 题目篇
正态分布习题集 题目篇 全面覆盖单变量正态、多变量正态、参数估计、假设检验、变换以及应用,共 20 题,从基础到进阶。完成后请移步《答案与解析篇》。 1. 基础定义与性质(5题) 1.1 密度函数 写出正态分布 N ( μ , σ 2 ) N(…...
Three.js在vue中的使用(二)-动画、材质
一、Three.js 动画原理与实现 1. 基本原理 Three.js 的动画系统基于 关键帧(Keyframe) 和 时间轴(AnimationClip) 实现: THREE.AnimationMixer:管理多个动画片段的播放器THREE.AnimationClip:…...
【办公类-99-04】20250504闵豆统计表excle转PDF,合并PDF、添加中文字体页眉+边框下划线
需求说明 督导检查,各条线都要收集资料。 今天去加班,遇到家教主任,她让我用保教主任的彩色打印机打印这套活跃度表格。(2023学年上学期下学期-2024学年上学期,就是202309-202504) 每个excle都是内容在A4一…...
ES类迁移方法
快照(s3 file FS)跨集群迁移es-dumpremote-reindexLogstash Elasticsearch 迁移方法 Elasticsearch 迁移是将数据、索引和配置从一个 Elasticsearch 集群转移到另一个集群的过程。以下是几种常见的迁移方法: 1. 快照和恢复 (Snapshot and Restore) 这是最推荐的…...
智能合约部署之全国职业院校技能大赛“区块链技术应用”赛项—“航班延误险案例”
智能合约部署之全国职业院校技能大赛“区块链技术应用”赛项—“航班延误险案例” 1.启动虚拟机上的区块链 (1)打开VMware虚拟机,在桌面中点击右键,选择Open Terminal打开命令行窗口。 (2)使用"cd geth_local/"命令,切换至区块链根目录,输入下面的命令启动…...
STM32外设-GPIO输入(仅数字)
STM32外设-GPIO输入 一,输入的三种类型1. 上拉 (Pull-up)输入2. 下拉 (Pull-down)输入3. 浮空 (Floating / High-Impedance)输入 二,下拉电阻的作用 学完基础的led,接下来学习key即按键,但在连接按键之前,我们必须了解…...
QT开发工具对比:Qt Creator、Qt Designer、Qt Design Studio
前端开发工具—Qt Designer Qt Designer是Qt框架的一部分,是一个图形用户界面设计工具。它允许开发者通过可视化方式设计和布局GUI组件,而无需手动编写UI代码。设计完成后,Qt Designer生成UI文件(通常以.ui为扩展名)&…...
(ADC)数模转换器的不同类型对比
(ADC)数模转换器的不同类型对比 数模转换器(ADC)类型详解1. **并行比较型ADC(Flash ADC)****工作原理****优缺点****应用场景** 2. **逐次逼近型ADC(SAR ADC)****工作原理****优缺点…...
MOS管极间电容参数学习
文章目录 前言1. 输入电容(Ciss)2. 输出电容(Coss)3. 反向转移电容(Crss)4,测试条件解读总结 前言 MOS管在电路设计中非常常用,用途包括DC-DC,电平转换等,所…...
Webug4.0靶场通关笔记14- 第18关 文件上传之Nginx解析缺陷
目录 第18关 渗透实战 1.打开靶场 2.构造php脚本 3.源码分析 (1)客户端源码 (2)服务的源码 4.Nginx解析法渗透 (1)缺陷原因 (2)缺陷条件 (3)构造脚…...
外观模式(Facade Pattern)
非常好!现在我们来讲解结构型设计模式之一:外观模式(Facade Pattern)。 我会通过: ✅ 简洁定义 🎯 为什么需要 🐍 Python 代码(含注释) 🧭 流程图 应用场…...
Javase 基础加强 —— 03 集合
本系列为笔者学习Javase的课堂笔记,视频资源为B站黑马程序员出品的《黑马程序员JavaAI智能辅助编程全套视频教程,java零基础入门到大牛一套通关》,章节分布参考视频教程,为同样学习Javase系列课程的同学们提供参考。 集合是一种容…...
【React】 Hooks useTransition 解析与性能优化实践
1.背景 useTransition 是 React 18 引入的一个并发模式下的 Hook,用于区分紧急和非紧急的状态更新,提升应用的响应性和用户体验;它可以管理 UI 中的过渡状态,特别是在处理长时间运行的状态更新时。它允许你将某些更新标记为“过渡”状态&…...
C++23 std::tuple与其他元组式对象的兼容 (P2165R4)
文章目录 引言C23 std::tuple概述std::tuple的定义和基本用法std::tuple的特性std::tuple的应用场景 其他元组式对象的特点Python元组的特点Python元组与C std::tuple的对比 P2165R4提案的具体内容提案背景提案主要内容提案的影响 兼容性示例代码总结 引言 在C编程的世界里&am…...
网络Tips20-003
1.E1载波的控制开销占2/32*100%6.25%,E1载波的基本帧传送时间是125uS。 2.计算机在一个指令周期的过程中,为从内存读取指令操作码,首先要将.程序计数器(PC)的内容送到地址总线上 3.3DES算法:密码学中,3DES是三重数据加密算法通称…...
Rust的安全卫生原则
在Rust编程世界里,unsafe关键字常常让初学者感到困惑。他们经常会问:“在unsafe块里能做什么?”“什么时候需要使用unsafe?” 这些问题虽然很常见,但对于真正理解Rust的安全机制来说还远远不够。因为随着Rust操作语义的…...
TestBench激励与待测
TestBench激励与待测 ✅ 一、TestBench 的作用✅ 二、例化的目的✅ 三、TestBench 中的信号类型选择🟢 输入端口(input) → 在 TestBench 中声明为 reg🟡 输出端口(output)→ 在 TestBench 中声明为 wire ✅…...
VulnHub-OSCP靶机
前言:由于这台机器过于简单,所以我会尽量细化和介绍每个步骤以及涉及到的知识点,让正在打入门机器的你不在迷茫和硬化的操作,理解并熟悉每条命令以及参数的含义,以及把前期带给我们的信息进行快速筛选,有利…...
【前端】【面试】在 Nuxt.js SSR/SSG 应用开发的 SEO 优化方面,你采取了哪些具体措施来提高页面在搜索引擎中的排名?
在 Nuxt.js 的 SSR(服务器端渲染)或 SSG(静态站点生成)应用中,SEO 优化是非常核心的工作内容之一。利用 Nuxt.js 的特性,我们可以通过多个维度系统地提升搜索引擎排名。 下面是我在实际项目中采取的 SEO 优…...
软考 系统架构设计师系列知识点之杂项集萃(53)
接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(52) 第85题 在静态测试中,主要是对程序代码进行静态分析。“数据初始化、赋值或引用过程中的异常”属于静态分析中的()。 A. 控制流分析 B. 数据…...
【AI面试准备】模型自动化评估经验
面试要求:模型自动化评估经验。 以下是针对模型自动化评估经验的结构化知识总结,涵盖核心概念、工具链、高频考点和面试回答技巧,助你快速掌握关键点: 目录 **一、模型自动化评估的核心逻辑**1. **为什么要自动化评估?…...
indexedDB
indexedDB 特点 **容量大:**不同浏览器不一样,250MB **遵守同源策略:**只能访问同源下的数据库,不能跨域 **异步操作:**防止阻塞(特别是大量数据的操作) 事务支持:确保数据的…...
Mybatis学习(下)
目录 1. 动态sql的应用 1.2 1.2 1.3 、 、 标签 1.4 1. 动态sql的应用 使用Mybatis框架时, 对于sql数据的操作量比较大的时候, 看着会觉得很乱, 可能写着写着就乱了, 或者说回过头来发现sql语句写错了, 很麻烦, 所以动态sql就可以让我们用Java代码, 替换部分sql语句 1.2 &l…...
[三分钟学算法]分治-快速排序-最小的K个数:设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。
文章目录 题目详情算法原理编写代码 题目详情 题目链接 设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。 示例: 输入: arr [1,3,5,7,2,4,6,8], k 4 输出: [1,2,3,4]提示: 0 < len(arr) <…...
从github的插件直接导入unity
我们随便找个插件: A:处直接下载压缩包文件,或是git下载也可以 B:直接下载打好包也行 我们这里选择直接下好的包 请注意!!!有些版本可能不支持,请找到支持的,对应的历史版本进行下载使用 点击B…...
Linux | 了解Linux中的任务调度---at与crontab 命令
一. 延迟任务 1.1 延迟任务的发起 -- at命令 at命令执行是调用的是atd服务,即使系统最小化安装atd也会被安装到系统中at 任务信息存放在系统中/var/spool/at目录中at 任务的日志文件被存放到/var/log/cron中at 任务执行时如果遇到系统处于关闭状态,那么…...
多语言笔记系列:Polyglot Notebooks 多种使用方式
.NET Interactive 使用方式 .NET Interactive生态,大约由:前端UI(Jupyter、VSCode等)、交互协议(PMP、JMP)、执行器(.net interactive)和语言服务组成。 有多种组合方式,来使用。最常用的还是 VS Code(Polyglot Notebooks插件)充当前端UI&am…...
TF-IDF算法详解
引言 TF-IDF(Term Frequency-Inverse Document Frequency)是信息检索和文本挖掘中常用的加权技术,用于评估一个词语对于一个文档集或语料库中某个文档的重要程度。 一、基本概念 1. 组成要素 TF-IDF由两部分组成: TF (Term F…...
C语言实现数据结构:堆排序和二叉树_链式
一.堆的应用 1.堆排序 void test01() {int arr[] { 17,20,10,13,19,15 };int n sizeof(arr) / sizeof(arr[0]);HP p;HPInit(&p);for (int i 0; i < n; i){HPPush(&p, arr[i]);}int i 0;while (!HPEmpty(&p)){arr[i] HPTop(&p);HPPop(&p);}for (i…...
网狐系列三网通新钻石娱乐源码全评:结构拆解、三端实测与本地部署问题记录
本文为基于“网狐系列三网通新钻石娱乐电玩”源码的私测报告,涵盖前后端结构解析、三端测试结果、控制台功能说明、智能机器人机制以及本地部署过程中的真实报错与解决策略。文章目的仅限于源码结构研究和测试用途,不具备任何上线、商用部署条件。 一、源…...
C语言的指针认识
当实参传递给形参时,形参实例化相当于实参的一份临时拷贝 对形参的修改不能改变实参,除非用指针...
iview自定义下拉树菜单
最近由于项目需要,封装了第二种下拉树,带checkBox并且可以支持快速选择的下拉树。样式如下 自定义下拉树菜单.png 所实现交互功能如下: 1.点击对应的层级按钮,自动勾选出对应的所有同级节点。 2.点击自定义,清空所有勾…...
Dubbo(94)如何在金融系统中应用Dubbo?
在金融系统中应用Dubbo,可以通过以下步骤实现: 项目结构设计:规划项目的模块结构,通常包括服务接口模块、各个服务提供者模块(如账户服务、交易服务、风控服务等)、服务消费者模块(如前端应用、…...
Linux:web服务
一、nginx的安装及启用 1、为主机配置IP和搭建软件仓库 (1)IP的配置 (2)搭建软件仓库 2、 web服务的安装与启用 (1)nginx的端口 更改nginx端口号 效果 (2) 默认发布目录 修改默认发…...
process terminated with status -1073741515
使用CodeBlocks25.03编译wxWidgets3.2.8程序时提示process terminated with status -1073741515 后来自己重新编译生成了一下wxWidgets3.2.8源码,问题得以解决。...
2025信息安全网络安全意识培训资料汇编(24份)
最新整理:2025信息安全网络安全意识培训资料汇编,共24份资料,供学习参考。 互联网信息安全意识培训.pptx100个网络安全风险防范知识.pptx亚信信息安全意识培训.pptx网络安全法规及意识培训.pptx网络安全意识与案例分析.pptx绿盟-安全意识培训…...
线程概念与控制
Linux线程概念 什么是线程 在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部 的控制序列”,一切进程至少都有一个执行线程,线程在进程内部运行,本质是在进程地址空间内…...
【SpringAI+阿里云百炼】AI对话4个Demo
基于SpringAI和阿里云百炼平台,实现了四个AI对话的小Demo 小团团对话机器人哄哄模拟器培训班智能客服仿ChatPDF 笔记如下:语雀知识笔记《SpringAI》...
Redis-----认识NoSQL
文章目录 前言一、SQL的结构化与NoSQL非结构化1.SQL2.NoSQL 二、关系型数据库SQL与非关系型数据库NoSQL1.SQL2.NoSQL 三、SQL查询与NoSQL查询1.SQL2.NoSQL 四、事务的区别1.SQL2.NoSQL 总结 前言 提示:这里可以添加本文要记录的大概内容: 提示ÿ…...
驱动开发硬核特训 · Day 27(下篇):深入掌握 Common Clock Framework 架构与实战开发
节。 在本篇内容中,我们将围绕 Linux 内核中的时钟子系统核心架构 —— Common Clock Framework(简称 CCF)展开深入讲解,目标是帮助你全面理解其设计理念、主要数据结构、注册流程、驱动实现方式,以及如何基于 NXP i.M…...
Qt基础知识记录(终篇)
写在前面 博主的项目所需知识已经差不多学完了,后续如果还需要再学习那就继续学,毕竟程序员就是摸着石头过河的,碰壁乃是常有的事情。博主的项目服务器是用MySQL存储数据的,所以博主学习一下Qt如何连接MySQL及从MySQL中存取数据 博…...
LeetCode刷题链表
文章目录 链表总结 常用技巧两数相加题解代码 两两交换链表中的节点题解代码 重排链表题解代码 合并k个升序链表题解代码 K个一组翻转链表题解代码 链表总结 常用技巧 画图 直观 形象 便于理解引入虚拟头节点,便于处理边界情况,方便我们对链表进行…...
transfomer网络构建
目录 整体架构 详细模块分析 Transformer 算法的演进 代码讲解 1. 导入必要的库 2. InputEmbeddings 类 3. PositionalEncoding 类 4. LayerNormalization 类 5. FeedForwardBlock 类 6. MultiHeadAttentionBlock 类 7. ResidualConnection 类 8. EncoderBlock 类 9. Encoder 类…...
【mathematica】常见命令
mathematica官方文档 下载安装 安装激活教程 基本用法 输入、画图、基本运算、方程组求解、公式导出、 笔记本新建: 文件-新建-笔记本 输入: 直接在界面输入定义的变量、式子或者方程组即可 输出(计算) ENTER : 换行ENTER SHIF…...
photoshop学习笔记2
第一章 第01节-界面的重要性(学习方法) 第02节-文件的打开新建及储存 第03节-移动工具(图层概念) 学习目标: 1.了解图层概念 2.认识工具属性 3.掌握工具使用 图层的概念 移动工具 移动工具就是用来移动图层内容的。是否可以用来移动组…...
从软件到硬件:三大主流架构的特点与优劣详解
常见的架构包括软件架构、企业架构、硬件架构等,以下是对这几种常见架构的分析: 一、软件架构 1.分层架构 描述:分层架构是一种经典的软件架构模式,将软件系统按照功能划分为不同的层次,一般包括表现层(…...
网狐旗舰大联盟组件源码私测笔记:结构分层、UI重构与本地实操全流程
作为一套衍生于传统网狐架构的源码版本,大联盟这套源码组件可谓是在经典基础上进行了深度重塑。与老版死板的框架风格不同,它不仅对界面做了大刀阔斧的重构,还在组件层级的组织上做了优化。本文将基于一整套源码进行深度解析,强调…...
Oracle OCP认证考试考点详解083系列07
题记: 本系列主要讲解Oracle OCP认证考试考点(题目),适用于19C/21C,跟着学OCP考试必过。 31. 第31题: 题目 解析及答案: 从 Oracle 19c 开始,数据库配置助手(DBCA)在克…...
Qt .pro配置msvc相关命令(二)
目录 1. 指定编译器版本 2. 设置编译器选项 3. 设置链接器选项 4. 定义预处理器宏 5. 指定包含目录和库目录 6. 配置生成目标 7. 配置调试和发布模式 8. 指定生成文件的目录 9. 使用特定的 MSVC 功能 10. 条件编译 在 Qt 中,.pro 文件是项目配置文件&…...