当前位置: 首页 > 编程日记 > 正文

SQL Server开发人员应聘常被问的问题妙解汇总

目前在职场中很难找到非常合格的数据库开发人员。我的一个同事曾经说过:“SQL开发是一门语言,它很容易学,但是很难掌握。”

在面试应聘的SQL Server数据库开发人员时,我运用了一套标准的基准技术问题。下面这些问题是我觉得能够真正有助于淘汰不合格应聘者的问题。它们按照从易到难的顺序排列。当您问到关于主键和外键的问题时,后面的问题都十分有难度,因为答案可能会更难解释和说明,尤其是在面试的情形下。

您能向我简要叙述一下SQL Server 2000中使用的一些数据库对象吗?

您希望听到的答案包括这样一些对象:表格、视图、用户定义的函数,以及存储过程;如果他们还能够提到像触发器这样的对象就更好了。如果应聘者不能回答这个基本的问题,那么这不是一个好兆头。

什么是索引?SQL Server 2000里有什么类型的索引?

任何有经验的数据库开发人员都应该能够很轻易地回答这个问题。一些经验不太多的开发人员能够回答这个问题,但是有些地方会说不清楚。

简单地说,索引是一个数据结构,用来快速访问数据库表格或者视图里的数据。在SQL Server里,它们有两种形式:聚集索引和非聚集索引。聚集索引在索引的叶级保存数据。这意味着不论聚集索引里有表格的哪个(或哪些)字段,这些字段都会按顺序被保存在表格。由于存在这种排序,所以每个表格只会有一个聚集索引。非聚集索引在索引的叶级有一个行标识符。这个行标识符是一个指向磁盘上数据的指针。它允许每个表格有多个非聚集索引。

NULL是什么意思?

NULL(空)这个值是数据库世界里一个非常难缠的东西,所以有不少应聘者会在这个问题上跌跟头您也不要觉得意外。

NULL这个值表示UNKNOWN(未知):它不表示“”(空字符串)。假设您的SQL Server数据库里有ANSI_NULLS,当然在默认情况下会有,对NULL这个值的任何比较都会生产一个NULL值。您不能把任何值与一个 UNKNOWN值进行比较,并在逻辑上希望获得一个答案。您必须使用IS NULL操作符。

 什么是主键?什么是外键?

主键是表格里的(一个或多个)字段,只用来定义表格里的行;主键里的值总是唯一的。外键是一个用来建立两个表格之间关系的约束。这种关系一般都涉及一个表格里的主键字段与另外一个表格(尽管可能是同一个表格)里的一系列相连的字段。那么这些相连的字段就是外键。

什么是触发器?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限制而不是其他的方式来限制域的完整性。

返回参数和OUTPUT参数之间的区别是什么?

如果应聘者能够正确地回答这个问题,那么他的机会就非常大了,因为这表明他们具有使用存储过程的经验。

返回参数总是由存储过程返回,它用来表示存储过程是成功还是失败。返回参数总是INT数据类型。

OUTPUT参数明确要求由开发人员来指定,它可以返回其他类型的数据,例如字符型和数值型的值。(可以用作输出参数的数据类型是有一些限制的。)您可以在一个存储过程里使用多个OUTPUT参数,而您只能够使用一个返回参数。

什么是相关子查询?如何使用这些查询?

经验更加丰富的开发人员将能够准确地描述这种类型的查询。

相关子查询是一种包含子查询的特殊类型的查询。查询里包含的子查询会真正请求外部查询的值,从而形成一个类似于循环的状况。

关于面试过程的思考

这些问题只不过是确定一个SQL Server数据库开发人员是否合格的起点。根据应聘者对上面这些问题的回答情况,我可能会要求他们参加我的TSQL编程考试,这一般是一套根据不同情况进行的10到12个数据库查询。

您需要自己决定将要雇用的开发人员具有什么样的专业技能。然后,需要通过自己的经验、判断以及在面试时对应聘者的感受(来做最终决定)。

您在面试数据库开发人员时一般会问哪些问题呢?让我们一起来讨论一下吧。

Tim Chapman是肯塔基州路易维尔市一家银行的SQL Server数据库管理员,他有超过7年的行业经验。他还通过了微软SQL Server 2000和SQL Server 2005的认证。

pv.aspx?id=148

转载于:https://www.cnblogs.com/BoKeRen/archive/2007/03/22/683531.html

相关文章:

little w and Soda(思维题)

链接:https://ac.nowcoder.com/acm/contest/297/A 来源:牛客网 时间限制:C/C 1秒,其他语言2秒 空间限制:C/C 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 不知道你听没听说过这样一个脑筋急…

[导入]实时数据库的经典书

有个朋友给我来了一封邮件,在邮件中,他这样写到:“国外的实时数据库来势汹汹,价格一路上扬;想当初eDNA 2003年刚到中国时也就是二、三十万左右,现在报价已经百万以前了。心里也总个一个结,难道这…

关于CSS(3)

盒子模型 盒子 盒子关系(标准文档流) 行内元素。 只可以设置左右外边距。 上下内边距会影响相邻的圆块状元素呢 垂直margin会合并(margin坍陷)元素嵌套的时候,设置子元素的上margin会被父元素抢走, 解决方案:设置父元素…

jMonkey Engine SDK3 中文乱码问题

1. 升级到了jMonkey Engine SDK 3之后出现了一些方框,乱码问题 官方推荐初学者使用jME3 SDK来开发游戏。官方下载地址为: https://github.com/jMonkeyEngine/sdk/releases 2. 问题分析和解决办法 在jME3.1.0之后SDK就有一个bug,菜单上的中文…

第四天上午 休闲假日

第四天晚上要离开沙巴,赶往吉隆坡了,所以这天的活动安排非常简单。 睡了一个舒服觉,起床吃早饭,我胃口还是不好,吃不下Magellan的美味早餐。早餐后我们来到酒店的游泳池旁休息,晒晒太阳、吹吹海风、看看风景…

expect--自动批量分发公钥脚本

1.在使用之前,先安装epel源,yum install expect -y2.写分发脚本,后缀为exp #!/usr/bin/expect set host_ip [lindex $argv 0] spawn ssh-copy-id -i /root/.ssh/id_rsa.pub $host_ip expect {-timeout 60"(yes/no)?" { send "…

java报错MalformedURLException: unknown protocol: c

java报错:MalformedURLException: unknown protocol: c 1. 报错情况: 部分代码: //打开图片path"C:/Users/MyUser/image.jpg" openPictrues(path);public void openPictures(String path,String picName) throws IOException {F…

3.commonjs模块

1.首先建一个math.js exports.add function(a, b){return a b; } exports.sub function(a, b){return a - b; } exports.mul function(a, b){return a * b; } 2.然后建一个app.js 引人math.js var math require(./math); console.log(math);//{ add: [Function], sub: [Fu…

推荐一个关于.NET平台数据结构和算法的好项目

http://www.codeplex.com/NGenerics这是一个类库,它提供了标准的.NET框架没有实现的通用的数据结构和算法。值得大家研究。转载于:https://www.cnblogs.com/didasoft/archive/2007/07/05/806758.html

JSF和Struts的区别概述

据说JSF的主要负责人就是struts的主要作者,所以二者的相似点还是有很多的。 都采用taglib来处理表示层:在jsp页面中,二者都是采用一套标记库来处理页面的表示和model层的交互。 二者都采用了bean来作为和jsp页面对应的model层。该model层保存…

This和Super关键字的对比

this和Super关键字this和Super关键字的对比Super关键字的用法如下:1. super关键字代表了父类空间的引用;2. super关键字的作用:3. super关键字调用父类构造方法要注意的事项:this关键字的用法如下:1.了解没有 this 关键…

SQL Server 2005下的分页SQL

其实基本上有三种方法:1、使用SQL Server 2005中新增的ROW_NUMBER几种写法分别如下: 1SELECTTOP20*FROM(SELECT2ROW_NUMBER() OVER(ORDERBYNamec) ASRowNumber,3*4FROM5dbo.mem_member) _myResults6WHERE7RowNumber >1000081SELECT*FROM(SELECT2ROW_N…

Oozie 配合 sqoop hive 实现数据分析输出到 mysql

文件/RDBMS -> flume/sqoop -> HDFS -> Hive -> HDFS -> Sqoop -> RDBMS 其中,本文实现了 使用 sqoop 从 RDBMS 中读取数据(非Oozie实现,具体错误将在本文最后说明)从 Hive 处理数据存储到 HDFS使用 sqoop 将 HDFS 存储到 RDBMS 中 1.…

关于eclipse的注释和反注释的快捷键

使用eclipse那么久了额,对注释和反注释的快捷键一直很模糊,现在记下来,方便查看。 注释和反注释有两种方式。如对下面这段代码片段(①)进行注释: private String value; private String count; public voi…

DNN和IBatis.Net几乎同时发布新版本

DotNetNuke发布了最新的版本4.5.0,确实让人期待了很久,据说这个版本在性能上有很大的提升。 IBatis.NET几乎在同一时间也发布了新版本DataMapper 1.6.1,也有不少的改进。 项目中使用到的这两个东西几乎同时发布新版本,振奋人心啊&…

Unity 2D物体移动

一,设置 二,脚本 1,PlayerController using System.Collections; using System.Collections.Generic; using UnityEngine;public class PlayerController : MonoBehaviour {private Rigidbody2D m_rg;public float MoveSpeed;public float J…

朱敏:40岁创业如何成就绝代明星?(五)

来源 中国企业家 东方元素是网讯内涵里不可忽视的一部分 如果有机会拜访网讯的美国总部,你会发现这是 一家带着醒目美国特色IT公司,很难说出它与其他 硅谷公司的不同。但在你视野所不能及的地方,朱敏 与苏布拉在驾驭它的方式中输入…

print、printf、println在Java中的使用

print、printf、println在Java中的使用 文章目录print、printf、println在Java中的使用一、println在JAVA中常常使用System.out.pirntf();的输出格式。二、print在JAVA中常常使用System.out.pirnt();的输出格式。三、printf在JAVA中常常使用System.out.printf();的格…

(转) SpringBoot非官方教程 | 第二篇:Spring Boot配置文件详解

springboot采纳了建立生产就绪spring应用程序的观点。 Spring Boot优先于配置的惯例,旨在让您尽快启动和运行。在一般情况下,我们不需要做太多的配置就能够让spring boot正常运行。在一些特殊的情况下,我们需要做修改一些配置,或者…

iexpress全力打造“免检”***

IExpress小档案出身:Microsoft功能:专用于制作各种 CAB 压缩与自解压缩包的工具。由于是Windows自带的程序,所以制作出来的安装包具有很好的兼容性。它可以帮助***传播者制造不被杀毒软件查杀的自解压包,而且一般情况下还可伪装成某个系统软件的补丁(如I…

java 稀疏数组和二维数组转换,并保存稀疏数组到文件后可以读取

稀疏数组和二维数组转换 稀疏数组:当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组 稀疏数组的处理方法: 记录数组一共有多少行,有多少个不同的值把具有不同值得元素的行列及值记录在…

springboot redis配置

1、引入maven依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 2、redis连接配置 spring:redis:host: 10.220.1.41port: 6379timeout: 10000passwor…

C# 根据节点索引访问XML配置文件

查了一些&#xff0c;都是根据XML属性来访问指定节点&#xff0c;我这想根据节点索引来访问XML 首先上XML样式 1 <?xml version"1.0" encoding"utf-8" ?> 2 <FeatureClasses> 3 <FeatureClass name "t_room"></Feat…

ASP.NET DEMO 14: 如何在 GridView/DataGrid 模板列中使用自动回发的 CheckBox/DropDownList

有时候希望在 GridView 模板中使用自动回发的 CheckBox &#xff08;autopostbacktrue) &#xff0c;但是 CheckBox 没有 CommandName 属性&#xff0c;因此也就无法在 GridView.RowCommand 事件中处理&#xff0c;并且如何获取当前 GridView 行信息呢&#xff1f;我们可以选择…

BI.寒号鸟请吃烧烤/意外入手“speed- dear friends vol.1”/入手“鲍家街43号”/我爱红红/我爱红红...

先说&#xff0c;昨天下午&#xff0c;在逛完西北政法的乐图后&#xff0c;辗转到了高新区&#xff0c;见到了在经典论坛认识的热情的热心的热烈的寒号鸟兄弟&#xff0c;而notus本人则感动的热泪盈眶&#xff0c;想不到在遥远的西安&#xff0c;都有人惦记着我 T_T附上我们的合…

数据结构----单链表增删改查

单链表的增删改查 一、链表&#xff08;Linked List&#xff09; 链表是有序列表&#xff0c;以节点的方式来存储的&#xff0c;链式存储&#xff1b;每个节点包含data域&#xff0c;next域&#xff1a;指向下一节点&#xff1b;链表的各个节点不一定是连续存储&#xff1b;链…

Using NUnit with Visual Studio 2005 Express Editions

允许通过Build Toolbar选择"Debug" or "Relese"设置"工具" -> "选项..." -> 选择"显示所有设置" -> "项目和解决方案" ->选择"显示高级生成配置" 在VS2k5 Express工程中使用NUnit-GUI测试&…

代理上网环境下配置TortoiseCVS

以NASA Wind World为例&#xff0c;SF上的提示如下&#xff1a; http://sourceforge.net/cvs/?group_id69528 Anonymous CVS Access This projects SourceForge.net CVS repository can be checked out through anonymous (pserver) CVS with the following instruction set.…

ucos-iii串口用信号量及环形队列中断发送,用内建消息队列中断接收

串口发送部分代码&#xff1a; //通过信号量的方法发送数据 void usart1SendData(CPU_INT08U ch) {OS_ERR err;CPU_INT08U isTheFirstCh;OSSemPend(&Usart1Sem, 0, OS_OPT_PEND_BLOCKING, NULL, &err);//阻塞型等待串口发送资源OSSemPend(&Usart1TxBufSem, 0, OS_O…

几款自用的IDEA高效插件

idea几款自用的高效小插件1、CodeGlance2、Translation3、Rainbow Brackets4、Statistic5、Markdown Navigator6、MarkDown Navigator1、CodeGlance CodeGlance是一款非常好用的代码地图插件&#xff0c;可以在代码编辑区的右侧生成一个竖向可拖动的代码缩略区&#xff0c;可以…