• Java面试题(三)数据库


      博主马上要面对几家公司的面试,故自己准备了点面试题,仅供参考!

    1,三范式?
    答:每个属性都不可再分,属性完全依赖于主键,第三范式就是属性不依赖于其它非主属性。
    2,如何理解超键、候选键、主键、外键的含义?
    超键有无关属性,主键是唯一且不能再分,外键是主键的引用,主键是在候选键中产生的
    3,什么是存储过程?有哪些优缺点?
    存储过程是一个预编译的有名称的代码块。
    优点:执行效率比较高,降低网络通信量,提高通信速率,一定程度上确保数据安全
    缺点:开发过程中维护有一定难度。
    4,存储过程和函数区别?
    存储过程相当于业务层。函数相当于dao层。业务层中可以调用多个dao,那么在存储过程的代码中可以调用
    多个函数,函数都是有返回值的。
    5,索引是什么(可以理解为字典的索引)?有什么作用以及优缺点?
    索引是对数据库表中一或多个列的值进行排序的结构,是帮助SQL高效获取数据的数据结构。
    MySQL数据库几个基本的索引类型:普通索引、唯一索引、主键索引、全文索引
    好处就是提高速度。缺点就是需要占物理和数据空间
    6,什么是事务?
    事务(Transaction)是并发控制的基本单位。
    事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。

    7,事务的四大特性?ACID
    原子性(Atomicity)[同时成功或失败],一致性(Consistency)[数据守恒],
    隔离性(Isolation)[并发],持久性(Durability)[commit一旦提交不能再回滚]

    8,隔离级别有哪几种?
    ① Serializable (串行化):可避免脏读、不可重复读、幻读的发生。
    ② Repeatable read (可重复读):可避免脏读、不可重复读的发生。
    ③ Read committed (读已提交):可避免脏读的发生。
    ④ Read uncommitted (读未提交):最低级别,任何情况都无法保证。
    最高的是Serializable级别,最低的是Read uncommitted级别,当然级别越高,执行效率就越低
    9,MySQL数据库中默认的隔离级别?
    答:为Repeatable read (可重复读)
    10,oracle的隔离级别有几种?
    答:2种 。
    Oracle只支持Serializable (串行化)级别和Read committed (读已提交)这两种级别,
    其中默认的为Read committed级别
    11,乐观锁和悲观销
    乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。
    悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作
    乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性
    12,使用索引查询一定能提高查询的性能吗?为什么
    索引需要空间来存储,也需要定期维护, 每当有记录在表中增减或索引列被修改时,
    索引本身也会被修改. 这意味着每条记录的INSERT,DELETE,UPDATE将为此多付出4,5 次的磁盘I/O.
    因为索引需要额外的存储空间和处理,那些不必要的索引反而会使查询反应时间变慢.
    使用索引查询不一定能提高查询性能
    13,简单说一说drop、delete与truncate的区别
    truncate 和 delete 只删除数据不删除表的结构(定义)
    drop 语句将删除表的结构被依赖的约束(constrain)、触发器(trigger)、索引(index);
    依赖于该表的存储过程/函数将保留,但是变为 invalid 状态。

    14,DML、DDL、DCL的区别?
    DML(data manipulation language)数据操纵语言:
      就是我们最经常用到的 SELECT、UPDATE、INSERT、DELETE。 主要用来对数据库的数据进行一些操作
    DDL(data definition language)数据库定义语言:
      其实就是我们在创建表的时候用到的一些sql,比如说:CREATE、ALTER、DROP等。
        DDL主要是用在定义或改变表的结构,数据类型,表之间的链接和约束等初始化工作上
    DCL(Data Control Language)数据库控制语言:
      是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。
    15,什么是视图?以及视图的使用场景有哪些?
    视图是一种虚拟的表,对视图的修改不影响基本表,
    (只暴露部分字段给访问者,所以就建一个虚表,就是视图。
    查询的数据来源于不同的表,而查询者希望以统一的方式查询,
    这样也可以建立一个视图,把多个表查询结果联合起来,查询者只需要直接从视图中获取数据,
    不必考虑数据来源于不同表所带来的差异)
  • 相关阅读:
    -webkit-margin-before 及 扩展浏览器前缀、内核
    vue封装分页组件
    vue项目中使用qrcode生成二维码
    git中全局设置用户名、邮箱
    promise.all 解说
    超详细弹性盒子布局
    js对象转数组
    js取整数、取余数的方法
    数组方法大全
    Vue绑定class
  • 原文地址:https://www.cnblogs.com/lovejoying/p/9600458.html
Copyright © 2020-2023  润新知