logo资料库

c# winform面试题.docx

第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
资料共8页,全文预览结束
Winform 面试题 1.填空题 1)能用 foreach 遍历访问的对象需要实现 IEnumerable 接口或声明 GetEnumerator 方法的 类型 2)c#中的三元运算符是 ? : 3)面向对象的语言具有 继承性 、 封装性 、 多态性 。 4)当整数 a 赋值给一个 object 对象时,整数 a 将会被 装箱? 5)类成员有 3 种可访问形式? 6)public static const int A=1;这段代码有错误么?是什么? const 成员都是 static 所以应该去掉 static 7)float f=-123.567F;int i=(int)f; i 的值现在是 -123 8)利用 operator 声明且仅声明了==,有什么错误么? 要同时修改 Equale 和 GetHash() ? 重 载了"==" 就必须重载 "!=" 9)委托声明的关键字是 delegate? 10)用 sealed 修饰的类有什么特点?不可被继承 11)在 Asp.net 中所有的自定义用户控件都必须继承自 System.Web.UI.UserControl? 12)在.Net 中所有可序列化的类都被标记为 [serializable] ? 13)在.Net 托管代码中我们不用担心内存漏洞,这是因为有了 GC ? 14)下面的代码中有什么错误吗? abstract override 是不可以一起修饰 class A { 1. using System; 2. 3. 4. public virtual void F(){ 5. Console.WriteLine("A.F"); 6. 7. 8. abstract class B:A 9. 10. public abstract override void F(); 11. } } } { 15)当类 T 只声明了私有实例构造函数时,则在 T 的程序文本外部, 不可以(可以 or 不 可以)从 T 派生出新的类,_不可以_(可以 or 不可以)直接创建 T 的任何实例。 16)下面这段代码有错误么?case():不行 default; switch (i){ case(): 1. 2. 3. CaseZero(); 4. break; 5. case 1: 6. CaseOne(); 7. break; 8. case 2: 9. dufault;
10. CaseTwo(); 11. break; 12. } 17)在.Net 中,类 System.Web.UI.Page 可以被继承么?可以 2.选择题 1)以下叙述正确的是: B C A. 接口中可以有虚方法。B. 一个类可以实现多个接口。 C. 接口不能被实例化。 D. 接口 中可以包含已实现的方法。 2) 从数据库读取记录,你可能用到的方法有:B C D A. ExecuteNonQueryB. ExecuteScalarC. FillD. ExecuteReader ( ABC ( ) ACD ) 3)对于一个实现了 IDisposable 接口的类,以下哪些项可以执行与释放或重置非托管资源相 关的应用程序定义的任务?(多选) A.Close B.DisposeC.Finalize D.usingE.Quit 4)以下关于 ref 和 out 的描述哪些项是正确的?(多选) A.使用 ref 参数,传递到 ref 参数的参数必须最先初始化。 B.使用 out 参数,传递到 out 参数的参数必须最先初始化。 C.使用 ref 参数,必须将参数作为 ref 参数显式传递到方法。 D.使用 out 参数,必须将参数作为 out 参数显式传递到方法。 5)在对 SQL Server 数据库操作时应选用(A)。 A.SQL Server .NET Framework 数据提供程序; B.OLE DB .NET Framework 数据提供程序; C.ODBC .NET Framework 数据提供程序; D.Oracle .NET Framework 数据提供程序; 6)下列选项中,(C)是引用类型。 A.enum 类型 B.struct 类型 C.string 类型 D.int 类型 7)关于 ASP.NET 中的代码隐藏文件的描述正确的是(C) A.Web 窗体页的程序的逻辑由代码组成,这些代码的创建用于与窗体交互。编程逻辑唯一 与用户界面不同的文件中。该文件称作为“代码隐藏”文件,如果用 C#创建,该文件将具有 “.ascx.cs”扩展名。 B.项目中所有 Web 窗体页的代码隐藏文件都被编译成.EXE 文件。 C.项目中所有的 Web 窗体页的代码隐藏文件都被编译成项目动态链接库(.dll)文件。 D.以上都不正确。 8)以下描述错误的是(A) A.在 C++中支持抽象类而在 C#中不支持抽象类。 B.C++中可在头文件中声明类的成员而在 CPP 文件中定义类的成员,在 C#中没有头文件并 且在同一处声明和定义类的成员。 C.在 C#中可使用 new 修饰符显式隐藏从基类继承的成员。 D.在 C#中要在派生类中重新定义基类的虚函数必须在前面加 Override。 9)C#的数据类型有(A) A.值类型和调用类型; B.值类型和引用类型;C.引用类型和关系类型;D.关系类型和调用类 型; 10)下列描述错误的是(D) A.类不可以多重继承而接口可以;
B.2 C.6 D.越界 B.抽象类自身可以定义成员而接口不可以; C.抽象类和接口都不能被实例化; D.一个类可以有多个基类和多个基接口; 11)在 DOM 中,装载一个 XML 文档的方法(D) A.save 方法 B.load 方法 C.loadXML 方法 D.send 方法 12)下列关于构造函数的描述正确的是(C) A.构造函数可以声明返回类型。 B.构造函数不可以用 private 修饰 C.构造函数必须与类名相同 D.构造函数不能带参数 13)以下是一些 C#中的枚举型的定义,其中错误的用法有(A) 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 } 14 ) 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 15)接口是一种引用类型,在接口中可以声明(A),但不可以声明公有的域或私有的成员 变量。 A.方法、属性、索引器和事件; B.方法、属性信息、属性; C.索引器和字段; D.事件和 字段; 16)ASP.NET 框架中,服务器控件是为配合 Web 表单工作而专门设计的。服务器控件有两 种类型,它们是(A ) A.HTML 控件和 Web 控件 B.HTML 控件和 XML 控件 C.XML 控件和 Web 控件 D.HTML 控 件和 IIS 控件 17)ASP.NET 中,在 Web 窗体页上注册一个用户控件,指定该控件的名称为”Mike”,正确 的注册指令为( D) A.<%@Register TagPrefix = “Mike” TagName = “Space2” Src = “myX.ascx”%> B.<%@Register TagPrefix = “Space2” TagName = “Mike” Src = “myX.ascx”%> C.<%@Register TagPrefix = “SpaceX” TagName = “Space2” Src = “Mike”%> D.以上皆非 18)在 ADO.NET 中,对于 Command 对象的 ExecuteNonQuery()方法和 ExecuteReader()方 法,下面叙述错误的是(C)。 A.insert、update、delete 等操作的 Sql 语句主要用 ExecuteNonQuery()方法来执行; B.ExecuteNonQuery()方法返回执行 Sql 语句所影响的行数。 C.Select 操作的 Sql 语句只能由 ExecuteReader()方法来执行; D.ExecuteReader()方法返回一个 DataReder 对象; 19)下列 ASP.NET 语句(b)正确地创建了一个与 SQL Server 2000 数据库的连接。 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 =
Integrated B.上限; C.初始值; D.类型; D.要将 Enabled 属性设置为 True; SSPI; Initial Catalog = myDB); D.SqlConnection con1 = new OleDbConnection(“Data Source = localhost; Security = SSPI; Initial Catalog = myDB”); 20)Winform 中,关于 ToolBar 控件的属性和事件的描述不正确的是(D)。 A.Buttons 属性表示 ToolBar 控件的所有工具栏按钮 B.ButtonSize 属性表示 ToolBar 控件上的工具栏按钮的大小,如高度和宽度 C.DropDownArrows 属性表明工具栏按钮(该按钮有一列值需要以下拉方式显示)旁边是否 显示下箭头键 D.ButtonClick 事件在用户单击工具栏任何地方时都会触发 21)在 ADO.NET 中执行一个存储过程时,如果要设置输出参数则必须同时设置参数的方向 和(B ),必要时还要设置参数尺寸。 A.大小; 22)如果将窗体的 FormBoderStyle 设置为 None,则( B)。 A.窗体没有边框并不能调整大小; B.窗体没有边框但能调整大小; C.窗体有边框但不能调整大小; D.窗体是透明的; 23)如果要将窗体设置为透明的,则( B) A.要将 FormBoderStyle 属性设置为 None;B.要将 Opacity 属性设置为小于 100%得值; C.要将 locked 属性设置为 True; 24)下列关于 C#中索引器理解正确的是(B/C ) A.索引器的参数必须是两个或两个以上 B.索引器的参数类型必须是整数型 C.索引器没有名字 25)下面描述错误的是( C/D)。 A.窗体也是控件; B.窗体也是类; C.控件是从窗体继承来的; D.窗体的父类是控件类; 26)要对注册表进行操作则必须包含( D)。 A.System.ComponentModel 命名空间; B.System.Collections 命名空间; C.System.Threading 命名空间; D.Microsoft.Win32 命名空间; 27)要创建多文档应用程序,需要将窗体的(D )属性设为 true。 A.DrawGrid; 28)如果设 treeView1=new TreeView(),则 treeView1.Nodes.Add("根节点")返回的是一个 ( A )类型的值。 A.TreeNode; B.int; C.string; D.TreeView; 29)下面关于 XML 的描述错误的是(D)。 A.XML 提供一种描述结构化数据的方法; B.XML 是一种简单、与平台无关并被广泛采用的标准; C.XML 文档可承载各种信息; D.XML 只是为了生成结构化文档; 30)装箱、拆箱操作发生在: ( C ) A.类与对象之间 B.对象与对象之间 C.引用类型与值类型之间 D.引用类型与引用类型之间 31)用户类若想支持 Foreach 语句需要实现的接口是: ( A ) A.IEnumerable B.IEnumerator D.IsMdiContainer; B.ShowInTaskbar; C.Enabled; D.以上皆非
B.CustomException C.ICollection D.ICollectData 32).Net Framework 通过什么与 COM 组件进行交互操作?( C ) A.Side By Side B.Web Service C.Interop D.PInvoke 33).Net 依靠以下哪一项技术解决 COM 存在的 Dll Hell 问题的?( A ) A.Side By Side B.Interop C.PInvoke D.COM+ 34)装箱与拆箱操作是否是互逆的操作?( B ) A.是 B.否 35)以下哪个是可以变长的数组?( D ) A.Array B.string[] C.string[N] D.ArrayList 36)用户自定义异常类需要从以下哪个类继承:( A ) A.Exception C.ApplicationExceptionD.BaseException 37)对于一个实现了 IDisposable 接口的类,以下哪些项可以执行与释放或重置非托管资源 相关的应用程序定义的任务?(多选) ( ABC A.Close D.using 38).Net 依赖以下哪项技术实现跨语言互用性?( C ) A.CLR D.CTT 39)请问: String 类与 StringBuilder 类有什么区别?为什么在.Net 类库中要同时存在这 2 个 类?(简答) 如果要操作一个不断增长的字符串,尽量不用 String 类,改用 StringBuilder 类。两个类的工 作原理不同:String 类是一种传统的修改字符串的方式,它确实可以完成把一个字符串添加到 另一个字符串上的工作没错,但是在.NET 框架下,这个操作实在是划不来。因为系统先是把 两个字符串写入内存,接着删除原来的 String 对象,然后创建一个 String 对象,并读取内存 中的数据赋给该对象。这一来二去的,耗了不少时间。而使用 System.Text 命名空间下面的 StringBuilder 类就不是这样了,它提供的 Append 方法,能够在已有对象的原地进行字符串 的修改,简单而且直接。当然,一般情况下觉察不到这二者效率的差异,但如果你要对某个 字符串进行大量的添加操作,那么 StringBuilder 类所耗费的时间和 String 类简直不是一个数 量级的。 40)以下哪个类是 int 的基类?( B ) A.Int32 B.DisposeC.Finalize E.Quit C.CLS B.CTS ) B.Object C.ValueType D.Int16 3.简答题 1)override 与重载的区别 Override 用来重写父类的方法,重载使用相同名的方法或操作符拥有不同类型的参数 2).net 的错误处理机制是什么 .net 错误处理机制采用 try->catch->finally 结构,发生错误时,层层上抛,直到找到匹配的 Catch 为止。 3)C#中接口和类的异同 接口和类都是类,不同的事,接口只包含方法或属性的声明,不包含具体实现方法的代码, 接口可以实现多继承,而类只能是单继承,继承接口的类必须实现接口中声明的方法或属性。
接口主要定义一种规范,统一调用方法,在大型项目中接口正发挥日益重要的作用。 4)DataReader 和 DataSet 的异同 DataReader 和 DataSet 最大的区别在于,DataReader 使用时始终占用 SqlConnection,在线操 作数据库..任何对 SqlConnection 的操作都会引发 DataReader 的异常..因为 DataReader 每次 只在内存中加载一条数据,所以占用的内存是很小的..因为 DataReader 的特殊性和高性能.所 以 DataReader 是只进的..你读了第一条后就不能再去读取第一条了.. DataSet 则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即放弃数据库连接..因 为 DataSet 将数据全部加载在内存中.所以比较消耗内存...但是确比 DataReader 要灵活..可以 动态的添加行,列,数据.对数据库进行回传更新操作... 5)在 c#中 using 和 new 这两个关键字有什么意义,请写出你所知道的意义? Using 引入一个名子空间,或在使用了一个对像后自动调用其 IDespose,New 实例化一个 对像,或修饰一个方法,表此方法完全重写此方法 6)在下面的例子里 [csharp] view plain copy print? class A { int x=1; int y; } class B:A 1. using System; 2. 3. 4. public A(){ 5. PrintFields(); 6. 7. public virtual void PrintFields(){} 8. 9. 10. { 11. 12. 13. public B(){ 14. y=-1; 15. } 16. public override void PrintFields(){ 17. Console.WriteLine("x={0},y={1}",x,y); 18. } 1. using System; 2. 3. 4. public A(){ 5. PrintFields(); 6. 7. public virtual void PrintFields(){} 8. 9. 10. { 11. } class B:A } } class A { int x=1;
int y; 12. 13. public B(){ 14. y=-1; 15. } 16. public override void PrintFields(){ 17. Console.WriteLine("x={0},y={1}",x,y); 18. } 当使用 new B()创建 B 的实例时,产生什么输出?X=1,Y=0 7)下面的例子中 class A { } } class B 1. using System; 2. 3. 4. public static int X; 5. static A(){ 6. X=B.Y+1; 7. 8. 9. 10. { 11. public static int Y=A.X+1; 12. static B(){} 13. static void Main(){ 14. Console.WriteLine("X={0},Y={1}",A.X,B.Y); 15. } 16. } 产生的输出结果是什么?x=1,y=2 8)谈谈类和结构的区别? 最大区别一个是引用类型,一个是值类型 默认成员访问为 public 是另外一个区别 9)在.net(C# or vb.net)中如何获得当前窗体或控件的句柄,特别是控件本身的句柄(请 列举)。 this(C#) Me(vb.net). 10)在.net(C# or vb.net)中如何用户自定义消息,并在窗体中处理这些消息。 在 form 中重载 DefWndProc 函数来处理消息: { switch(m.msg) { case WM_Lbutton : 1. protected override void DefWndProc ( ref System.WinForms.Message m ) 2. 3. 4. 5. 6. 7. 8. 9. ///string 与 MFC 中的 CString 的 Format 函数的使用方法有所不同 string message = string.Format("收到消息!参数为:{0},{1}",m.wParam,m.lParam); MessageBox.Show(message);///显示一个消息框 break;
10. case USER: 11. 处理的代码 12. default: 13. 14. 15. } 16. } base.DefWndProc(ref m);///调用基类函数处理非自定义消息。 break; 11)在.net(C# or vb.net)如何启动另一个程序。 process 12)在.net(C# or vb.net)中如何取消一个窗体的关闭 1. private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e) { 2. 3. e.Cancel=true; 4. } 13)在.net(C# or vb.net)中,Appplication.Exit 还是 Form.Close 有什么不同? 一个是退出整个应用程序,一个是关闭其中一个 form 14)在 C#中有一个 double 型的变量,比如 10321.5,比如 122235401.21644,作为货币的 值如何按各个不同国家的习惯来输出。比如美国用$10,321.50 和$122,235,401.22 而在英 国则为£10 321.50 和£122 235 401.22 1. System.Globalization.CultureInfo MyCulture 2. System.Globalization.CultureInfo("en-US"); //System.Globalization.CultureInfo System.Globalization.CultureInfo("en-GB");为英国货币类型 MyCulture 3. decimal y = 9999999999999999999999999999m; 4. string str = String.Format(MyCulture,"My amount = {0:c}",y); = = new new
分享到:
收藏