.NET程序员的数据库面试题


Posted in 面试题 onOctober 10, 2012
Q1:维护数据库的完整性、一致性、你喜欢用触发器还是自写业务逻辑?为什么
答:尽可能用约束(包括CHECK、主键、唯一键、外键、非空字段)实现,这种方式的效率最好;其次用触发器,这种方式可以保证无论何种业务系统访问数据库都能维持数据库的完整性、一致性;最后再考虑用自写业务逻辑实现,但这种方式效率最低、编程最复杂,当为下下之策。

Q2:ADO。NET相对于ADO等主要有什么改进?
答:我个人认为,ADO.NET与ADO相比,优势在于提供了数据集和数据适配器,有利于实现分布式处理,降低了对数据库服务器资源的消耗

Q3:ASP。NET与ASP相比,主要有哪些进步?
答:如果一定要说ASP.NET比ASP进步,还是有的:在形式上实现了面向对象编程;预编译的服务器端代码;更好的安全机制(那些ASPX文件的后台代码是以另外一个帐号运行的,与启动IIS的帐号不相同)等。
Q4:C#中的委托是什么?事件是不是一种委托?
答:委托本质上是一种“方法接口”,它相当于C/C 中的函数指针,当然它比函数指针安全,在C#中通常用于事件处理。与JAVA相比,可以避免使用大量小粒度的匿名类。

事件不是委托,不过由于事件的性质决定了处理它的程序逻辑能访问的参数,因此,在C#中处理事件的逻辑都包装为委托(一种“方法接口”)。实际上,如果你处理自定义的事件,就像JAVA中那样用接口实现也是可以的,不过这么做在C#一般没有什么特别的好处。

Q5.您要创建一个显示公司员工列表的应用程序。您使用一个DataGrid控件显示员工的列表。您打算修改这个控件以便在这个Grid的Footer显示员工合计数。请问您应该怎么做?( C? )

A.重写OnPreRender事件,当Grid的Footer行被创建时显示合计数。
B.重写OnItemCreated事件,当Grid的Footer行被创建时显示合计数。
C.重写OnItemDataBound事件,当Grid的Footer行被创建时显示合计数。
D. 重写OnLayout事件,当Grid的Footer行被创建时显示合计数。

Q6.您要创建ASP.NET应用程序用于运行AllWin公司内部的Web站点,这个应用程序包含了50个页面。您想要配置这个应用程序以便当发生一个HTTP代码错误时它可以显示一个自定义的错误页面给用户。您想要花最小的代价完成这些目标,您应该怎么做?(多选)( CD )
A.在这个应用程序的Global.asax文件中创建一个Application_Error过程去处理ASP.NET代码错误。
B.在这个应用程序的Web.config文件中创建一个applicationError节去处理ASP.NET代码错误。
C.在这个应用程序的Global.asax文件中创建一个CustomErrors事件去处理HTTP错误。
D.在这个应用程序的Web.config文件中创建一个CustomErrors节去处理HTTP错误。
E.在这个应用程序的每一页中添加一个Page指示符去处理ASP.NET 代码错误。
F. 在这个应用程序的每一页中添加一个Page指示符去处理ASP.NET HTTP错误。

Q7.您的公司有一个DB Server,名为AllWin,其上装了MS SQLSERVER 2000。现在需要您写一个数据库连接字符串,用以连接AllWin上SQL SERVER中的一个名为PubBase实例的Test库。请问,应该选择下面哪一个字符串?( B )
A. “Server=AllWin;Data Source=PubBase;Initial Catalog=Test;Integrated Security=SSPI”
B. “Server= AllWin;Data Source=PubBase;Database=Test;Integrated Security= SSPI”
C. “Data Source= AllWin \PubBase;Initial Category=PubBase;Integrated Security= SSPI”
D. “Data Source= AllWin \ PubBase;Database=Test;Integrated Security= SSPI”

Q8. 您为AllWin公司创建了一个ASP.NET应用程序。这个应用程序调用一个 Xml Web Service。这个 Xml Web Service 将返回一个包含了公司雇员列表的DataSet对象。请问您该如何在这个程序中使用这个 Xml Web Service?( ? )
A.在“引用”对话框的.Net标签中选择 System.Web.Services.dll。
B.在“Web引用”对话框中输入这个 XML Web service 的地址。
C.在您的 Global.asax.cs 中添加一条 using 语句并指定这个 XML Web service 的地址。
D.在您的 Global.asax.cs 中写一个事件处理器导入这个 Xml Web Service 相应的 .wsdl 和 .disco 文件。

Q9. 您要创建一个ASP.NET应用程序在DataGrid控件中显示一个经过排序的列表。产品数据被存放于一个名为PubBase的Microsoft SQL Server 数据库。每个产品的主键是ProductID,Numeric型并且每个产品有一个字母描述字段,名为ProductName。您使用一个 SqlDataAdapter对象和一个SqlCommand对象通过调用一个存储过程从数据库中获取产品数据。您将SqlCommand对象的 CommandType属性设置为CommandType.StoredProcedure,并将它的CommandText属性设置为 procProductList。您成功的获取了一个DataTable对象,其中是已经按ProductID降序排列的产品列表。您打算显示以相反的字母顺序排列的ProductName,请问该怎么做? ( B )
A. 将SqlCommand对象的CommandType属性修改为CommandType.Text,将CommandText属性修改为”SELECT * FROM procProductList ORDER BY ProductName DESC”。然后将这个DataTable对象绑定到DataGrid控件。
B. 创建一个基于这个DataTable对象的新的DataView并将这个DataView的Sort属性设置为“ProductName DESC”。然后将这个DataView对象绑定到DataGrid控件。
C. 将DataGrid控件的AllowSorting属性设置为True,并将DataGridColumn的SortExpression属性设置为 “ProductName DESC”.以显示ProductName。然后将这个DataTable对象绑定到DataGrid控件。
D. 将DataTable对象的DisplayExpression属性设置为 “ORDER BY ProductName DESC”.。然后将这个DataTable对象绑定到DataGrid控件。

Q10.C#代码实现,确保windows程序只有一个实例(instance)
///
///应用程序的主入口点。
///
[STAThread]
staticvoid Main()
{
//防止程序多次运行
if(!OneInstance.IsFirst(“GetPayInfo”))
{
MessageBox.Show (“警告:程序正在运行中! 请不要重复打开程序!可在右下角系统栏找到!”,”程序错误提示:”,MessageBoxButtons.OK,MessageBoxIcon.Stop);
return;
}
Application.Run(new Form1());
}
// ******************* 防止程序多次执行 **************************
publicabstractclass OneInstance
{
///
///判断程序是否正在运行
///
/// ///如果程序是第一次运行返回True,否则返回False
publicstaticbool IsFirst(string appId)
{
bool ret=false;
if(OpenMutex(0x1F0001,0,appId)==IntPtr.Zero)
{
CreateMutex(IntPtr.Zero,0,appId);
ret=true;
}
return ret;
}
[DllImport("Kernel32.dll",CharSet=CharSet.Auto)]
privatestaticextern IntPtr OpenMutex(
uint dwDesiredAccess, // access
int bInheritHandle, // inheritance option
string lpName // object name
);

[DllImport("Kernel32.dll",CharSet=CharSet.Auto)]
privatestaticextern IntPtr CreateMutex(
IntPtr lpMutexAttributes, // SD
int bInitialOwner, // initial owner
string lpName // object name
);
}

Q11. 简述 private、 protected、 public、 internal 修饰符的访问权限。
private : 私有成员, 在类的内部才可以访问。protected : 保护成员,该类内部和继承类中可以访问。public : 公共成员,完全公开,没有访问限制。internal: 在同一命名空间内可以访问。

Q12. 写出一条Sql语句: 取出表A中第31到第40记录(SQLServer, 以自动增长的ID作为主键, 注意:ID可能不是连续的。)
select top 10 * from A where id not in (select top 30 id from A)
解2: select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A)

Q13 .列举ASP.NET 页面之间传递值的几种方式。
1. 使用QueryString, 如….?id=1; response. Redirect()….
2.使用Session变量
3.使用Server.Transfer
2。请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。
session(viewstate) 简单,但易丢失
application 全局
cookie 简单,但可能不支持,可能被伪造
input ttype=”hidden” 简单,可能被伪造
url参数简单,显示于地址栏,长度有限
数据库稳定,安全,但性能相对弱

Q14.override与重载的区别
Override用来重写父类的方法,重载使用相同名的方法或操作符拥有不同类型的参数

Q15、.net的错误处理机制是什么
.net错误处理机制采用try->catch->finally结构,发生错误时,层层上抛,直到找到匹配的Catch为止。

Q16、C#中接口和类的异同
接口和类都是类,不同的事,接口只包含方法或属性的声明,不包含具体实现方法的代码,接口可以实现多继承,而类只能是单继承,继承接口的类必须实现接口中声明的方法或属性。接口主要定义一种规范,统一调用方法,在大型项目中接口正发挥日益重要的作用。

Q17、DataReader和DataSet的异同
DataReader 和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection,在线操作数据库..任何对SqlConnection 的操作都会引发DataReader的异常..因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的..因为 DataReader的特殊性和高性能.所以DataReader是只进的..你读了第一条后就不能再去读取第一条了..
DataSet则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即放弃数据库连接..因为DataSet将数据全部加载在内存中.所以比较消耗内存…但是确比DataReader要灵活..可以动态的添加行,列,数据.对数据库进行回传更新操作…

Q18. 在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?
Using 引入一个名子空间,或在使用了一个对像后自动调用其IDespose,New 实例化一个对像,或修饰一个方法,表此方法完全重写此方法

Q19.在下面的例子里
using System;
class A
{
public A(){
PrintFields();
}
public virtual void PrintFields(){}
}
class B:A
{
int x=1;
int y;
public B(){
y=-1;
}
public override void PrintFields(){
Console.WriteLine(“x={0},y={1}”,x,y);
}
当使用new B()创建B的实例时,产生什么输出?X=1,Y=0

Q20.下面的例子中
using System;
class A
{
public static int X;
static A(){
X=B.Y 1;
}
}
class B
{
public static int Y=A.X 1;
static B(){}
static void Main(){
Console.WriteLine(“X={0},Y={1}”,A.X,B.Y);
}
}
产生的输出结果是什么?x=1,y=2

Q21.谈谈类和结构的区别?
最大区别一个是引用类型,一个是值类型 默认成员访问为public是另外一个区别

Q22. 在.net(C# or vb.net)中如何获得当前窗体或控件的句柄,特别是控件本身的句柄(请列举)。
this(C#) Me(vb.net).

Q23.在.net(C# or vb.net)中如何用户自定义消息,并在窗体中处理这些消息。
在form中重载DefWndProc函数来处理消息:
protected override void DefWndProc ( ref System.WinForms.Message m )
{
switch(m.msg)
{
case WM_Lbutton :
///string与MFC中的CString的Format函数的使用方法有所不同
string message = string.Format(“收到消息!参数为:{0},{1}”,m.wParam,m.lParam);
MessageBox.Show(message);///显示一个消息框
break;
case USER:
处理的代码
default:
base.DefWndProc(ref m);///调用基类函数处理非自定义消息。
break;
}
}

Q24. 在.net(C# or vb.net)如何启动另一个程序。
process

Q25. 在.net(C# or vb.net)中如何取消一个窗体的关闭
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
e.Cancel=true;
}

Q26. 在.net(C# or vb.net)中,Appplication.Exit 还是 Form.Close有什么不同?
答案:一个是退出整个应用程序,一个是关闭其中一个form

Q27. 在C#中有一个double型的变量,比如10321.5,比如122235401.21644,作为货币的值如何按各个不同国家的习惯来输出。比如美国用$10,321.50和$122,235,401.22而在英国则为£10 321.50和£122 235 401.22
答案:
System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo(“en-US”);
//System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo(“en-GB”);为英国货币类型
decimal y = 9999999999999999999999999999m;
string str = String.Format(MyCulture,”My amount = {0:c}”,y);

Tags in this post...

面试题 相关文章推荐
介绍一下Java的安全机制
Jun 28 面试题
简单说说tomcat的配置
May 28 面试题
用C语言实现文件读写操作
Oct 27 面试题
.NET程序员的几道面试题
Jun 01 面试题
你对IPv6了解程度
Feb 09 面试题
Linux如何为某个操作添加别名
Feb 05 面试题
软件生产职位结构化面试主要考察要素及面试题库
Jun 12 面试题
瀑布模型都有哪些优缺点
Jun 23 面试题
恒华伟业笔试面试题
Feb 26 面试题
有abstract方法的类一定要用abstract修饰吗
Mar 14 面试题
Java的类与C++的类有什么不同
Jan 18 面试题
JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
Oct 22 面试题
诺思信科技(南京)有限公司.NET笔试题答案
Jul 06 #面试题
什么是托管函数?托管函数有什么用?
Jun 15 #面试题
什么是.net
Aug 03 #面试题
delegate与普通函数的区别
Jan 22 #面试题
如何在.net Winform里面显示PDF文档
Sep 11 #面试题
请解释接口的显式实现有什么意义
May 26 #面试题
.NET里面如何取得当前的屏幕分辨率
Dec 06 #面试题
You might like
PHP中usort在值相同时改变原始位置问题的解决方法
2011/11/27 PHP
手把手教你打印出PDF(关于fpdf的简单应用)
2013/06/25 PHP
PHP中file_get_contents高?用法实例
2014/09/24 PHP
百度地图API使用方法详解
2015/08/25 PHP
Laravel 5.5官方推荐的Nginx配置学习教程
2017/10/06 PHP
基于PHP的微信公众号的开发流程详解
2020/08/07 PHP
快速解决js动态改变dom元素属性后页面及时渲染的问题
2016/07/06 Javascript
jQuery使用animate实现ul列表项相互飘动效果示例
2016/09/16 Javascript
Bootstrap基本插件学习笔记之按钮(21)
2016/12/08 Javascript
javascript事件的传播基础实例讲解(35)
2017/02/14 Javascript
Bootstrap媒体对象学习使用
2017/03/07 Javascript
nodejs个人博客开发第二步 入口文件
2017/04/12 NodeJs
JS实现图片居中悬浮效果
2017/12/25 Javascript
详解如何使用webpack打包JS
2018/06/21 Javascript
在Python中使用M2Crypto模块实现AES加密的教程
2015/04/08 Python
wxPython中listbox用法实例详解
2015/06/01 Python
python爱心表白 每天都是浪漫七夕!
2018/08/18 Python
python的常见矩阵运算(小结)
2019/08/07 Python
Python第三方包之DingDingBot钉钉机器人
2020/04/09 Python
keras中的卷积层&池化层的用法
2020/05/22 Python
Python 读取位于包中的数据文件
2020/08/07 Python
python爬虫快速响应服务器的做法
2020/11/24 Python
巴西Bo.Bô官方在线商店:经营奢侈品时尚业务
2020/03/16 全球购物
学生党员思想汇报范文
2014/01/09 职场文书
《湘夫人》教学反思
2014/02/21 职场文书
室内设计专业毕业生求职信
2014/05/02 职场文书
教师批评与自我批评材料
2014/10/16 职场文书
交警正风肃纪剖析材料
2014/10/29 职场文书
2014年建筑工程工作总结
2014/12/03 职场文书
考研导师推荐信范文
2015/03/27 职场文书
《合作意向书》怎么写?
2019/08/20 职场文书
mysql知识点整理
2021/04/05 MySQL
如何使用Tkinter进行窗口的管理与设置
2021/06/30 Python
浅谈MySQL之select优化方案
2021/08/07 MySQL
「海贼王」112.9万粉丝纪念图标公布
2022/03/21 日漫
nginx配置之并发频次限制
2022/04/18 Servers