职位题库

后端开发工程师面试题库

面向后端开发工程师相关面试,围绕系统设计、算法、MySQL、缓存、项目经验等主题展开练习,结合题目考察点、回答思路、参考答案和常见误区,梳理知识要点并练习清晰表达。

1256 道题目建议用时 3768 分钟专项面试练习

全部题目 1256 道题

397

设计一个限流器:接入服务器要限制每个 key 每秒访问次数上限(如每秒 100 次),超过直接拒绝,怎么处理?只是计数的话,每秒这个时间窗口怎么体现出来?跨窗口突发打破了限制,怎么解决?以 5 秒为一个时间窗口,来了一个请求,你怎么判断当前这个请求能不能放过?每个 key 都维护计数和 key 本身,key 量大、高并发时内存开销大,怎么减少内存开销?

考察限流器设计,包括固定窗口、滑动窗口、令牌桶等算法,以及内存优化和高并发下的实现细节。
398

原地归并排序,重点是要在原地处理。

考察对归并排序的深入理解及原地算法的实现能力,包括时间空间权衡和代码细节。
399

请介绍云服务器故障诊断项目的背景、要解决的问题和采用的技术方案。

考察候选人能否清晰描述一个复杂系统的业务背景、问题定义、技术选型和整体架构,以及是否真正参与过核心设计。
400

线程池配置上线后,应该关注哪些指标来判断参数是否合理、线程池是否健康?

考察候选人对线程池运行机制和监控指标的理解,能否用数据判断配置合理性。
401

通过 Spring IoC 的 getBean 获取对象时,希望对象交付前某个属性已被修改,结合 Bean 生命周期有哪些实现方式?

考察候选人对 Spring Bean 生命周期扩展点的掌握程度,以及能否在正确阶段介入属性修改。
402

使用 Redis 缓存并访问数据库时,如何保证数据一致性?如果再增加一层本地缓存,更新时怎样保证三者一致?

考察候选人对缓存与数据库一致性方案的理解,以及多层缓存下更新顺序和失效策略的设计能力。
403

请讲一下ArrayList和LinkedList的区别,以及在实际开发中你会如何选择?

考察候选人对Java常用集合底层数据结构、随机访问与增删性能差异的理解,以及能否结合业务场景做技术选型。
404

银行卡查询按卡号加日期查询非常慢,你会如何排查慢的原因?如果已对卡号和日期建索引,但用where交易日期小于当前日期查询,效率会怎样?

考察候选人排查慢SQL的系统性思路,以及对联合索引、最左前缀、范围查询导致索引失效等数据库原理的掌握。
405

在便利店支付场景中,因网络延迟用户多次点击支付按钮,如何避免多次扣款?

考察候选人对支付幂等性、防重复提交、分布式锁、唯一约束等方案的设计能力,以及在高并发场景下的取舍。
406

为什么你这里要用 Lua 保证原子性,不能从 ZSet 取出删除同时把值返回吗?

考察候选人对 Redis 原子操作、Lua 脚本以及 ZSet 命令组合的理解,判断其是否理解并发场景下原子性的必要性。
407

Set 插入失败,消息丢失有想过补偿方案吗,如何补偿?

考察候选人对消息可靠性、失败补偿机制的设计能力,以及在实际业务中如何保证数据不丢失。
408

如何设计一个按钮防抖利用 Redis?

考察候选人利用 Redis 实现分布式防抖的能力,包括键设计、过期策略和原子性。
返回面试题库