
场景
文章平均质量分 85
后端开发中需要应对复杂的业务场景,考验开发者解决问题的能力。后端场景面试题的考察重点包括用户认证与权限管理、支付流程、订单处理、高并发秒杀、数据一致性、事务隔离级别、日志系统设计、接口幂等性、以及分布式系统中的常见问题处理。
dj_master
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
接口变慢了应该如何排查?导致接口变慢的原因有哪些?
接口变慢的排查需遵循“从外到内、分层定位”的原则:先通过前端和网络工具确认是否为链路问题,再深入服务端检查资源占用与中间件日志,最后结合数据库慢查询和分布式追踪定位具体瓶颈。根本原因可能涉及硬件、软件、代码、依赖等多维度,需通过系统化的监控体系和预防性优化(如限流、压测)降低风险。实际操作中,可结合APM工具快速缩小范围,避免盲目排查。接口变慢是分布式系统中常见的性能问题,涉及前端、网络、服务端、数据库、外部依赖等多层链路。原创 2025-06-26 11:02:13 · 976 阅读 · 0 评论 -
线上CPU飙高如何排查?
线上CPU飙高是常见的性能问题,排查过程需要结合系统监控、线程分析、代码诊断等多层级手段。原创 2025-06-26 11:19:20 · 616 阅读 · 0 评论 -
如果现在有500G数据需要排序,但是你只有4G内存,如何实现?
面对500G数据排序但内存仅4G的场景,需采用外部排序(External Sorting)结合分治策略。原创 2025-06-26 11:32:58 · 338 阅读 · 0 评论 -
针对支付宝最近出现的八折优惠事故,说说如何才能避免类似事件的发生?
支付宝“八折优惠事故”本质上是配置管理失控引发的系统性风险。预防:通过多环境隔离、自动化校验、权限分级,从源头减少配置错误;检测:依托多维监控、智能预警、舆情分析,实时感知异常;响应:借助秒级回滚、流量切分、用户沟通,快速止损并安抚用户;改进:通过根因分析、知识沉淀、持续演练,推动组织能力迭代。最终,需将风险管理融入产品设计、开发、运营全生命周期,形成“技术防控+流程约束+文化驱动”的立体化防护体系,确保金融级系统的稳定性与用户信任。原创 2025-06-26 10:57:46 · 888 阅读 · 0 评论 -
线上CPU Load飙高如何排查?
线上CPU Load飙高是系统性能故障的常见场景,需要通过系统化的排查流程定位根本原因。原创 2025-06-26 11:21:05 · 921 阅读 · 0 评论 -
编写一段代码,使得这段代码必定会产生死锁,不能使用Thread.sleep()
下面是一个必定会产生死锁的Java代码示例,使用两个线程和两个锁对象,通过循环等待对方释放锁的方式造成死锁。这个示例不使用,而是通过同步块和方法调用来确保死锁条件的成立。原创 2025-06-26 11:07:31 · 257 阅读 · 0 评论 -
项目上现在需要存储 IP 地址,数据库应该用什么类型来存储?
实际项目里,若主要存 IPv4 且看重查询效率、节省空间,可考虑整数类型(配合转换函数 );若要兼容 IPv6 ,简单场景用字符串类型,追求存储和查询优势可选 PostgreSQL 的 INET 等类型;对存储成本极致优化、能接受转换复杂度,二进制类型可尝试,具体结合项目数据库选型、IP 版本需求、查询场景来定。原创 2025-07-01 16:53:09 · 682 阅读 · 0 评论 -
如果要实现一个抢红包的功能,红包金额是如何计算的?
在抢红包功能中,金额计算算法的核心目标是保证随机性、公平性和性能,同时避免出现金额异常(如0元或超发)。以下是几种经典的金额计算方案及其实现原理:3. 算法特点随机性:金额分布符合“大数定律”,多人抢时大概率出现“有人手气好,有人手气差”公平性:数学期望相等,每人平均金额为总金额/人数防超发:通过函数确保单次金额不超过剩余金额边界处理:最后一人必拿剩余全部金额,避免计算误差二、固定金额法(普通红包)1. 算法原理总金额平均分配给每个人,金额固定不变公式:单人金额 = 总金额 / 人数原创 2025-06-26 11:17:33 · 696 阅读 · 0 评论 -
一笔订单,在取消的那一刻用户刚好付款了,怎么办?
这种情况属于,需要通过。原创 2025-07-01 16:54:47 · 553 阅读 · 0 评论 -
在Java中,不使用锁如何实现一个线程安全的单例?
不使用锁实现线程安全单例的最佳实践是。原创 2025-06-26 11:15:34 · 938 阅读 · 0 评论 -
现在有40亿个QQ号,给你1G的内存,如何实现去重?
位图算法是处理海量整数去重的最优方案,通过将每个元素映射为1位,在极小内存空间内完成去重。对于40亿QQ号,仅需512MB内存即可高效完成去重,时间复杂度为O(n)。若内存限制更严格,可结合分块策略分段处理,确保在资源约束下实现目标。// 假设QQ号最大为10亿。针对40亿个QQ号去重的问题,考虑到QQ号为32位整数且内存限制为1G,最佳方案是使用。原创 2025-06-26 11:13:54 · 481 阅读 · 0 评论 -
系统每天晚上都会有一小时左右的时间瘫痪,你觉得可能的原因是什么?有遇到过这样的情况吗?
系统定时瘫痪的核心排查思路是从时间规律倒推行为模式,优先检查夜间特有的任务或操作(如定时作业、备份、部署),同时结合资源监控数据定位瓶颈。实际案例中,约70%的定时故障由“未优化的批量任务”或“资源调度冲突”引起,通过任务错峰、资源限制及性能优化可有效解决。若排查后仍无头绪,可进一步分析核心服务的线程栈(如Java的jstack)或数据库慢查询日志,定位具体阻塞点。原创 2025-06-26 11:12:15 · 686 阅读 · 0 评论 -
现在手头上有一个单体项目,系统的整体QPS到了1万了,要微服务化拆分吗?
是否需要将单体项目微服务化拆分,不能仅以QPS(1万)作为唯一判断标准,而是需要结合系统瓶颈、团队协作效率、业务复杂度等多维度综合评估。原创 2025-06-26 11:10:28 · 783 阅读 · 0 评论 -
如果项目需要你实现敏感词过滤功能,如何实现?
该方案通过DFA算法实现高性能过滤,支持动态加载、并行处理和多种过滤策略,适用于大多数Java项目的敏感词过滤需求。原创 2025-06-26 11:29:50 · 333 阅读 · 0 评论 -
如何避免用户重复下单(多次下单未支付,占用库存)
在前端页面,当用户点击“下单”按钮后,立即通过JavaScript将按钮置为不可点击状态,并显示“下单处理中”之类的提示信息,直到接收到后端返回的下单结果。在下单接口中,要求前端传入一个唯一的订单标识(比如UUID),后端在处理下单请求时,首先检查该标识对应的订单是否已经存在且为未支付状态。在下单时,不是直接扣减库存,而是先预占库存,比如在库存表中增加一个字段表示预占数量。注解或者Quartz框架),定期扫描未支付的订单,对于超过一定时间(比如30分钟)未支付的订单,自动取消并释放预占的库存。原创 2025-07-01 16:56:56 · 351 阅读 · 0 评论 -
系统上线后,发现某个接口响应很慢,你如何定位可能的原因,以及对应的解决思路?
当系统上线后发现某个接口响应缓慢时,需从网络、服务器资源、代码逻辑、数据库等多维度逐层排查。原创 2025-06-26 11:22:40 · 1024 阅读 · 0 评论 -
两百万个生产者发送消息,仅一个消费者,如何高效设计锁?
在Java中处理两百万个生产者和一个消费者的场景,需要设计高效的锁机制以避免性能瓶颈。原创 2025-07-01 17:20:49 · 640 阅读 · 0 评论 -
微服务中远程调用的超时时间应该设置为多少合适?
在Java微服务架构中,合理设置远程调用超时时间是保证系统稳定性、可用性和性能的关键。以下从。原创 2025-07-01 17:06:39 · 484 阅读 · 0 评论 -
从网关再到各个后端服务,如何设置 RPC 的超时时间,要考虑哪些问题?
在Java微服务架构中,从网关到后端服务的RPC超时时间设置需要系统考虑等多方面因素。原创 2025-07-01 17:08:46 · 870 阅读 · 0 评论 -
如果一笔订单,用户在微信和支付宝同时支付,会怎么样?
通过。原创 2025-07-01 17:04:12 · 1053 阅读 · 0 评论 -
项目上有个导出 excel 场景发现很慢,怎么优化?
在Java项目中优化Excel导出性能,可以从四个层面入手。原创 2025-07-01 16:59:12 · 524 阅读 · 0 评论 -
如果发现 Redis 内存溢出了?你会怎么做?请给出排查思路和解决方案
当 Redis 发生内存溢出时,需从监控诊断、内存管理、持久化策略、架构优化四个层面系统性解决。以下是结合 Java 应用的完整排查思路与解决方案:关键指标:指标说明Redis 实际使用内存(包含键值、内部结构等)。操作系统分配给 Redis 进程的内存(可能包含碎片)。内存碎片率(/),>1.5 需警惕碎片问题。2. 分析内存碎片高碎片处理:长期优化:调整实例内存为 2 的幂次方,减少内存碎片。3. 检查持久化策略配置检查:风险点:原创 2025-07-01 17:18:52 · 534 阅读 · 0 评论 -
怎么分析 JVM 当前的内存占用情况?OOM 后怎么分析?
通过工具找到占用内存大的对象或疑似内存泄漏的对象后,要结合对应的 Java 代码进行分析,查看这些对象的创建逻辑、生命周期管理等,判断是否存在对象创建过多、长期无法释放(如静态集合类持有大量对象引用未清理等)等导致 OOM 的原因。总体而言,分析 JVM 内存占用是一个日常监控和优化的过程,而 OOM 后的分析则更侧重于通过堆转储文件和代码结合,找出内存溢出的根本原因并加以修复。命令查看 JVM 堆内存的详细配置和使用情况,包括堆的各个分代(年轻代、老年代等)的大小、使用比例等信息。原创 2025-07-01 17:16:24 · 632 阅读 · 0 评论 -
MySQL 中如果我 select * from 一个有 1000 万行的表,内存会飙升么?
在 MySQL 中执行一个有 1000 万行数据的表,原创 2025-07-02 10:35:04 · 440 阅读 · 0 评论 -
如果没有内存限制,如何快速、安全地将 1000 亿条数据插入到 HashMap 中?
在Java中处理1000亿条数据(约8TB)的HashMap插入,即使没有内存限制,仍需解决等问题。原创 2025-07-01 17:14:17 · 565 阅读 · 0 评论 -
项目上需要导入一个几百万数据 excel 文件到数据库中,有哪些注意点?
在Java项目中,将几百万数据的Excel文件导入到数据库,需要从。原创 2025-07-01 17:01:05 · 892 阅读 · 0 评论 -
如何在附近 100w 的商户中,快速找到离你最近的 5 家商户?
在 Java 中处理 100w 量级商户的近邻查询,需要结合空间索引算法和高效数据结构。原创 2025-07-01 17:22:58 · 844 阅读 · 0 评论 -
假设有一个 1G 大的 HashMap,此时用户请求过来刚好触发它的扩容,会怎样?让你改造下 HashMap 的实现该怎样优化?
在Java中,当一个1G大小的HashMap触发扩容时,会面临等问题。原创 2025-07-01 17:11:59 · 547 阅读 · 0 评论