随笔分类 - 面试篇
程序员面试常见问题学习库
摘要:**索引有什么分类?**
- 1、主键索引:名为primary的唯一非空索引,不允许有空值。
- 2、唯一索引:索引列中的值必须是唯一的,但是允许为空值。唯一索引和主键索引的区别是:唯一约束的列可以为null且可以存在多个null值。唯一索引的用途:唯一标识数据库表中的每条记录,主要是用来防止数据重复插入。创建唯一索引的SQL语句如下:
```ALTER TABLE table_name
ADD CONSTRAINT constraint_name UNIQUE KEY(column_1,column_2,...);
```
- 3、组合索引:在表中的多个字段组合上创建的索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用,使用组合索引时需遵循最左前缀原则。
- 4、普通索引(单值索引)
- 5、全文索引:只有在MyISAM引擎上才能使用,只能在CHAR、VARCHAR和TEXT类型字段上使用全文索引。
阅读全文
摘要:- 启用查询缓存
特别注意:查询缓存从MySQL 5.7.20开始已被弃用,并在MySQL 8.0中被删除。、
- 一种说法是不建议使用查询缓存,因为查询缓存往往弊大于利。查询缓存的失效非常频繁,只要有对一个表的更新,这个表上的所有的查询缓存都会被清空。因此很可能你费劲地把结果存起来,还没使用呢,就被一个更新全清空了。对于更新压力大的数据库来说,查询缓存的命中率会非常低。除非你的业务有一张静态表,很长时间更新一次,比如系统配置表,那么这张表的查询才适合做查询缓存。
- 引擎优化
MyISAM存储引擎:
场景:如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。
优点:MyISAM引擎能提供较高的查询效率,适用于对数据进行频繁查询操作的数据表(InnoDB提供提交、回滚、崩溃恢复能力及并发控制能力,适用于对数据更新操作频率高的数据表)
- 索引优化
阅读全文
摘要:四种隔离级别:
READ-UNCOMMITTED(读取未提交): 最低的隔离级别,允许读取尚未提交的数据变更,** 可能会导致脏读、幻读或不可重复读** 。
READ-COMMITTED(读取已提交): 允许读取并发事务已经提交的数据, 可以阻止脏读,但是幻读或不可重复读仍有可能发生 。
REPEATABLE-READ(可重复读): 对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改, 可以阻止脏读和不可重复读,但幻读仍有可能发生 。
SERIALIZABLE(可串行化): 最高的隔离级别,完全服从ACID的隔离级别。所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读
阅读全文
摘要:1、网络分层结构
2、三次握手
3、四次挥手
4、第四次挥手为什么要等待2MSL?
5、为什么是四次挥手?
6、TCP和UDP的区别
7、TCP有哪些特点?
8、HTTP协会的特点
9、HTTP报文格式
1、HTTP由请求行、请求头部、空行、请求体四部分组成
2、HTTP响应也由四个部分组成,分别是:状态行、响应头、空行和响应体。
10、HTTP状态码有哪些
11、HTTP1.0和HTTP1.1的区别?
12、HTTP1.1和 HTTP2.0的区别?
13、HTTPS和HTTP的区别
14、什么是数字证书?
15、HTTPS原理
16、DNS 的解析过程?
17、浏览器中输入URL返回页面过程?
18、Cookie和Session的区别?
19、什么是对称加密和非对称加密?
20、http GET 和 POST 请求的优缺
阅读全文
摘要:1、mysql的隔离级别
2、MYSQL性能优化
常用5种方式
3、索引详解
1、何为索引,有什么用?
2、索引的优缺点
4、什么情况下需要建索引?
5、什么情况下不建索引?
6、索引的底层数据结构
1、hash表
Hash 冲突 问题
既然哈希表这么快, 为什么MySQL 没有使用其作为索引的数据结构呢?
2、B 树& B+树
B 树& B+树两者有何异同呢?
7、Hash索引和B+树索引的区别?
8、为什么B+树比B树更适合实现数据库索引?
9、索引有什么分类?
10、什么是最左匹配原则?
11、MySQL聚簇和非聚簇索引
。。。。。。
阅读全文
摘要:1、JUC 简介
2、线程和进程
3、并非与并行
4、线程的状态
5、wait/sleep的区别
6、Lock 锁(重点)
1、Lock锁
2、公平非公平:
3、ReentrantLock 构造器
4、Lock 锁实现步骤:
7、synchronized 和 lock 锁的区别
8、生产者和消费者问题(通信问题)
1、Synchronized 版本
2、JUC 版本
9、八个有关锁的问题
关于锁的八个问题
10、集合类的安全问题
1、List 不安全
2、Set 不安全
。。。。。。
阅读全文
摘要:一、什么是JVM
1、jvm的三个组成部分
二、类加载系统
1、类的加载过程
2、类加载器
三、双亲委派机制
1、双亲委派机制介绍
2、为什么要双亲委派机制
3、双亲委派机制的核心源码
4、全盘委托机制
5、自定义加载器实现双亲委托机制
6、自定义加载器打破双亲委派机制
四、运行时数据区
1、运行时数据区的介绍(也叫JVM的内存模型 JMM、内存区域)
2、程序在执行时运行数据区的内存变化
五、对象的创建流程
1、对象创建流程
3、内存分配
4、设置初值
5、设置对象头
6、执行init方法
六、垃圾回收
1、对象成为垃圾的判断依据
2、 对象中的finalize方法
3、对象逃逸
七、垃圾回收算法
。。。。。。
阅读全文