面试总结(二)

1.MySQL存储引擎 InnoDB 和 MylSAM

InnoDB引擎是(5.5以后默认使用)特点:

  1. 灾难恢复性好
  2. 支持事务
  3. 使用行级锁
  4. 支持外键关联
  5. 支持热备份

对于InnoDB引擎中的表其数据的物理组织形势是簇表,主键索引和数据是在一起的,数据按主键的顺序物理分布,实现了缓冲管理,不仅能缓冲索引也能缓冲数据,并且可以自动创建散列索引加快数据的获取,支持热备份。

MyISAM索引特点:

  1.  不支持事务
  2. 使用表级锁,并发性差
  3. 主机宕机后,MyISAM表容易损坏,灾难恢复性不佳
  4. 可以配合锁,实现操作系统下的备份复制,迁移
  5. 只缓存索引,数据的缓存是利用操作系统缓冲区来实现的,可能引发过多系统调用且效率不佳数据紧凑存储,因此可以获得更小的索引和更快的全表扫描性能。

两种存储引擎区别:

  1. InnoDB支持事务,MyISAM不支持事务
  2. InnoDB支持外键,MyISAM不支持
  3. InnoDB不保存表行数,MyISAM只需要简单读出保存好行数即可,但当加选择条件时也需要扫描整个表
  4. 对于自增长字段,InnoDB必须包含该字段索引,但是在MyISQM中可以和其他字段组合索引
  5. 清空表时InnoDB是一行一行删除,但是MyISAM则会重新建表

总结:MyISAM不支持事务处理等高级处理,但是InnoDB支持;MyISAM强调是性能,执行速度比InnoDB快,但是不提供事务支持,但是InnoDB提供事务支持及外键等高级数据库功能。

行级锁,表级锁,页级锁区别:

表级锁:开销小,加锁快,不会出现死锁;锁定粒度大,发生冲突概率高,并发度低;

行级锁:开销大,加锁慢,会出现死锁,发生锁冲突较低,并发度也最高;

页级锁:开销和加锁时间介于表锁和行锁之间,会出现死锁;锁定粒度介于表锁和行锁之间,并发度一般

2.MySQL索引

主键索引,唯一索引,普通索引,全文索引,联合索引

3.hashMap原理

hashMap是一个键值对集合,每个节点用Node<k,v>表示,node是一个内部类,在其内部类还包含了下一元素的引用

其数据结构是数组+(链表或红黑树);原理是数组查询效率高,插入删除效率低,链表查询效率低,插入删除效率高;

hashMap存储过程:先计算其数据的hashCode值,确定将该元素放到什么位置,当不存在该hashCode值时则可以将数据直接存入,若存在则使用equals方法比较两个数据是否相同,如果相同则直接覆盖该元素,输入不同则在该节点下存储该元素。

hashMap:初始容量和加载因子

初始容量大小是创建时给数组分配的容量大小,默认值是16,用数组容量大小乘以加载因子得到一个值,一旦存储元素超过这个这就会调用rehash方法将数组增加到原来的两倍,专业术语叫扩容。

4.jdk8的新特性

Lambda表达式;Date/Time API;stream流

具体可参考:https://www.runoob.com/java/java8-new-features.html

5.springBoot的bean注入方式

注解方式注入;使用配置类注入bean对象;使用原生spring配置文件写bean对象,或者扫描包;

配置文件植入自己的值:@Value("${}");@ConfigurationProperties(preix="my")需要set方法

6.mysql事物隔离机制及特性

特性:原子性,一致性,隔离性,持久性

隔离级别:

  1. 读未提交:事务的修改,即使没有提交,对其他事务也都是可见的
  2. 读已提交:事务已提交数据,大多数数据库的默认隔离级别
  3. 可重复的:mysql默认级别,解决了脏读,保证了同一个事务多次读取记录的同样性
  4. 可串行化:事务隔离最高级别
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值