一面 一、数据库相关1. 数据库的索引是什么?为什么使用索引?InnoDB的数据索引基于什么实现?2. B+树和B树的差异?3. B+树查询一次的时间复杂度是多少?4. 哈希数据结构的查询时间复杂度?5. MySQL为什么不使用哈希结构?6. 主键设计为什么一般用自增ID,而非身份证号等业务字段?二、进程、线程、协程相关1. 进程、线程、协程的定义?为什么需要协程?2. 两个线程修改共享变量的线程安全问题如何解决?3. 悲观锁和乐观锁的差别?三、TCP/UDP网络相关1. TCP和UDP的核心区别及应用场景?2. 滑动窗口机制的原理?3. 已发送但未收到ACK的问题如何解决?4. TCP三次握手能否改为两次,加超时重试?四、登录系统设计相关1. 支持30天免登录的数据库表设计(表数量、作用、主键、索引)?2. 前端与客户端交互中如何实现30天免登录?3. 是否了解SSO?4. 用户登录态的设计实现有哪几种?是否了解JWT?五、限流与缓存相关1. 高峰期如何避免流量打挂服务/底层存储(从限流和缓存角度)?2. 是否了解令牌桶和漏桶算法的实现、区别及适用场景?3. 缓存击穿和缓存穿透的区别及解决方法?4. 布隆过滤器的原理及误判解决/降低方法?六、Redis相关1. Redis的基本数据类型有哪些?2. set和zset的区别?3. zset的原理?七、其他技术相关1. 是否了解AI Coding(如OpenAI工具、Spectacle Coding、Web Coding)?Spectacle Coding解决了哪些问题?2. 是否接触过Go语言?