经典C#面试题

时间:2022-07-13 14:35:55 面试 我要投稿
  • 相关推荐

经典C#面试题

S1 C#:

经典C#面试题

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 (int i in numbers)

{

Console.Write(i + " ");

}

//冒泡排序

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

{

for (int j = 0; j < numbers.Length - 1 - i; j++ )

{//将最大数交换到最后

if(numbers[j] > numbers[j+1])

{

int temp = numbers[j];

numbers[j] = numbers[j + 1];

numbers[j + 1] = temp;

}

}

}

//排序后

Console.WriteLine("\n排序后:");

foreach (int i in numbers)

{

Console.Write(i + " ");

}

2、 分别写出四种循环语法

for(int i=0;i

3、 编程求数组中的最大数,打印所有的水仙花数,打印九九乘法表

求最大数:int[] numbers ={ 49, 12, 65, 45, 88, 54 };

int max = 0;

for (int i = 0; i < numbers.Length-1; i++ )

{

if(numbers[i] > numbers[i+1])

{

max = numbers[i];

}

}

Console.WriteLine("最大数为:"+max);

水仙花数:for (int i = 100; i < 1000; i++ )

{

int a = i % 10; //个位数

int b = i % 100; //十位数

b = b / 10;

int c = i / 100; //百位数

int number = (int)Math.pow(a, 3) + (int)Math.pow(b, 3) + (int)Math.pow(c, 3);

if(number == i)

{

Console.Write(i + " ");

}

}

打印九九乘法表:for (int i = 1; i <= 9; i++ )

{

for (int j= 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、 分别写出数据类型转换(至少四种)的方法,代码举例

显示转换:int i=(int)12.9;

隐式转换:double d=12;

int/double/float.parse ()转换:string s=”13”; int i=int.parse(s);

convert:int x = 13; double d = Convert.ToDouble(x);

Ch4:

1、 partial关键字的含义

partial局部类型允许我们将一个类、结构或接口分成几个部分,分别实现在几个不同的.cs文件中。

适用于以下情况:(1) 类型特别大,不宜放在一个文件中实现。(2) 一个类型中的一部分代码为自动化工具生成的代码,不宜与我们自己编写的代码混合在一起。(3) 需要多人合作编写一个类

http://blog.csdn.net/dotnet90/archive/2006/12/23/1455796.aspx

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、 使用第三方类传递窗体间的数据(代码演示)

public class UserHelpper

{

public static string loginId = ""; //用户名

public static string loginType = ""; //登录类型

}

Ch6:

1、 ADO.Net重要组件(那幅图6.2)

.NetFramework和DateSet

2、 数据提供者程序有哪些

3、 连接字符串的写法(两种)

"Data Source=.\SQLEXpRESS;Initial Catalog=数据库名;Integrated security=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()){int i=sdr.getInt(0);}

Ch8:

1、 请写出DataSet(临时数据库)的内部结构(图8.2)

2、 写出填充一个DataSet的步骤

3、 数据集的工作原理(图8.3)

4、 如何将数据集中的数据保存到数据库,请写出步骤

S2 深入.NET

Ch1:

1、 画出.NET框架的结构(图1.7)

.net Framework类库:ASp.Net(Web和Web Service)、WinForms、ADO.Net和XML类、基本框架类。

CLR:CLS和CTS。

2、 解释CTS(Common Type System通用类型系统)和CLS(Common Language Specification公共语言规范)的含义

CTS:解决不同语言的数据类型不同的问题。

CLS:实现多种语言之间的互操作性。

3、


C#编译器


画出.NET编译过程(图1.8)


C#代码



Microsoft中间语言

(MSIL)



平台专用代

【经典C#面试题】相关文章:

c面试题08-04

华为面试题07-11

「MySQL」经典面试题07-11

采购面试题07-11

面试题集锦07-11

Java面试题07-12

SQL面试题07-12

面试题与技巧07-12

华为面试,C#,南京工资要多少呢,深圳工资开多少?07-11

华为面试题(四)07-11