Java面试题---第二阶段

1.MySQL的三大范式?

第一范式:强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项。 第二范式:要求非主属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性。 第三范式:任何非主属性不依赖于其它非主属性。

2.MySQL中group by和having的作用?

group by 是分组,having是过滤,一般是一起使用,,表示分组之后再过滤。

3.MySQL的内连接和外连接的区别?

  • 内连接:取出连接表中匹配到的数据,匹配不到的不保留

  • 外连接:取出连接表中匹配到的数据,匹配不到的也会保留,其值为NULL

4.说一下数据库的事务隔离?

读未提交,最低隔离级别、可以读取到其他事务未提交的数据。(会出现幻读、脏读、不可重复读)。 读已提交,一个事务只能读取到其他事务提交后的数据。(会造成幻读、不可重复读)。 可重复读,默认级别,保证多次读取同一个数据时,其值都和事务开始时候的内容是一致,(会造成幻读)。mysql默认级别是可重复读,orecle的默认级别是读已提交。 序列化,代价最高最可靠的隔离级别,效率最低。该隔离级别能防止脏读、不可重复读、幻读。

事务并发问题:

更新丢失:两事务同时对同一数据进行修改,后面的事务会覆盖前面事务的修改。

脏读 :表示一个事务能够读取另一个事务中还未提交的数据。

不可重复读 :是指在一个事务内,多次读同一数据,第二次和第一次读取到的数据不一致。(修改,删除)

幻读 :事务a在事务中读取2次数据,第二次读取到的数据与第一次不一致。(新增)

5.get和post方法的区别?

get在浏览器回退时是无害的,但是post会再次提交请求。 get请求会被浏览器主动缓存,但是post不会,除非手动设置。 get请求只能进行URL编码,但是post支持多种编码方式。 get请求的参数会保存在浏览器的历史记录中。 get请求在URL中传送的参数是有长度限制的,但是post没有。 get比post更加不安全,因为传送的参数直接暴露在URL上,所以不能来传送敏感信息。 get参数通过URL传送,但是post是放在request body里面的。

6.forward 和 redirect 的区别?

Forward和Redirect代表了两种请求转发方式:转发和重定向。

你可能感兴趣的:(数据库,mysql,java)