软件开发面试基础题教学提纲
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件开发面试基础题
一、数据库系统
1.1:数据库基本理论
1.数据库与数据库管理系统有什么区别?
答:数据库是以某种数据模型所确定的数据结构方式来组织和存储数据的。简单来说,数据库是存放数据的仓库,数据库管理系统是用来管理数据库的。
2.是什么数据模型?
答:数据模型是对现实世界数据特征进行抽象的工具,用来描述和处理现实世界中的数据和信息。
数据模型主要由数据结构、数据操作、数据完整性规则三部分组成。数据结构描述了组成数据库的基本成分,数据操作描述了对数据结构允许执行的操作的集合,数据完整性规则描述了对数据结构所具有的约束和存储规则。
3.什么是关系数据模型?
答:关系数据模型是用二维表的方式来组织、存储和处理数据和信息的。
4.什么是记录和字段?
答:二维表中的每一行称为一条记录,描述了关系中一个具体的个体,在数据文件中是一个记录值。二维表中的每一列是一个字段,描述了关系中的一个特征。
5.什么是主键?
答:主键是指二维表中的某个列或者某几个列,它们的值能够唯一确定数据表中的一条记录。
6.什么是数据完整性规则?
答:数据完整性是指数据库中存储的数据是有意义的或者说是正确的。关系数据模型中的数据完整性规则是指对二维表的定义和操作过程要遵循的某些约束条件。
数据完整性包括:a).实体完整性,指每张数据表都必须有主键,而且表中不允许存在无主键的记录和主键值相同的记录。b).参照完整性,指一张数据表中某列的取值受另一张数据表中某列的取值范围的约束,描述了多张表之间的关联关系。C).用户定义完整性,指针对某一具体应用定义的数据库约束条件,反应某一具体应用所涉及的数据必须满足应用语义的要求。即限制属性的取值类型和范围,防止属性的值与应用语义矛盾。
7.什么是视图?
答:视图是一种虚拟的表,具有和基本表相同的功能。可以对视图进行增加、修改、查找操作,视图通常是由一个基本表或者多个基本表的行或列的子集组成。对视图的修改不影响基本表。
8.索引的作用及其优缺点?
答:索引是对数据表中一个或者多个列的值进行排序的结构。数据库的搜索引擎可以利用它加速对数据的检索。其优点是有助于更快地获取信息。缺点是降低添加、删除和更新数据的速度,同时也增减了数据库的大小。因此,只有经常查询索引列中的数据时,才需要在表中创建索引。不过在大多数情况
下,索引所带来的数据检索速度的优势大大超过了它的不足之处。如果应用程序非常频繁地更新数据,或磁盘空间有限,那么最好限制索引的数量。
9.什么是存储过程?用什么来调用存储过程?
答:存储过程是SQL语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可以由应用程序通过一个调用执行。存储过程具有很强的编程能力,在其中允许用户声明变量及定义条件执行语句。
存储过程可包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、返回单个或多个结果集及返回值。其优点主要包括:
A).允许多个模块化的设计:也就是说只需创建一次并将其存储在数据库中,以后在该程序中就可以调用多次。存储过程可由在数据库编程方面有专长的人员创建,可独立于程序源代码而独立修改。
B)执行速度更快:如果某操作需要大量SQL代码或需重复执行,存储过程将比SQL批量代码的执行要快。在创建存储过程时,数据库将对其进行分析和优化,并可在首次执行该存储过程后,直接调用存放在内存中的该存储过程。
C)减少网络流量:在B/S或者C/S结构的程序中,一个需要数百行SQL代码的操作由一条执行存储过程的单独语句即可实现,不需要在网络中发送数百行代码。
D)可使用安全机制进行控制:执行存储过程的用户必须具有一定的权限,否则无法调用存储过程。
存储过程的唯一弊端就是移植性差。如果一个项目的数据库操作全部使用存储过程,当使用的数据库服务器发生改变时,几乎所有的存储过程都要重写。
10.触发器的作用?
答:触发器是一种特殊类型的存储过程,不由用户直接调用,主要是通过事件触发而被执行。使用UPDATE、INSERT、DELETE等数据修改操作在指定表中进行数据修改时,触发器会自动执行。它可以强化约束来维护数据的完整性和一致性,以便在添加、更新或删除表中的行时保留表之间已定义的关系。可以跟踪数据库内的操作从而不允许未经许可的更新和变化。
触发器的优点:
A)触发器是自动的。表中的数据做了修改之后,触发器将立即被激活。
B)触发器可以通过数据库中的相关表进行层叠更改。例如,可以在数据表的某列上写入一个删除触发器,以使其他表中的各匹配行采取删除操作。
C)触发器可以强制限制,这些限制比用CHECK约束所定义的更复杂。与CHECK约束不同的是,触发器可以引用其他表中的列。
11.什么是数据库事务?
答:数据库事务是被绑定在一起作为一个逻辑工作单元的SQL语句分组。如果其中任何一条语句操作失败,那么整个事务操作就会失败,回滚到操作前的状态,只有全部语句都执行成功,事务才算执行成功。因此,如果要确保一组SQL语句要么都执行,那么都不执行,就需要使用数据库事务。
事务是恢复和并发控制的基本单位。它具有四个属性:原子性、一致性、隔离性、持续性。这四个属性通常称为ACID特性。
A)原子性(automicity):一个事务是一个不可分割的工作单位,事务中包括的所有操作要么都做,要么都不做。
B)一致性(consistency):事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
C)隔离性(isolation):一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能相互干扰。
D)持久性(durability):持久性也称为永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
12.什么叫做SQL注入式攻击?
答:所谓SQL注入式攻击就是攻击者把SQL命令插入到WEB表单的输入域或者提交页面请求的查询字符串中,从而执行恶意的SQL命令。在某些情况下,用户在输入域中输入的内容直接被用来构造动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。
防范SQL注入式攻击闯入并不是特别困难的一件事,只需要在利用表单输入的内容构造SQL命令之前,把所有输入内容过滤一番就可以了。过滤输入内容可以按多种方式进行。
A)替换单引号,即把所有的单独出现的单引号改成两个单引号,防止攻击者修改SQL命令的含义。