职位题库

Java 后端开发面试题库

面向Java 后端开发相关面试,围绕并发、Redis、操作系统、分布式系统、消息队列等主题展开练习,结合题目考察点、回答思路、参考答案和常见误区,梳理知识要点并练习清晰表达。

9 道题目建议用时 27 分钟专项面试练习

全部题目 9 道题

01

UV 统计怎么做的?为什么要这么实现?用 HyperLogLog 为什么不会占用很大空间?16KB 怎么去存储这个数据?

考察候选人对 Redis HyperLogLog 原理、内存占用和 UV 统计场景的理解,以及能否解释清楚概率性数据结构在业务中的取舍。
02

秒杀为什么要用消息队列?Redis 挂了怎么办?整个集群都挂了怎么办?库存信息都在 Redis 里,限流取不到库存了怎么办?怎么保证 Redis 里的库存和 DB 里的库存一致,不会出错?Redis 做库存扣减怎么保障原子性?不用 Lua 脚本会带来什么问题?

考察候选人对高并发秒杀场景下消息队列削峰、Redis 高可用、缓存与数据库一致性、原子性保障等综合设计能力。
03

HashMap 如何解决 hash 冲突?用 HashMap 举例说明什么是线程安全?Java 如何解决 HashMap 的线程安全问题?CAS 是什么?

考察候选人对 Java 集合底层、线程安全概念及 CAS 机制的理解。
04

线程池的好处是?创建线程池时需要考虑哪些参数?线程池的工作原理?

考察候选人对线程池核心参数、工作原理及使用场景的掌握程度。
05

如何保证 MQ 消息的有序性?

考察候选人对消息队列有序性保障机制的理解,包括生产端、存储端和消费端的协同设计。
06

Redis 集群有多少实例?集群有一个实例挂了,之后的数据是怎么流转?

考察候选人对 Redis 集群架构、故障转移和数据迁移机制的理解。
07

进程和线程的区别是什么?

考察候选人对操作系统基础概念的理解,包括资源分配、调度和并发模型。
08

死锁是什么?怎么避免?

考察候选人对死锁成因和预防策略的理解,以及在实际开发中的应对能力。
09

数据库索引结构是什么?怎么设计索引?

考察候选人对数据库索引底层结构和索引设计原则的掌握程度。
返回面试题库