数据库常见笔试面试题

2024-05-17 13:04

1. 数据库常见笔试面试题

 数据库常见笔试面试题
                      数据库常见笔试面试题有哪些?数据库常见笔试面试会考什么?下面是数据库常见面试题总结,为大家提供参考。
    
     1、SQL的表连接方式有哪些? 
    SQL中连接按结果集分为:内连接,外连接,交叉连接
    内连接:inner join on,两表都满足的组合。内连接分为等值连接,不等连接,自然连接。
    等值连接:两表中相同的列都会出现在结果集中。
    自然连接:两表中具体相同列表的列会合并为同一列出现在结果集中。
    外连接:分为左(外)连接,右(外)连接,全连接
    左(外)连接:A left (outer) join B,以A表为基础,A表的全部数据,B表有的组合,没有的为null。
    右(外)连接:A right(outer) join B,以B表为基础,B表的全部数据,A表有的组合,没有的位null。
    全连接:A full (outer) join 两表相同的组合在一起,A表有,B表没有的数据(显示为null),同样B表有,A表没有的显示为null。
    交叉连接:cross join,就是笛卡尔乘积。
     2、三范式 
    1NF:表中的字段都是单一属性,不再可分。
    2NF:在1NF的基础上,表中所有的非主属性都必须完全依赖于任意一组候选键,不能仅依赖于候选键中的某个属性。
    3NF:在2NF的基础上,表中所有的属性都不依赖其他非主属性。
    简单的说就是:1NF表示每个属性不可分割,2NF表示非主属性不存在对主键的部分依赖,3NF表示不存在非主属性对主键的依赖传递。
     3、表的操作 
    表的创建:create table 表名 (列名1 类型 约束,列2 类型 约束…)
    表的删除: 表名
    表的更改(结构的更改,不是记录的更新):alter table 表名 add|drop 列名|约束名
    插入记录: into 表名…values…
    更新记录:表名 set 列名=值 where 条件
    删除记录: from 表名 where 条件
     4、数据的完整性 
    数据完整性指的是存储在数据库中的数据的一致性和准确性。
    完整性分类:
    (1)实体完整性:主键值必须唯一且非空。(主键约束)
    (2) 引用完整性(也叫参照完整性):外键要么为空,要么引用主表中存在的记录。(外键约束)。
    (3)用户自定义完整性:针对某一具体关系数据库中的约束条件。
     5、SQL的查询优化 
    (1)从表连接的角度优化:尽量使用内连接,因为内连接是两表都满足的行的组合,而外连接是以其中一个表的全部为基准。
    (2)尽量使用存储过程代替临时写SQL语句:因为存储过程是预先编译好的SQL语句的集合,这样可以减少编译时间。
    (3)从索引的角度优化:对那些常用的查询字段简历索引,这样查询时值进行索引扫描,不读取数据块。
    (4)还有一些常用的select优化技巧:
    (5)A.只查询那些需要访问的字段,来代替select*
    B、将过滤记录越多的where语句向前移:在一个SQL语句中,如果一个where条件过滤的数据库记录越多,定位越准确,则该where条件越应该前移。
     6、索引的作用,聚集索引与非聚集索引的区别 
    索引是一个数据库对象,使用索引,可以是数据库程序无须对整个数据进行扫描,就可以在其中找到目标数据,从而提高查找效率。索引的底层采用的是B树。
    聚集索引:根据记录的key再表中排序数据行。
    非聚集索引:独立于记录的结构,非聚集所以包含的`key,且每个键值项都有指向该简直的数据行的指针。
    聚集索引与非聚集索引的区别:
    (1)聚集索引的物理存储按索引排序,非聚集所以的物理存储不按索引排序。
    (2) 聚集索引插入,更新数据的速度比非聚集索引慢,单查询速度更快。
    (3) 聚集索引的叶级结点保存的是时间的数据项,而非聚集结点的叶级结点保存的是指向数据项的指针。
    (4)一个表只能有一个聚集索引(因为只有一种排序方式),但可以有多个非聚集索引。
     7、存储过程与函数的区别 
    (1)函数有返回值,存储过程没有返回值。
    (2) 因为存储过程没有返回值,所以不能将存储过程的执行结果赋值给变量;函数有返回值类型,调用函数时,可以将函数的执行结果赋值给变量。也就是说,函数可以在select语句中使用,而存储过程则不能。
    
  ;

数据库常见笔试面试题

2. 数据库笔试问题

有问题再追问,望采纳。
1、定义固定长度非Unicode字符型局部变量S,且长度为6的命令是declare @S char(10)。
2、表达式6!8=的值是 true,表达式(9=8)and(5<6)的值为false。
3、表达式STR(123.645,8,2)的值的 123.64。
4、表约束是SQL Server 提供的一种强制实现数据完整性的机制,包括:主键约束、外键约束、唯一键约束、检查约束、默认值约束、级联参照完整新约束
5、定义日期时间局部变量DT的命令是:declare @DT datetime。
6、实体之间的联系可以有3种:1对1、1对多和多对多。
7、表达式LEN(‘beijing’)的值是7。
8、在T-SQL中可以使用两种类型的注释字符:单行注释和多行注释。

3. 面试常问的数据库问题及答案

目前在职场中很难找到非常合格的数据库开发人员。有人说:“SQL开发是一门语言,它很容易学,但是很难掌握。” 
在面试应聘的SQL Server数据库开发人员时,我运用了一套标准的基准技术问题。下面这些问题是我觉得能够真正有助于淘汰不合格应聘者的问题。它们按照从易到难的顺序排列。当你问到关于主键和外键的问题时,后面的问题都十分有难度,因为答案可能会更难解释和说明,尤其是在面试的情形下。 
你能向我简要叙述一下SQL Server 2000中使用的一些数据库对象吗? 
你希望听到的答案包括这样一些对象:表格、视图、用户定义的函数,以及存储过程;如果他们还能够提到像触发器这样的对象就更好了。如果应聘者不能回答这个基本的问题,那么这不是一个好兆头。 
NULL是什么意思? 
NULL(空)这个值是数据库世界里一个非常难缠的东西,所以有不少应聘者会在这个问题上跌跟头您也不要觉得意外。 
NULL这个值表示UNKNOWN(未知):它不表示“”(空字符串)。假设您的SQL Server数据库里有ANSI_NULLS,当然在默认情况下会有,对NULL这个值的任何比较都会生产一个NULL值。您不能把任何值与一个 UNKNOWN值进行比较,并在逻辑上希望获得一个答案。您必须使用IS NULL操作符。 
  
什么是索引?SQL Server 2000里有什么类型的索引? 
任何有经验的数据库开发人员都应该能够很轻易地回答这个问题。一些经验不太多的开发人员能够回答这个问题,但是有些地方会说不清楚。 
简单地说,索引是一个数据结构,用来快速访问数据库表格或者视图里的数据。在SQL Server里,它们有两种形式:聚集索引和非聚集索引。聚集索引在索引的叶级保存数据。这意味着不论聚集索引里有表格的哪个(或哪些)字段,这些字段都会按顺序被保存在表格。由于存在这种排序,所以每个表格只会有一个聚集索引。非聚集索引在索引的叶级有一个行标识符。这个行标识符是一个指向磁盘上数据的指针。它允许每个表格有多个非聚集索引。 
什么是主键?什么是外键? 
主键是表格里的(一个或多个)字段,只用来定义表格里的行;主键里的值总是唯一的。外键是一个用来建立两个表格之间关系的约束。这种关系一般都涉及一个表格里的主键字段与另外一个表格(尽管可能是同一个表格)里的一系列相连的字段。那么这些相连的字段就是外键。 
什么是触发器?SQL Server 2000有什么不同类型的触发器? 
让未来的数据库开发人员知道可用的触发器类型以及如何实现它们是非常有益的
 
触发器是一种专用类型的存储过程,它被捆绑到SQL Server 2000的表格或者视图上。在SQL Server 2000里,有INSTEAD-OF和AFTER两种触发器。INSTEAD-OF触发器是替代数据操控语言(Data Manipulation Language,DML)语句对表格执行语句的存储过程。例如,如果我有一个用于TableA的INSTEAD-OF-UPDATE触发器,同时对这个表格执行一个更新语句,那么INSTEAD-OF-UPDATE触发器里的代码会执行,而不是我执行的更新语句则不会执行操作。 
AFTER触发器要在DML语句在数据库里使用之后才执行。这些类型的触发器对于监视发生在数据库表格里的数据变化十分好用。 
您如何确一个带有名为Fld1字段的TableB表格里只具有Fld1字段里的那些值,而这些值同时在名为TableA的表格的Fld1字段里? 
这个与关系相关的问题有两个可能的答案。第一个答案(而且是您希望听到的答案)是使用外键限制。外键限制用来维护引用的完整性。它被用来确保表格里的字段只保存有已经在不同的(或者相同的)表格里的另一个字段里定义了的值。这个字段就是候选键(通常是另外一个表格的主键)。 
另外一种答案是触发器。触发器可以被用来保证以另外一种方式实现与限制相同的作用,但是它非常难设置与维护,而且性能一般都很糟糕。由于这个原因,微软建议开发人员使用外键限制而不是触发器来维护引用的完整性。 
对一个投入使用的在线事务处理表格有过多索引需要有什么样的性能考虑? 
你正在寻找进行与数据操控有关的应聘人员。对一个表格的索引越多,数据库引擎用来更新、插入或者删除数据所需要的时间就越多,因为在数据操控发生的时候索引也必须要维护。 
你可以用什么来确保表格里的字段只接受特定范围里的值? 
这个问题可以用多种方式来回答,但是只有一个答案是“好”答案。您希望听到的回答是Check限制,它在数据库表格里被定义,用来限制输入该列的值。 
触发器也可以被用来限制数据库表格里的字段能够接受的值,但是这种办法要求触发器在表格里被定义,这可能会在某些情况下影响到性能。因此,微软建议使用Check限制而不是其他的方式来限制域的完整性。 
如果应聘者能够正确地回答这个问题,那么他的机会就非常大了,因为这表明他们具有使用存储过程的经验。 
返回参数总是由存储过程返回,它用来表示存储过程是成功还是失败。返回参数总是INT数据类型。 
OUTPUT参数明确要求由开发人员来指定,它可以返回其他类型的数据,例如字符型和数值型的值。(可以用作输出参数的数据类型是有一些限制的。)您可以在一个存储过程里使用多个OUTPUT参数,而您只能够使用一个返回参数。 
什么是相关子查询?如何使用这些查询? 
经验更加丰富的开发人员将能够准确地描述这种类型的查询。 
相关子查询是一种包含子查询的特殊类型的查询。查询里包含的子查询会真正请求外部查询的值,从而形成一个类似于循环的状况。

面试常问的数据库问题及答案

4. 数据库试题(求答案)

13.B
14.B
D
4.C
5.B
6.C
8.D
11.A
12.B
13.B

5. 经典数据结构笔试题和面试题答案及答案分享

分享:典型的数据结构笔试题。
 
  1. 线性表的顺序存储结构是一种 的存储结构,而链式存储结构是一种___的存储结构。
 
  A.随机存取 B.索引存取 C.顺序存取 D.散列存取
 
  2. 线性表若采用链式存储结构时,要求内存中可用存储单元的地址___。
 
  A. 必须是连续的 B. 部分地址必须是连续的
 
  C. 一定是不连续的 D. 连续或不连续都可以
 
  3. 在一个单链表中p所指结点之前插入一个s (值为e)所指结点时,可执行如下操作:
 
  q=head;
 
  while (q->next!=p) q=q->next;
 
  s= new Node; s->data=e;
 
  q->next= ; //填空
 
  s->next= ; //填空
 
  4. 在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入s结点,则执行____。
 
  A. s->next=p->next; p->next=s; B. p->next=s->next; s->next=p;
 
  C. q->next=s; s->next=p; D. p->next=s; s->next=q;
 
  5. 在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行____。
 
  A. s->next=p; p->next=s; B. s->next=p->next; p->next=s;
 
  C. s->next=p->next; p=s; C. p->next=s; s->next=p;
 
  6. 在一个单链表中,若删除p所指结点的后续结点,则执行____。
 
  A. p->next= p->next->next; B. p= p->next; p->next= p->next->next;
 
  C. p->next= p->next; D. p= p->next->next;
 
  7. 链表不具备的特点是 ____ 。
 
  A 可随机访问任何一个元素 B 插入、删除操作不需要移动元素
 
  C 无需事先估计存储空间大小 D 所需存储空间与线性表长度成正比
 
  8. 在一个长度为n的顺序表中删除第i个元素,要移动 个元素。如果要在第i个元素前插入一个元素,要后移( )个元素。 N-I N-I+1
 
  9. 以下关于线性表的说法不正确的是 。
 
  A 线性表中的数据元素可以是数字、字符、记录等不同类型。
 
  B 线性表中包含的数据元素个数不是任意的。
 
  C 线性表中的每个结点都有且只有一个直接前趋和直接后继。
 
  D 存在这样的线性表:表中各结点都没有直接前趋和直接后继。
 
  答案
 
  1.A/C(这题是考察对概念的理解,可参考第7题,“顺序表才能随即存取,而链表不可以”)
 
  2.D
 
  3.q->next=s;
 
  s->next=p;
 
  4.C
 
  5.B
 
  6.A
 
  7.A(此题绝对选A,因为链表只能根据他的前一个结点才能找到下一个结点,不具备随即访问元素的功能)
 
  8.n-i; n-i+1
 
  9.C
 
 相关文章推荐:
 
 建设银行笔试考什么(笔试真题)
 
 索尼招聘笔试真题分享

经典数据结构笔试题和面试题答案及答案分享

6. 数据仓库面试题

一般数据仓库面试会面两轮,第一轮一般是sql技术面,第二轮就是 维度建模 和 数据治理 的问题。
  
  一轮技术面(待补充): 
  
 1、数据倾斜:
  
 数据倾斜一般产生的原因是数据在map端hash分配到reduce端时,某一个key的数量远大于其他的key,导致某一个reduce的处理时间较长。
  
 1)key分布不均匀 
  2)数据本身就是如此
  3)数据关联时没有把握好关联键
  
 解决方案
  
 1)参数调整:hive.map.aggr = true;hive.groupby.skewindata=true;
   当存在数据倾斜时开启负载均衡,此时会生成两个MapReduce任务,第一个MR任务会将map端产生的key随机的分配到reduce,先进行一次聚合,第二个MR任务会将第一个任务的预处理结果作为输入,将相同的key分配到同一个reduce当中。
  2)sql调整:在处理大量空值导致数据倾斜的情况下,可以先将空值附一个特殊值去处理,比如给一个随机数加字符串的方式,因为空值数据是关联不上的,不会影响后期处理。
  
 2、order by,sort by,cluster by,distribute by的区别
  
 1)order by是全局排序,排序过程在一个reduce中进行,在数据量较大时就会很慢
  2)sort by是局部排序,排序结果在同一个reduce中使有序的
  3)distribute by是将数据按照字段划分到一个reduce中,一般与sort by连用进行分组排序的作用
  4)cluster by除具有distribute by功能外还具有sort by的功能
  
 order by优化(阿里面试):
  1)开启严格模式,order by之后添加limit子句
  2)利用sort by,在每个reduce中先排序取出top项,再把预处理结果order by输出
  
 3、hive中内部表和外部表的区别
  
 1)在创建表的时候,内部表是将数据移动到数据仓库指向的路径,外部表仅记录数据所在的路径,不对数据的位置做任何改变。
  2)在删除表的时候,内部表会将元数据和数据都删除,外部表只删除元数据。
  
 4、列转行、行转列
  
 1)列转行:lateral view explode(split('column_name',','))作为一个新表
  2)行转列:concat_ws(',',collect_set(column_name))
  
 5、mapreduce运行原理
                                          
 6、数据仓库分层原理(阿里面试)
  
 7、维度建模中三种事实表的应用场景(阿里面试)
  
  二轮面试(待补充)

7. Oracle数据库的面试题目及答案

 Oracle数据库的面试题目及答案
                      基础题目:
    
    1. 比较truncate和 命令
    解答:两者都可以用来删除表中所有的记录。区别在于:truncate是DDL操作,它移动HWK,不需要 rollback segment .
    而Delete是DML操作, 需要rollback segment 且花费较长时间.
    【相同点
    truncate和不带where子句的, 以及drop都会删除表内的数据
    不同点:
    1. truncate和 只删除数据不删除表的结构(定义)
    drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的.存储过程/函数将保留,
    但是变为invalid状态.
    2.语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发.
    truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger.
    3.语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动
    显然drop语句将表所占用的空间全部释放
    truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse storage; truncate会将高水线复位(回到最开始).
    4.速度,一般来说: drop>; truncate >;
    5.安全性:小心使用drop 和truncate,尤其没有备份的时候.否则哭都来不及
    使用上,想删除部分数据行用,注意带上where子句. 回滚段要足够大.
    想删除表,当然用drop
    想保留表而将所有数据删除. 如果和事务无关,用truncate即可. 如果和事务有关,或者想触发trigger,还是用.
    如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据
    】
    2.Oracle中,需要在查询语句中把空值(NULL)输出为0,如何处理?
    答案:nvl(字段,0).
    nvl( ) 函数
    从两个表达式返回一个非 null 值。
    语法
    NVL(eExpression1, eExpression2)
    参数
    eExpression1, eExpression2
    如果 eExpression1 的计算结果为 null 值,则 NVL( ) 返回 eExpression2。如果 eExpression1 的计算结果不是 null 值,
    则返回 eExpression1。eExpression1 和 eExpression2 可以是任意一种数据类型。如果 eExpression1 与 eExpression2
    的结果皆为 null 值,则 NVL( ) 返回 .NULL.。
    返回值类型
    字符型、日期型、日期时间型、数值型、货币型、逻辑型或 null 值
    说明
    在不支持 null 值或 null 值无关紧要的情况下,可以使用 NVL( ) 来移去计算或操作中的 null 值。
    select nvl(a.name,空得) as name from student a join school b on a.ID=b.ID
    注意:两个参数得类型要匹配
    3.Oracle中char和varchar2数据类型有什么区别?有数据”test”分别存放到10)和varchar2(10)类型的字段中,
    其存储长度及类型有何区别?
    答案:
    区别: 1).CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串“test",对于CHAR (10),
    
  ;

Oracle数据库的面试题目及答案

8. 求数据库题目答案

81. 对于分布式数据库,可以简单归纳为 (  A   )  
 A.数据逻辑上分散,物理上统一       B.数据物理上分散,逻辑上统一   
 C.数据在逻辑上、物理上都是分散的   D.数据在逻辑上、物理上都是统一的  
82. 子模式DDL用来描述 (  A   )
A. 数据库的总体逻辑结构B. 数据库的局部逻辑结构
C. 数据库的物理存储结构D. 数据库的概念结构
83. 在DBS中,DBMS和OS之间的关系是 (  B   )
A. 相互调用				B. DBMS调用OS
C. OS调用DBMS			D. 并发运行
84.在关系R与关系S进行自然连接时,只把R中原该舍弃的元组保存到新关系中,这种操作称为 (    C    ) 
 A.外连接      B.内连接      C.左外连接      D.右外连接  
85.在SQL中使用FOREIGN KEY 时,与之配合的语句是 ( D       )  
 A.EXISTS        B.EXCEPT        C.TABLE         D.REFERENCES  
86. 在数据库设计中,将ER图转换成关系数据模型的过程属于 ( C    )
A. 需求分析阶段		B. 逻辑设计阶段		C. 概念设计阶段		D. 物理设计阶段
87.定义片段以及全局关系与片段之间映像的模式是 (  D       )  
 A.外模式       B. 概念模式         C.分片模式         D.分配模式  
88.在数据库技术中,未提交的随后又被撤消的数据称为 (   D     ) 	
 A.错误数据    B.冗余数据    C.过期数据    D.脏数据 
89.下述各项中,属于数据库系统的特点的是 (   C     )   
 A.存储量大       B.存取速度快      C.数据独立性     D.操作方便 
91. SQL的全局约束是指基于元组的检查子句和 (B     )
A. 非空值约束			B. 域约束子句
C. 断言					D. 外键子句
92. 分布式数据库系统中分片模式和分配模式均是 (  C   )
A. 全局的				B. 局部的
C. 分布的				D. 集中的
93.在数据库系统中,视图可以提供数据的( A  )
A.完整性   	B.并发性    C.安全性      	D.可恢复性
94.在分布式数据库中,数据的垂直分片是对全局关系的(  B )
A.选择操作         		B.投影操作
C.自然联接操作     		D.半联接操作
95. 在关系数据库中,表与表之间的联系是通过(     D  )实现的。 
A.实体完整性规则        B.参照完整性规则 
C.用户自定义的完整性规则    D.主键 
96. 以下操作中,不能用DML实现的是 (   B     ) 
A.数据查询           B.定义数据库的三级结构 
C.数据插入           D.数据删除 
97. 如果关系R和S进行自然连接时,只把S中原该舍弃的元组保存到新关系中,这种操作称为 (    D    ) 
A.外连接    B.内联接      C.左连接     D.右外连接 
98. 在关系中,能唯一标识组的属性集称为关系模式的 (   B     )  
 A.候选键         B.主键        C.外键        D.超键 
99. 能够消除多值依赖引起的冗余的范式是 (      C  )  
 A.2NF   B.3NF   C.4NF   D.BCNF  
100.在面向对象的模型中,表示实体中的每个属性时,使用 (    A     ) 
 A.两个变量,一个消息             B.两个变量,两个消息  
 C.一个变量,两个消息             D.一个变量,一个消息

老长时间不看了 不干保证全队…………