续上一条 Redis刷新token保证用户无感: 1. 使用access_token和refresh_token 2. 在access_token即将过期前自动刷新 3. 用户活跃时延长token有效期 4. 客户端在后台异步刷新token 5. token过期后短时间内仍可使用,同时刷新 点赞排行实现及数据持久化: 1. 使用ZSET存储,score为点赞数 2. 定期将热门数据持久化到MySQL 3. 热数据保存在Redis,冷数据存入MySQL 4. 设置定时任务每天/周从MySQL加载基础数据到Redis 5. 只更新有变化的数据,而非全量刷新 乐观锁实现: 1. 表中增加version字段,更新时检查版本 2. 条件更新 UPDATE table SET data=?, version=version+1 WHERE id=? AND version=? SQL优化问题 多表连接优化: 1. 减少连接表数量 2. 索引优化 3. 小表驱动大表 4. 尽量使用内连接而非外连接 5. 将过滤条件尽量下推到基表 6. 避免笛卡尔积 多表连接分页查询优化: 1. 先获取分页ID,再关联查询详细数据 2. 先对主表分页,再与其他表连接 3. 尽量使用索引覆盖避免回表 4. 将WHERE条件提前执行 5. 使用临时表存储中间结果 多表连接索引创建及联合索引作用: 1. 在所有JOIN条件字段上创建索引 2. WHERE条件字段创建索引 3. ORDER BY字段创建索引 4. 联合索引作用最左前缀匹配 索引覆盖 减少回表次数 提高连接效率 SQL执行顺序: FROM > JOIN > WHERE > GROUP BY > HAVING > SELECT > DISTINCT > ORDER BY > LIMIT MySQL提高扫描效率的方法: 1. B+树索引减少磁盘IO次数 2. 根据成本选择最优执行计划 3. InnoDB buffer pool缓存热数据 4. 提前读取可能需要的数据页
10 3

相关推荐

03-25 12:34
已编辑
中南大学 Java
已约二面,一面基本上没有问项目,纯问的八股,感觉自己面的其实不是很好,有点过于紧张了不过面试官人很好1.3-5分钟自我介绍 + 面试官介绍部门2.八股:equals 和 == 有什么区别?基础类和包装类的区别? int 5 == Interger 5 是True还是False? LinkedHashMap是怎么实现的?HashMap的底层数据结构是什么?如何解决哈希冲突?HashMap的初始大小,长度为什么是2的次方?扩容机制?JVM内存模型包括哪些部分?哪些区域是线程安全的?程序计数器的作用是什么?垃圾回收的算法有哪些?如何判断对象是否可回收?CMS和G1垃圾回收器的流程和区别是什么?AQS的作用是什么?与ReentrantLock的关系?ReentrantLock与Syn锁的区别?ReentrantLock公平锁和非公平锁的实现原理及性能差异?volatile关键字?Mysql innodb 的数据结构?B+树索引的结构和优势是什么?事务隔离级别有哪些?MySQL默认隔离级别是什么?如何解决幻读?如何通过MVCC实现可重复读?缓存穿透、缓存击穿、缓存雪崩及解决方案?如何用Redis实现分布式锁?可能存在的问题是什么?高并发下Redis扛不住怎么办?读写分离也扛不住怎么办?如何保证消息的幂等性?消息重复消费的解决方案?RocketMQ的消息拉取和推送机制?场景题1.图书馆检索:如何设计数据结构在O(1)时间内检索某本书?假设书的总数量特别多,对应种类数有限。2.高并发优惠券领取:如何保证高并发场景下优惠券领取不超卖,Redis扛不住怎么办?手撕链表反转:k链表反转,时间复杂度O(n),进一步要求额外空间复杂度O(1)。反问:基础方面要加强学习,对技术的深层实现要加强了解。
kakiyami:今晚二面,希望美团对我好一点求你了
查看26道真题和解析
点赞 评论 收藏
分享
牛客网
牛客企业服务