当前位置: 首页 > article >正文

【后端开发面试题】每日 3 题(十二)

✍个人博客:Pandaconda-CSDN博客
📣专栏地址:https://blog.csdn.net/newin2020/category_12903849.html
📚专栏简介:在这个专栏中,我将会分享后端开发面试中常见的面试题给大家,每天的题目都是独立且随机的,之前的面试题不会影响接下来的学习~
❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪

题目 1: 什么是事务?在数据库中如何保证事务的 ACID 特性?

事务是指一组操作的集合,这些操作要么全部成功执行,要么全部失败回滚,从而保证数据的一致性。事务具有以下四个特性(ACID):

  1. 原子性 (Atomicity)
    事务是一个不可分割的整体,所有操作必须全部完成,否则全部回滚。例如,银行转账操作中,扣款和存款必须同时成功或失败。

  2. 一致性 (Consistency)
    事务执行前后,数据库的状态必须保持一致。例如,转账前后账户总金额不变。

  3. 隔离性 (Isolation)
    并发事务之间互不干扰,每个事务都像是独立运行的。数据库通过隔离级别(如读未提交、读已提交、可重复读、串行化)来控制并发行为。

  4. 持久性 (Durability)
    一旦事务提交,其结果将永久保存到数据库中,即使系统发生故障也不会丢失。

实现方式:

  • 使用日志记录(如 Redo Log 和 Undo Log)来支持崩溃恢复。
  • 通过锁机制(如行锁、表锁)实现隔离性。
  • 数据库引擎(如 MySQL 的 InnoDB)提供了事务管理功能。

题目 2: 如何设计一个高并发的秒杀系统?请简要说明关键点。

秒杀系统需要处理短时间内大量用户的请求,因此设计时需要考虑高并发、低延迟和数据一致性。以下是关键点:

  1. 限流与降级

    • 使用限流算法(如令牌桶、漏桶)限制请求速率,防止系统过载。
    • 对非核心功能进行降级处理,确保核心功能可用。
  2. 缓存优化

    • 将商品库存信息存储在内存缓存(如 Redis)中,减少数据库压力。
    • 使用分布式锁(如 Redis 的 SETNX)控制库存扣减,避免超卖。
  3. 异步处理

    • 将订单生成、支付等耗时操作放入消息队列(如 Kafka、RabbitMQ),异步处理以提高响应速度。
  4. 分库分表

    • 对用户和订单数据进行分库分表,提升数据库的读写性能。
  5. 前端优化

    • 静态资源使用 CDN 加速。
    • 秒杀按钮通过后端动态控制显示,避免提前暴露接口。
  6. 监控与扩容

    • 实时监控系统性能指标(如 QPS、响应时间)。
    • 根据流量动态扩容服务器资源。

题目 3: 什么是负载均衡?常见的负载均衡算法有哪些?

负载均衡是一种将客户端请求分发到多个服务器的技术,用于提高系统的可用性和扩展性。它通常由硬件设备(如 F5)或软件工具(如 Nginx、HAProxy)实现。

常见的负载均衡算法:

  1. 轮询 (Round Robin)
    按顺序将请求分配给服务器,适合服务器性能相近的场景。

  2. 加权轮询 (Weighted Round Robin)
    根据服务器的权重分配请求,权重高的服务器处理更多请求。

  3. 最少连接 (Least Connections)
    将请求分配给当前连接数最少的服务器,适合处理时间不均的场景。

  4. 哈希算法 (Hashing)
    根据请求的特征(如 IP 地址、URL)计算哈希值,将请求固定分配到某台服务器,常用于会话保持。

  5. 随机分配 (Random)
    随机选择一台服务器处理请求,适合服务器性能相近的场景。

应用场景:

  • 在 Web 应用中,使用负载均衡分发用户请求到多个应用服务器。
  • 在微服务架构中,使用负载均衡分发服务调用请求。
  • 在数据库集群中,使用负载均衡分发查询请求。

http://www.kler.cn/a/583854.html

相关文章:

  • 【从零开始学习计算机科学】数据库系统(九)DBMS的体系结构
  • 复变函数摘记1
  • 在微信小程序或前端开发中,picker 和 select 都是用户交互中用于选择的组件,但它们在功能、设计和使用场景上有一定的区别
  • 桂云OSG:什么是桂链?
  • 2025-03-13 学习记录--C/C++-PTA 练习2-13 求N分之一序列前N项和
  • DeepSeek R1 与 ktransformers:结合苹果 M4 Mac 的 LLM 推理深度分析
  • 计算机网络——DHCP实验
  • Easyocr图片识别小结
  • AI自动化、资本短视、三输与破局
  • 编译器视角下的 C++ 异常:探究 throw 与 catch 的编译原理
  • AI日报 - 2025年3月14日
  • iOS开发,SQLite.swift, Missing argument label ‘value:‘ in call问题
  • 计算机视觉算法实战——驾驶员玩手机检测(主页有源码)
  • 手机遥控开关,是一种能让用户通过手机远程控制电器开关
  • 基于全局分析SpringCloud各个组件所解决的问题?
  • 【AIGC】OpenAI 集成 Langchain 操作实战使用详解
  • python元组(被捆绑的列表)
  • 【毕业论文格式】word分页符后的标题段前间距消失
  • Redis超高并发分key实现
  • vue3+ts+vite环境中使用json-editor-vue3,一个比较强大的编辑json文件的插件!!!