菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
354
0

C#面试题整理2(不带答案)

原创
05/13 14:22
阅读数 100055

一、C# 理论

1.1、简述 private、 protected、 public、 internal、protected internal 访问修饰符和访问权限

1.2、简述abstract、sealed类修饰符

1.3、简述C#成员修饰符

1.4、ADO.NET中的五个主要对象

1.5、列举ASP.NET 页面之间传递值的几种方式和优缺点

1.6、C#中的委托是什么?事件是不是一种委托?事件和委托的关系

1.7、重写(override)与重载(overload)的区别

1.8、C#中索引器是否只能根据数字进行索引?是否允许多个索引器参数?

1.9、属性和public字段的区别是什么?调用set方法为一个属性设值,然后用get方法读取出来的值一定是set进去的值吗?

1.10、三层架构

1.11、MVC模式

1.12、什么是装箱(boxing)和拆箱(unboxing)?

1.13、什么叫应用程序域(AppDomain) 

1.14、CTS、CLS、CLR分别作何解释

1.15、在dotnet中类(class)与结构(struct)的异同?

1.16、堆和栈的区别?

1.17、能用foreach遍历访问的对象的要求

1.18、GC是什么? 为什么要有GC?

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

1.20、值类型和引用类型的区别?

1.21、C#中的接口和类有什么异同。

1.22、abstract class和interface有什么区别?

1.23、是否可以继承String类?

1.24、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行?

1.25、new 关键字用法

1.26、如何把一个Array复制到ArrayList里

1.27、描述线程与进程的区别?

1.28、什么是强类型,什么是弱类型?哪种更好些?为什么?

1.29、什么是反射?

1.30、int、DateTime、string是否可以为null?

1.31、传入某个属性的set方法的隐含参数的名称是什么?

1.32、C#支持多重继承么?

1.33、C#中所有对象共同的基类是什么?

1.34、通过超链接怎样传递中文参数?

1.35、string、String;int、Int32;Boolean、bool的区别

1.36、Server.Transfer和Response.Redirect的区别是什么?

1.37、不是说字符串是不可变的吗?string s="abc";s="123"不就是变了吗?

1.38、是否可以从一个static方法内部发出对非static方法的调用?

1.39、.Net中会存在内存泄漏吗,请简单描述。

1.40、说出一些常用的类、接口,请各举5个

1.41、BS与CS的联系与区别。

1.42、编写一个单例(Singleton)类。

1.43、什么是sql注入?如何避免sql注入?

1.44、说出一些数据库优化方面的经验?

1.45、谈谈ViewState。谈谈对ASP.Net原理的理解。谈谈ASP.Net生命周期。

1.46、post、get的区别

1.47、Http默认的端口号是(80)、Ftp默认的端口号是(21)、SQLServer的默认端口号是(1433)

1.48、运算符++a表示(先将a加1,然后表达式的值为a加1后的值),a++表示(表达式的值为a,然后a加1)。

1.49、.Net Framework中的类是专门供C#调用的是吗?

1.50、开放性问题:说出尽可能多的基于.Net Framework的语言。

1.51、.Net、ASP.Net、C#、VisualStudio之间的关系是什么?

1.52、AJAX解决什么问题?如何使用AJAX?AJAX有什么问题需要注意?项目中哪里用到了AJAX?

1.53、NET通过对各语言先编译成( IL),然后再执行时用( JIT)将其编译成本地平台代码,来实现异构平台下对象的互操作。

1.54、Application 、Cookie和 Session 两种会话有什么不同?

1.55、开放式问题:你经常访问的技术类的网站是什么?

1.56、你对.net的GC的理解

1.57、请写一个SQL语句:从user表中取出name列中的起始字符是“北京”的全部记录

1.58、如果不用VisualStudio,用哪个命令行编译C#程序?

1.59、请你简单的说明数据库建立索引的优缺点

1.60、什么是WEB服务控件?使用WEB服务控件有那些优势、劣势?

1.61、开放式问题:如果程序连不上SQLServer数据库服务器服务器,你会怎么排除这个故障?

1.62、Http状态码各是什么意思。

1.63、MVC模式的优缺点

1.64、什么是Viewstate?它有什么作用?

1.65、ASP.Net页面生命周期简单描述

1.66、存储过程和sql语句的优缺点

1.67、什么时候使用抽象类,什么时候用接口 

1.68、C#中的堆和栈

1.69、C# ref与out区别: 

1.70、你对泛型了解吗?简单说明一下泛型的有什么好处?

1.71、new有几种用法 

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

1.73、<%# %> 和 <% %> 有什么区别?

1.74、DateTime.Parse(myString); 这行代码有什么问题?

1.75、为什么不提倡catch(Exception) ,catch(Exception e){throw e;}和catch(Exception e){throw;}的区别,error和exception区别

1.76、GET与POST的区别 

1.77、Bind和Eval函数的区别

1.78、Server.UrlEncode、HttpUtility.UrlDecode的区别 

1.79、如何实现连接池

1.80、提高.NET的性能 

1.81、简述你对XML Web Service的原理的认识? 

1.82.什么是受管制的代码? 

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

1.84.O/R Mapping 的原理 

1.85.remoting和webservice两项技术的理解以及实际中的应用。 

1.86.out保留字怎么使用,什么时候使用。

1.87.PDB是什么东西? 在调试中它应该放在哪里?

1.88.使用ASMX的XML Web服务与使用SOAP的.NET Remoting的区别?

1.89.从概念上阐述前期绑定(early-binding)和后期绑定(late-binding)的区别?

1.90.概述反射和序列化

1.91.XmlSerializer是如何工作的?使用这个类的进程需要什么ACL权限?

1.92.XmlSerializer使用的针对属性的模式有什么好处?解决了什么问题?

1.93.SQLSERVER服务器中,给定表 table1 中有两个字段 ID、LastUpdateDate,ID表示更新的事务号,LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号

1.94.在对象比较中,对象一致和对象相等分别是指什么?a.Equals(b)和a == b一样吗?

1.95.请解释一下IClonable

1.96.特性能够放到某个方法的参数上?如果可以,这有什么用?

1.97.WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回。 

1.98.请解释web.config文件中的重要节点 

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

1.100. 几十上百万行,如何快速查询出表数据 

1.101.数据库查询优化: 

1.102.两个表,写查询语句,根据两个字段一个是升序,一个将序。 

1.103、string与String的区别

1.104、虚方法(virtual )和抽象方法(abstract)的区别?

1.105、子类对父类中虚方法的处理有重写(override)和覆盖(new),请说明它们的区别?

1.106、抽象类(abstract)和接口(interface)的区别

1.107.页面生命周期?

1.108.页面生命周期阶段?
1.109.页面生命周期事件?大概描述一下ASP.NET服务器控件的生命周期?

1.110.应用程序生命周期?

1.111.ASP.NET 页面在什么时候产生?又在什么时候销毁?

1.112、String str=new String("a")和String str = "a"有什么区别?

1.113、判断字符串变量str是否为空的一下三种方法哪个性能更优:a、str=="";b、str==String.Empty;c、str.Length==0;?

补充:

如果你的简历上面写“熟悉/了解C#”,那么你就应该能够回答下面的这些基础问题。

  1. 传入某个属性的set方法的隐含参数的名称是什么?
    value,它的类型和属性所声名的类型相同。
  2. 如何在C#中实现继承?
    在类名后加上一个冒号,再加上基类的名称。
  3. C#支持多重继承么?
    不支持。可以用接口来实现。
  4. protected修饰的属性/方法在何处可以访问?
    在继承或间接继承与这个类的子类中可以访问。
  5. 私有成员会被继承么?
    会,但是不能被访问。所以看上去他们似乎是不能被继承的,但实际上确实被继承了。
  6. 请描述一下修饰符protected internal。 
    protected internal修饰的属性/方法只能在它的在同一个程序集(Assembly)中的子类被访问。
  7. C#提供一个默认的无参数构造函数,当我实现了另外一个有一个参数的构造函数时候,还想保留这个无参数的构造函数。这样我应该写几个构造函数?
    两个,一旦你实现了一个构造函数,C#就不会再提供默认的构造函数了,所以需要手动实现那个无参数构造函数。
  8. C#中所有对象共同的基类是什么?
    System.Object.
  9. 重载和覆写有什么区别?
    重载提供了对一个方法签名的不同参数调用的实现。覆写提供了子类中改变父类方法行为的实现。
  10. 在方法定义中,virtual有什么含意? 
    virtual修饰的方法可以被子类覆写。
  11. 能够将非静态的方法覆写成静态方法么?
    不能,覆写方法的签名必须与被覆写方法的签名保持一致,除了将virtual改为override。
  12. 可以覆写私有的虚方法么?
    不可以,甚至子类中无法访问父类中的私有方法。
  13. 能够阻止某一个类被其他类继承么? 
    可以,使用关键字sealed。
  14. 能够实现允许某个类被继承,但不允许其中的某个方法被覆写么? 
    可以,标记这个类为public,并标记这个方法为sealed。
  15. 什么是抽象类(abstract class)?
    一种不可以被实例化的类。抽象类中一般含有抽象方法,当然也可有具体实现。继承类只有实现过所有抽象类的抽象方法后才能被实例化。
  16. 何时必须声明一个类为抽象类? 
    当这个类中包含抽象方法时,或是该类并没有完全实现父类的抽象方法时。
  17. 接口(interface)是什么?
    只含有共有抽象方法(public abstract method)的类。这些方法必须在子类中被实现。
  18. 为什么不能指定接口中方法的修饰符? 
    接口中的方法用来定义对象之间通信的契约,指定接口中的方法为私有或保护没有意义。他们默认为公有方法。
  19. 可以继承多个接口么? 
    当然。
  20. 那么如果这些接口中有重复的方法名称呢? 
    这种情况中你可以决定如何实现。当然需要特别得小心。但是在编译环节是没有问题的。
  21. 接口和抽象类的区别是什么? 
    接口中所有方法必须是抽象的,并且不能指定方法的访问修饰符。抽象类中可以有方法的实现,也可以指定方法的访问修饰符。
  22. 如何区别重载方法? 
    不同的参数类型,不同的参数个数,不同的参数顺序。
  23. const和readonly有什么区别?
    const关键字用来声明编译时常量,readonly用来声明运行时常量。
  24. System.String 和System.StringBuilder有什么区别?
    System.String是不可变的字符串。System.StringBuilder存放了一个可变的字符串,并提供一些对这个字符串修改的方法。 

 


如果你的简历上面说“精通.NET”,那么下面的问题应该大都可以给出较完美的答案。

注:对于每个判断是非问题,都要考虑“为什么”与“为什么不”。

  1. Thread和Process之间有什么区别?.NET新引入了Application Domain的概念,这样他们三个之间有什么区别?引入了Application Domain会带来一些潜在的问题么?
  2. Windows Service与普通的EXE在执行过程中有什么区别?
  3. 一个进程可以访问的Windows地址空间有多大?等于系统的虚拟内存大小么?这两方面将对系统的设计产生什么样的影响?
  4. EXE和DLL之间的区别是什么?在系统设计中应该如何选择使用它们?
  5. 普通的EXE与.NET EXE的执行过程有什么不同?
  6. 什么是弱类型,什么是强类型?在系统设计中应该首先考虑使用哪种类型?
  7. PDB文件是作什么用的?里面包含了什么信息?
  8. Cycloramic Complexity是什么?为什么它很重要?
  9. 为创建一个critical section以访问某个变量书写一个标准的lock() 并加上double check。
  10. 为某个对象实现标准的Dispose模式。
  11. 什么是FullTrust? 存在于GAC中的 assembly 拥有FullTrust么?
  12. 下面这个命令是做什么的?gacutil /l | find /i “system”
  13. 下面这个命令是作什么的? sn -t something.dll
  14. 跨防火墙的 DCOM必须打开哪个端口?端口135是用来做什么的?
  15. 有什么办法可以与现有unmanaged code集成?在集成的时候应该考虑什么问题?
  16. 简要解释一下OOP与SOA都是用来作什么的?
  17. XmlSerializer是如何工作的?进程运行XmlSerializer时候需要什么样的ACL权限?
  18. 在系统设计时,何时应该使用try catch?何时需要避免使用?
  19. Debug.Write()和Trace.Write()之间有什么区别?二者分别应该用于何处?
  20. Debug Build和Release Build有什么区别?在执行效率上有什么明显的区别么?
  21. JIT是针对Assembly还是Method发生的?解释一下为什么.NET的设计者要这样做?
  22. 简要描述一下GC的执行过程。
  23. 应该如何选择使用abstract class还是interface?
  24. 在设计一个自定义类型时应如何选择使用Value Type还是Reference Type?
  25. 对于Value Type和Reference Type,a.Equals(b)的默认实现方式有什么不同?
  26. .NET中为什么不提供默认的deep copy?如果需要,要如何实现deep copy?
  27. 相对于.NET 1.1,.NET2.0为了避免过度的boxing/unboxing造成的系统开销提供了哪些支持?
  28. String是Value Type还是Reference Type?为什么.NET中的String对象被设置成immutable?

 

回到目录

二、C# 笔试

2.1.using关键字有什么用?什么是IDisposable?

using可以声明namespace的引入,还可以实现非托管资源的释放,实现了IDisposiable的类在using中创建,using结束后会自动调用该对象的Dispose方法,释放资源。using其实等价于try……finally,用起来更方便。

 

2.2.Assembly.Load("foo.dll"); 这句话是否正确?

错误,正确的应该是Assembly.Load("foo"); 或者Assembly.LoadFrom("foo.dll");

 

2.3.XML 与 HTML 的主要区别

1)XML是区分大小写字母的,HTML不区分。

2)在HTML中,如果上下文清楚地显示出段落或者列表键在何处结尾,那么你可以省略</p>或者</li>之类的结束 标记。在XML中,绝对不能省略掉结束标记。

HTML:<img src="1.jpg"><br><br>

XML:<img src="1.jpg"></img><br/><br/>

3)在XML中,拥有单个标记而没有匹配的结束标记的元素必须用一个 / 字符作为结尾。这样分析器就知道不用 查找结束标记了。

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

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

XML是用来存储和传输数据的,HTML是用来显示数据的

 

2.4.string str = null 与 string str = “”说明其中的区别。

答:string str = null 是不给他分配内存空间,而string str = \"\" 给它分配长度为空字符串的内存空间。 string str = null没有string对象,string str = “”有一个字符串对象。

 

2.5.写出一条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)

3:select id,row_number() over (order by id) as rowNum from A where rowNum between 31 and 40(推荐)

 

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

答:封装.继承.多态。

 

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

答:[serializable]

 

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

答:GC。

 

2.9.什么叫应用程序域?什么是受管制的代码?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS.CLS和CLR分别作何解释?

应用程序域为安全性.可靠性.版本控制以及卸载程序集提供了隔离边界。应用程序域通常由运行库宿主创建,运行库宿主负责在运行应用程序之前引导公共语言运行库。应用程序域提供了一个更安全.用途更广的处理单元,公共语言运行库可使用该单元提供应用程序之间的隔离。

受管制的代码:.Net环境中运行的任何代码都是受管制的代码(managed code),.Net外部的代码也运行在windows上,这些代码称为未受管制的代码(unmanaged code)。

使用基于公共语言运行库的语言编译器开发的代码称为托管代码;托管代码具有许多优点,例如:跨语言集成.跨语言异常处理.增强的安全性.版本控制和部署支持.简化的组件交互模型.调试和分析服务等。

强类型语言是能够禁止任何违反类型系统的代码的语言,或者说是能够捕获所有违反类型系统的错误的语言。我们说C++相对于C是强类型的,是因为C++禁止了一些C中的隐式转换,比如将void*转换为任意的指针类型。

装箱和拆箱使值类型能够被视为对象。对值类型装箱将把该值类型打包到 Object 引用类型的一个实例中。这使得值类型可以存储于垃圾回收堆中。拆箱将从对象中提取值类型。

每个类型成员都有一个唯一的签名。方法签名由方法名称和一个参数列表(方法的参数的顺序和类型)组成。只要签名不同,就可以在一种类型内定义具有相同名称的多种方法。当定义两种或多种具有相同名称的方法时,就称作重载。

CTS通用类型系统 (common type system)

一种确定公共语言运行库如何定义.使用和管理类型的规范。

CLR公共语言运行库

.NET Framework 提供了一个称为公共语言运行库的运行时环境,它运行代码并提供使开发过程更轻松的服务。

CLS公共语言规范

要和其他对象完全交互,而不管这些对象是以何种语言实现的,对象必须只向调用方公开那些它们必须与之互用的所有语言的通用功能。为此定义了公共语言规范 (CLS),它是许多应用程序所需的一套基本语言功能。

 

2.10.什么是code-Behind技术。

就是代码隐藏,在ASP.NET中通过ASPX页面指向CS文件的方法实现显示逻辑和处理逻辑的分离,这样有助于web应用程序的创建。比如分工,美工和编程的可以个干各的,不用再像以前asp那样都代码和html代码混在一起,难以维护。

 

2.11.接口是一种引用类型,在接口中可以声明方法.属性.索引器和事件,但不可以声明公有的域或私有的成员变量。

 

 

2.12. 在ADO.NET中,对于Command对象的ExecuteNonQuery()方法和ExecuteReader()方法,下面叙述错误的是(c)。

 a) insert.update.delete等操作的Sql语句主要用ExecuteNonQuery()方法来执行;

b) ExecuteNonQuery()方法返回执行Sql语句所影响的行数。

 c) Select操作的Sql语句只能由ExecuteReader()方法来执行;

 d) ExecuteReader()方法返回一个DataReder对象;

解答:ExecuteScalar→select getdate()。

 

 

2.13.下列关于C#中索引器理解正确的是(c )

 a) 索引器的参数必须是两个或两个以上

 b) 索引器的参数类型必须是整数型

 c) 索引器没有名字

 d) 以上皆非

 

2.14. 要创建多文档应用程序,需要将窗体的(d )属性设为true。

a) DrawGrid;

b) ShowInTaskbar;

c) Enabled;

d) IsMdiContainer;

 

2.15.如果设treeView1=new TreeView(),则treeView1.Nodes.Add("根节点")返回的是一个 (a)类型的值。

a) TreeNode;

b) int;

c) string;

d) TreeView;

 

2.16.下面关于XML的描述错误的是(d)。

a) XML提供一种描述结构化数据的方法;

b) XML 是一种简单.与平台无关并被广泛采用的标准;

c) XML文档可承载各种信息;

d) XML只是为了生成结构化文档;

 

2.17.以下的C#代码,试图用来定义一个接口:

 

public interface IFile

{int A;int delFile()

{

   A = 3;

}void disFile();

}

 

 

关于以上的代码,以下描述错误的是(d )。

a) 以上的代码中存在的错误包括:不能在接口中定义变量,所以int A代码行将出现错误;

b) 以上的代码中存在的错误包括:接口方法delFile是不允许实现的,所以不能编写具体的实现函数;

c) 代码void disFile();声明无错误,接口可以没有返回值;

d) 代码void disFile();应该编写为void disFile(){};空和null不一样。

 

2.18.在ASP.NET中有Button控件myButton,要是单击控件时,导航到其他页面http://www.abc.com, 正确的代码为( c)。

a) private void myButton_Click(object sender, System.EventArgs e){Redirect(“http://www.abc.com”);}

b) private void myButton_Click(object sender, System.EventArgs e){Request.Redirect(“http://www.abc.com”);}

c) private void myButton_Click(object sender, System.EventArgs e){Reponse.Redirect(“http://www.abc.com”);}

d) private void myButton_Click(object sender, System.EventArgs e){Request.Redirect(“http://www.abc.com”);return true;}

 

2.19.声明一个委托public delegate int myCallBack(int x); 则用该委托产生的回调方法的原型应该是(b )。

a) void myCallBack(int x) ;

b) int receive(int num) ;

c) string receive(int x) ;

d) 不确定的;

 

2.20.StringBuilder 和 String 的区别?

答:String 在进行运算时(如赋值.拼接等)会产生一个新的实例,而 StringBuilder 则不会。所以在大量字符串拼接或频繁对某一字符串进行操作时最好使用 StringBuilder,不要使用 String

如果要操作一个不断增长的字符串,尽量不用String类,改用StringBuilder类。两个类的工作原理不同:String类是一种传统的修改字符串的方式,它确实可以完成把一个字符串添加到另一个字符串上的工作没错,但是在.NET框架下,这个操作实在是划不来。因为系统先是把两个字符串写入内存,接着删除原来的String对象,然后创建一个String对象,并读取内存中的数据赋给该对象。这一来二去的,耗了不少时间。而使用System.Text命名空间下面的StringBuilder类就不是这样了,它提供的Append方法,能够在已有对象的原地进行字符串的修改,简单而且直接。当然,一般情况下觉察不到这二者效率的差异,但如果你要对某个字符串进行大量的添加操作,那么StringBuilder类所耗费的时间和String类简直不是一个数量级的。

 

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

属性 索引器

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

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

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

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

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

 

2.22.请叙述const与readonly的区别。

const 关键字用于修改字段或局部变量的声明。它指定字段或局部变量的值不能被修改。常数声明引入给定类型的一个或多个常数。

const数据成员的声明式必须包含初值,且初值必须是一个常量表达式。因为它是在编译时就需要完全评估。

const成员可以使用另一个const成员来初始化,前提是两者之间没有循环依赖。

readonly在运行期评估赋值,使我们得以在确保“只读访问”的前提下,把object的初始化动作推迟到运行期进行。

readonly 关键字与 const 关键字不同: const 字段只能在该字段的声明中初始化。readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。另外,const 字段是编译时常数,而 readonly 字段可用于运行时常数。

readonly 只能在声明时或者构造函数里面初始化,并且不能在 static 修饰的构造函数里面。

参考资料:

http://www.cnblogs.com/royenhome/archive/2010/05/22/1741592.html

http://www.cnblogs.com/jams742003/archive/2010/03/23/1692913.html

http://www.cnblogs.com/wayfarer/archive/2006/04/27/386658.html

 

2.23.请解释ASP。NET中的web页面与其隐藏类之间的关系?

一个ASP.NET页面一般都对应一个隐藏类,一般都在ASP.NET页面的声明中指定了隐藏类例如一个页面Tst1.aspx的页面声明如下

<%@ Page language="c#" Codebehind="Tst1.aspx.cs" AutoEventWireup="false" Inherits="T1.Tst1" %>

Codebehind="Tst1.aspx.cs" 表明经编译此页面时使用哪一个代码文件,Inherits="T1.Tst1" 表用运行时使用哪一个隐藏类

 

2.24.什么是viewstate,能否禁用?是否所用控件都可以禁用?

Viewstate是保存状态的一种机制,EnableViewState属性设置为false即可禁用。最有力的举例子:Label.TextBox在禁用ViewState后不同的表现来说明。

 

2.25.你对web service的体会?

答:如果自己写的一些程序也希望别人可以通过Web服务来使用,也可以把自己编写的方法贴上标签[WebMethed]来实现Web 服务。[是当编写程序时,希望实现一些别的网站已经实现过的,也用Web服务可视成XML语言的编码。可以使用别人的编码生成的XML找到自己需要的信息,来实现自己编写的程序的一些功能。

 

2.26.您在什么情况下会用到虚方法?它与接口有什么不同?

答案:子类重新定义父类的某一个方法时,必须把父类的方法定义为virtual

在定义接口中不能有方法体,虚方法可以。

实现时,子类可以不重新定义虚方法,但如果一个类继承接口,那必须实现这个接口。

 

2.27.不定项选择:

(1) 以下叙述正确的是: B C

A. 接口中可以有虚方法。B. 一个类可以实现多个接口。 C. 接口不能被实例化。 D. 接口中可以包含已实现的方法。

 

(2) 从数据库读取记录,你可能用到的方法有:B C D

A. ExecuteNonQuery B. ExecuteScalar C. Fill D. ExecuteReader

 

(3)对于一个实现了IDisposable接口的类,以下哪些项可以执行与释放或重置非托管资源相关的应用程序定义的任务?(多选) ( ABC )

A.Close B.Dispose C.Finalize D.using E.Quit

 

(4)以下关于ref和out的描述哪些项是正确的?(多选) ( ACD )

A.使用ref参数,传递到ref参数的参数必须最先初始化。

B.使用out参数,传递到out参数的参数必须最先初始化。

C.使用ref参数,必须将参数作为ref参数显式传递到方法。

D.使用out参数,必须将参数作为out参数显式传递到方法。

 

2.28.单项选择:

1)下列选项中,(C)是引用类型。

a)enum类型 b)struct类型 c)string类型 d)int类型

 

2).关于ASP.NET中的代码隐藏文件的描述正确的是(C)

a)Web窗体页的程序的逻辑由代码组成,这些代码的创建用于与窗体交互。编程逻辑唯一与用户界面不同的文件中。该文件称作为“代码隐藏”文件,如果用C#创建,该文件将具有“.ascx.cs”扩展名。

b)项目中所有Web窗体页的代码隐藏文件都被编译成.EXE文件。

c)项目中所有的Web窗体页的代码隐藏文件都被编译成项目动态链接库(.dll)文件。

d)以上都不正确。

 

3).下列描述错误的是(D)

a)类不可以多重继承而接口可以;

b)抽象类自身可以定义成员而接口不可以;

c)抽象类和接口都不能被实例化;

d)一个类可以有多个基类和多个基接口;

 

2.29.DataReader和DataSet的异同?

DataReader使用时始终占用SqlConnection,在线操作数据库,每次只在内存中加载一条数据,所以占用的内存是很小的,是只进的. 只读的

DataSet则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即放弃数据库连接(非连接模式),将数据全部加载在内存中.所以比较消耗内存...但是确比DataReader要灵活..可以动态的添加行,列,数据.对数据库进行 回传更新操作(动态操作读入到内存的数据)

 

2.30.public static const; int A = 1;这段代码有错误么?

错误:const不能被修饰为static ;因为定义为常量 (const )后就是静态的(static )。

 

2.31、下面程序的执行结果是什么?

int i = 10;

Console.WriteLine(i++);

Console.WriteLine(++i);

Console.WriteLine(i=20);

 

答案:

10

12

20

 

2.32、下列哪个名词和WebService不直接相关?(B)

A、UDDI

B、GUID

C、WSDL

D、SOAP

SOAP和HTTP的关系:SOAP基于Http协议的,和普通网页不同的是网页返回HTML,SOAP则是符合SOAP协议的XML数据。

 

 

2.33、下面程序的执行结果是什么?

int i = 10;if (i <=0);

Console.WriteLine("i必须大于0");

Console.WriteLine("ok");

 

答案:

i必须大于0

ok

解答:注意if (i <=0)后面的“;”,由于有了“;”,所以Console.WriteLine("i必须大于0")不再是和if一起的一部分,而是独立的语句。for循环也是如此。

 

2.34、下面程序的执行结果是什么?

 

static void Main(string[] args)

{

    Console.WriteLine(Calc());

    Console.ReadKey();

}

static int Calc()

{

    int i = 0;

    try

    {

        return i;

    }

    finally

    {

        Console.WriteLine("finally");

        i++;

    }

}

 

 

答案:

finally

0

解答:return先执行,finally后执行,所以return的值是没有i++之前的0。注意并不是return的时候函数真的就“返回、执行结束”了,return只是标记函数的返回值是0,标记完了还会执行finally中的代码,只有finally中的代码执行完成后函数才真正的返回。

 

 2.35、在下述选项时,没有构成死循环的程序是 (C)

A.int i=100;while (1) { i=i%100+1; if (i>100) break; }

B.for (;;);

C.int k=1000; do { ++k; }while(k>=10000);

D.int s=36; while (s);--s;

 

2.36、下列哪个是和数据库访问技术关系不大的技术(C)

A、SQLHelper

B、EnterPrise Library

C、AppDomain

D、Linq

 

2.37、下列哪些说法是错误的(AC)

A、将bmp格式的文件修改为jpg是修改图片格式最简单的方法

B、将QQ动态表情显示在网页上用gif格式比较好

C、将bmp格式的图片放到网页中可以优化网站速度

D、png格式用在网页中可以实现透明的效果。

答案:A、C。A错误是因为修改文件的后缀并没有真的修改文件的格式,要使用Photoshop、mspaint等图片处理工具进行转换才可以。C错误是因为在网页中不能使用bmp图片。

 

2.38、从以下简写中任选一个简单描述

OA(Office Automation):办公自动化

MIS(Managment Information system):管理信息系统

HRM(Human Resource Managment):人力资源管理,包括员工管理、薪资管理、入职管理、离职管理、报销管理、请假管理等

CRM(Customer Relation Managment):客户关系管理系统,包括客户管理、客户关怀、客户回访、投诉管理、咨询管理、报修管理等

KM(Knowledge Managment):知识管理

 

2.39、下面程序的执行结果是什么?

 

public struct Point

{

    public int x;

    public int y;

    public Point(int x, int y)

    {

        this.x = x;

        this.y = y;

    }

}

Point p1 = new Point(100, 100);

Point p2 = p1;

p1.x = 200;

Console.WriteLine("{0},{1}", p1.x, p2.x);

 

 

答案:

200,100

解答:结构体是复制传递的。

 

发表评论

0/200
354 点赞
0 评论
收藏