.Net开发基础知识、笔试题

1. .NET 和C#有什么区别

答:.NET 一般指 .NET FrameWork 框架,它是一种平台,一种技术。

C#是一种编程语言,可以基于.NET 平台的应用。

2.一列数的规则如下: 1、1、2、3、5、8、13、21、34…… 求第 30 位数是多少,用递归算法实现。
答:public class MainClass
{
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)
return 1;
else return Foo(i -1) + Foo(i – 2);
}
}

3. C#中的委托是什么?事件是不是一种委托?
答 : 委托可以把一个方法作为参数代入另一个方法。
委托可以理解为指向一个函数的引用。
是,是一种特殊的委托

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

答 . private : 私有成员, 在类的内部才可以访问。

protected: 保护成员,该类内部和继承类中可以访问。

public: 公共成员,完全公开,没有访问限制。

internal:在同一命名空间内可以访问。

5. override 与重载的区别

答 :override 与重载的区别。重载是方法的名称相同。参数或参数类型不同,进行多

次重载以适应不同的需要

Override 是进行基类中函数的重写。为了适应需要。

6.如果在一个 B/S 结构的系统中需要传递变量值,但是又不能使用 Session、Cookie、Application,您有几种方法进行处理?
答 : this.Server.Transfer

7. 请编程遍历页面上所有 TextBox 控件并给它赋值为 string.Empty?
答:
foreach (System.Windows.Forms.Control control in this.Controls)
{
if (control is System.Windows.Forms.TextBox)
{
System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control ;
tb.Text = String.Empty ;
}
}

8. 请编程实现一个冒泡排序算法?
答:
int [] array = new int [*] ;
int temp = 0 ;
for (int i = 0 ; i < array.Length – 1 ; i++)
{
for (int j = i + 1 ; j < array.Length ; j++)
{
if (array[j] < array[i])
{
temp = array[i] ;
array[i] = array[j] ;
array[j] = temp ;
}
}
}

9. 描述一下C#中索引器的实现过程,是否只能根据数字进行索引?
答:不是。可以用任意类型。

10. 求以下表达式的值,写出您想到的一种或几种实现方法:1-2+3-4+……+m
答:
int Num = this.TextBox1.Text.ToString() ;
int Sum = 0 ;
for (int i = 0 ; i < Num + 1 ; i++)
{
if((i%2) == 1)
{
Sum += i ;
}
else
{
Sum = Sum – I ;
}
}
System.Console.WriteLine(Sum.ToString());
System.Console.ReadLine() ;

11. 在下面的例子里
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;x= 1 y = -1

12. CTS、CLS、CLR 分别作何解释?
答:CTS:通用语言系统。CLS:通用语言规范。CLR:公共语言运行库。

13. 什么是装箱和拆箱?
答:从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱。

14. 什么是受管制的代码?
答:unsafe:非托管代码。不经过 CLR 运行。

15.什么是强类型系统?

答:RTTI:类型识别系统。

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

答:DataSet:数据存储器。

DataCommand:执行语句命令。

DataAdapter:数据的集合,用语填充。

17.列举ASP.NET页面之间传递值的几种方式。
答. 1).使用 QueryString, 如….?id=1; response. Redirect()….
2).使用 Session 变量
3).使用 Server.Transfer

18.什么是 Code-Behind 技术?

答:代码后植。

19.在.net 中,配件的意思是?

答:程序集。(中间语言,源数据,资源,装配清单)

20.常用的调用WebService的方法有哪些?

答:1.使用 WSDL.exe 命令行工具。

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

21..netRemoting 的工作原理是什么?

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

22.在 C#中,string str = null 与 string str = “” 请尽量使用文字或图

象说明其中的区别。

答:string str = null 是不给他分配内存空间,而 string str = “” 给它分配

长度为空字符串的内存空间。

23.请详述在 dotnet 中类(class)与结构(struct)的异同?

答:Class 可以被实例化,属于引用类型,是分配在内存的堆上的,Struct 属于值类

型,是分配在内存的栈上的.

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

stringstrTmp = “abcdefg 某某某”;

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

intj= strTmp.Length;

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

答:i=13,j=10

25.SQLSERVER 服务器中,给定表 table1 中有两个字段 ID、LastUpdateDate,

ID 表示更新的事务号,LastUpdateDate 表示更新时的服务器时间,请使用一句

SQL 语句获得最后更新的事务号

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

(LastUpdateDate)FROM table1)

26.简要谈一下您对微软.NET 构架下 remoting 和 webservice 两项技术的理解以及

实际中的应用。

答:WS 主要是可利用 HTTP,穿透防火墙。而Remoting可以利用 TCP/IP,二进制传

送提高效率。

27.公司要求开发一个继承 System.Windows.Forms.ListView 类的组件,要求达到

以下的特殊功能:点击 ListView 各列列头时,能按照点击列的每行值进行重排视

图中的所有行 (排序的方式如 DataGrid 相似)。根据您的知识,请简要谈一下您的

思路

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

28.写出一条 Sql 语句:取出表 A 中第 31 到第 40 记录(SQLServer,以自动增长的 ID

作为主键,注意:ID 可能不是连续的。

答:解 1: select top 10 * from A where id not in (select top 30 id

fromA)

解 2: select top 10 * from A where id >(select max(id) from (select

top30 id from A )as A)

29.面向对象的语言具有 ________ 性、_________ 性、________ 性

答:封装、继承、多态。

30.能用 foreach 遍历访问的对象需要实现 ________________接口或声明

________________ 方法的类型。

答:IEnumerable 、 GetEnumerator。

31.GC 是什么? 为什么要有 GC?

答:GC 是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管

理。要请求垃圾收集,可以调用下面的方法之一:

System.gc()

Runtime.getRuntime().gc()

32.Strings = new String(“xyz”);创建了几个 String Object?

答:两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。

33.启动一个线程是用 run()还是 start()?

答:启动一个线程是调用 start()方法,使线程所代表的虚拟处理机处于可运行状

态,这意味着它可以由 JVM 调度并执行。这并不意味着线程就会立即运行。run()

方法可以产生必须退出的标志来停止一个线程。

34.接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可

继承实体类(concrete class)?

答:接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承

实体类,但前提是实体类必须有明确的构造函数。

35.构造器 Constructor 是否可被 override?

答:构造器 Constructor 不能被继承,因此不能重写 Overriding,但可以被重载

Overloading。

36.是否可以继承 String 类?

答:String 类是 final 类故不可以继承。

37.try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会

不会被执行,什么时候被执行,在 return 前还是后?

答:会执行,在 return 前执行。

38.两个对象值相同(x.equals(y)== true),但却可有不同的 hash code,这句

话对不对?

答:不对,有相同的 hash code。

39.swtich 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上?

答:switch(expr1)中,expr1 是一个整数表达式。因此传递给 switch 和

case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不

能作用于 swtich。

40.当一个线程进入一个对象的一个 synchronized 方法后,其它线程是否可进入此

对象的其它方法?

不能,一个对象的一个 synchronized 方法只能由一个线程访问。

41.abstract 的 method 是否可同时是 static,是否可同时是 native,是否可同时是

synchronized?

答:都不能。

42.List,Set, Map 是否继承自 Collection 接口?

答:List,Set 是 Map 不是

43.Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是

equals()?它们有何区别?

答:Set 里的元素是不能重复的,那么用 iterator()方法来区分重复与否。

equals()是判读两个 Set 是否相等。

equals()和==方法决定引用值是否指向同一对象 equals()在类中被覆盖,为的是

当两个分离的对象的内容和类型相配的话,返回真值。

44.数组有没有 length()这个方法? String 有没有 length()这个方法?

答:数组没有 length()这个方法,有 length 的属性。String 有有 length()这个方

法。

45.sleep()和 wait() 有什么区别?

答:sleep()方法是使线程停止一段时间的方法。在 sleep 时间间隔期满后,线程

不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被

调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级

(b)正在运行的线程因为其它原因而阻塞。

wait()是线程交互时,如果线程对一个同步对象 x 发出一个 wait()调用,该线程

会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。

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

?

答:short s1 = 1; s1 = s1 + 1;有错,s1 是 short 型,s1+1 是 int 型,不能显式

转化为 short 型。可修改为 s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1 正

确。

47.谈谈 final,finally, finalize 的区别。

答:

final—修饰符(关键字)如果一个类被声明为 final,意味着它不能再派生出新

的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract 的,又被

声明为 final 的。将变量或方法声明为 final,可以保证它们在使用中 不被改变。

被声明为 final 的变量必须在声明时给定初值,而在以后的引用中只能读取,不可

修改。被声明为 final 的方法也同样只能使用,不能重载

finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异

常,那么相匹配的 catch 子句就会 执行,然后控制就会进入 finally 块(如果

有的话)。

finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象

从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个

对象没有被引用时对这个对象调用的。它是在 Object 类中定义的 ,因此所有的

类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工

作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

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

答:用存储过程或事务。取得最大标识的时候同时更新..注意主键不是自增量方

式这种方法并发的时候是不会有重复主键的..取得最大标识要有一个存储过程来

获取.

49.Session 有什么重大 BUG,微软提出了什么方法加以解决?

答:是 iis 中由于有进程回收机制,系统繁忙的话 Session 会丢失,可以用 Sate

server 或 SQL Server 数据库的方式存储 Session 不过这种方式比较慢,而且无法

捕获 Session 的 END 事件。

50.进程和线程的区别?

答:进程是系统进行资源分配和调度的单位;线程是 CPU 调度和分派的单位,一个

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

51.堆和栈的区别?

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

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

上。

52.成员变量和成员函数前加 static 的作用?

答:它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数。分

别用来反映类的状态。比如类成员变量可以用来统计类实例的数量,类成员函数

负责这种统计的动作。

53.ASP。NET 与 ASP 相比,主要有哪些进步?

答:asp 解释形,aspx 编译型,性能提高,有利于保护源码。

54.请说明在.net 中常用的几种页面间传递参数的方法,并说出他们的优缺点。

答:session(viewstate) 简单,但易丢失

application 全局

cookie 简单,但可能不支持,可能被伪造

inputttype=”hidden” 简单,可能被伪造

url 参数 简单,显示于地址栏,长度有限

数据库 稳定,安全,但性能相对弱

55.请指出 GAC 的含义?

答:全局程序集缓存。

56.向服务器发送请求有几种方式?

答:get,post。get 一般为链接方式,post 一般为按钮方式。

57.DataReader 与 Dataset 有什么区别?

答:一个是只能向前的只读游标,一个是内存中虚拟的数据库。

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

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

59.在 c#中 using 和 new 这两个关键字有什么意义,请写出你所知道的意义?using

指令 和语句 new 创建实例 new 隐藏基类中方法。

答:using 引入名称空间或者使用非托管资源

new 新建实例或者隐藏父类方法

60.需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,如果字符串中

间还有连续空格的话,仅保留一个空格,即允许字符串中间有多个空格,但连续的空

格数不可超过一个.

答:string inputStr=” xx xx “;

inputStr=Regex.Replace(inputStr.Trim(),”*”,” “);

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

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

62.什么是反射?

答:动态获取程序集信息

63.用 Singleton 如何写设计模式

答:static 属性里面 new ,构造函数 private

64.什么是 ApplicationPool?

答:Web 应用,类似 Thread Pool,提高并发性能。

65.什么是虚函数?什么是抽象函数?

答:虚函数:没有实现的,可由子类继承并重写的函数。抽象函数:规定其非虚

子类必须实现的函数,必须被重写。

66.什么是 XML?

答:XML 即可扩展标记语言。eXtensible Markup Language.标记是指计算机所能

理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。

如何定义这些标记,即可以选择国际通用的标记语言,比如 HTML,也可以使用象

XML 这样由相关人士自由决定的标记语言,这就是语言的可扩展性。XML 是从 SGML

中简化修改出来的。它主要用到的有 XML、XSL 和 XPath 等。

67.什么是WebService?UDDI?

答:Web Service 便是基于网络的、分布式的模块化组件,它执行特定的任务,遵

守具体的技术规范,这些规范使得 Web Service 能与其他兼容的组件进行互操作。

UDDI 的目的是为电子商务建立标准;UDDI 是一套基于 Web 的、分布式的、为

WebService提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将

自身提供的 Web Service 注册,以使别的企业能够发现的访问协议的实现标准。

68.什么是 ASP.net 中的用户控件?

答:用户控件一般用在内容多为静态,或者少许会改变的情况下..用的比较大..类

似 ASP 中的 include..但是功能要强大的多。

69.列举一下你所了解的 XML 技术及其应用

答:xml 用于配置,用于保存静态数据类型.接触 XML 最多的是 web Services..和

config

70.ADO.net 中常用的对象有哪些?分别描述一下。

答:Connection 数据库连接对象

Command 数据库命令

DataReader 数据读取器

DataSet 数据集

71.什么是 code-Behind 技术。

答:ASPX,RESX 和 CS 三个后缀的文件,这个就是代码分离.实现了 HTML 代码和服务

器代码分离.方便代码编写和整理.

72.什么是 SOAP,有哪些应用。

答:simple object access protocal,简单对象接受协议.以 xml 为基本编码结构

,建立在已有通信协议上(如 http,不过据说 ms 在搞最底层的架构在 tcp/ip 上的

soap)的一种规范WebService使用的协议..

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

在哪里?

答:一个是属性,用于存取类的字段,一个是特性,用来标识类,方法等的附加

性质

74.XML 与 HTML 的主要区别

答:1. XML 是区分大小写字母的,HTML 不区分。

2.在 HTML 中,如果上下文清楚地显示出段落或者列表键在何处结尾,那么你可以

省略</p>或者</li>之类的结束标记。在 XML 中,绝对不能省略掉结束标记。

3.在 XML 中,拥有单个标记而没有匹配的结束标记的元素必须用一个 / 字符作为

结尾。这样分析器就知道不用查找结束标记了。

4.在 XML 中,属性值必须分装在引号中。在 HTML 中,引号是可用可不用的。

5.在 HTML 中,可以拥有不带值的属性名。在 XML 中,所有的属性都必须带有相应

的值。

75.c#中的三元运算符是?

答:?:。

76.当整数 a 赋值给一个 object 对象时,整数 a 将会被?

答:装箱。

77.类成员有 _____ 种可访问形式?

答:this.;new Class().Method;

78.publicstatic const int A=1;这段代码有错误么?是什么?

答:const 不能用 static 修饰。

79.floatf=-123.567F; int i=(int)f;i 的值现在是 _____?

答:-123。

80.委托声明的关键字是 ______?

答:delegate.

81.用 sealed 修饰的类有什么特点?

答:密封,不能继承。

82.在 Asp.net 中所有的自定义用户控件都必须继承自 ________?

答:Control。

83.在.Net 中所有可序列化的类都被标记为 _____?

答:[serializable]

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

答:GC。

85.当类 T 只声明了私有实例构造函数时,则在 T 的程序文本外部,___ 可以 ___(可

以 or 不可以)从 T 派生出新的类,不可以 ____(可以 or 不可以)直接创建 T 的

任何实例。

答:不可以,不可以。

86.下面这段代码有错误么?

switch(i){

case():答://case()条件不能为空

CaseZero();

break;

case1:

CaseOne();

break;

case2:

dufault;答://wrong,格式不正确

CaseTwo();

break;

}

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

答:可以。

88..net 的错误处理机制是什么?

答:.net 错误处理机制采用 try->catch->finally 结构,发生错误时,层层上抛

,直到找到匹配的 Catch 为止。

89.利用 operator 声明且仅声明了==,有什么错误么?

答:要同时修改 Equale 和 GetHash() ? 重载了”==” 就必须重载 “!=”

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

答:private void Form1_Closing(object sender,

System.ComponentModel.CancelEventArgse)

{

e.Cancel=true;

}

91.在.net(C# or vb.net)中,Appplication.Exit 还是 Form.Close 有什么

不同?

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

92.某一密码仅使用 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

93.62-63=1 等式不成立,请移动一个数字(不可以移动减号和等于号),使得等

式成立,如何移动?

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

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

处在哪里?

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

95.在 C#中,string str = null 与 string str = “” 请尽量使用文字或图

象说明其中的区别。

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

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

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

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

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

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

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

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

98.重载与覆盖的区别?

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

类中方法之间的关系,是水平关系

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

间的关系。

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

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

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

答:在.net 下,.net 引用了垃圾回收(GC)功能,它替代了程序员不过在 C#中。

1. 谈谈你对 MVC 和三层架构的理解。

MVC 即模型、视图、控制器,模型表示业务数据及业务处理,用来封装数据及行为;视图是用户看到并与之交互的界面;控制器接受用户输入并调用模型和视图去完成用户的请求。使用 MVC 有利于关注点分离,自动化 UI 测试成为了可能。

三层架构即表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。表现层通俗讲就是展现给用户的界面,业务逻辑层即针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。数据访问层:该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。

2. 在 MVC 中如何保持 Sessions?

可使用 tempdata、viewdata、viewbag 三种方式。其中 tempdata:在不同的控制器或动作间转换时保持数据。另外,进行页面转向时,tempdata 可以保持数据,它是一个内部的 Session 变量。Viewdata:可以在控制器和视图间保持数据。Viewbag:它是视图数据的动态包装,使用 viewbag 不需要类型转换,它使用的是内部动态关键词。

3. MVC 中如何做输入验证?

在 M 层使用数据模型的属性标签形如[Required],在 C 层使用 ModelState.IsValid 属性检查数据是否正确,也可在 C 层使用 javascript 进行数据验证。

4. 已经有了 ASPX,为什么还要 Razor?哪个更好?

Razor 是一个轻量级的视图引擎,MVC3 引入,相比 ASPX,Razor 更干净、轻量级、语法更简单,只需要使用@关键字,如@DataTime.Now

5. MVC 有多少种不同类型的结果类型,请详细描述。

有 12 种,最主要的是 ActionResult 类,它是一个基础类,它有 11 个子类型。

ViewResult – 给响应流渲染指定的视图

PartialViewResult – 给响应流渲染指定的局部视图

EmptyResult – 返回空的响应结果。

RedirectResult – 执行一个 HTTP 转向到指定的 URL。

RedirectToRouteResult -执行一个 HTTP 转向到一个 URL,这个 URL 由基于路由数据的路由引擎来决定

JsonResult – 序列化一个 ViewData 对像到 JSON 格式。

JavaScriptResult – 返回一段Javascript 代码,它可以在客户端执行。

ContentResult – 写内容到响应流,不需要视图支持。

FileContentResult – 返回一个文件到客户端。

FileStreamResult – 返回一个文件到客户端,它提供的是流。

FilePathResult – 返回一个文件到客户端。

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 是关键字。

© 版权声明

☆ END ☆
喜欢就点个赞吧
点赞0 分享
图片正在生成中,请稍后...