Java面试题
如何定位慢查询
使用一些运维监控的工具 promtheus / skywalking
开启慢日志查询
slow_query_log=1
表示超过这个时间的sql就会被记录到慢查询的日志中
long_query_time=2
查询数据文件存储目录
show variables like ‘%datadir%’;
sql语句执行的很慢, 如何分析
explain关键字
了解过索引吗?
mysql高效获取数据的(有序的), 底层数据结构是B+树
索引的底层的树结构有了解过吗?
B+树 相对于 B树的优点
非叶子节点不存储数据, 只存储指针, 只有在叶子存储数据
- 磁盘读写代价B+树更低
- 查询效率B+树更加稳定
- B+树便于扫库和区间查询
什么是聚簇索引? 什么是非聚簇索引?
什么是聚簇索引? 什么是非聚簇索引?
什么是聚集索引, 什么是二级索引(非聚集索引)
什么是回表?
聚集索引就是聚簇索引, 非聚集索引就是非聚簇索引
分类 | 含义 | 特点 |
---|---|---|
聚簇索引 | 将数据存储与索引放到了一块, 索引结构的叶子节点保存了行数据 | 必须有, 而且只有一个 |
二级索引 | 将数据与索引分开存储, 索引结构的叶子节点关联的对应的是主键 | 可以存在多个 |
知道什么叫做覆盖索引吗?
覆盖索引就是在查询过程中使用了索引, 并且返回了需要的列, 在该索引中全部能够找到
简单来说就是不需要进行回表操作的索引
覆盖索引减少了回表操作, 从而提升了查询的性能
sql优化的策略:
减少回表操作, 使用覆盖索引 ( 少使用select * )
MySQL超大分页怎么处理?
可以使用覆盖索引解决
索引创建原则有哪些?
什么情况下索引会失效?
补充:
联表查询, 两表的字符集不一致的时候, 索引也会失效
使用了or操作
使用了不等于
谈一谈你对sql的优化的经验
表的设计优化(参考阿里巴巴开发手册)
设置合适的数值 tinyint int bigint
设置合适的字符串类型, char定长效率高, varchar可变长度, 效率稍低
索引的优化 创建索引和防止索引失效
SQL语句优化, 减少使用select *
事务的特性是什么? 可以详细说说吗?
ACID
并发事务带来哪些问题? 怎么解决这些问题呢? MySQL的默认隔离级别?
并发事务问题: 脏读, 不可重复读, 幻读
隔离级别: 读未提交, 读已提交, 可重复读, 串行化
undo log 和 redo log 区别
redo 相当于单机游戏中的 R 重做 重来 重新开始
undo 提供回滚 , MVCC
解释一下MVCC
主从同步原理
你们项目用过分库分表吗?
Spring框架中单例bean是线程安全的吗?
SpringMVC的执行流程
jsp视图
前后端分离
Spring框架中的单例bean是线程安全的吗?
Spring框架中的bean是单例的吗?
默认是单例的
@Scope(“singleton”)
singleton: bean在每个SpringIOC容器中只有一个实例
prototype: 一个bean的定义可以有多个实例
并不是线程安全的
1 |
|
什么是AOP, 你们项目中有没有使用到AOP? 对AOP的理解? 有没有真的用过AOP
常见AOP使用场景
记录操作日志
缓存处理
Spring中内置的事务处理