腾讯后端开发岗面经 12
- 时间
- 2025-04
- 来源
- 牛客网
《面试题目》
- 数据库为什么使用 B+ 树而不是普通平衡树?B 树和 B+ 树有什么区别?
- MySQL 慢查询怎么优化?
- B+ 树索引怎么更新?
- C++ 引用是怎么实现的?
- C++ 中 map 和 unordered_map 的区别及时间复杂度是什么?
- malloc 返回的是虚拟地址吗?物理地址什么时候会被使用?
- Redis 和 MySQL 的主从复制分别怎么进行?
- 用户态和内核态有什么区别?进程间通信方式有哪些?
- 进程和线程有什么区别?
- URL 输入后到网页展示经历了哪些流程?
- HTTP 和 HTTPS 有什么区别?
- Redis 分布式锁怎么实现?
- JVM 内存结构和类加载过程是怎样的?
- 什么情况下会触发 Full GC?
- MySQL 的 redo log 存储什么内容?还有哪些日志?
《参考解析》
- B+ 树非叶节点只存键,叶节点存数据并通过链表连接,树高更低且适合范围扫描;B 树的内部节点也存数据,范围遍历和缓存局部性相对较差。
- 慢查询应先用慢日志和 EXPLAIN 定位,再检查索引、过滤条件、回表和排序;不能只靠盲目加索引,应结合实际执行计划和数据分布。
- Redis 锁通常用带唯一 token 的 SET NX EX 获取,释放时用 Lua 校验 token 后删除;续期要避免锁过期而业务仍在执行。
- HTTPS 在 TLS 中完成身份认证、密钥协商和加密传输。HTTP/2 支持多路复用,HTTP/3 则基于 QUIC/UDP,减少队头阻塞。
- InnoDB 的 redo log 记录页修改以支持崩溃恢复;binlog 记录逻辑变更用于复制,undo log 用于回滚和 MVCC。