avatar

Java面试题4

1.redis持久化方式?

1
2
1.rdb全量持久化
2.aof增量持久化

2.Redis的应用场景

1
2
3
1.查询频繁
2.数据量小
3.不常改变

3.为什么要搭建Redis集群?

1
防止缓存穿透,缓存雪崩,缓存击穿,保证Redis的qps

4.Redis集群有几种方案,工作原理是什么呢?

1
2
3
4
主从复制: psync完整重复制和部分重复制(Redis自带)
哨兵: 增加一个进程来监督主从复制,依赖于乒乓机制和留言传播(Redis自带)
cluster: 乒乓机制和留言传播 + hash槽分配,节点分配(Redis自带,需要启动一个哨兵进程)
twemproxy: 一致性hash算法,每一台Redis都是单独的服务器,由twemproxy管理集群(第三方的服务)

5.如何保证redis的安全性?

1
2
设置Redis的访问地址
设置访问密码

6.如何优化MySQL?

1
2
3
4
1.SQL语句及索引的优化
2.数据库表结构的优化
3.系统配置的优化
4.硬件的优化

7.如何对SQL语句进行优化

1
2
3
4
5
6
7
1.Where子句中:where表之间的连接必须写在其他Where条件之前,那些可以过滤掉最大数量记录的条件必须写在Where子句的末尾.HAVING最后
2.用EXISTS替代IN、用NOT EXISTS替代NOT IN
3.避免在索引列上使用计算
4.避免在索引列上使用IS NULL和IS NOT NULL
5.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
6.应尽量避免在where子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描
7.应尽量避免在where子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描

8.使用索引的好处和坏处?

1
2
3
4
5
6
7
好处:
1.关键字相对于数据本身,数据量小。
2.关键字是有序的,二分查找可快速确定位置。
3.在使用分组和排序进行检索的时候,可以减少查询中分组和排序的时间
缺点:
1.创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加
2.索引需要占用物理空间,数据量越大,占用空间越大

9.什么时候需要创建索引?

1
2
3
1.主键自动建立唯一索引
2.频繁作为查询条件的字段应该创建索引
3.查询中排序、统计或者分组的字段

10.什么时候不需要创建索引?

1
2
3
4
1.频繁更新的字段不适合创建索引,因为每次更新不单单是更新记录,还会更新索引,保存索引文件
2.表记录太少,不需要创建索引
3.经常增删改的表
4.数据重复且分布平均的字段;注意某些数据包含大量重复数据,因此他建立索引就没有太大的效果,例如性别字段,只有男女,不适合建立索引
文章作者: 123
文章链接: https://gao5805123.github.io/123/2020/05/09/Java%E9%9D%A2%E8%AF%95%E9%A2%984/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 123
打赏
  • 微信
    微信
  • 支付宝
    支付宝