蔚来-软件开发实习生面经
- 时间
- 2026-09
- 来源
- 牛客网
《面试题目》
- 为什么从运营方向转向技术研发?
- 实习项目中遇到的最大难点是什么,如何解决?
- 为什么选择 MySQL,乐观锁如何实现?
- 引入消息队列后会带来哪些事务和一致性问题?
- 本地消息表如何扫描、优化并避免多节点冲突?
- Canal 的工作原理和使用方式是什么?
- Redis 为什么快,RDB 与 AOF 如何选择?
- Redis ZSet 为什么使用跳表,InnoDB 为什么使用 B+ 树?
- MySQL 深度分页和 UUID 主键有什么优化方案?
- HTTPS 的加密过程和请求报文加密范围是什么?
- HashMap 并发 put 不同 key 时为什么仍可能丢数据?
- 如何实现编辑距离?
《参考解析》
本地消息表通过状态、重试次数和下一次执行时间索引分批扫描,多个节点用抢占标记或分布式锁避免重复。Canal 订阅 Binlog 将数据库变更投递给下游。ZSet 需要有序更新和范围查询,跳表实现简单且内存友好;InnoDB B+ 树更适合磁盘页和范围扫描。深度分页可改为基于游标的范围查询,UUID 主键要注意随机写带来的页分裂。HashMap 非线程安全,扩容或桶头竞争会覆盖更新,需使用并发容器。编辑距离用二维动态规划,状态表示两个前缀的最少插入、删除或替换次数。