net面试题

关键词: 消息 面试题

net面试题(精选6篇)

篇1:net面试题

1、简述 private、protected、public、internal 修饰符的访问权限。

2、C#中的委托是什么?编写一个简单的委托代码。

3、C#中抽象类是什么?编写一个简单的抽象类代码。

4、例举ASP.NET页面之间传值的几种方式。

5、override与重载的区别

6、求以下表达式的值,写出你想的到其中一种实现方法:1-2+3-4+……..+m7、.NET中读写数据库需要用到那些类?他们的作用?

8、.NET异常处理机制?

9、写出下面题目的SQL语句

表1TB_BMBM 部门基本信息表

BMBM 部门编码

BMMC 部门名称

表2TB_BMJE部门月营业表,YY年

MM 月

BMBM 部门编码

JE部门营业额

A.要求写一条SQL语句查询有哪些部门年累计金额>1000的,注意要按 年YY,部门名称BMMC分组的累计金额查询

B.查出表1中有哪些部门不在(表2中季度金额>200的部门)中

10、用一条SQL语句 查询出每门课都大于80分的学生姓名

namekechengfenshu

张三语文81

张三数学75

李四语文76

李四数学90

王五语文81

王五数学100

王五英语90

篇2: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;

}

}

101.在.net(C# or vb.net)中如何取消一个窗体的关闭。

答:private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)

{

e.Cancel=true;

}

102.在.net(C# or vb.net)中,Appplication.Exit 还是 Form.Close有什么不同?(winform题目非asp.net题目)

答:一个是退出整个应用程序,一个是关闭其中一个form。

103.在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);

104.某一密码仅使用K、L、M、N、O共5个字母,密码中的单词从左向右排列,密码单词必须遵循如下规则:

(1) 密码单词的最小长度是两个字母,可以相同,也可以不同

(2) K不可能是单词的第一个字母

(3) 如果L出现,则出现次数不止一次

(4) M不能使最后一个也不能是倒数第二个字母

(5) K出现,则N就一定出现

(6) O如果是最后一个字母,则L一定出现

问题一:下列哪一个字母可以放在LO中的O后面,形成一个3个字母的密码单词?

A) K B)L C) M D) N

答案:B

问题二:如果能得到的字母是K、L、M,那么能够形成的两个字母长的密码单词的总数是多少?

A)1个 B)3个 C)6个 D)9个

答案:A

问题三:下列哪一个是单词密码?

A) KLLN B) LOML C) MLLO D)NMKO

答案:C

8. 62-63=1 等式不成立,请移动一个数字(不可以移动减号和等于号),使得等式成立,如何移动?

答案:62移动成2的6次方

105.对于这样的一个枚举类型:

enum Color:byte

{

Red,

Green,

Blue,

Orange

}

答:string[] ss=Enum.GetNames(typeof(Color));

byte[] bb=Enum.GetValues(typeof(Color));

106. C#中 property 与 attribute的区别,他们各有什么用处,这种机制的好处在哪里?

答:attribute:自定义属性的基类;property :类中的属性

107.C#可否对内存进行直接的操作?

答:在.net下,.net引用了垃圾回收(GC)功能,它替代了程序员 不过在C#中,不能直接实现Finalize方法,而是在析构函数中调用基类的Finalize()方法

108.ADO。NET相对于ADO等主要有什么改进?

答:1:ado.net不依赖于ole db提供程序,而是使用.net托管提供的程序,2:不使用com3:不在支持动态游标和服务器端游 4:,可以断开connection而保留当前数据集可用 5:强类型转换 6:xml支持

109.写一个HTML页面,实现以下功能,左键点击页面时显示“您好”,右键点击时显示“禁止右键”。并在2分钟后自动关闭页面。

答:

110.大概描述一下ASP。NET服务器控件的生命周期

答:初始化 加载视图状态 处理回发数据 加载 发送回发更改通知 处理回发事件 预呈现 保存状态 呈现 处置 卸载

111.Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?

答:不能,可以实现接口

112.Static Nested Class 和 Inner Class的不同,说得越多越好

答:Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。

113.,&和&&的区别。

&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and).

114.HashMap和Hashtable的区别。

答:HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable.

115.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

答:short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)

short s1 = 1; s1 += 1;(可以正确编译)

116.Overloaded的方法是否可以改变返回值的类型?

答:Overloaded的方法是可以改变返回值的类型。

117.error和exception有什么区别?

答:error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。

exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

118.<%# %>和 <% %>有什么区别?

答:<%# %>表示绑定的数据源

<% %>是服务器端代码块

119.你觉得ASP.NET 2.0(VS)和你以前使用的开发工具(.Net 1.0或其他)有什么最大的区别?你在以前的平台上使用的哪些开发思想(pattern / architecture)可以移植到ASP.NET 2.0上 (或者已经内嵌在ASP.NET 2.0中)

答:1 ASP.NET 2.0 把一些代码进行了封装打包,所以相比1.0相同功能减少了很多代码.

2 同时支持代码分离和页面嵌入服务器端代码两种模式,以前1.0版本,.NET提示帮助只有在分离的代码文件,无 法 在页面嵌入服务器端代码获得帮助提示,

3 代码和设计界面切换的时候,2.0支持光标定位.这个我比较喜欢

4 在绑定数据,做表的分页.UPDATE,DELETE,等操作都可以可视化操作,方便了初学者

5 在ASP.NET中增加了40多个新的控件,减少了工作量

120.重载与覆盖的区别?

答:1、方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系

2、覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。

3、覆盖要求参数列表相同;重载要求参数列表不同。

4、覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;重载关系,是根据调 用时的实参表与形参表来选择方法体的。

121.描述一下C#中索引器的实现过程,是否只能根据数字进行索引?

答:不是。可以用任意类型。

122.在C#中,string str = null 与 string str = “ ” 请尽量使用文字或图象说明其中的区别。

答:null是没有空间引用的;

“ ” 是空间为0的字符串;

123.分析以下代码,完成填空

string strTmp = “abcdefg某某某”;

int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;

int j= strTmp.Length;

以上代码执行完后,i= j=

答:i=13.j=10

124.SQLSERVER服务器中,给定表 table1 中有两个字段 ID、LastUpdateDate,ID表示更新的事务号, LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号

答:Select ID FROM table1 Where LastUpdateDate = (Select MAX(LastUpdateDate) FROM table1)

125.分析以下代码。

public static void test(string ConnectString)

{

System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection();

conn.ConnectionString = ConnectString;

try

{

conn.Open();

…….

}

catch(Exception Ex)

{

MessageBox.Show(Ex.ToString());

}

finally

{

if (!conn.State.Equals(ConnectionState.Closed))

conn.Close();

}

}

请问

1)以上代码可以正确使用连接池吗?

答:回答:如果传入的connectionString是一模一样的话,可以正确使用连接池。不过一模一样的意思是,连字符的空格数,顺序完全一致。

2)以上代码所使用的异常处理方法,是否所有在test方法内的异常都可以被捕捉并显示出来?

答:只可以捕捉数据库连接中的异常吧. (finally中,catch中,如果有别的可能引发异常的操作,也应该用try,catch。所以理论上并非所有异常都会被捕捉。)

126.公司要求开发一个继承System.Windows.Forms.ListView类的组件,要求达到以下的特殊功能:点击ListView各列列头时,能按照点击列的每行值进行重排视图中的所有行 (排序的方式如DataGrid相似)。根据您的知识,请简要谈一下您的思路:

答:根据点击的列头,包该列的ID取出,按照该ID排序后,在给绑定到ListView中

127.什么是WSE?目前最新的版本是多少?

答:WSE (Web Service Extension) 包来提供最新的WEB服务安全保证,目前最新版本2.0。

128.在下面的例子里

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

129.下面的例子中

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

130.abstract class和interface有什么区别?

答:声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。

接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

这些是C#,ASP.NET,数据库面试题,全部从网上收集而来,经整理而发表,希望给大家带来帮助,有错误的地方还请各位高手指出,在下倾听指教。

以下是3月新增面试题

1. asp.net中web应用程序获取数据的流程:

A.Web Page B.Fill C.Sql05 D.Data Sourse E.DataGrid F.DataSet G.Select and Connect

Commands H.Sql Data Adapter

答案:a,e,d,f,h,g,b,c

2. Asp.net执行模式中各组件填入到对应位置:

A.Output Cache B.Parser C.Assembly Cache D.IE E.Memory F.Compiler

WebPage被第一次请求时:

D->__->__->__->__->D

WebPage被第二次请求时:

D->__->__->D

WebPage的页面输出缓存被打开时:

D->__->D

答案:

WebPage被第一次请求时:

D->_b_->_f_->_a_->_e_->D

WebPage被第二次请求时:

D->_b_->_e_->D

WebPage的页面输出缓存被打开时:

D->_a_->D

3.两个数组 [n] [m] n>m 第一个数组的数字无序排列 第二个数组为空 取出第一个数组的最小值 放到第二个数组中第一个位置, 依次类推. 不能改变A数组,不能对之进行排序,也不可以倒到别的数组中。

int[] a = { -20, 9, 7, 37, 38, 69, 89, -1, 59, 29, 0, -25, 39, 900, 22, 13, 55 };

int[] b = new int[10];

int intTmp = a[0], intMaxNum;

for (int i = 0; i < a.Length; i++)

{

intTmp = a[i] >intTmp ? a[i] : intTmp;

}

intMaxNum = intTmp;

for (int j = 0; j < b.Length; j++)

{

for (int i = 0; i < a.Length; i++)

{

if (j == 0)

intTmp = a[i] < intTmp ? a[i] : intTmp;

else

{

if (a[i] >b[j - 1])

intTmp = a[i] < intTmp ? a[i] : intTmp;

}

}

b[j] = intTmp;

intTmp = intMaxNum;

}

foreach (int bb in b)

{

Console.WriteLine(bb);

}

Console.ReadLine();

4.请将字符串“I am a student”按单词逆序输出 如“student a am I”

string S = “I am a student”;

char[] C = new char[] { };

string[] n =S.Split(C);

int length = S.Length;

for (int i =length-1 ; i >=0; i--)

{

Console.Write(n[i]);

if (i != 0)

{

Console.Write(“ ”);

}

篇3:天才的面试题

1.房里有三盏灯, 房外有三个开关, 在房外看不见房内的情况, 但可以任意扳动开关。你只能进门观察一次, 你用什么方法来区分哪个开关控制哪一盏灯?

2.有两根粗细不均匀的香, 燃烧时快时慢, 但每根香烧完的时间确定是一小时。你能用什么方法来确定45分钟的时间?

3.村子里有50个人, 每个人都有一条狗, 在这50条狗中有病狗 (这种病不传染) , 人们要找出病狗。每个人可以观察其他49条狗, 以判断它们是否生病, 但只有自己的狗不能看, 观察后得到的结果不能交流, 也不能通知病狗的主人。主人一旦推算出自己的狗有病时, 就必须在一天内将其枪毙, 而且只有权力枪毙自己的狗, 没有权力打死其他人的狗。第一天大家全看完了, 但枪没响, 第二天枪也没响, 第三天才传来枪响。问:村里共有几条病狗?如何推算出来的?

4.在太平洋的一个小岛上生活着土著人, 他们不愿意被外人打扰。一天, 一位探险家到了岛上, 被土著人捉住, 土著人的首领告诉他:“你临死前可以有个机会留下一句话, 如果这句话是真的, 你将被烧死;如果是假的, 你将被五马分尸。”可怜的探险家说什么才能活下来?

5.一个老师为了测试一下A、B两个学生哪一个反应速度更快, 就把他们带到一个伸手不见五指的黑房子里。老师打开灯说:“这张桌子上有五顶帽子, 两顶是红色的, 三顶是黑色的。现在, 我把灯关掉, 并把帽子的顺序搞乱, 然后, 我们三人每人摸一顶戴在头上。当我把灯打开时, 请你们尽快说出, 自己头上戴的是什么颜色的帽子。”然后老师把灯关掉了, 三个人都摸了一顶帽子戴在头上, 同时, 老师把另外两顶藏起来了。电灯打开后, 那两个同学看到老师头上戴着的是顶红色的帽子, 过了一会儿, A喊道:“我戴的是黑帽子。”请问A是如何推理的?

答案 (仅供参考) :

1.先打开两个开关, 等一段时间再关上其中一个, 马上进里观察。打开的灯对应打开的开关, 用手摸到热的关闭的灯对应刚刚关闭的开关, 凉的灯对应始终没打开的开关。

2.点燃其中一根, 并把另一根两头点燃。第二根烧完恰好过去30分钟, 第一根剩下部分应该能支撑30分钟的燃烧。然后把第一根剩下的部分两头点燃, 15分钟即可燃尽。此过程一共耗时45分钟。

3.若只有一条病狗, 病狗的主人看到其他的狗都没有病, 那么就知道自己的狗有病, 所以第一天晚上就会枪响。因为没有枪响, 就说明病狗数量大于1。若有两条病狗, 病狗的主人会看到有一条病狗, 而第一天没听到枪响, 说明病狗数大于1, 所以病的主人也会知道自己的狗有病, 因而第二天会听枪响, 既然第二天枪也没响, 说明病狗数大于2。依此类推, 如果第三天听到枪响。说明有三条病狗。

4.这是一个悖论问题, 探险家只能描述一种非真非假的状况, 比如:我将被五马分尸。如果土著判定这话是真的, 那么他将被烧死———这样“五马分尸”就成假的了。如果土著判定这话是假的, 那他将被五马分尸的话就变成了真的。

篇4:“天才”面试题

1房里有三盏灯,房外有三个开关,在房外看不见房内的情况。但可以任意扳动开关。你只能进门观察一次,你用什么方法来区分哪个开关控制哪一盏灯?

2有两根粗细不均匀的香,燃烧时快时慢,但每根香烧完的时间确定是一小时。你能用什么方法来确定45分钟的时间?

3村子里有50个人,每个人都有一条狗,在这50条狗中有病狗(这种病不传染),人们要找出病狗。每个人可以观察其他49条狗,以判断它们是否生病,但只有自己的狗不能看,观察后得到的结果不能交流,也不能通知病狗的主人。主人一旦推算出自己的狗有病时,就必须在一天内将其枪毙,而且只有权力枪毙自己的狗,没有权力打死其他人的狗。第一天大家全看完了,但枪没响,第二天枪也没响,第三天才传来枪响。问:村里共有几条病狗?如何推算出来的?

4在太平洋的一个小岛上生活着土著人,他们不愿意被外人打扰。一天,一位探险家到了岛上,被土著人捉住,土著人的首领告诉他:“你临死前可以有个机会留下一句话,如果这句话是真的,你将被烧死;如果是假的。你将被五马分尸。”可怜的探险家说什么才能活下来?

5一个老师为了测试一下A、B两个学生哪一个反应速度更快,就把他们带到一个伸手不见五指的黑房子里。老师打开灯说:“这张桌子上有五顶帽子,两顶是红色的,三顶是黑色的。现在,我把灯关掉,并把帽子的顺序搞乱,然后,我们三人每人摸一顶戴在头上。当我把灯打开时,请你们尽快说出,自己头上戴的是什么颜色的帽子。”然后老师把灯关掉了,三个人都摸了一顶帽子戴在头上,同时,老师把另外两顶藏起来了。电灯打开后,那两个同学看到老师头上戴着的是顶红色的帽子,过了一会儿,A喊道:“我戴的是黑帽子。”请问A是如何推理的?

答案(仅供参考):

1先打开两个开关,等一段时间再关上其中一个,马上进里观察。打开的灯对应打开的开关,因此用手摸到热的灯对应刚刚关闭的开关,凉的对应始终投打开的开关。

2点燃其中一根。并把另一根两头点燃。第二根烧完恰好过去30分钟,第一根剩下部分应该能支撑30分钟的燃烧。然后把第一根剩下的部分两头点燃,15分钟即可燃尽,此过程一共耗时45分钟。

3若只有一条病狗,病狗的主人看到其他的狗都沒有病,那么就知道自己的狗有病,所以第一天晚上就会枪响。因为没有枪响,就说明病狗数量大于1。若有两条病狗,病狗的主人会看到有一条病狗,而第一天没听到枪响,说明病狗数大于1,所以病狗主人也会知道自己的狗有病,因而第二天会听枪响,既然第二天枪也没响,说明病狗数大于2。依此类推,如果第三天听到枪响。说明有三条病狗。

4这是一个悖论问题,探险家只能描述一种非真非假的状况,比如:我将被五马分尸。如果土著判定这话是真的,那么他将被烧死——这样“五马分尸”就成假的了。如果土著判定这话是假的,那他将被五马分尸的话就变成了真的。

5如果A戴的是红帽子,那么B马上就可以猜出自己戴的是黑帽子(因为红帽子只有两顶);而B并没有立刻猜到,所以A马上推断出自己戴的是黑帽子!

汪新才摘自《狗眼看世界》

篇5:新出.net面试题

(2)能用foreach遍历访问的对象需要实现 _ IEnumerable 接口或声明_ GetEnumerator 方法的类型。1.c#中的三元运算符是__?:__

2.当整数a赋值给一个object对象时,整数a将会被__装箱___?

3.类成员有__3__种可访问形式?

4.public static const int A=1;这段代码有错误么?是什么? const成员都是static所以应该去掉static

5.float f=-123.567F;

int i=(int)f;

i的值现在是_-123____?

6.利用operator声明且仅声明了==,有什么错误么?要同时修改Equale和GetHash ? 重载了“==” 就必须重载 “!=”

7.委托声明的关键字是___ delegate ___?

8.用sealed修饰的类有什么特点?不可被继承

9.在Asp.net中所有的自定义用户控件都必须继承自_ System.Web.UI.UserControl _______?

10.在.Net中所有可序列化的类都被标记为__[serializable]___?

11.在.Net托管代码中我们不用担心内存漏洞,这是因为有了_ gC __?

12.下面的代码中有什么错误吗?_ abstract override 是不可以一起修饰______

using System;

class A

{

public virtual void F(){

Console.WriteLine(“A.F”);

}

}

abstract class B:A

{

public abstract override void F();

}

13.当类T只声明了私有实例构造函数时,则在T的程序文本外部,_不可以_(可以 or 不可以)从T派生出新的类,_不可以_(可以 or 不可以)直接创建T的任何实例。

14.下面这段代码有错误么?case():不行 default;

switch (i){

case():

CaseZero();

break;

case 1:

CaseOne();

break;

case 2:

dufault;

CaseTwo();

break;

}

15.在.Net中,类System.Web.UI.page 可以被继承么?可以

2. 不定项选择:

(1) 以下叙述正确的是: B C

A. 接口中可以有虚方法。B. 一个类可以实现多个接口。C. 接口不能被实例化。 D. 接口中可以包含已实现的方法。

(2) 从数据库读取记录,你可能用到的方法有:B C D

A. ExecuteNonQuery B. ExecuteScalar C. Fill D. ExecuteReader

2.对于一个实现了IDisposable接口的类,以下哪些项可以执行与释放或重置非托管资源相关的应用程序定义的任务?(多选) ( ABC )

A.Close B.Dispose C.Finalize

D.using E.Quit

3.以下关于ref和out的描述哪些项是正确的?(多选) ( ACD )

A.使用ref参数,传递到ref参数的参数必须最先初始化。

B.使用out参数,传递到out参数的参数必须最先初始化。

C.使用ref参数,必须将参数作为ref参数显式传递到方法。

D.使用out参数,必须将参数作为out参数显式传递到方法。

1.在对SQL Server 数据库操作时应选用(A)。

a)SQL Server .NET Framework 数据提供程序;

b)OLE DB .NET Framework 数据提供程序;

c)ODBC .NET Framework 数据提供程序;

d)Oracle .NET Framework数据提供程序;

2.下列选项中,(C)是引用类型。

a)enum类型 b)struct类型c)string类型 d)int类型

3.关于ASp.NET中的代码隐藏文件的描述正确的是(C)

a)Web窗体页的程序的逻辑由代码组成,这些代码的创建用于与窗体交互。编程逻辑唯一与用户界面不同的文件中。该文件称作为“代码隐藏”文件,如果用C#创建,该文件将具有“.ascx.cs”扩展名。

b)项目中所有Web窗体页的代码隐藏文件都被编译成.EXE文件。

c)项目中所有的Web窗体页的代码隐藏文件都被编译成项目动态链接库(.dll)文件。

d)以上都不正确。

4.以下描述错误的是(A)

a)在C++中支持抽象类而在C#中不支持抽象类。

b)C++中可在头文件中声明类的成员而在Cpp文件中定义类的成员,在C#中没有头文件并且在同一处声明和定义类的成员。

c)在C#中可使用 new 修饰符显式隐藏从基类继承的成员。

d)在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。

5.C#的数据类型有(B)[原文为D,有误]

a)值类型和调用类型; b)值类型和引用类型;c)引用类型和关系类型;d)关系类型和调用类型;

6.下列描述错误的是(D)

a)类不可以多重继承而接口可以;

b)抽象类自身可以定义成员而接口不可以;

c)抽象类和接口都不能被实例化;

d)一个类可以有多个基类和多个基接口;

7.在DOM中,装载一个XML文档的方法(B)[原文为D,有误]

a)save方法 b)load方法c)loadXML方法d)send方法

8.下列关于构造函数的描述正确的是(C)

a)构造函数可以声明返回类型。

b)构造函数不可以用private修饰

c)构造函数必须与类名相同

d)构造函数不能带参数

9.以下是一些C#中的枚举型的定义,其中错误的用法有()

a)public enum var1{ Mike = 100, Nike = 102, Jike }

b)public enum var1{ Mike = 100, Nike,Jike }

c)public enum var1{ Mike=-1 , Nike, Jike }

d)public enum var1{ Mike , Nike , Jike }

10.int[][] myArray3=new int[3][]{new int[3]{5,6,2},new int[5]{6,9,7,8,3},new int[2]{3,2}}; myArray3[2][2]的值是(D)。

a)9 b)2 c)6 d)越界

11.接口是一种引用类型,在接口中可以声明(A),但不可以声明公有的域或私有的成员变量。

a)方法、属性、索引器和事件;b)方法、属性信息、属性;c)索引器和字段; d)事件和字段;

12.ASp.NET框架中,服务器控件是为配合Web表单工作而专门设计的。服务器控件有两种类型,它们是(A )

a)HTML控件和Web控件b)HTML控件和XML控件c)XML控件和Web控件 d)HTML控件和IIS控件

13.ASp.NET中,在Web窗体页上注册一个用户控件,指定该控件的名称为”Mike”,正确的注册指令为( D)

a)

b)

c)

d)以上皆非

14.在ADO.NET中,对于Command对象的ExecuteNonQuery()方法和ExecuteReader()方法,下面叙述错误的是(C)。

a)、update、等操作的Sql语句主要用ExecuteNonQuery()方法来执行;

b)ExecuteNonQuery()方法返回执行Sql语句所影响的行数。

c)Select操作的Sql语句只能由ExecuteReader()方法来执行;

d)ExecuteReader()方法返回一个DataReder对象;

15.下列ASp.NET语句(b)正确地创建了一个与SQL Server 数据库的连接。

a)SqlConnection con1 = new Connection(“Data Source = localhost; Integrated Security = SSpI; Initial Catalog = myDB”);

b)SqlConnection con1 = new SqlConnection(“Data Source = localhost; Integrated Security = SSpI; Initial Catalog = myDB”);

c)SqlConnection con1 = new SqlConnection(Data Source = localhost; Integrated Security = SSpI; Initial Catalog = myDB);

d)SqlConnection con1 = new OleDbConnection(“Data Source = localhost; Integrated Security = SSpI; Initial Catalog = myDB”);

16.Winform中,关于ToolBar控件的属性和事件的描述不正确的是(D)。

a)Buttons属性表示ToolBar控件的所有工具栏按钮

b)ButtonSize属性表示ToolBar控件上的工具栏按钮的大小,如高度和宽度

c)DropDownArrows属性表明工具栏按钮(该按钮有一列值需要以下拉方式显示)旁边是否显示下箭头键

d)ButtonClick事件在用户单击工具栏任何地方时都会触发

17.在ADO.NET中执行一个存储过程时,如果要设置输出参数则必须同时设置参数的方向和(B ),必要时还要设置参数尺寸。

a)大小; b)上限; c)初始值; d)类型;

18.如果将窗体的FormBoderStyle设置为None,则( B)。

a)窗体没有边框并不能调整大小; b)窗体没有边框但能调整大小;

c)窗体有边框但不能调整大小; d)窗体是透明的;

19.如果要将窗体设置为透明的,则( B)

a)要将FormBoderStyle属性设置为None; b)要将Opacity属性设置为小于100%得值;

c)要将locked 属性设置为True; d)要将 Enabled属性设置为True;

20.下列关于C#中索引器理解正确的是(B/C )

a)索引器的参数必须是两个或两个以上 b)索引器的参数类型必须是整数型

c)索引器没有名字 d)以上皆非

21.下面描述错误的是( C/D)。

a)窗体也是控件; b)窗体也是类; c)控件是从窗体继承来的; d)窗体的父类是控件类;

22.要对注册表进行操作则必须包含( D)。

a)System.ComponentModel命名空间; b)System.Collections命名空间;

c)System.Threading命名空间; d)Microsoft.Win32命名空间;

23.要创建多文档应用程序,需要将窗体的(D )属性设为true。

a)DrawGrid; b)ShowInTaskbar; c)Enabled; d)IsMdiContainer;

24.如果设treeView1=new TreeView(),则treeView1.Nodes.Add(“根节点”)返回的是一个 ()类型的值。

a)TreeNode;

b)int;

c)string;

d)TreeView;

25.下面关于XML的描述错误的是(D)。

a)XML提供一种描述结构化数据的方法;

b)XML 是一种简单、与平台无关并被广泛采用的标准;

c)XML文档可承载各种信息;

d)XML只是为了生成结构化文档;

1.装箱、拆箱操作发生在: ( C)

A.类与对象之间 B.对象与对象之间

C.引用类型与值类型之间 D.引用类型与引用类型之间

2.用户类若想支持Foreach语句需要实现的接口是: (A )

A.IEnumerableB.IEnumerator

C.ICollectionD.ICollectData

3..Net Framework通过什么与COM组件进行交互操作?(C )

A.Side By SideB.Web Service

C.InteropD.pInvoke

4..Net依靠以下哪一项技术解决COM存在的Dll Hell问题的?(A )

A.Side By SideB.Interop

C.pInvokeD.COM+

5.装箱与拆箱操作是否是互逆的操作?(B )

A.是B.否

6.以下哪个是可以变长的数组?(D )

A.Array B.string[]

C.string[N] D.ArrayList

7.用户自定义异常类需要从以下哪个类继承:(A )

A.Exception B.CustomException

C.ApplicationException D.BaseException

8.以下代码段中能否编译通过?请给出理由。

try

{

}

catch(FileNotFoundException e1)

{

}

catch(Exception e2)

{

}

catch(IOException e3)

{

}

catch

{

篇6:.net面试题及详解

公共语言运行时(Comman language Runtime),是一个可由多种编程语言使用的“运行时”。CLR的核心功能:程序集加载,异常处理,线程同步,内存管理等可由CLR

的所有语言使用.

2.什么是IL

Intermediate language

中间语言,.net程序在经过编译后就成为IL代码。运行时CLR将IL语言编译成CPU能识别的CRU指令。IL也可以叫做托管代码,IL可以访问CLR所提供的所有功能。

3.什么是JIT,它是如何工作的?

即时编译器,由CLR调用,负责将IL语言编译成本地CPU指令。

工作原理:

当程序被第一次调用的时候,CLR会指向包含在CLR内部定义的特殊函数,这个函数就是JITCompiler。JITComliler负责将IL代码编译成本地指令。

JITCompiler知道实际调用了哪个方法,以及该方法是哪些类型定义的。JITCompiler会在定义该类型的程序集的元数据中查找该方法的IL代码。

并将IL编译成本地CPU指令。编译好的结果被放在一个内存块中,JITCompiler返回CLR为类型定义的内部数据结构。找到被调用方法对应的那条记录,

并修改最初对于JITCompiler的引用。让其指向内存块中被调用方法刚刚编译好的CPU指令地址,最后执行被调用方法的CPU指令。

4.GC是什么,简述一下GC的工作方式?

垃圾回收(garbage collection)

Dot Net的垃圾回收可以分为两个步骤,第一步进行“标记”,垃圾回收器假设所有的对象都是垃圾,然后开始遍历每一个“根”(根包含指向引用类型对象的一个指针,值类型对象永远不会被认为是一个根),如果发现一个根引用了一个对象(非NULL),就对对象进行标记。没有被标记的对象被认为是垃圾。第二个阶段就是“压缩”,其实就是将后面的对象移动到已经成为垃圾的对象位置,使得原来的托管堆更为紧凑。从而释放了托管堆。

GC类中的方法影响何时对对象进行垃圾回收以及何时释放对象所分配的资源。此类中的属性提供以下信息:系统可用内存总量、分配给对象的内存的周期类别(代)。

GC跟踪并回收托管内存中分配的对象。垃圾回收器定期执行垃圾回收以回收分配给没有有效引用的对象的内存。当使用可用内存不能满足内存请求时,垃圾回收会自动进行。或者,应用程序可以使用 Collect 方法强制进行垃圾回收。

垃圾回收由以下步骤组成:

GC搜索托管代码中引用的托管对象。

GC尝试完成没有被引用的对象。

GC释放没有被引用的对象并回收它们的内存。

在回收期间,如果GC在托管代码中找到对某对象的一个或多个引用,则不会释放该对象。然而,GC不识别非托管代码中对对象的引用,因此,除非明确禁止,否则它有可能释放非托管代码中以独占方式使用的对象。KeepAlive 方法提供一种机制,该机制可防止垃圾回收器回收在非托管代码中仍使用的对象。

5.在.NET程序运行过程中,什么是堆,什么是栈?什么情况下会在堆(栈)上分配数据?它们有性能上的区别吗?“结构”对象可能分配在堆上吗?什么情况下会发生,有什么需要注意的?

.NET进程被创建时就会有一个堆随之被创建, 用来保存该进程在运行中需要使用的对象/数据; 当一个线程被创建时, 会有一个栈被创建,用来保存方法调用参数, 局部变量等轻量型数据.

当一个类里面包含一个结构体类型的变量时, 该结构体类型会被分配在堆上.

>泛型的作用是什么?它有什么优势?它对性能有影响吗?它在执行时的行为是什么?.NET BCL中有哪些泛型类型?举例说明平时编程中您定义的泛型类型

泛型的作用是什么?

泛型的作用在于“算法的重用”。(这点其实很好理解,原来的ArrayList只能接受Object,现在通过List可以接受任何类型,也就是说ArrayList的方法都被各个类型重用了。但是Dot Net的泛型有个比较制肘地方,就是你很难对数值类型(值类型)进行算法抽象,因为这牵涉到运算符重载的问题,同时Dot Net的泛型的类型参数也不能约束成一个基元值类型(如int、double、float) 。)

它有什么优势?

第一:源代码保护。(如果你知道C++模板对泛型的实现机制,就会知道C++在编译的时候根据对泛型的调用,自动“内联”了一个实现,这样泛型的内容就暴露了,尔DotNet的实现方式就不同了,泛型类和方法会被编译成IL,在执行的时候由JIT负责将IL变化为指定类型参数的本地代码,从而保护了源代码)

第二:类型安全。(这点是最显而易见的,抛弃了使用ArrayList时各种丑陋的强制类型转换)

第三:更清晰地代码。因为没有了强制类型转换,所以代码自然显得更清晰,但是使用泛型时候带来的有时候确实也会让人搞糊涂,幸好泛型方法可以用类型推断或者using语句来进一步简化写法。

第四:更好的性能,因为值类型可以避免装箱和拆箱所带来的损耗(垃圾回收的次数也会减少)。(这点正是泛型神奇的地方,开发历史上抽象能力的上升往往意味着性能的下降,但是泛型却不是!泛型抽象了算法,但是C++和DotNet对泛型的实现能够让性能无损,并且更快。Java的擦除法泛型就没有这种性能上的好处。)

它对性能有影响吗?

对性能有积极的影响,因为值类型可以避免装箱和拆箱所带来的负面影响,避免了垃圾回收,使得性能显著提高。但是对引用类型这种影响就不明显了。但是需要注意的是首次为一个特定数据类型调用方法时,CLR都会为这个方法生成本地代码。这会增大应用程序的工作集大小,从而影响性能。

它在执行时的行为是什么?

使用泛型类型参数的一个方法在进行JIT编译时,CLR获取IL,用指定的类型实参进行替换,然后创建本地代码。需要特别注意的是引用类型是共享代码的,而对值类型就会为每一种生成独立的一份类型代码。但是需要指出的是引用类型的这种代码共享并不会造成封闭类型只执行一次构造函数(就算是静态构造函数也是这样的)。

.NET BCL中有哪些泛型类型?

List、Dictionary、Queue、Stack、SortedList和SortedDictionary、LinkedList等等。

举例说明平时编程中您定义的泛型类型。

泛型的出现会替换原来一部分使用多态的地方从而提高性能和带来更好的编译时检查,这样就不需要在子类和超类(接口)间频繁转换了。比如你要根据情况打出各种报表,那么先把报表类定义成泛型类从而可以共享报表一系列的算法。

>异常的作用是什么?.NET BCL中有哪些常见的异常?在代码中您是如何捕获/处理异常的?在“catch (ex)”中,“throw”和“throw ex”有什么区别?您会如何设计异常的结构,什么情况下您会抛出异常?

异常的作用是什么?

异常用于处理系统级或者应用程序级的错误状态。这就会引发另外几个问题,异常相比原来使用的返回错误代码的优点在哪里?异常处理是一种结构化的处理过程,个人认为他最大的优点就在于将“成功场景”剥离出来,使得代码更加清晰自然。但是异常处理相对于返回错误码有一个缺点,那就是他会失去发生异常的位置。不过异常本身提供了很多帮助调试问题的工具,一般都带有栈跟踪,这样位置的问题就得到一定程度的解决。还有就是IF和异常之间的选择,我记得以前有人讨论过在各种分支下是使用异常来处理各种“失败场景”的分支还是使用IF或者SWITCH来处理呢?这其实是一个假问题,因为异常和错误是有概念上的不同的,这里的错误是指有违“主成功场景”的“异常场景”,尔异常是指当程序不能完成其名字所表示功能时的错误。所以需要强调不要使用异常来区分各种失败场景,异常压根就不是用来干这件事情的!

.NET BCL中有哪些常见的异常?

随便说几个,最著名的恐怕就是那句像绕口令一样的“未将对象引用设置到对象实例”了,还有那些基本一出现整个应用程序就被判死刑的“堆栈溢出”、“内存无法分配”异常了。

在代码中您是如何捕获/处理异常的?

这道题的回答可以体现你是什么“级别”的程序员,这个级别倒不是说水平的高低,是指经常写哪一类的程序,如果对异常的捕获比较“激进”(经常捕获异常)那么这个人应该是一个应用级的程序员。如果对捕获异常比较谨慎那么应该是框架级别的程序员,这些人经常写给别人使用的代码,如果无故的使用异常处理来越俎代庖,那后果很严重了,这里说一个我经历的事,刚毕业的时候我和同事做一个WEB的项目,项目里用第三方的Grid,那个Grid在发生异常的时候会自己报一个错误,你知道我们有多傻眼了吧,我们需要的是我们来抓住异常,然后报出一句对用户友好的错误,但是那个控件却干了这么个蠢事。

我觉得普通程序员用的最多的CATCH就是抓住数据的异常,然后回滚数据库来事务处理。这是一个典型的场景,因为你明确并且能够很好的恢复状态。

在“catch (ex)”中,“throw”和“throw ex”有什么区别?

throw 重新抛出异常但是不破坏异常发生的调用栈尔“throw ex”会重置调用栈这样捕获异常的人会以为代码出错在这里。

您会如何设计异常的结构,什么情况下您会抛出异常?

首先我会尽量的使用系统定义的那些异常,如果我需要处理某一特定类别的异常,而且处理方式和通常处理方式不同那么就考虑自定义异常,还有如果需要调用方用一种统一的方式来处理异常那么自定义异常就是一个好的选择。结构的话当然基类是Sysytem.Exception,尽量使用扁平化异常的层次。可以考虑用泛型类来定义异常。

我写的代码不能完成名字所说明的功能,那么我就会抛出异常。

>List和T[]的区别是什么,平时你如何进行选择?Dictionary是做什么的?.NET BCL中还有哪些常用的容器?它们分别是如何实现的(哪种数据结构)?分别是适用于哪些场景?

注:本文为网友上传,旨在传播知识,不代表本站观点,与本站立场无关。若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:66553826@qq.com

上一篇:ASP NET上机报告 下一篇:平语近人观后感600字