BAT大厂面试必看:Redis、JVM与微服务核心技术解析
需积分: 2 70 浏览量
更新于2024-08-03
收藏 19KB DOCX 举报
"Redis和JVM相关的面试题及答案"
Redis面试题详解:
1. **什么是Redis?**
Redis是一个开源的、基于键值对的数据结构存储系统,它通常被用作数据库、缓存和消息中间件。它支持多种数据结构,如字符串、哈希、列表、集合和有序集合。
2. **Redis的数据类型?**
Redis支持五种基本数据类型:字符串(String)、散列(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。
3. **使用Redis的好处?**
Redis提供高速读写能力,支持丰富的数据结构,可以进行主从复制和持久化,适用于缓存、计数、发布/订阅、限流等多种场景。
4. **Redis相比Memcached有哪些优势?**
Redis支持更丰富的数据结构,提供事务处理,支持持久化,还可以作为消息队列使用。而Memcached仅支持简单的键值对,无持久化和事务。
5. **Memcache与Redis的区别?**
主要区别在于数据结构支持、持久化、事务处理和多线程模型。Redis是单线程模型,而Memcached是多线程。
6. **Redis是单进程单线程的?**
是的,Redis默认采用单线程模型处理客户端请求,以确保简单性和高性能。
7. **一个字符串类型的值能存储最大容量是多少?**
Redis中的字符串键值对最大容量为512MB。
8. **Redis的持久化机制是什么?各自的优缺点?**
包括RDB(快照)和AOF(Append Only File)。RDB适合全量恢复,但可能丢失部分数据;AOF保证数据不丢失,但文件体积较大,恢复速度慢。
9. **Redis常见性能问题和解决方案?**
包括内存溢出、网络延迟、CPU过高。解决方法包括合理设置最大内存、优化数据结构、使用Pipeline、配置主从复制等。
10. **redis过期键的删除策略?**
Redis使用惰性删除和定期删除策略,当键过期时,可能会在访问时被删除,或者由后台线程定期检查并删除。
11. **Redis的回收策略(淘汰策略)?**
包括LRU(最近最少使用)、LFU(最不经常使用)和volatile-lru、volatile-ttl等,用于在内存满时决定淘汰哪些键。
12. **为什么Redis需要把所有数据放到内存中?**
Redis为追求高速读写性能,将数据存储在内存中,然后通过持久化机制保证数据安全。
13. **Redis的同步机制了解么?**
Redis支持主从复制,通过异步复制保证数据一致性。主节点将写操作日志发送给从节点,从节点应用这些操作以保持同步。
14. **Pipeline有什么好处,为什么要用pipeline?**
Pipeline可以批量发送命令,减少网络I/O次数,提高效率,尤其在执行大量连续操作时。
15. **是否使用过Redis集群,集群的原理是什么?**
Redis集群通过分片技术将数据分布在多个节点上,每个节点只负责一部分数据,提供高可用性和扩展性。
16. **Redis集群方案什么情况下会导致整个集群不可用?**
当大部分主节点失效或网络分区时,可能导致集群不可用。
17. **Redis支持的Java客户端都有哪些?官方推荐用哪个?**
支持Jedis、Lettuce等,官方推荐使用Lettuce,因为它支持最新的Redis协议和特性。
18. **Jedis与Redisson对比有什么优缺点?**
Jedis轻量级,易于使用,但存在连接池限制;Redisson功能更全面,支持更多高级特性和分布式服务,但相对重量级。
19. **Redis如何设置密码及验证密码?**
使用`requirepass`配置项设置密码,客户端连接时需使用`AUTH`命令进行身份验证。
20. **说说Redis哈希槽的概念?**
哈希槽是Redis集群中的一种数据分布策略,将键的哈希值映射到0-16383的槽位,用于均匀分配数据到集群节点。
JVM面试题涉及的知识点:
1. **JVM三大性能调优参数**
包括堆内存大小、新生代与老年代比例、垃圾收集器选择等。
2. **JVM内存管理**
包括堆、方法区、栈、程序计数器和本地方法栈,以及它们的作用和内存溢出问题。
3. **垃圾收集器**
如Serial、ParNew、CMS、G1等,理解它们的工作机制和适用场景。
4. **Java内存模型**
描述了线程共享变量的访问规则,保证多线程环境下的正确性。
5. **垃圾回收机制**
包括可达性分析、标记-清除、复制、标记-整理、分代收集等算法。
6. **GCroot对象**
包括全局静态变量、JNI引用、Java虚拟机栈中的局部变量等,是垃圾收集的起点。
7. **OOM(Out Of Memory)**
当内存耗尽时抛出,排查可通过JVM日志、内存分析工具等。
8. **Full GC触发条件**
包括老年代空间不足、手动调用System.gc()、直接内存空间不足等。
9. **GC调优**
调整JVM参数以优化垃圾收集性能,减少Full GC频率和停顿时间。
以上内容涵盖了Redis和JVM的一些核心面试知识点,对于准备面试或提升技术能力都非常有帮助。
1243 浏览量
2634 浏览量
2655 浏览量
199 浏览量
179 浏览量
253 浏览量
270 浏览量
2024-10-15 上传
290 浏览量