排序
面试题:如何避免用户重复下单(多次下单未支付,占用库存)
在电商系统中,避免用户重复下单(多次下单未支付,占用库存)是一个常见的需求。以下是一些后端相关的解决方案,主要基于Java技术栈: 1. 使用分布式锁 在用户创建订单时,可以使用分布式锁(...
场景题:如果发现 Redis 内存溢出了?你会怎么做?请给出排查思路和解决方案
当发现 Redis 内存溢出时,可以按照以下步骤进行排查和解决: 1. 确认内存使用情况 查看 Redis 内存使用情况:使用 INFO memory 命令查看 Redis 的内存使用情况,重点关注 used_memory 和 used_...
面试题:接口变慢了应该如何排查?导致接口变慢的原因有哪些?
接口变慢是一个常见的性能问题,可能由多种原因引起。排查接口变慢的过程需要系统性地分析和定位问题。以下是排查接口变慢的步骤以及可能导致接口变慢的常见原因: 排查步骤 1. 确认问题范...
场景题:从网关再到各个后端服务,如何设置 RPC 的超时时间,要考虑哪些问题?
在分布式系统中,RPC(远程过程调用)超时时间的设置是一个非常重要的设计决策,尤其是在网关和后端服务之间。不合理的超时设置可能导致系统性能下降、资源浪费、甚至雪崩效应。以下是设置 RPC ...
场景题:项目上需要导入一个几百万数据 excel 文件到数据库中,有哪些注意点?
在项目中导入一个几百万数据的 Excel 文件到数据库时,需要考虑多个方面的优化和注意事项,以确保数据导入的高效性、稳定性和安全性。以下是一些关键点和解决方案: 1. 数据导入的挑战 文件解析...
场景题:MySQL 中 如果我 select * from 一个有 1000 万行的表,内存会飙升么?
在 MySQL 中,执行 SELECT * FROM 表名 查询一个有 1000 万行的表时,内存是否会飙升取决于多个因素。以下是关键点: 1. 查询执行方式 MySQL 的查询执行是流式的:通常,MySQL 不会一次性将所有...
场景题:微服务中远程调用的超时时间应该设置为多少合适?
在微服务架构中,远程调用(RPC)的超时时间设置是一个关键的设计决策,直接影响系统的稳定性、性能和用户体验。超时时间设置过短可能导致大量请求失败,设置过长则可能导致资源浪费和系统雪崩...
场景题:假设有一个 1G 大的 HashMap,此时用户请求过来刚好触发它的扩容,会怎样?让你改造下 HashMap 的实现该怎样优化?
在 Java 中,HashMap 的扩容是一个相对耗时的操作,尤其是在数据量非常大的情况下(如 1G 大小的 HashMap)。当用户请求触发扩容时,可能会导致系统性能下降,甚至出现短暂的不可用。...
面试题:1000 个任务,每个任务 0.1s,最大响应时间 1s,线程池参数怎么设置?
我们需要设计一个线程池来处理 1000 个任务,每个任务耗时 0.1 秒,且最大响应时间为 1 秒。这意味着: 任务总耗时: 1000 个任务 × 0.1 秒 = 100 秒。 最大响应时间: 1 秒,即从任务提交到...
场景题:两百万个生产者发送消息,仅一个消费者,如何高效设计锁?
在 两百万个生产者发送消息,仅一个消费者 的场景中,设计高效的锁机制是一个典型的并发编程问题。目标是确保生产者和消费者能够高效地协作,同时避免锁竞争导致的性能瓶颈。以下是详...