再长的路,一步步也能走完;再短的路,不迈开双脚也无法到达。

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

精华区 武穆逸仙 340℃ 0评论

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


 

 

转载请注明:武穆逸仙 » .Net开发基础知识、笔试题

Smilie Vote is loading.
喜欢 (0)or分享 (0)

您必须 登录 才能发表评论!