腾讯AI后台开发一面面经分享
面试题目
- MySQL 的数据查询如何做到高并发?事务是怎么处理的?
- 点赞业务表是怎么设计的?表结构如何设计索引?
- 如果用 Redis 存点赞数据,用的是什么数据结构?数据是怎么存的?
- 如何实现查看最近点赞的人这个功能?
- Redis 的 zset 底层结构是什么?
- Redis 的数据有没有落到 MySQL?是怎么保证数据一致性的?
- 当前项目整体架构是什么?
- Redis 提升了 MySQL 50% 的效率,这个结论是怎么得出的?
- 之前实习用过 Python 开发工具,Python 和 Java 的区别是什么?
- Python 开发的工具是如何提升效率的?
- 你是怎么了解 AI 的?
- AI Agent 大概有哪些模型或类型?
- 介绍一下常见的排序算法。
- 归并排序和快速排序的时间复杂度、空间复杂度分别是多少?
参考解析
- MySQL高并发:可通过读写分离(主从复制)、分库分表、引入缓存(Redis)、优化SQL索引及使用连接池实现。事务处理依赖ACID特性,通过MVCC实现非阻塞读。
- 点赞设计:表结构包含user_id, target_id, status等。索引应覆盖常用查询字段,通常建立(target_id, user_id)联合索引。
- Redis数据结构:常用Hash存储点赞数,Set存储点赞用户ID列表。高并发下建议异步批量写入数据库。
- 查看最近点赞:利用Redis的List(LPUSH/LRANGE)或ZSet(以时间戳为score)实现,取前N条数据。
- ZSet底层:Redis 7.0前采用压缩列表(ziplist)+ 跳表(skiplist);7.0后采用listpack + 跳表。
- 数据一致性:采用延时双删或订阅Binlog(如Canal)进行异步更新,确保最终一致性。
- Redis效率提升:基于监控数据对比(QPS/RT)或使用压力测试工具(JMeter/Benchmark)对比引入Redis前后的读写性能。
- 排序复杂度:
- 快速排序:平均O(n log n),最坏O(n²),空间O(log n);
- 归并排序:始终O(n log n),空间O(n)。