.Net面试题中的经典

</pre><pre name="code" class="csharp">
 2 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。

public static void Main()
{
	Console.WriteLine(Foo(30));
}

//参数是数列的位数
public static int Foo(int i)
{
	if(i <= 0)//位数小于零,退出
	{
		return 0;
	}    
	else if(i > 0 && i <= 2)//第一位和第二位的值都是1
	{
		return 1;
	}
	else
	{
		return Foo(i - 1) + Foo(i - 2);
	}
}

3 请编程遍历页面上所有TextBox控件并给它赋值为string.Empty

//遍历控件

foreach(System.Windwos.Forms.Control control in this.Controls)
{
	if(control is System.Windwos.Forms.TextBox)//找到类型是TextBox的控件
	{
		System.Windwos.Forms.TextBox tb = (System.Windwos.Forms.TextBox)control;
		tb.Text = String.Empty;
	}
}

4 求以下表达式的值,写出您想到的一种或几种实现方法:1-2+3-4+……+m

int Num = Convert.ToInt32(this.TextBox1.Text.ToString());
int Sum = 0;//和
for(int i = 0; i < Num + 1; i++)
{
	if((i%2) == 1)
	{
		Sum += i;
	}
	else
	{
		Sum -= i;
	}
}
Console.WriteLine(Sum);

5 .Net中读写数据库需要用到那些类?他们的作用?

Connection:数据库连接对象

Command:数据库命令对象

DataReader:数据读取器

DataAdapter:数据适配器

DataSet:数据储存器


6 常用的调用WebService的方法有哪些?

(1)使用WSDL.exe命令行工具

(2)使用VS.NET中的Add Web Reference菜单选项

 
7 请详述在dotNet中类(class)与结构(struct)的异同?

class 可以被实例化,属于引用类型,是分配在内存的堆上的;

struct 属于值类型,是分配在内存的栈上的.

 
8 简要谈一下您对微软.NET 构架下remoting和webservice两项技术的理解以及实际中的应用

WS主要是可利用HTTP,穿透防火墙。

而Remoting可以利用TCP/IP,二进制传送提高效率。

 
9 String s = new String("xyz");创建了几个String Object?

答:两个对象,一个是"xyz",一个是指向"xyz"的引用对象s.

 
10 如何处理几十万条并发数据?

用存储过程或事务。

取得最大标识的时候同时更新。

注意主键不是自增量方式这种方法并发的时候是不会有重复主键的.

取得最大标识要有一个存储过程来获取.

 
11 进程和线程的区别?

进程是系统进行资源分配和调度的单位;

线程是CPU调度和分派的单位,

一个进程可以有多个线程,这些线程共享这个进程的资源。

 
12 堆和栈的区别?

栈:由编译器自动分配、释放。在函数体中定义的变量通常在栈上。

堆:一般由程序员分配释放。用new、malloc等分配内存函数分配得到的就是在堆上。

 
13 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。

int[] array = new int[100];
ArrayList myList = new ArrayList();
Random rnd = new Random();
while(myList.Count <= 100)
{
	int num = rnd.Next(1.101);
	//如果不存在此数字,就插入之
	if(!myList.Contains(num))
	{
		myList.Add(num);
	}
}
//将ArrayList中的数据复制到array中
for(int i = 0; i < 100; i++)
{
	array[i] = (int)myList[i];
}

14 描述一下ASP。NET服务器控件的生命周期

初始化

加载视图状态

处理回发数据

加载

发送回发更改通知

处理回发事件

预呈现

保存状态

呈现

处置

卸载

 

15 重载 overload 与覆盖 override 的区别?

答:1、方法的覆盖是子类和父类之间的关系,是垂直关系;

方法的重载是同一个类中方法之间的关系,是水平关系

2、覆盖只能由一个方法,或只能由一对方法产生关系;

方法的重载是多个方法之间的关系。

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

4、覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)

来决定;

重载关系,是根据调 用时的实参表与形参表来选择方法体的。

 

16 什么是.Net?

.net是一种平台和框架, .net 不是单纯的语言也不是单纯的工具,

它是从底层平台开始构建起来的一个整体框架.

 
17 接口 interface 和类 class 有什么异同?

不同点:

1、不能直接实例化接口。

2、接口只包含方法或属性的声明,不包含方法的实现。

3、接口可以多继承,类只能单继承。

4、类有分部类的概念,定义可在不同的源文件之间进行拆分partial。

5、表达的含义不同,接口主要定义一种规范,统一调用方法,也就是规范类,

约束类,类是方法功能的实现和集合。

 

相同点:

1、接口、类和结构都可以从多个接口继承。

2、接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员。

3、接口和类都可以包含事件、索引器、方法和属性。

 

18 值类型包括简单类型、结构体类型和枚举类型,

引用类型包括自定义类、数组、接口、委托等。

 

19 向服务器发送请求有几种方式?区别?

get post get一般为链接方式,post一般为按钮方式。主要区别如下:

1、get从服务器上获取数据,post向服务器传送数据

2、 get把参数队列加到表单Action所指定的URL地址中,值和表单内的各个字段一一对应,在URL中可以显示出来。

post把表单中的各个字段及其内容放到HTML Header里,一起传送到Action所指定的URL地址中,不会在URL中可以显示出来

3、对于get,服务器端用Request.QueryString获取变量提交的值,对于post服务器端用Request.Form获取提交的数据。

4、因受到URL长度的限制,get传输的数据量少,不能大于2K,post传输的数据量较大,一般默认没限制。

理论上IIS5中为100K,最大可以达到2M

5、get安全性低,post安全性高

 

20 软件开发过程一般有几个阶段?每个阶段的作用?

需求分析,架构设计,代码编写,QA,部署

需求分析,概要设计,详细设计,软件编码,软件测试

可行性分析,需求分析 ,实施和编码,测试,维护

分析(可行性分析, 需要,概要,详细),开发(编程,单元测试),测试(集成测试),维护。

 

21 概述反射和序列化

反射:程序集包含模块,而模块包含类型,类型又包含成员。

反射则提供了封装程序集、模块和类型的对象。

您可以使用反射在运行时动态地创建类型的实例,将类型绑定到现有对象,

或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性,

通过反射命名空间中的类以及 System.Type,可以使用反射在运行时动态地创建类型的实例,

然后调用和访问这些实例。也可以获取有关已加载的程序集和在其中定义的类型

(如类、接口和值类型)的信息。

 

序列化:序列化是将对象转换为容易传输的格式的过程。

例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。

在另一端,反序列化将从该流重新构造对象。

 

22 UDP连接和TCP连接的异同。

UDP是用户数据报协议,是一个简单的面向数据报的传输协议,面向非连接的,是不可靠的连接。

TCP是传输控制协议,提供的是面向连接的,是可靠的,字节流服务,

当用户和服务器彼此进行数据交互的时候,必须在他们数据交互前要进行TCP连接之后

才能传输数据。TCP提供超时重拨,检验数据功能。

前者只管传,不管数据到不到,无须建立连接。后者保证传输的数据准确,须要连结。

 

23 .net Remoting 的工作原理是什么?

服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置。

 

24 Remoting的作用?

采用分布式进行编程的一种技术,Remoting主要用于管理跨应用程序域的同步和异步RPC

(远程过程调用协议Remote Procedure Call protocol)会话。

在默认情况下,Remoting使用 HTTP 或 TCP 协议,并使用 XML 编码的 SOAP

或本机二进制消息格式进行通信。.NET Remoting 提供了非常灵活和可扩展的编程框架,

并且他可以管理对象的状态。

 

25 讲一讲你理解的web service,在dot net framework中,怎么很好的结合xml?

从表面上看,Web Service就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。

这就是说,你能够用编程的方法通过Web调用来实现某个功能的应用程序。

从深层次上看,Web Service是一种新的Web应用程序分支,

它们是自包含、自描述、模块化的应用,可以在网络(通常为Web)中被描述、发布、查找

以及通过Web来调用。可扩展的标记语言XML 是Web Service平台中表示数据的基本格式。

除了易于建立和易于分析外,XML主要的优点在于它既与平台无关,又与厂商无关。

XML是由万维网协会(W3C)创建,W3C制定的XML SchemaXSD 定义了一套标准的数据类型,

并给出了一种语言来扩展这套数据类型。Web Service平台是用XSD来作为数据类型系统的。

当你用某种语言如VB.NET或C# 来构造一个Web Service时,为了符合Web Service标准,

所有你使用的数据类型都必须被转换为XSD类型。如想让它使用在不同平台和不同软件的

不同组织间传递,还需要用某种东西将它包装起来。这种东西就是一种协议,如 SOAP。

 

26 remoting和webservice(简述webservice中概念和原理)

简单的说,WS主要是可利用HTTP,穿透防火墙。而Remoting可以利用TCP/IP,二进制传送提高效率。

1、Remoting可以灵活的定义其所基于的协议,如果定义为HTTP,则与Web Service就没有什么区别了,

一般都喜欢定义为TCP,这样比Web Service稍为高效一些。

2、Remoting不是标准,而Web Service是标准。

3、Remoting一般需要通过一个WinForm或是Windows服务进行启动,而Web Service则需要IIS进行启动。

4、在VS.net开发环境中,专门对Web Service的调用进行了封装,用起来比Remoting方便。

我建议还是采用Web Service好些,对于开发来说更容易控制。Remoting一般用在C/S的系统中,

Web Service是用在B/S系统中,后者还是各语言的通用接口,相同之处就是都基于XML。

为了能清楚地描述Web Service 和Remoting之间得区别,我打算从他们的体系结构上来说起:

 

27 Web Service大体上分为5个层次:

1.HTTP 传输信道

2.XML 数据格式

3.SOAP 封装格式

4.WSDL 描述方式

5.UDDI 体系框架

总体上来讲,.NET 下的 Web Service结构比较简单,也比较容易理解和应用,一般来讲在.NET

结构下的WebService应用都是基于.net framework以及IIS的架构之下,所以部署(Dispose)

起来相对比较容易点。

从实现的角度来讲,首先WebService必须把暴露给客户端的方法所在的类继承于:

System.Web.Services.WebService这个基类;其次所暴露的方法前面必须有[WebMethod]

或者[WebMethodAttribute] 。

WebService的运行机理。首先客户端从服务器的到WebService的WSDL,

同时在客户端声称一个代理类(Proxy Class)

这个代理类负责与WebService服务器进行Request 和Response,当一个数据(XML格式的)

被封装成SOAP格式的数据流发送到服务器端的时候,就会生成一个进程对象并且把接收到这

个Request的SOAP包进行解析,然后对事物进行处理,处理结束以后再对这个计算结果

进行SOAP包装,然后把这个包作为一个Response发送给客户端的代理类(Proxy Class),

同样地,这个代理类也对这个SOAP包进行解析处理,继而进行后续操作。

这就是WebService的一个运行过程。

下面对.NET Remoting进行概括的阐述:

.NET Remoting是在DCOM等基础上发展起来的一种技术,它的主要目的是实现跨平台、跨语言、

穿透企业防火墙,这也是他的基本特点,与WebService有所不同的是,它支持HTTP以及TCP信道,

而且它不仅能传输XML格式的SOAP包,也可以传输传统意义上的二进制流,这使得它变得

效率更高也更加灵活。而且它不依赖于IIS,用户可以自己开发(Development)并部署(Dispose)

自己喜欢的宿主服务器,所以从这些方面上来讲WebService其实上是.NET Remoting的一种特例。

1、Remoting是MarshByReference的,可以传变量的引用,直接对服务器对象操作。速度快,

适合Intranet(企业内部互联网)。WebService是MarshByValue的,必须传对象的值。速度慢,

可以过FIREWALL,配置比较简单,适合Internet(因特网)。

2、一般来说,Remoting是和平台相关的不跨平台的,需要客户和服务器都是.NET,

但可配置特性比较好,可以自定义协议。WebService可以做到跨平台通信,但必须采用SOAP协议。

3、 SOAP消息有RPC和文档两种样式。文档样式的body元素中包含一个或多个元素,

可以是任何内容,只要接受者理解就行了。rpc样式的的body元素中包含调用的方法或

远程过程的名称,以及代表方法参数的元素。

 

28 常用的调用webservice方法有哪些?

可以从浏览器、ASP页或其他WEB服务调用可以使用HTTP-GET HTTP-POST访问WEB服务,也可以从

ASP页或其他WEB服务向其他WEB服务发出SOAP请求HTTP-GET HTTP-POST SOAP

使用WEB服务代理

 

29 使用MS XML Webservice服务与使用SOAP的.NET Remoting的区别?

SOAP是简单对象访问协议,Web服务正是通过WSDL来约定服务器和客户端基于xml的SOAP来通讯,

而无论客户端和服务器都不需要知道对方的平台、编程语言等信息。

.NET Remoting本质是为了交互更为复杂的对象,甚至需要管理远程对象的生命周期,

所以客户端必须了解服务器对象的详细信息,虽然.NET Remoting支持使用SOAP,

但对于客户端来说还是必须了解服务器对象的详细信息。

Web服务使用的消息机制,而Remoting采用的RPC. Web Service能用于不同平台,不同语言,

Remoting只适用于.Net。效率上Remoting高于Xml Web Service

 

30 页生命周期阶段

1、页请求:发生在页面生命周期之前,用户请求页时,ASP.NET将确定是否需要分析和编译页,从而确定是否开始页面的生命周期,或者是否可以在不运行页的情况下发送页面缓存以进行响应。

2、开始:设置页属性,如:HttpContext以及其他属性;在此阶段,页面需要确定是回发请求还是新请求,并设置IsPostBack属性;设置页面的UICulture属性。

3、页面初始化:加载所有主题;控件生成,并设置UniqueID;

注:ViewState、ControlState中的值还未加载至控件;如果页面是回发,则回发数据也还未加载;故此时控件可以访问,但值可能出错。

4、加载:如果当前请求是回发请求,则为控件加载ViewState和ControlState中的值。

5、验证:调用所有验证程序控件的Validate方法,此方法将设置验证程序控件和页的IsValid属性。

6、回发事件处理:如果请求是回发请求,则调用所有事件处理程序。

7、呈现:首先对该页和所有控件进行保存视图状态,然后对每个控件调用Render方法,它会提供一个文本编写器,用于将控件的输入写入页的Response属性的OutputStream中。

8、卸载:完成呈现,并已将页发送至客户端、准备丢弃该页后,调用卸载。将卸载属性如:Response和Request等等。

80、页生命周期事件:

1、PreInit

完成操作:检查IsPostBack属性来确定是不是第一次处理该页;

创建或重新创建动态控件

动态设置主控页

动态设置Theme属性

读取或设置配置文件属性

注:如果请求是回发请求,则控件的值尚未从视图状态恢复,即:不应该在此事件中设置控件属性。

2、Init

完成操作:在所有控件都已经初始化并且应用所有外观设置后引发。使用该事件来读取和初始化控件属性。

3、InitComplete

完成操作:由Page对象引发,使用该事件来处理要求完成所有初始化工作的任务。

4、PreLoad

完成操作:为页和所有控件加载视图状态,然后处理Request 实例包括的任何回发数据。

注:如果需要在Load之前对页或控件进行处理,需要该事件。

5、Load

完成操作:以递归方式加载所有控件。

6、控件事件

完成操作:处理控件引发的事件。

注:在回发请求中,如果页包含验证程序控件,请在执行任何处理之前检查Page和各个验证控件的IsValid属性。

7、LoadComplete

8、PreRender

在控件输出前最后的修改机会。

注:在该事件发生前的操作:

Page对所有控件递归进行EnsureChildControl操作

设置了DataSourceID属性的数据绑定控件会调用DataBind方法。

9、SaveStateComplete

在该事件发生前,已经对控件的ViewState进行了保存。将忽略对页和控件所作的所有修改。

10、Render

方法,便于开发

11、UnLoad

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

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

 

31 写一个使用索引器的程序

using System;
class MyArray
{
	private string[] str = new string[5];
	//定义索引器,并且具有可读可写属性,用this声明属性,接受一个整型类型参数
	public string this[int i]
	{
		get
		{
			return str[i];
		}
		set
		{
			str[i] = value;
		}
	}

	//获取数组长度
	public int Length
	{
		get
		{
			return str.Length;
		}
	}
}

public class MyIndex
{
	static void Main(string[] args)
	{
		MyArray ma = new MyArray();
		//给数组赋值
		Console.WriteLine("给数组赋值,请输入数组元素值:");
		for(int i = 0; i < ma.Length; i++)
		{
			ma[i] = Console.ReadLine();
		}
		//输出数组中的内容
		Console.WriteLine("你输入的内容是:");
		for(int i = 0; i < ma.Length; i++)
		{
			Console.WriteLine(ma[i] + " ");
		}
	}
}

//结果
给数组赋值,请输入数组元素值:
78
tom
**
100
23
你输入的内容是:
78 tom ** 100 23 请按任意键继续. . .


32 C#函数中无参数修饰符、out修饰符、params修饰符、ref修饰符的区别

无参数修饰符:表示按值传递

out修饰符:表示按引用传递,传递前不需赋初值,但在传入的方法内赋值,否则报错

ref修饰符:表示按引用传递,传递前必须赋初值,否则报错

params修饰符:可将不确定个数的一组相同类型的数据作为参数传递,函数签名中只能有一个params修饰符,

并且应为最后一个参数。

 

33 获得枚举中的常数名称和常数值

通过Enum.GetNames(typeof(枚举))获得枚举名称,Enum.GetValues(typeof(枚举))获得枚举常数值

例如:

using System;
class Program
{
	enum Color : byte
	{
	Red,Blue,Green,Orange
	}
	static void Main(string[] args)
	{
		string[] sa = Enum.GetNames(typeof(Color));//返回Red,Blue,Green,Orange
		Console.WriteLine("枚举中的常数名称:");
		foreach(string s in sa)
		{
			Console.Write(s + "\t");
		}
		Console.WriteLine();
		byte[] sb = (byte[])Enum.GetValues(typeof(Color));//返回值是0123
		Console.WriteLine("枚举中的常数值是:");
		foreach(byte b in sb)
		{
			Console.Write(b + "\t");
		}
		Console.WriteLine();
	}
}

//结果:

枚举中的常数名称:

Red Green Blue Orange

枚举中的常数值:

0 1 2 3

请按任意键继续. . .

 

34 请解释什么是上下文对象,在什么情况下要使用上下文对象

上下文对象是指HttpContext类的Current 属性,当我们在一个普通类中要访问内置对象

(Response,Request,Session,Server,Appliction等)时就要以使用此对象

 

35 Finalize()和Dispose()之间的区别?

Finalize自动释放资源,Dispose()用于手动释放资源。

 

36 为什么不提倡catch(Exception)?

原因可能有两点:

1)try..catch在出现异常的时候影响性能

2)应该捕获更具体得异常,比如IOExeception,OutOfMemoryException等.

 

37 在对象比较中,对象一致和对象相等分别是指什么?

对象一致是指两个对象是同一个对象,引用相同。

而对象相等是指两个对象的值相同,但引用不一定相同.

 

38 请解释转发与跳转的区别?

转发就是服务端的跳转A页面提交数据到B页面,B页面进行处理然后从服务端跳转到其它页面Server.Transfer,

跳转就是指客户端的跳转Reponse.Redirect

 

39 什么叫做SQL注入,如何防止?请举例说明。

利用sql关键字对网站进行攻击。过滤关键字'等

所谓SQL注入(SQL Injection),就是利用程序员对用户输入数据的合法性检测不严或不检测的特点,

故意从客户端提交特殊的代码,从而收集程序及服务器的信息,从而获取想得到的资料。

 

40 请叙述属性与索引器的区别。

属性 索引器

通过名称标识 通过签名标识

通过简单名称或成员访问来访问 通过元素访问来访问

可以为静态成员或实例成员 必须为实例成员

属性的get访问器没有参数 索引器的get访问器具有与索引器相同的形参表

属性的set访问器包含隐式value参数 除了value参数外,索引器的 set 访问器还具有与索引器相同的形参表。

 

41 变量A、B如何不通过第三变量来交换(C#实现)?

using System;
class MainClass
{
	static void Main(string[] args)
	{
		int a = 5;
		int b = 7;
		Console.WriteLine("交换前:a={0},b={1}",a,b);
		a = a + b;
		b = a - b;
		a = a - b;
		Console.WriteLine("交换后:a={0}, b={1}",a,b);
		Console.ReadLine();
	}
}


42 程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。

要求:1.要有联动性,老鼠和主人的行为是被动的。

2.考虑可扩展性,猫的叫声可能引起其他联动效应。

using System;

//猫
public sealed class Cat
{
	//猫叫时引发的事件
	public event EventHandler Calling;
	public void Call()
	{
		Console.WriteLine("猫叫了...");
		if(Calling != null)//检查是否有事件注册
		Calling(this, EventArgs.Empty);//调用事件注册的方法
	}
}

//老鼠
public sealed class Mouse
{
	//提供一个方法表示逃跑
	public void Escape()
	{
		Console.WriteLine("老鼠逃跑了...");
	}
}

//主人
public sealed class Master
{
	//发生猫叫时惊醒
	public void Wakeup(object sender, EventArgs e)
	{
		Console.WriteLine("主人惊醒了...");
	}
}

public class Program
{
	//程序入口点
	public static void Main(string[] args)
	{
		//建立猫
		Cat cat = new Cat();
		//建立老鼠
		Mouse mouse = new Mouse();
		//建立主人
		Master master = new Master();
		//注册事件
		cat.Calling += new EventHandler(mouse.Escape);
		cat.Calling += new EventHandler(master.Wakeup);

		//猫开始叫
		cat.Call();
	}
}

//结果:

//猫叫了...

//老鼠逃跑了...

//主人惊醒了...

//请按任意键继续. . .

 

以下采用观察者模式

//要点:

//1. 联动效果,运行代码只要执行Cat.Cryed()方法.2. 对老鼠和主人进行抽象

//评分标准: <1>.构造出Cat、Mouse、Master三个类,并能使程序运行(2分)

//<2>从Mouse和Master中提取抽象(5分)

//<3>联动效应,只要执行Cat.Cryed()就可以使老鼠逃跑,主人惊醒.(3分)

using System;
using System.Collections;
public interface Observer
{
	//观察者的响应,如是老鼠见到猫的反映
	void Response();
}
public interface Subject
{
	//针对哪些观察者,这里指猫的要扑捉的对象---老鼠
	void AimAt(Observer obs);
}
public class Mouse : Observer
{
	private string name;
	public Mouse(string name, Subject subj)
	{
		this.name = name;
		subj.AimAt(this);
	}
	public void Response()
	{
		Console.WriteLine(name + " attempt to escape!");
	}
}
public class Master : Observer
{
	public Master(Subject subj)
	{
		subj.AimAt(this);
	}
	public void Response()
	{
		Console.WriteLine("Host waken!");
	}
}
public class Cat : Subject
{
	private ArrayList observers;
	public Cat()
	{
		this.observers = new ArrayList();
	}
	public void AimAt(Observer obs)
	{
		this.observers.Add(obs);
	}
	public void Cry()
	{
		Console.WriteLine("Cat cryed!");
		foreach (Observer obs in this.observers)
		{
			obs.Response();
		}
	}
}
class MainClass
{
	static void Main(string[] args)
	{
		Cat cat = new Cat();
		Mouse mouse1 = new Mouse("mouse1", cat);
		Mouse mouse2 = new Mouse("mouse2", cat);
		Master master = new Master(cat);
		cat.Cry();
	}
}
Cat cryed!
mouse1 attempt to escape!
mouse2 attempt to escape!
Host waken!

 

43 写出程序的输出结果

using System;
class Program
{
	private string str = "Class1.str";
	private int i = 0;
	static void StringConvert(string str)
	{
		str = "A string being converted.";
	}
	static void StringConvert(Program c)
	{
		c.str = "B string being converted.";
	}
	static void Add(int i)
	{
		i++;
	}
	static void AddWithRef(ref int i)
	{
		i++;
	}
	static void Main()
	{
		int i1 = 10;
		int i2 = 20;
		string str = "str";
		Program c = new Program();
		Add(i1);
		AddWithRef(ref i2);
		Add(c.i);
		StringConvert(str); //string无法被改变
		StringConvert(c); //传递对象string可以被改变
		Console.WriteLine(i1);
		Console.WriteLine(i2);
		Console.WriteLine(c.i);
		Console.WriteLine(str);
		Console.WriteLine(c.str);
	}
}

运行结果:

10

21

0

str

B string being converted.

请按任意键继续. . .

 

44 写出程序的输出结果

using System;
public abstract class A
{
	public A()
	{
		Console.WriteLine('A');
	}
	public virtual void Fun()
	{
		Console.WriteLine("A.Fun()");
	}
}
public class B : A
{
	public B()
	{
		Console.WriteLine('B');
	}
	public new void Fun()
	{
		Console.WriteLine("B.Fun()");
	}
	public static void Main()
	{
		A a = new B();
		a.Fun();
	}
}
 
运行结果:

A

B

A.Fun()

请按任意键继续. . .

 

//有继承关系,在构造子类的时候会先构造父类;Fun函数在子类是被new了一下,

//只是显示隐藏,并没有重写,所以输出还是A.Fun()。如果子类是被override,则最后输出B.Fun

 

45 写出程序的输出结果

using System;
public class A
{
	public virtual void Fun1(int i)
	{
		Console.WriteLine(i);
	}
	public void Fun2(A a)
	{
		a.Fun1(1); //以传递进来的对象选择哪个Fun1
		Fun1(5); //以调用此方法的对象选择哪个Fun1
	}
}
public class B : A
{
	public override void Fun1(int i)
	{
		base.Fun1(i + 1);
	}
	public static void Main(string[] args)
	{
		B b = new B();
		A a = new A();
		a.Fun2(b);
		b.Fun2(a);
	}
}

输出结果:

2

5

1

6

请按任意键继续. . .

 

46 冒泡排序

using System;
public class MainClass
{
	public static void ArraySort()
	{
		int[] Arr = { 9, 8, 7, 6, 5, 4, 3, 2, 1 };
		int t = 0;
		//从小到大排序
		for (int i = 0; i < Arr.Length - 1; i++) //总共需要N-1趟
		{
			for (int j = 0; j < Arr.Length - 1 - i; j++) //每趟总共需要(N-1-趟数)次比较
			{
				if (Arr[j] > Arr[j + 1])//当后一个元素大与前一个元素的时候交换
				{
				t = Arr[j];
				Arr[j] = Arr[j + 1];
				Arr[j + 1] = t;
				}
			}
		}
		foreach (int i in Arr)
		{
			Console.Write(i + ",");
		}
	}
	public static void Main()
	{
		ArraySort();
	}
}

输出:1,2,3,4,5,6,7,8,9,请按任意键继续. . .

 

47 写出程序的输出结果

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

请按任意键继续. . .

 

48 请说明如下代码的结果

using System;
class Father
{
	public virtual void show()
	{
		Console.WriteLine("Father");
	}
	static void Main(string[] args)
	{
		Father obj = new Child();
		obj.show();
	}
}
class Child : Father
{
	public override void show()
	{
		Console.WriteLine("Child");
	}
}

输出:Child

请按任意键继续. . .

//如果把virtual和override去掉,输出结果为Father

 

49 分解质因数

int n = 12;
for(int i = 2; i <= n; i++)
{
	while(n != i)
	{
		if(n % i == 0)
		{
			Console.Write("{0}*",i);
			n = n / i;
		}
		else
		break;
	}
}
Console.Write("{0}",n);

 

50 面试问题

1)我们参加的是什么部门?咱们部门现在有多少人?

2)那待遇是怎样的呢?

 

51 应届生外企面试常见的四十个问题

1. Why did you choose your major?

2. Why did you choose your school?

3. Describe a recent leadership experience.

4. Which courses have you enjoyed the most? The least? Why?

5. What is your GPA?

6. If you could do so, how would you plan your education differently?

7. Describe your most rewarding college experience. Your most challenging.

8. Tell me about yourself.

9. What do you consider to be your greatest strengths?

10. If you could change one thing about yourself, what would it be?

11. Describe a time you failed at something and how you handled it?

12. What three keywords would your peers use to describe you, and why?

13. Give me an example of something complex that you needed to effectively communicate to others.

What made it complex? Why was it difficult to communicate?

14. Tell me about an important goal that you set in the past. Were you successful? Why?

15. Tell me about a situation where you had to speak up (be assertive) in order to put across a

point that was important to you.

16. Describe the most significant written document, report, or presentation, you have completed.

17. Tell me about something you have done that is very creative.

18. Describe a time when you were faced with problems or stress that tested your coping skills. What did you do?

19. What motivated you to apply for this position?

20. What interests you most about this job? Least?

21. Why do you want to work for our company?

22. What do you know about our company?

23. What two or three things are most important to you in your job?

24. If you were hiring a graduate for this position, what successful characteristics would you

look for in a candidate?

25. Describe three key skills or qualities you would bring to this position.

26. Why should we hire you?

27. Describe your job-related skills and experience, and how they relate to this position.

28. What have you learned most from some of the jobs you have held?

29. What did you enjoy most about your last job? Least?

30. How would a former supervisor or professor describe you and your work?

31. Describe a workplace challenge you faced and how you handled it.

32. Tell me about a time you worked on a team. How did you handle it?

33. Describe an experience involving a deadline. How were you able to finish on time?

34. Describe a time you went above and beyond the call of duty to get a job done.

35. Give me an example of your ability to lead others.

36. Tell me about a time you wish you had done more planning. What did you learn?

37. What are your short-range career goals?

38. What are your long-range career goals? How are you preparing yourself to achieve them?

39. What characteristics do you possess that will make you successful in your career?

40. Who, or what, influenced you most with regard to your career objectives?

 

51 什么是UML?

答:是一种能够描述问题、描述解决方案、起沟通作用的语言。这就是UML。

UML(Unified Modeling Language 统一建模语言)是由Rational公司发明,目前由OMG(标准化对象管理机构)维护。

作为一种建模语言,UML的定义包括UML语义和UML表示法两个部分:

UML语义

描述基于UML的精确元模型定义。元模型为UML的所有元素在语法和语义上提供了简单、一致、通用的定义性说明,

使开发者能在语义上取得一致,消除了因人而异的最佳表达方法所造成的影响。此外UML还支持对元模型的扩展定义。

UML表示法

定义UML符号的表示法,为开发者或开发工具使用这些图形符号和文本语法为系统建模提供了标准。

这些图形符号和文字所表达的是应用级的模型,在语义上它是UML元模型的实例。

标准建模语言UML的重要内容可以由下列五类图(共9种图形)来定义:用例图、静态图、行为图、交互图、实现图。

从应用的角度看,当采用面向对象技术设计系统时,首先是描述需求;其次根据需求建立系统的静态模型,

以构造系统的结构;第三步是描述系统的行为。其中在第一步与第二步中所建立的模型都是静态的,

包括用例图、类图(包含包)、对象图、组件图和配置图等五个图形,是标准建模语言UML的静态建模机制。

其中第三步中所建立的模型或者可以执行,或者表示执行时的时序状态或交互关系。它包括状态图、活动图、顺序图和

合作图等四个图形,是标准建模语言UML的动态建模机制。因此,标准建模语言UML的主要内容,

也可以归纳为静态建模机制和动态建模机制两大类。

 

52 SQLSERVER服务器中,给定表 table1 中有两个字段 ID、LastUpdateDate,ID表示更新的事务号,

LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号

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

 

53 写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的。

答:解1: 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)

 

54 Remember it.

1,enum类型是静态

2,enum类型仅限于long、int、short 和byte。

3,string 是 System.String的别名,没有什么区别,只不过string是关键字。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值