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

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

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

题目 1: 什么是服务熔断与降级?它们的区别是什么?如何实现服务熔断与降级?

答案:
服务熔断降级是微服务架构中常用的容错机制,用于提高系统的稳定性和可用性。

服务熔断:

  • 定义:当某个服务出现故障或响应时间过长时,熔断器会快速失败,避免请求堆积导致系统崩溃。
  • 作用:防止雪崩效应,保护下游服务。
  • 实现方式
    • 使用熔断器模式(如 Hystrix、Resilience4j)。
    • 定义熔断阈值(如连续失败次数)和恢复时间窗口。

服务降级:

  • 定义:在系统压力过大或某些非核心服务不可用时,暂时关闭这些服务,返回默认值或简化功能。
  • 作用:保证核心功能的可用性,提升用户体验。
  • 实现方式
    • 在代码中实现降级逻辑(如返回缓存数据或静态页面)。
    • 使用配置中心动态调整降级策略。

区别:

特性服务熔断服务降级
触发条件服务不可用或响应超时系统压力过大或资源不足
目标防止级联故障,保护下游服务保证核心功能的可用性
实现方式快速失败,拦截请求返回默认值或简化功能

示例:

  • 熔断:支付服务不可用时,直接返回错误信息,避免用户等待。
  • 降级:商品推荐服务不可用时,返回固定推荐列表。

题目 2: 如何设计一个高效的分布式 ID 生成方案?请列举常见的实现方式及其优缺点。

答案:
分布式 ID 生成方案的目标是为分布式系统中的每个实体分配唯一的标识符。以下是常见的实现方式及其优缺点:

  1. UUID

    • 特点:基于时间戳、随机数和硬件地址生成 128 位的唯一标识符。
    • 优点:无需中心化服务,生成速度快。
    • 缺点:ID 较长,占用存储空间大;无序性可能导致索引性能下降。
  2. Snowflake 算法

    • 特点:由 Twitter 提出,基于时间戳、机器 ID 和序列号生成 64 位 ID。
    • 优点:生成的 ID 有序且较短,适合数据库索引优化。
    • 缺点:需要协调机器 ID 的分配,依赖时间戳可能受时钟回拨影响。
  3. 数据库自增主键

    • 特点:使用数据库的自增列生成唯一 ID。
    • 优点:简单易用,ID 有序。
    • 缺点:单点瓶颈,扩展性差。
  4. Redis 自增

    • 特点:利用 Redis 的 INCR 命令生成唯一 ID。
    • 优点:高性能,支持分布式环境。
    • 缺点:依赖 Redis 的高可用性。
  5. 号段模式

    • 特点:预先从数据库中获取一段 ID 范围,在内存中分配使用。
    • 优点:减少数据库压力,支持批量生成。
    • 缺点:号段耗尽时需重新获取,存在短暂延迟。

选择建议:

  • 对于高并发场景,推荐使用 Snowflake 算法或 Redis 自增。
  • 对于简单场景,可以考虑 UUID 或数据库自增主键。

题目 3: 什么是 OAuth 2.0?它的授权流程是什么?有哪些常见的授权模式?

答案:
OAuth 2.0 是一种开放标准的授权协议,允许第三方应用在用户授权的情况下访问用户的资源,而无需暴露用户的凭据。

授权流程:

  1. 用户访问客户端应用,客户端引导用户跳转到授权服务器。
  2. 用户登录并同意授权,授权服务器返回授权码(Authorization Code)。
  3. 客户端使用授权码向授权服务器请求访问令牌(Access Token)。
  4. 客户端使用访问令牌访问资源服务器的受保护资源。

常见的授权模式:

  1. 授权码模式 (Authorization Code)

    • 适用场景:适用于 Web 应用和移动端应用。
    • 特点:安全性高,授权码通过后端交换访问令牌。
  2. 隐式模式 (Implicit)

    • 适用场景:适用于纯前端应用(如单页应用)。
    • 特点:直接返回访问令牌,无需后端参与,但安全性较低。
  3. 密码模式 (Resource Owner Password Credentials)

    • 适用场景:适用于高度信任的客户端(如内部系统)。
    • 特点:用户直接提供用户名和密码给客户端,客户端换取访问令牌。
  4. 客户端凭证模式 (Client Credentials)

    • 适用场景:适用于客户端自身需要访问资源的场景。
    • 特点:无需用户授权,客户端直接使用自己的凭据获取访问令牌。

总结:
OAuth 2.0 的核心思想是“授权而非认证”,通过多种授权模式满足不同场景的需求。


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

相关文章:

  • 搭建简易的rtsp服务器
  • 深入理解Java对象克隆:从浅入深掌握深克隆与浅克隆
  • CMS漏洞-DeDeCMS篇
  • 【uni-app】引用公共组件
  • 新配置了一台服务器+域名共178:整个安装步骤,恢复服务
  • quartz.net条件执行
  • 供应链与生产制造L1L4级高阶流程规划框架(53页PPT)(文末有下载方式)
  • vue3 ts 注册全局组件
  • JVM 类加载器之间的层次关系,以及类加载的委托机制
  • Neo Gamma 机器人在 GTC 2025 上的突破性进展与表现分析
  • Luogu P2249 【深基13.例1】查找 --- python 3解法
  • Agent toolkits集成指南
  • 【MyDB】一个仿照MySQL的轮子项目系列文章汇总
  • 算法如何测试,如果数据量很大怎么办?
  • 缓存设计模式
  • 论文阅读笔记:Denoising Diffusion Probabilistic Models (3)
  • NWAFU 生物统计实验二 R语言版
  • 逆波兰表达式
  • 基于Vue.js的组件化开发技术与实践探索
  • 数据通信学习笔记之OSPF其他内容1