2016年烽火笔试题

  1 如何设计数据库

  答:存储信息的大小,每次扩容的大小,冗余

  2 几十上百万行,如何快速查询出表数据

  答:用分页存储过程

  /*

  函数名称: GetRecordFromPage

  函数功能: 获取指定页的数据

  参数说明: @tblName 包含数据的表名

  @fldName 关键字段名

  @PageSize 每页记录数

  @PageIndex 要获取的页码

  @OrderType 排序类型, 0 – 升序, 1 – 降序

  @strWhere 查询条件 (注意: 不要加 where)

  */

  CREATE PROCEDURE GetRecordFromPage

  @tblName varchar(255), — 表名

  @fldName varchar(255), — 字段名

  @PageSize int = 10, — 页尺寸

  @PageIndex int = 1, — 页码

  @OrderType bit = 0, — 设置排序类型, 非 0 值则降序

  @strWhere varchar(2000) = ” — 查询条件 (注意: 不要加 where)

  AS

  declare @strSQL varchar(6000) — 主语句

  declare @strTmp varchar(1000) — 临时变量

  declare @strOrder varchar(500) — 排序类型

  if @OrderType != 0

  begin

  set @strTmp = ‘<(select min'

  set @strOrder = ' order by [' + @fldName + '] desc'

  end

  else

  begin

  set @strTmp = '>(select max’

  set @strOrder = ‘ order by [' + @fldName +'] asc’

  end

  set @strSQL = ‘select top ‘ + str(@PageSize) + ‘ * from ['

  + @tblName + '] where [' + @fldName + ']‘ + @strTmp + ‘(['

  + @fldName + ']) from (select top ‘ + str((@PageIndex-1)*@PageSize) + ‘ ['

  + @fldName + '] from [' + @tblName + ']‘ + @strOrder + ‘) as tblTmp)’

  + @strOrder

  if @strWhere != ”

  set @strSQL = ‘select top ‘ + str(@PageSize) + ‘ * from ['

  + @tblName + '] where [' + @fldName + ']‘ + @strTmp + ‘(['

  + @fldName + ']) from (select top ‘ + str((@PageIndex-1)*@PageSize) + ‘ ['

  + @fldName + '] from [' + @tblName + '] where ‘ + @strWhere + ‘ ‘

  + @strOrder + ‘) as tblTmp) and ‘ + @strWhere + ‘ ‘ + @strOrder

  if @PageIndex = 1

  begin

  set @strTmp = ”

  if @strWhere != ”

  set @strTmp = ‘ where (‘ + @strWhere + ‘)’

  set @strSQL = ‘select top ‘ + str(@PageSize) + ‘ * from ['

  + @tblName + ']‘ + @strTmp + ‘ ‘ + @strOrder

  end

  exec (@strSQL)

  GO

  3 SQL语句左联接与内连接的区别

  答:Inner Join 逻辑运算符返回满足第一个(顶端)输入与第二个(底端)输入联接的每一行。

  Left Outer Join 逻辑运算符返回每个满足第一个(顶端)输入与第二个(底端)输入的联接的行。它还返回任何在第二个输入中没有匹配行的第一个输入中的行。第二个输入中的非匹配行作为空值返回。

  4 Asp.net如何连接数据库

  答:connection 连接数据库

  Command执行数据库SQL或存储过错命令

  DataAdapter 连接数据库,执行数据库SQL或存储过错命令,填充DataSet

  5 什么是事务?

  答:数据库事务是指作为单个逻辑工作单元执行的一系列操作。

  数据库事务的ACID属性

  事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性:

  • 原子性

  事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。通常,与某个事务关联的操作具有共同的目标,并且是相互依赖的。如果系统只执行这些操作的一个子集,则可能会破坏事务的总体目标。原子性消除了系统处理操作子集的可能性。

  • 一致性

  事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的。某些维护一致性的责任由应用程序开发人员承担,他们必须确保应用程序已强制所有已知的完整性约束。例如,当开发用于转帐的应用程序时,应避免在转帐过程中任意移动小数点。

  • 隔离性

  由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。当事务可序列化时将获得最高的隔离级别。在此级别上,从一组可并行执行的事务获得的结果与通过连续运行每个事务所获得的结果相同。由于高度隔离会限制可并行执行的事务数,所以一些应用程序降低隔离级别以换取更大的吞吐量。

  • 持久性

  事务完成之后,它对于系统的影响是永久性的。该修改即使出现致命的系统故障也将一直保持。

  DBMS的责任和我们的任务

  企业级的数据库管理系统(DBMS)都有责任提供一种保证事务的物理完整性的机制。就常用的SQL Server2000系统而言,它具备锁定设备隔离事务、记录设备保证事务持久性等机制。因此,我们不必关心数据库事务的物理完整性,而应该关注在什么情况下使用数据库事务、事务对性能的影响,如何使用事务等等。

  6 水晶报表实现的功能?如何实现?

  答:

  * 一套完整的Web报表制作解决方案,让您容易制作网络报表

  * 功能强大的工具,可将报表制作功能与Web及Windows应用程序结合

  * 可利用各种资料来源,建立简报品质的精良报告

  * 与微软Office紧密结合的报表制作功能

  * 快速的报表处理功能

  * 可弹性地传送报表

  * 与Crystal Reports商业智能产品家族完全结合

  从简单到复杂的报表,Crystal Reports 都可以协助您存取、分析、报告及分享数据,结合使用容易、具弹性、功能强大的特性,提供简报品质的完美报表。

  [功能:]

  使用各种资料来源制作报表

  享用功能强大的设计与格式设定功能

  结合具弹性的分析

  最快的报表处理能力

  灵活的报表传送作业

  可扩充的Web报表制作

  取得您所需要的功能强大、弹性高的报表制作工具,将精巧的报表的制作功能结合到您的Windows及Web应用程序。充分运用针对网站thin-wire环境设计的报表制作功能

本文已影响6827
上一篇:4399游戏2015校园招聘游戏开发类笔试题 下一篇:

相关文章推荐

|||||