目录

【后端开发面试题】每日 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 应用中,使用负载均衡分发用户请求到多个应用服务器。
  • 在微服务架构中,使用负载均衡分发服务调用请求。
  • 在数据库集群中,使用负载均衡分发查询请求。
本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
ssauuuuuu1 小时前
Oracle高级语法篇 - 用户与角色关系
数据库·sql·oracle·plsql
_一条咸鱼_3 小时前
Python 之数字类型内置方法(十四)
人工智能·python·面试
_一条咸鱼_3 小时前
Python 之集合类型内置方法(十九)
人工智能·python·面试
_一条咸鱼_3 小时前
Python 之列表类型内置方法(十六)
人工智能·python·面试
_一条咸鱼_3 小时前
Python 格式化字符串的 4 种方式(十三)
人工智能·python·面试
_一条咸鱼_3 小时前
Python 之深浅 Copy(十一)
人工智能·python·面试
_一条咸鱼_3 小时前
Python 之元组类型内置方法(十七)
人工智能·python·面试
_一条咸鱼_3 小时前
Python 小数据池与代码块深入剖析(十二)
人工智能·python·面试
_一条咸鱼_4 小时前
Python 之字符串类型内置方法(十五)
人工智能·python·面试
码起来呗4 小时前
基于SpringBoot的中华诗词文化分享平台-项目分享
java·spring boot·后端