`
suiliangxiang
  • 浏览: 69395 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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的认证。

<!---->
<!---->
<!---->

文章出出:http://www.sqlwhy.com/t_sql/t_sqltips/2009-05-15/87.html

分享到:
评论

相关推荐

    SQL 面试题汇总____

    SQL面试题常常考察应聘者对数据库操作的熟练程度和解决问题的能力。以下是对这些题目中涉及的知识点的详细解析: 1. **子查询与聚合函数**: - 第一种方法使用了自连接和GROUP BY,通过将当前年份与之前的所有年份...

    100家大公司java笔试题汇总.pdf

    Applet是一种允许在Web页面中运行的Java小程序,不过在现代Web开发中已不常使用。 对于Servlet生命周期的考察,题目涉及到Servlet生命周期中各阶段的方法调用情况,比如init()方法、service()方法和destroy()方法。...

    MF00040-教育机构官网+教务管理系统源码.zip

     1、开发环境为Visual Studio 2015,数据库为SqlServer2005,使用.net 2.0开发。  2、数据库文件在Manage目录下(SQL SERVER2005/2008 新建Education数据库,然后执行 Education.sql里面的全部语句,表和数据就...

    面试题目收集_上海最新

    本文档汇总了上海地区部分企业针对IT岗位特别是Java开发岗位的面试题目。这些题目涵盖了自我介绍、技术细节询问、编程实践等多个方面,旨在帮助求职者更好地准备面试。 #### 自我介绍及相关背景问题 - **目的**:...

    员工招聘系统数据库试验报告.doc

    实现技术上,采用Power Designer生成SQL Server 2000代码,后台数据库为SQL Server 2000,业务流程和数据流程图则利用Microsoft Office Visio 2003设计。 2. 需求分析 2.1 业务流程分析 招聘计划审核流程包括用人...

    互联网求职信汇总八篇.docx

    - **数据库管理**:具备MySQL、SQL Server等数据库管理和优化的能力。 - **项目管理**:拥有良好的项目管理能力,包括需求分析、进度控制、质量保证等方面。 #### 三、软技能展现 - **沟通能力**:良好的沟通技巧...

    java和.net面试题汇总

    3. 强项和优势应与应聘职位相关,比如编程能力、团队协作或解决问题的能力。 4. 对加班的看法应表现出敬业精神,同时表达对工作生活平衡的理解。 5. 出差和做其他工作的态度展示灵活性和适应性。 6. 期望薪金应合理...

    数据库个常见笔试面试题汇总

    - **RDBMS(关系型数据库管理系统)**:如MySQL、Oracle、SQL Server等,它们基于关系模型,以表格形式存储数据。 - **ACID(原子性、一致性、隔离性、持久性)**:确保事务处理的正确性。 - **范式理论**:第一...

    计算机教师招聘试题(汇总集合版).doc

    - **数据库管理系统**:SQL Server、MySQL等。 - **数据表设计**:字段类型选择、索引建立等。 - **查询操作**:SELECT语句的使用。 - **性能分析**:数据库性能评估方法、优化策略。 #### 三、技能测试要点 - **...

    IT公司面试大全(收集)

    在IT行业的面试中,无论是应聘开发、测试、分析还是管理岗位,都需要对一系列技术知识有深入的理解。"IT公司面试大全(收集)"这个资源很可能包含了大量的面试问题和解答,帮助求职者准备即将到来的面试挑战。这篇...

    va软件工程师工作简历模板.doc

    在数据库方面,他们有Oracle和SQL Server的开发经验,并能熟练使用SQL进行数据操作。此外,他们还掌握了CVS(Concurrent Versions System)版本控制系统,用于团队协作开发。 【语言能力】部分提到,工程师的普通话...

    WEB工程师个人简历表.doc

    - 2004年主要教授VB.NET、SQL Server开发、Windows 2000安装实训。 - 2005年主要教授Oracle数据库管理、Java程序设计、JSP程序设计等课程,编制课件,带领学生进行Oracle安装、Java和JSP程序设计实训。 - 2006年...

    【源码编号 : MF00040】教育机构官网+教务管理系统源码+微信公众号源码

    一、源码介绍: 使用主流样式。包含官方首页、关于机构、机构风采、机构课堂、在线报名(与教务系统后台配合使用)、招聘专区(与... 1、开发环境为Visual Studio 2015,数据库为SqlServer2005,使用.net 2.0开发。

    人力资源管理系统说明书

    本文将详细阐述一个基于myEclipse 6.0.1开发,使用SQL Server 2000作为数据库,采用B/S架构并运行在Tomcat服务器上的人力资源管理系统的设计与功能。该系统由开发团队Rambo的成员曾嵘和王辉共同设计,旨在满足用户对...

    人才招聘系统

    在2007年的课程设计中,学生可能使用当时的主流编程语言(如Java、C#或PHP)进行开发,结合数据库技术(如MySQL或SQL Server)存储数据,利用HTML、CSS和JavaScript构建前端界面。此外,可能还需要学习如何设计...

    java面试集锦

    3. **代码与编程题**:"代码与编程题.pdf"可能包含实际编程问题,测试应聘者的解决问题能力和代码编写能力,例如递归、算法、数据结构(如栈、队列、树和图)等。 4. **线程编程**:Java是多线程的语言,理解线程的...

    PHP笔试题目汇总 提高您的面试成功率

    6. 解决多线程同时读写文件问题的函数示例: 答: 使用文件锁来防止并发访问冲突: ```php function writefile($filename, $data, $method = "rb+", $iflock = 1) { touch($filename); $handle = fopen($...

Global site tag (gtag.js) - Google Analytics