NodeJS全栈开发面试题讲解——P12高性能场景题
12.1 设计一个高并发点赞接口,如何优化性能?
设计要点:
-
问题: 点赞操作是高频写操作,数据库直接写可能成为瓶颈。
优化方案:
-
缓存计数 + 异步落库
-
点赞先写缓存(Redis Hash / Sorted Set)
-
定时批量同步缓存数据到数据库,减少 DB 写压力
-
-
热点数据分片
-
对热点数据分片(比如分成多个 Redis key),减少单点竞争
-
-
幂等处理
-
防止重复点赞,用用户ID作为唯一标识存 Redis Set
-
-
使用消息队列异步处理
-
点赞请求先写 MQ,再由消费者更新数据库
-
-
读写分离 + 数据库索引优化
-
读请求走缓存,写请求异步,数据库索引优化查询
-
12.2 设计一个订单系统,要用 MQ 做削峰填谷,你怎么设计?
设计思路:
-
订单创建接口
-
接收订单请求,快速返回结果(预订单号)
-
把订单写入 MQ(消息持久化)
-
-
订单处理服务(消费者)
-
消费 MQ 消息,执行库存扣减、支付、订单状态更新
-
处理失败可重试,确保可靠性
-
-
库存锁定
-
在消费端做库存预扣,防止超卖
-
-
异步通知
-
订单处理完通知用户(短信、邮件、推送)
-
-
监控告警
-
MQ 堆积监控,超时重试,异常报警
-
12.3 如果一个接口每秒有 2 万请求,你怎么优化后端架构?
方案思路:
-
负载均衡
-
使用 Nginx / LVS / 云厂商负载均衡做流量分发
-
-
水平扩展
-
多实例服务部署,利用容器、Kubernetes 弹性伸缩
-
-
缓存优化
-
接口读请求用 Redis 缓存,降低数据库访问
-
-
异步处理
-
尽量异步化请求流程,长耗时业务放 MQ 后台处理
-
-
数据库优化
-
主从读写分离、分库分表、索引优化、连接池
-
-
限流降级
-
流量超限使用限流策略,降级服务保证核心可用
-
-
监控报警
-
实时监控接口响应时间、错误率、资源使用
-
12.4 如何实现一个视频转码平台?如何让任务不阻塞主线程?
设计要点:
-
前端上传文件
-
支持分片上传,减少上传失败重试
-
-
转码任务调度
-
任务写入消息队列,异步调度
-
-
独立转码服务
-
使用专门转码微服务或 Worker,运行 ffmpeg 等工具
-
-
多进程/容器隔离
-
转码在独立进程或容器中执行,防止阻塞 Node.js 主线程
-
-
状态管理
-
任务状态存储(数据库 + 缓存),实时查询转码进度
-
-
结果存储
-
转码完成后上传至对象存储(如 OSS/S3)
-
-
通知机制
-
通过 WebSocket 或轮询通知用户转码完成
-
12.5 如何将一个单体博客系统拆分为微服务系统?拆哪些模块?
拆分思路:
-
用户服务(User Service)
-
负责用户注册、登录、权限管理
-
-
文章服务(Article Service)
-
负责博客文章增删改查
-
-
评论服务(Comment Service)
-
评论的 CRUD 及审核功能
-
-
通知服务(Notification Service)
-
发送系统通知、邮件、消息推送
-
-
搜索服务(Search Service)
-
基于 ElasticSearch 或类似方案,支持全文检索
-
-
媒体服务(Media Service)
-
处理图片、视频上传及转码
-
-
网关服务(API Gateway)
-
统一入口,路由转发、鉴权、限流
-
拆分原则:
-
按业务边界分
-
服务自治,低耦合
-
共享数据库避免,服务自己管理数据
-
统一认证鉴权机制(OAuth / JWT)
相关文章:
NodeJS全栈开发面试题讲解——P12高性能场景题
12.1 设计一个高并发点赞接口,如何优化性能? 设计要点: 问题: 点赞操作是高频写操作,数据库直接写可能成为瓶颈。 优化方案: 缓存计数 异步落库 点赞先写缓存(Redis Hash / Sorted Set&…...

DDP与FSDP:分布式训练技术全解析
DDP与FSDP:分布式训练技术全解析 DDP(Distributed Data Parallel)和 FSDP(Fully Sharded Data Parallel)均为用于深度学习模型训练的分布式训练技术,二者借助多 GPU 或多节点来提升训练速度。 1. DDP(Distributed Data Parallel) 实现原理 数据并行:把相同的模型复…...

【Spring AI 1.0.0】Spring AI 1.0.0框架快速入门(1)——Chat Client API
Spring AI框架快速入门 一、前言二、前期准备2.1 运行环境2.2 maven配置2.3 api-key申请 三、Chat Client API3.1 导入pom依赖3.2 配置application.properties文件3.3 创建 ChatClient3.3.1 使用自动配置的 ChatClient.Builder3.3.2 使用多个聊天模型 3.4 ChatClient请求3.5 Ch…...

【笔记】在 MSYS2(MINGW64)中正确安装 Rust
#工作记录 1. 环境信息 Windows系统: MSYS2 MINGW64当前时间: 2025年6月1日Rust 版本: rustc 1.87.0 (17067e9ac 2025-05-09) (Rev2, Built by MSYS2 project) 2. 安装步骤 步骤 1: 更新系统包数据库并升级已安装的包 首先,确保我们的 MSYS2 系统是最新状态。打…...

从汇编的角度揭秘C++引用,豁然开朗
C中的引用是指已有对象的别名,可以通过该别名访问并修改被引用的对象。那么其背后的原理是什么呢?引用是否会带来额外的开销呢?我们从一段代码入手,来分析一下引用的本质。 #include <stdio.h> int main() {int a 10;int …...
设计模式系列(07):建造者模式(Builder)
本文为设计模式系列第7篇,聚焦创建型模式中的建造者模式,涵盖定义、原理、实际业务场景、优缺点、最佳实践及详细代码示例,适合系统学习与实战应用。 目录 1. 模式概述2. 使用场景3. 优缺点分析4. 实际应用案例5. 结构与UML类图6. 代码示例7…...
Maven 项目中集成数据库文档生成工具
在 Maven 项目中,可以通过集成 数据库文档生成工具(如 screw-maven-plugin、mybatis-generator 或 liquibase)来自动生成数据库文档。以下是使用 screw-maven-plugin(推荐)的完整配置步骤: 1. 添加插件配置…...

聊聊Tomato Architecture
序 本文主要研究一下Tomato Architecture Clean/Onion/Hexagonal/Ports&Adapters Architectures Clean Architecture clean architecture定义了四层结构,最内层是entities(enterprise business rules),再往外是use cases(application business ru…...

小白的进阶之路系列之十二----人工智能从初步到精通pytorch综合运用的讲解第五部分
在本笔记本中,我们将针对Fashion-MNIST数据集训练LeNet-5的变体。Fashion-MNIST是一组描绘各种服装的图像瓦片,有十个类别标签表明所描绘的服装类型。 # PyTorch model and training necessities import torch import torch.nn as nn import torch.nn.functional as F impor…...
Java并发编程实战 Day 6:Future与异步编程模型
【Java并发编程实战 Day 6】Future与异步编程模型 在今天的课程中,我们将深入学习Java中的Future与异步编程模型。这是为期30天的"Java并发编程实战"系列的第6天。 理论基础 Future接口 Future接口是Java提供的用于表示异步计算的结果。它提供了以下方…...
.NET Core 中预防跨网站请求伪造 (XSRFCSRF) 攻击
.NET Core 中预防跨网站请求伪造 (XSRF/CSRF) 攻击 在如今的网络环境中,安全问题一直是开发者们不可忽视的重要方面。跨网站请求伪造(Cross-Site Request Forgery,简称 CSRF)就是一种常见且具有威胁性的网络攻击方式。攻击者通过…...
MFC Resource.h 文件详解与修改指南
MFC Resource.h 文件详解与修改指南 Resource.h 是 Visual C 和 MFC 项目中用于集中管理资源标识符(Resource ID)的头文件。它由 Visual Studio 的资源编辑器自动生成并维护,也可以手动编辑。理解并合理使用该文件对于管理对话框、控件、菜单…...

2025年06月03日Github流行趋势
项目名称:onlook 项目地址url:https://github.com/onlook-dev/onlook项目语言:TypeScript历史star数:12871今日star数:624项目维护者:Kitenite, drfarrell, spartan-vutrannguyen, apps/devin-ai-integrati…...
AI视频编码器(0.4.3) 调试训练bug——使用timm SoftTargetCrossEntropy时出现loss inf
检查过程 进入loss内部实现: > /root/miniconda3/envs/UMT2/lib/python3.9/site-packages/timm/loss/cross_entropy.py(35...

【数据分析】基于Cox模型的R语言实现生存分析与生物标志物风险评估
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据数据预处理生存分析画图输出图片其他标记物的分析总结系统信息介绍 分析生存数据与多种生物标志物之间的关系。它通过Cox比例风险模型来评估不同生物标志物…...

使用nginx配置反向代理,负载均衡
首先啥叫反向代理 咋配置呢,那当然是在nginx目录下改conf文件了 具体咋改呢,那就新增一个新的server配置,然后在location里新增你想代理的服务器 实际上负载均衡也就是根据反向代理的思路来的,如下所示 配置的话实际上也与上…...

从 iPhone 备份照片: 保存iPhone图片的5种方法
随着智能手机越来越融入我们的生活,我们的照片已成为我们设备上最有价值的数据形式之一。然而,iPhone内部存储空间仍然有限,因此我们需要将iPhone中的照片备份到另一个地方,以释放空间并确保珍贵的图像记忆的安全。阅读本指南&…...

Spring Ai 从Demo到搭建套壳项目(一)初识与实现与deepseek对话模式
前言 为什么说Java长青,主要是因为其生态圈完善,Spring又做了一款脚手架,把对接各个LLM厂商的sdk做了一遍,形成一系列的spring-ai-starter-** 的依赖。 目前为止版本去到1.0.0.M6,golang跟不上了吧, Make …...

快速上手pytest
1. pytest的基础 1.1 什么是pytest pytest 是 python 中的一个测试框架,用于编写简洁、可扩展的测试代码,帮助开发者验证结果是否与预期相符。 python 中有很多的测试框架,那我们为什么要学习 pytest 呢? pytest 的优势&…...

设备驱动与文件系统:02 键盘
操作系统中键盘驱动的讲解 在这一讲中,我将为大家讲解键盘相关内容。从上一讲开始,我们进入了操作系统第四个部分的学习,也就是操作系统对设备的驱动与管理。 上一讲我们探讨的是显示器,并且提到,一个终端设备是由显示…...
matlab分布式电源接入对配电网的影响
MATLAB仿真的分布式电源接入对于配电网的影响,潮流计算加了固定的pq 分布式电源接入对配电网的影响/bustypes.m , 1004 分布式电源接入对配电网的影响/case34.m , 5385 分布式电源接入对配电网的影响/case9.m , 1366 分布式电源接入对配电网的影响/dSbus_dV.m , 14…...
前端ul-image的src接收base64快捷写法
前端ul-image的src接收base64快捷写法 data:image/png;base64,你的base64数据 注意如果是jpg就改成jpg,中间的逗号格式要注意,/注意不要反了 假设后端返回的detail中的url已经是base64格式,下面是示例 <u-image height"120rpx"…...

交通违法拍照数据集,可识别接打电话,不系安全带的行为,支持YOLO,COCO JSON,VOC XML格式的标注数据集 最高正确识别率可达88.6%
交通违法拍照数据集 数据集概述 数据来源:交通监控摄像头、执法记录仪、公开数据集数据类型:图像、视频、元数据(时间、地点、车辆信息)违法类型标注:接打电话、未系安全带 数据采集与标注方法 采集设备࿱…...

Qt OpenGL 3D 编程入门
Qt 提供了强大的 OpenGL 集成功能,使得在 Qt 应用中实现 3D 图形变得更加简单。以下是使用 Qt 进行 OpenGL 3D 编程的基础知识。 1. 环境配置 创建 Qt 项目 新建 Qt Widgets Application 项目 在 .pro 文件中添加 OpenGL 模块: qmake QT co…...

性能优化 - 工具篇:基准测试 JMH
文章目录 Pre引言1. JMH 简介2. JMH 执行流程详解3. 关键注解详解3.1 Warmup3.2 Measurement3.3 BenchmarkMode3.4 OutputTimeUnit3.5 Fork3.6 Threads3.7 Group 与 GroupThreads3.8 State3.9 Setup 与 TearDown3.10 Param3.11 CompilerControl 4. 示例代码与分析4.1 关键点解读…...
Ubuntu 中安装 PostgreSQL 及常规操作指南
目录 一、安装 PostgreSQL 最新版本安装(推荐) 安装特定版本(如 14) 二、基本服务管理 三、连接数据库 四、常规数据库操作 1. 用户与权限管理 2. 数据库管理 3. 表操作 4. 数据操作 五、常用 psql 元命令 六、备份与恢…...

Nginx网站服务:从入门到LNMP架构实战
🏡作者主页:点击! Nginx-从零开始的服务器之旅专栏:点击! 🐧Linux高级管理防护和群集专栏:点击! ⏰️创作时间:2025年5月30日14点22分 前言 说起Web服务器,…...

Java面试八股--08-数据结构和算法篇
1、怎么理解时间复杂度和空间复杂度 时间复杂度和空间复杂度一般是针对算法而言,是衡量一个算法是否高效的重要标准。先纠正一个误区,时间复杂度并不是算法执行的时间,在纠正一个误区,算法不单单指冒泡排序之类的,一个…...

Java面试八股--06-Linux篇
目录 一、Git 1、工作中git开发使用流程(命令版本描述) 2.Reset与Rebase,Pull与Fetch的区别 3、git merge和git rebase的区别 4、git如何解决代码冲突 5、项目开发时git分支情况 二、Linux 1、Linux常用的命令 2、如何查看测试项目的…...
Ajax技术分析方法全解:从基础到企业级实践(2025最新版)
引言 Ajax技术自2005年正式命名以来,已支撑全球83%的Web应用实现异步交互。2025年最新数据显示,单页面应用(SPA)的Ajax请求密度已达日均120亿次/应用。本文将系统化解析Ajax分析方法论,涵盖从基础原理到企业级工程实践的完整技术栈。 一、Ajax技术架构解构 1.1 核心组件…...