敲不明白 level
获赞
7
粉丝
23
关注
42
看过 TA
964
华中科技大学
2024
Java
IP属地:上海
拼多多java后端开发
私信
关注
# Redis面试题精选(秋招备战)## 基础概念📒提前批投递!🔔多一次机会!🔉正式秋招还能继续投!💬快来试试!🀄️机会多多!👏欢迎私聊了解情况!【拼多多集团-PDD校园招聘】内推链接:https://careers.pddglobalhr.com/campus/grad/detail?t=DBh7T7ZBAy,内推码:DBh7T7ZBAy。服务端研发工程师 期待你的加入!我们一起,无拼不青春!(通过此链接投递计入内推,内推简历优先筛选~)1. **Redis是什么?它有哪些特点?**- 内存数据库,键值存储系统- 支持多种数据结构:String, Hash, List, Set, Sorted Set等- 高性能(基于内存操作)- 支持持久化(RDB/AOF)- 支持主从复制、哨兵、集群2. **Redis与Memcached的区别?**- 数据结构:Redis更丰富- 持久化:Redis支持,Memcached不支持- 集群:Redis原生支持,Memcached需要客户端实现- 线程模型:Redis单线程,Memcached多线程## 数据结构3. **Redis支持哪些数据结构?各自的使用场景?**- String:缓存、计数器- Hash:存储对象- List:消息队列、最新消息排行- Set:标签、共同好友- Sorted Set:排行榜、带权重的队列- Bitmap:用户签到、活跃统计- HyperLogLog:基数统计- GEO:地理位置4. **Redis的跳跃表(Skip List)是如何实现的?为什么不用红黑树?**- 多层链表结构,查询复杂度O(logN)- 相比红黑树:实现简单、范围查询更高效、并发控制更容易## 持久化5. **RDB和AOF的区别?各自的优缺点?**- RDB:定时快照,文件紧凑,恢复快;但可能丢失数据- AOF:记录写命令,数据更安全;但文件大,恢复慢- 4.0后支持混合持久化6. **AOF重写的过程是怎样的?**- 创建子进程- 子进程读取数据库当前状态- 生成新的AOF文件- 期间的新命令写入缓冲区- 完成后替换旧文件## 高可用7. **Redis主从复制原理?**- 全量同步:主节点生成RDB发送给从节点- 增量同步:通过复制缓冲区同步写命令- 2.8后支持PSYNC,避免全量同步8. **哨兵模式的工作原理?**- 监控:检查主从节点状态- 通知:向管理员报告故障- 自动故障转移:选举新主节点- 配置提供者:客户端发现当前主节点9. **Redis Cluster如何实现数据分片?**- 16384个哈希槽- 每个节点负责部分槽- 客户端或代理路由请求- 支持重分片## 高级特性10. **Redis事务与数据库事务的区别?**- 不保证原子性(单条命令原子,事务不保证全部成功)- 没有隔离级别概念- 通过MULTI/EXEC/WATCH实现11. **Redis的管道(Pipeline)是什么?**- 批量发送命令,减少RTT- 非原子操作- 显著提升批量操作性能12. **Redis的过期策略和内存淘汰策略?**- 过期策略:定期删除+惰性删除- 淘汰策略:volatile-lru, allkeys-lru, volatile-random, allkeys-random, volatile-ttl, noeviction## 性能优化13. **Redis为什么快?**- 内存操作- 单线程避免锁竞争- IO多路复用- 高效数据结构14. **Redis大Key问题如何解决?**- 拆分大Key- 使用SCAN代替KEYS- 设置合理的过期时间- 使用压缩算法15. **Redis热点Key问题如何解决?**- 本地缓存- 读写分离- 使用Redis集群分散压力- 使用多级缓存## 实战场景16. **如何用Redis实现分布式锁?要注意什么?**- SETNX + 过期时间- 注意原子性设置- 避免误删其他客户端锁- 考虑锁续期问题- Redlock算法17. **如何用Redis实现延时队列?**- 使用Sorted Set,score为时间戳- 消费者轮询获取到期的元素18. **Redis如何实现附近的人功能?**- GEO数据结构- GEOADD添加位置- GEORADIUS查询附近位置希望这些面试题能帮助你准备秋招!建议结合实际项目经验来回答,展示你的实战能力。
0 点赞 评论 收藏
分享
1. "当我尝试改别人的代码"👨💻:这个函数怎么跑不通?🕵️♂️:(看代码)哦,这里少了个分号👨💻:(加上分号)还是报错啊?🕵️♂️:emmm...要不你试试删了重写?👨💻:(删掉整个文件)现在不报错了!【拼多多集团-PDD校园招聘】内推链接:https://careers.pddglobalhr.com/campus/grad/detail?t=DBh7T7ZBAy,内推码:DBh7T7ZBAy。服务端研发工程师 期待你的加入!我们一起,无拼不青春!(通过此链接投递计入内推,内推简历优先筛选~)2. "程序员の凡尔赛"💼 HR:你期望薪资多少?👨💻:我要求不高,就按市场价吧💼 HR:市场价是?👨💻:(打开GitHub)这是我的Star数3. "当产品经理说'这个小需求'"📱 PM:就加个"根据用户心情切换主题"功能,很简单吧?👨💻:(瞳孔地震)🖥️ 三天后:👨💻:(顶着黑眼圈)你要的七彩炫光emoji心情联动算法写好了...4. "调试程序时的我"🔧 第一遍运行:报错🔧 改完运行:新的报错🔧 再改运行:更多报错👨💻:(怒按F5)今天不是你死就是我活!5. "程序员の浪漫"💑 女友:你会一直爱我吗?👨💻:(掏出手机)我给你的爱就像这段代码——javawhile(alive){loveYou++;}💻 (但没写终止条件)6. "当我看到实习生提交的PR"👴 技术总监:这代码...👨💻:(点开文件)好家伙!全是百度复制的注释!🆘 //这里我也不知道为什么能跑 但就是能跑7. "年终述职名场面"📊 老板:今年有什么成果?👨💻:(打开Git提交记录)🖥️ "fix bug" × 127🖥️ "really fix bug" × 63🖥️ "final fix" × 418. "程序员の黑暗料理"🍳 同事:你泡面怎么是蓝色的?👨💻:优化了一下煮面算法(实际:把泡面当实验品测厨房定时器API)🎉 点赞过100更新《当程序员去相亲》系列!👇 在评论区留下你的"最痛代码故事"!
投递百度等公司10个岗位
0 点赞 评论 收藏
分享
📌 覆盖 90% 大厂面试真题 | 附详细解析【拼多多集团-PDD校园招聘】内推链接:https://careers.pddglobalhr.com/campus/grad/detail?t=DBh7T7ZBAy,内推码:DBh7T7ZBAy。服务端研发工程师 期待你的加入!我们一起,无拼不青春!(通过此链接投递计入内推,内推简历优先筛选~)📚 一、索引与优化(必问!)1. B+树 vs B树 vs 哈希索引✅ 答:对比项B+树B树哈希索引结构非叶子节点只存索引所有节点存数据数组+链表查询范围查询高效(O(logN))随机查询快(O(logN))等值查询O(1)适用InnoDB默认MongoDBMemory引擎👉 为什么MySQL用B+树?叶子节点链表结构适合范围查询(如WHERE id > 100)非叶子节点不存数据,单页能存更多索引,减少磁盘IO2. 最左前缀原则✅ 答:联合索引 (a,b,c),必须从最左列开始匹配:✅ 走索引:WHERE a=1 AND b=2、WHERE a=1❌ 不走索引:WHERE b=2、WHERE c=3优化建议:高频查询字段放左侧3. Explain 关键字段解读✅ 答:字段含义优化方向type访问类型(ALL→index→range→ref→const)尽量避免ALLkey实际使用的索引未走索引时检查SQL条件rows预估扫描行数过大需优化索引或SQL💡 二、事务与锁(高频!)1. 事务四大特性(ACID)✅ 答:A原子性:事务要么全执行,要么全回滚(Undo Log)C一致性:数据符合业务规则(如余额≥0)I隔离性:事务间互不干扰(通过锁/MVCC实现)D持久性:提交后数据不丢失(Redo Log)2. 隔离级别与问题✅ 答:隔离级别脏读不可重复读幻读实现方式读未提交❌❌❌无锁读已提交(RC)✅❌❌快照读(MVCC)可重复读(RR)✅✅❌快照读+间隙锁串行化✅✅✅全表锁👉 MySQL默认RR级别如何解决幻读?快照读:MVCC版本控制当前读:SELECT FOR UPDATE 加间隙锁3. 乐观锁 vs 悲观锁✅ 答:对比项乐观锁悲观锁实现版本号/CAS(如UPDATE SET version=version+1)SELECT FOR UPDATE场景读多写少写多读少🛠️ 三、性能优化(实战向)1. 慢查询优化步骤✅ 答:定位:slow_query_log 开启慢查询日志分析:EXPLAIN 查看执行计划优化:加索引(覆盖索引优化)重构SQL(避免SELECT *、子查询改JOIN)分库分表(数据量过大时)2. 分库分表方案✅ 答:垂直分表:按字段拆分(如用户表拆为基础信息表+扩展表)水平分库:按数据分片(如user_id % 3分到3个库)中间件:ShardingSphere、MyCat3. 主从同步原理✅ 答:主库:写Binlog从库:IO线程拉取Binlog,SQL线程重放延迟问题:原因:从库单线程回放解决:GTID并行复制🎯 四、场景题(大厂必考)1. “库存超卖”如何解决?✅ 答:悲观锁:SELECT FOR UPDATE乐观锁:UPDATE stock SET count=count-1 WHERE count>=1Redis+Lua:原子操作扣减库存2. 订单表数据量过大,如何优化?✅ 答:冷热分离:3个月内的订单存主表,历史数据归档分表:按用户ID哈希分表(如order_uid%10)ES辅助查询:非核心字段存Elasticsearch📌 五、学习建议八股文:死磕《MySQL45讲》《高性能MySQL》实战:用sysbench压测,模拟高并发场景算法:LeetCode数据库题型(如185部门工资前三)🚀 秋招加油!你的Offer正在派送中!(需要内推可私信,字节/腾讯/拼多多简历直达HR~)
0 点赞 评论 收藏
分享
📌 个人背景985硕,无大厂实习,LeetCode 300+,Java/MySQL/Redis/Spring全家桶基础扎实投递岗位:Java服务端开发面试公司:拼多多、美团、字节跳动(均拿到Offer)【拼多多集团-PDD校园招聘】内推链接:https://careers.pddglobalhr.com/campus/grad/detail?t=DBh7T7ZBAy,内推码:DBh7T7ZBAy。服务端研发工程师 期待你的加入!我们一起,无拼不青春!(通过此链接投递计入内推,内推简历优先筛选~)📚 一、Java基础(必问!)1. HashMap底层原理?答:JDK1.8前:数组+链表,哈希冲突用拉链法JDK1.8后:链表长度>8转红黑树(提高查询效率)扩容机制:默认16,负载因子0.75,扩容2倍,rehash2. ConcurrentHashMap如何保证线程安全?答:JDK1.7:分段锁(Segment),降低锁粒度JDK1.8:CAS + synchronized(只锁链表头/红黑树根节点)3. JVM内存模型?GC调优思路?答:堆内存(Young/Old)、方法区、虚拟机栈、本地方法栈、程序计数器GC调优:避免Full GC:调整新生代/老年代比例(-XX:NewRatio)选择合适的垃圾回收器(G1/CMS)💾 二、数据库(MySQL+Redis)1. MySQL索引优化?答:最左前缀原则:联合索引(a,b,c),查询必须带a才能走索引避免索引失效:!=、or、like '%xx'、函数计算Explain分析SQL执行计划2. Redis持久化机制?答:RDB(快照):定时全量备份,恢复快但可能丢数据AOF(日志):记录写命令,数据更安全但文件大3. 缓存穿透/雪崩/击穿解决方案?答:穿透:布隆过滤器拦截非法请求雪崩:缓存过期时间加随机值击穿:互斥锁(Redis的SETNX)🛠️ 三、框架(Spring+分布式)1. Spring AOP实现原理?答:动态代理(JDK代理/CGLIB)切面(Aspect):@Before/@After/@Around2. Spring Boot自动配置原理?答:@SpringBootApplication → @EnableAutoConfiguration → META-INF/spring.factories加载配置3. 分布式ID生成方案?答:UUID(简单但无序)雪花算法(Snowflake,64位ID = 时间戳+机器ID+序列号)Redis自增ID(INCR命令)💡 四、算法题(高频!)1. 手写LRU缓存(LeetCode 146)解法: 双向链表 + HashMap2. 二叉树层序遍历(LeetCode 102)解法: BFS + 队列3. 两数之和(LeetCode 1)解法: HashMap记录差值🎯 五、HR面(常见问题)为什么选择我们公司?结合业务和技术栈回答(如拼多多高并发场景)职业规划?深耕Java技术栈,目标3年成为架构师期望薪资?参考OfferShow,合理报价(如25k*16)✅ 面试总结 & 建议八股文:Java+MySQL+Redis+Spring必须滚瓜烂熟算法:LeetCode高频100题至少刷2遍项目:准备一个高并发/分布式亮点(如Redis缓存优化)反问环节:问团队业务、技术栈、新人培养🚀 秋招加油!Offer一定会来!
投递美团等公司10个岗位
0 点赞 评论 收藏
分享
投递拼多多集团-PDD等公司10个岗位
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务