面试真题

技术面 + 非技术面高频问题 · 企业真题标题 + 校招宝自研参考答案
面试真题
2508 道
技术岗
641 道
非技术岗
1867 道
当前筛选
20 道

按赛道技术岗以技术方向细分;非技术岗按「结构化 / 半结构化 / 无领导 / HR / 职能」细分

按方向/形式点选即筛,再点「全部」还原

按难度

按企业点选查看该公司全部题目

技术岗 · 分类:数据库 · 企业:阿里巴巴20 道 · 点击进入查看参考答案

简单数据库
事务的四种特性(ACID)
结论:事务四种特性即ACID:原子性、一致性、隔离性、持久性。核心要点:原子性指事务内操作要么全部提交要么全部回滚,由undo日志实现;一致性指事务执行前后数据完整性约束不被破坏,依赖应用与数据库共同维护;隔离性指并发事…
🎤 阿里巴巴
简单数据库
MySQL你知道哪些参数?
核心要点:可从连接、内存、日志、线程等维度列举。连接类:max_connections(最大连接数)、wait_timeout;内存类:innodb_buffer_pool_size(缓冲池大小,建议物理内存70%)、k…
🎤 阿里巴巴
简单数据库
Redis的内存淘汰策略有哪些?
结论:Redis内存淘汰策略包括noeviction(不淘汰,写报错);volatile-lru/allkeys-lru(LRU删最近最少用);volatile-lfu/allkeys-lfu(LFU删最不常访问);vo…
🎤 阿里巴巴
简单数据库
Undo Log 的作用?
结论:Undo Log(回滚日志)用于保证事务原子性和实现MVCC。核心要点:事务修改前记录数据旧值到undo log;事务回滚时按undo log反向操作恢复数据;用于MVCC读请求通过undo log构建历史版本实现…
🎤 阿里巴巴
中等数据库
乐观锁和悲观锁的策略
结论:悲观锁策略为显式加锁独占;乐观锁策略为版本号/CAS无锁校验。具体:1.悲观锁含数据库行锁(SELECT FOR UPDATE)、Java synchronized/ReentrantLock,进临界区前获锁结束释…
🎤 阿里巴巴
中等数据库
热key如何处理?
结论:热key处理核心为本地缓存、多副本分散、拆分与限流。原理:热key指超高并发访问的key,集中单节点致负载不均。1.本地缓存:客户端用Caffeine等缓存副本,减少远程调用;2.多副本:将key复制至多个Redi…
🎤 阿里巴巴
中等数据库
如何理解Buffer Pool
结论:Buffer Pool是InnoDB在内存中缓存数据页和索引页的核心组件,目的是减少磁盘IO提升性能。原理:默认大小为物理内存80%,以16KB页管理;包含free链表(空闲页)、LRU链表(冷热分区,old区防全…
🎤 阿里巴巴
中等数据库
项目中数据库有没有分库分表的场景?
结论:当单表数据超千万、写并发高或实例瓶颈时需分库分表。要点:垂直分表拆大字段(如商品详情分离),水平分表按片键(用户ID哈希、时间范围)拆行;分库将分片分布到多实例,突破单机连接数与CPU限制;场景示例:订单表按use…
🎤 阿里巴巴
中等数据库
MySQL如何排查慢SQL?
核心要点:开启慢查询日志定位,结合EXPLAIN分析执行计划。步骤:1. 开启慢日志:set global slow_query_log=1; long_query_time=1; 2. 通过mysqldumpslow或…
🎤 阿里巴巴
中等数据库
MySQL 一条语句的执行流程?为什么要写 Redo Log?不能直接写 B+ 树吗?
执行流程:连接器认证权限→查询缓存(8.0移除)→分析器词法语法→优化器选索引→执行器调引擎→存储引擎查B+树返回。写Redo Log原因:InnoDB采用WAL(写前日志),Redo Log是物理日志循环写,顺序IO快…
🎤 阿里巴巴
中等数据库
MySQL是怎么执行一条SQL语句的?
结论:MySQL执行SQL分三层:连接层、服务层、存储引擎层。流程:1.连接器建立连接并校验权限;2.查询缓存(8.0已删)命中直接返回;3.分析器做词法语法解析生成解析树;4.优化器选执行计划,如用哪个索引、join顺…
🎤 阿里巴巴
中等数据库
MySQL索引优化知道哪些?
结论:MySQL索引优化核心在于减少扫描行数、避免索引失效、利用覆盖索引。主要方法:1.遵循最左前缀原则:联合索引(a,b,c)仅当查询条件含a或a,b等前缀时才生效,跳过a直接用b则失效;2.禁止对索引列进行函数运算或…
🎤 阿里巴巴
中等数据库
MySQL为什么采用B+树存储?
结论:MySQL采用B+树因其磁盘友好、查询高效且支持范围扫描,优于二叉树、哈希、B树。原理:1.多叉平衡树:一个节点可存多个键值,树高度低(千万数据仅需3-4层),减少磁盘IO次数;2.叶子节点双向链表:所有数据记录在…
🎤 阿里巴巴
中等数据库
MySQL为什么发生死锁,如何解决?
结论:死锁由两个及以上事务循环等待对方持有的锁导致,MySQL会自动检测并回滚。原因:事务A持有资源1锁请求资源2,事务B持有资源2锁请求资源1,互相等待。解决与预防:1.统一资源访问顺序(如按主键ID升序更新),破坏循…
🎤 阿里巴巴
中等数据库
Redis zset的底层结构:压缩列表和跳表,区别,什么时候使用哪一种,为什么不用红黑树?
结论:zset底层使用ziplist(压缩列表)或skiplist+dict(跳表+字典),按阈值切换。区别与选择:1.ziplist:连续内存存储,省内存,但增删查O(n),当元素数<128且成员值<64字节时使用;2…
🎤 阿里巴巴
中等数据库
Redis的过期键如何处理,有哪些方式,会导致问题吗,如何解决?
结论:Redis采用惰性删除+定期删除结合;过期键处理有定时、惰性、定期三种方式。核心要点:定时删除用定时器立即删键,CPU开销大;惰性删除在访问时检查过期则删,可能导致内存泄漏;定期删除每间隔随机抽部分键删除(默认每秒…
🎤 阿里巴巴
中等数据库
Redis的zset的数据结构有哪些?
结论:zset底层由跳表(skiplist)和哈希表组合实现,小数据时用压缩列表(ziplist,Redis 7.0后改listpack)优化。核心要点:哈希表存成员到分值的映射,O(1)查分;跳表按分值排序,支持范围查…
🎤 阿里巴巴
中等数据库
Redis过期策略,有没有局限性,怎么解决?
结论:Redis采用惰性删除+定期删除。核心:惰性删除在读取时查过期则删;定期删除每100ms抽样20key删过期。局限性:惰性致内存浪费;定期可能漏删且大量过期时CPU尖峰;从库延迟删。解决:1. 过期时间加随机偏移防…
🎤 阿里巴巴
中等数据库
Redis你知道的持久化策略,具体实现?
结论:Redis持久化主要有RDB和AOF两种方式,RDB快照、AOF日志;RDB实现:fork子进程将内存数据以二进制保存到dump.rdb,按save配置触发,优点紧凑恢复快,缺点可能丢失最后一次快照后数据;AOF实…
🎤 阿里巴巴
中等数据库
乐观锁和悲观锁的区别与使用场景?
结论:悲观锁操作前加锁,乐观锁提交时校验。核心区别:1)加锁时机:悲观锁先加锁再操作,乐观锁不加锁;2)冲突处理:悲观锁阻塞等待,乐观锁回滚或重试;3)性能:悲观锁开销大但安全,乐观锁开销小但可能自旋。原理:悲观锁依赖数…
🎤 阿里巴巴
题目整理自公开面经,答案由校招宝自研生成,仅供参考