C#面试题.docx
- 文档编号:27425587
- 上传时间:2023-06-30
- 格式:DOCX
- 页数:30
- 大小:31.73KB
C#面试题.docx
《C#面试题.docx》由会员分享,可在线阅读,更多相关《C#面试题.docx(30页珍藏版)》请在冰豆网上搜索。
C#面试题
问答题沿用
S1C#:
Ch1:
1、==与Equals方法的区别?
对于值类型:
由于值类型是存储在栈中,两者都是比较的是两个变量的在栈中的值是否相等。
对于引用类型:
引用类型是在堆一个存储引用,指向堆中的某个具体值。
==判断引用地址,equals判断值
2、Java中的switch于C#中的switch的区别
Java中的switch:
只能判断int,short及比int所占字节还少的类型
C#中的switch:
可以判断string及比string所占字节少的类型
Ch2:
1、 冒泡排序(c#)口诀
int[]numbers={49,12,65,45,88,54};
//排序前
Console.WriteLine("排序前:
");
foreach(intiinnumbers)
{
Console.Write(i+" ");
}
//冒泡排序
for(inti=0;i { for(intj=0;j {//将最大数交换到最后 if(numbers[j]>numbers[j+1]) { inttemp=numbers[j]; numbers[j]=numbers[j+1]; numbers[j+1]=temp; } } } //排序后 Console.WriteLine("\n排序后: "); foreach(intiinnumbers) { Console.Write(i+" "); } 2、 分别写出四种循环语法 for(inti=0;i 3、 编程求数组中的最大数,打印所有的水仙花数,打印九九乘法表 求最大数: int[]numbers={49,12,65,45,88,54}; intmax=0; for(inti=0;i { if(numbers[i]>numbers[i+1]) { max=numbers[i]; } } Console.WriteLine("最大数为: "+max); 水仙花数: for(inti=100;i<1000;i++) { inta=i%10; //个位数 intb=i%100; //十位数 b=b/10; intc=i/100;//百位数 intnumber=(int)Math.Pow(a,3)+(int)Math.Pow(b,3)+(int)Math.Pow(c,3); if(number==i) { Console.Write(i+" "); } } 打印九九乘法表: for(inti=1;i<=9;i++) { for(intj=1;j<=i;j++) { Console.Write("{0}×{1}={2}\t",j,i,i*j); } Console.WriteLine(); } Ch3: 1、 命名空间的含义: 包,便于管理 2、 引用传递和值传递的区别: 主要是相对于值类型,用引用传递加ref,就可实现其值真正的改变。 值传递,当调用方法结束后,则不会改变值。 3、 请写出String的常用方法(10个),并描述功能 Equals(): 判断值相等 Split(): 以…分割每个字符为string[]数组 IndexOf(): 返回指定字符的索引 Concat(): 连接,相当于’+’号 Trim(): 忽略前后空格 ToUpper(): 转换为大写 ToLower(): 转换为小写 StartsWith(): 开头字符是否匹配 SubString(): 截取字符串 ToCharArray(): 转换为char[]数组 4、 分别写出数据类型转换(至少四种)的方法,代码举例 显示转换: inti=(int)12.9; 隐式转换: doubled=12; int/double/float.parse()转换: strings=”13”; inti=int.parse(s); convert: intx=13; doubled=Convert.ToDouble(x); Ch4: 1、 Partial关键字的含义 Partial局部类型允许我们将一个类、结构或接口分成几个部分,分别实现在几个不同的.cs文件中。 适用于以下情况: (1)类型特别大,不宜放在一个文件中实现。 (2)一个类型中的一部分代码为自动化工具生成的代码,不宜与我们自己编写的代码混合在一起。 (3)需要多人合作编写一个类 2、 Windows窗体的生命周期常用事件有哪些? Initialize,Load,Activated(窗体被激活时),Deactivate(窗体被停用时),FormClosed,FormClosing 3、 写出常用的控件键盘事件和鼠标事件 键盘事件: KeyDown,KeyUp,KeyPress 鼠标事件: Click,DoubleClick,MouseClick,MouseDown,MouseEnter,MouseHover,MouseLeave,MouseMove,MouseUp 4、 请写出MessageBox常用的四种类型,以及返回值类型 MessageBox.Show(“消息内容”); 返回类型: DialogResult MessageBox.Show(“消息内容”,”标题”); 返回类型: DialogResult MessageBox.Show(“消息内容”,”标题”); 返回类型: DialogResult MessageBox.Show(“消息内容”,”标题”,MessageBoxButtons按钮类型); 返回类型: DialogResult MessageBox.Show(“消息内容”,”标题”,MessageBoxButtons按钮类型,MessageBoxIcon图标类型 ); 返回类型: DialogResult Ch5: 1、 anchor和dock的区别 anchor(锚定): 距离容器边缘的距离,当控件锚定到某个边缘时,与指定边缘最接近的控件边缘与指定边缘之间的距离将保持不变。 dock(停靠): 将控件停靠在窗体或容器的边缘,距离为0px 2、 如何创建一个MDI窗体(步骤),即多文档窗体 1)设置子窗体: 子窗体名称form=new Form();form.MdiParent=this(父窗体);form.show(); 2)设置父窗体属性: isMdiContainer=true; 3、 模式窗体和非模式窗体的区别 模式窗体: form.ShowDialog();有返回值: DialogResult;程序会中断,主窗体不能激活,必须关闭模式窗体才能激活主窗体,只能show出一个 非模式窗体: form.Show();无返回值,程序不会中断;可以show出多个 4、 使用第三方类传递窗体间的数据(代码演示) publicclassUserHelpper { publicstaticstringloginId=""; //用户名 publicstaticstringloginType=""; //登录类型 } Ch6: 1、 ADO.Net重要组件(那幅图6.2) .NetFramework和DateSet 2、 数据提供者程序有哪些 3、 连接字符串的写法(两种) "DataSource=.\SQLEXPRESS;InitialCatalog=数据库名;Integratedsecurity=true;" "server=.\sqlexpress;database=数据库名;uid=用户名;password=密码" 4、 Connection对象的属性和方法: 数据库连接对象 属性: state连接状态,DataBase获取连接对象的数据库名称,DataSource连接对象的实例名 方法: Open()/Close()打开/关闭数据库,Dispose()释放连接资源,ChangeDatabase()为打开的当前连接对象更改数据库名。 5、 异常处理各关键字的作用 try: 可能发生异常的代码块 catch: 捕获到何种异常,如何去处理,可以跟多个catch块,但子类异常必须写在父类异常的前面 finally: 不管有没有异常都将执行的代码块 6、 Command对象的属性和方法: SQL语句执行命令 属性: CommandText获取或设置要对数据源执行的Transact-SQL语句、表名或存储过程。 Connection获取或设置SqlCommand的此实例使用的SqlConnection 方法: ExecuteNonQuery()执行增,删,改语句,并返回受影响行数;ExecuteScalar()执行查询,返回结果的第一行第一列,忽略其他列或行;ExecuteReader()执行查询,返回DataReader对象 Ch7: 1、 DataReader对象的主要属性和方法 属性: HasRows有没有读取到DataReader中的数据;IsClosed是否已关闭DataReader对象 方法: Read()读取一行数据;GetString()/GetDouble()…获取何种类型的数据值;Close()关闭DataReader对象;IsDBNull()获取一个值,用于指示列中是否包含不存在的或缺少的值 2、 请写出获取并使用DataReader对象的步骤 1)建立数据库连接conn=new…Connection(…); 2)创建Command对象cmd=new…Command(sql,conn); 3)执行SQL查询命令sdr=cmd.ExecuteReader(); 4)处理数据while(sdr.Read()){inti=sdr.getInt(0);} Ch8: 1、 请写出DataSet(临时数据库)的内部结构(图8.2) 2、 写出填充一个DataSet的步骤 3、 数据集的工作原理(图8.3) 4、 如何将数据集中的数据保存到数据库,请写出步骤 S2深入.NET Ch1: 1、 画出.NET框架的结构(图1.7) .netFramework类库: ASP.Net(Web和WebService)、WinForms、ADO.Net和XML类、基本框架类。 CLR: CLS和CTS。 2、 解释CTS(CommonTypeSystem通用类型系统)和CLS(CommonLanguageSpecification公共语言规范)的含义 CTS: 解决不同语言的数据类型不同的问题。 CLS: 实现多种语言之间的互操作性。 3、 C#编译器 画出.NET编译过程(图1.8) C#代码 Microsoft中间语言 (MSIL) 平台专用代码 VB.Net代码 VB.net编译器 CLR JIT编译器 4、 解释.NET解决了DLL灾难 5、 解释垃圾回收机制工作原理(回去查资料) 垃圾回收器是用来管理应用程序的内存分配和释放的。 当一个应用程序在运行的时候,垃圾回收器设置了一个托管堆。 每次当开发人员使用new运算符创建对象时,运行库都从托管堆为该对象分配内存。 新创建的对象被放在上次创建的对象之后。 垃圾回收器保存了一个指针,该指针总是指向托管堆中最后一个对象之后的内存空间。 当新的对象被产生时,运行库就知道应该将新的对象放在内存的什么地方。 当垃圾回收器的指针指向托管堆以外的内存空间时,就需要回收内存中的垃圾了。 在这个过程中,垃圾回收器首先假设在托管堆中所有的对象都需要被回收。 然后它在托管堆中寻找被根对象引用的对象(根对象就是全局,静态或处于活动中的局部变量以及寄存器指向的对象),找到后将它们加入一个有效对象的列表中,并在已经搜索过的对象中寻找是否有对象被新加入的有效对象引用。 直到垃圾回收器检查完所有的对象后,就有一份根对象和根对象直接或间接引用了的对象的列表,而其它没有在表中的对象就被从内存中回收 6、 CLR主要用途(CommonLanguageRuntime公共语言运行时) 是所有.Net应用程序运行时的环境,所有应用程序都要使用的编程基础,它如同一个支持.Net应用程序运行和开发的虚拟机。 Ch2: 1、 什么是类和对象 类: 具有相同特征工共同行为的一级对象的集合。 是一个模子。 对象: 是真实的实体。 它们的关系: 由对象归纳为类,是归纳对象共性的过程;在类的基础上,将状态和行为实体化为对象的过程称为实例化。 2、 什么是封装 封装是面向对象的三大特性之一,用于隐藏内部实现,对外只暴露对类的基本操作,而不会让其他对象影响类的实现。 3、 什么是函数重载 一个类中两个以上的方法,名字相同使用的参数类型或参数个数不同,称为重载。 其方式包括两种: 参数不同类型的重载和参数个数不同的重载。 4、 解释静态方法和实例方法的差别(表2-2) 实例方法: 需要使用类的实例对象来调用的方法 静态方法: 通过“类名.方法名”来调用的方法 不需要static关键字 Static关键字修饰 实例对象调用 类名调用,不需要new出来 可以直接访问静态成员 可以访问静态成员 可以直接访问实例成员 不可以直接访问实例成员 可以直接调用实例方法和静态方法 不能直接调用实例方法 实例化对象时初始化 调用前初始化 5、 写出Pascal和Camel命名法的意义 Pascal命名法: 类、属性、方法(公有成员)的命名,单词的第一个字母要大写。 Camel命名法: 变量(私有成员)的命名,首字母小写,后面的单词首字母大写。 只通过名称就能猜出此变量的含义,采取有意义的单词。 6、 写出out与ref的区别: 都可以将参数值的更改保留 out传递参数: 侧重于输出,必须对out参数先进行赋值。 ref传递参数: 侧重于修改,可以不先赋值。 Ch3: 1、 说明枚举的作用 枚举可以避免不合理的赋值,它表示一组有限的值,对可能的值进行约束;更易于输入,使代码更清晰,允许描述性的名称表示数据,使用时直观方便。 2、 写出如何用枚举来进行复合状态判断(上课扩展): 定义性别枚举: publicenumGender { male=0,female=1 } //将字符串”male”转换为枚举: Gender性别=(Gender)Enum.Parse(typeof(Gender),"male"); //将数字0转换为枚举: Gender性别男=(Gender)Enum.Parse(typeof(Gender),"0"); //将枚举转换为数字: inti=Convert.ToInt32(Gender.male); 或: intj=((IConvertible)((System.Enum)Gender.male)).ToInt32(null); 3、 结构和类的差别(表3-1) 结构struct 类class 值类型 引用类型 不能被继承 可以被继承 可以有默认构造函数 可以有默认构造函数 添加的构造函数必须带参数 可以添加无参的构造函数 创建对象可以不用new 创建对象必须使用new 在结构中给字段赋值是错误的 类中可以给字段赋值,不能写属性 都可以包含字段、方法,也都可以实现接口 4、 什么是值类型,什么是引用类型 值类型: 每个值类型的对象都有一个独立的内存区域保存自己的值,源自System.ValueType,主要包括基本数据类型、结构、枚举 引用类型: 存储的是对象的引用,源自System.Object,主要包括类类型、接口类型、数组等 5、 inti=0;objecto=newobject();运行前两句的内存图 栈区: inti 0 100H newObject() 堆区: Objecto=100H 6、 什么是装箱拆箱并举例说明 装箱: 把值类型转换成引用类型的过程inti=10;objectobj=i; 拆箱: 由引用类型转换为值类型的过程intj=(int)obj; 7、 请创建一个学生类的类关系图 Ch4: 1、 arrayList和hashtable的区别点,写出两种集合的常用方法 ArrayList: 实现IList接口,IList继承自ICollection HashTable: 键-值key-value 使用大小可按需动态增加的数组实现 表示键/值对的集合,这些键/值对根据键的哈希代码进行组织 只能通过数字索引访问元素 可以通过数字索引和key访问元素 常用方法: Add()、Contains()、Remove()、RemoveAt()、ToArray()、Clear(); 属性: Count、Item Add()、ContainsKey()、ContainsValue()、Remove()、Clear(); 属性: Keys、Values、Count、Item 2、 什么是泛型,解释泛型的含义及优点 泛型: 将类型参数化,通过泛型可以定义类型安全的数据类型,保证了类型的安全性,其性能更高。 如: List Ch5: 1、 文件读写流程 1)创建文件流: FileStreamfs=newFileStream(@"C: \test.txt",FileMode.Create); 2)创建写入器: StreamWritersw=newStreamWriter(fs);/读取器: StreamReadersr 3)写入内容: sw.Write("aaaaaa");/stringcontent=fs.ReadToEnd(); 4)关闭写入器: sw.Close();/sr.Close(); 5)关闭文件流: fs.Close(); 2、 静态类和非静态类的区别 静态类 非静态类 用static修饰 不用static修饰 只包含静态成员 可以包含静态成员,也可以包含非静态成员 不可以包含实例成员 可以包含实例成员 使用类名调用静态成员: 类名.方法名() 使用实例对象调用非静态成员 不能被实例化 可以被实例化 不能包含实例构造函数 可以包含实例构造函数 3、 什么是XML: eXtensibleMarkupLanguage可扩展标记性语言 XML用于描述数据,每对标记称为节点,是成对出现的,其各个节点可以自由地扩展,节点区分大小写 4、 写出xmlDocument、xmlNode的常用属性和方法 xmlDocument对象可表示整个XML文档: Load()读取整个XML结构、ChildNodes获取所有子节点、DocumentElement获取根节点。 xmlNode表示XML中的节点: InnerText当前节点的内容、Name当前节点的名字、ChildNodes当前节点的所有子节点。 Ch6: 1、 什么是继承 一个类可以继承自另一个类,比如学生类Student和老师类Teacher继承自Person类,被继承的类称为父类或基类,继承自其他类的类称为子类或派生类。 继承关系在类图中用箭头表示,箭头指向父类。 它们符合is-a的关系,即子类isa父类。 继承中的方法重写,虚方法等。 用base关键字可以从子类访问父类的属性与方法。 2、 请写出public、private、protected的区别(表6-1) 修饰符 类内部 子类 其他类 public 可以
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 试题