.NET经典⾯试题
微软.NET 经典⾯试题
1.  OO ⾯向对象的语⾔具有的三⼤特性:________性、_________性、________性答:封装、继承、多态。
2.  什么是多态?C#如何⽀持多态?
多态指的是多种⾏为。C#可以通过⽅法重载以及⽅法重写实现多态。
3.  C#中能⽤ foreach 遍历访问的对象需要实现 ________________接⼝或声明
________________⽅法的类型。
答:IEnumerable 、 GetEnumerator。
4.  垃圾收集器 GC 作⽤是什么? 为什么要有 GC?
答:
a)  .NET 与 Java 类似,属于托管平台,C#等语⾔编写的代码由 CLR 托管执⾏。
b)  GC 是垃圾收集器。程序员不⽤担⼼内存管理,因为垃圾收集器会⾃动进⾏管理。要请求垃圾收集,可以调⽤下⾯的⽅法之⼀:
<()
5.  简述 C#  private、 protected、 public、 internal 修饰符的访问权限。
答.:
a)  private :  私有成员, 在类的内部才可以访问。
b)  protected : 保护成员,该类内部和继承类中可以访问。
c)  public :    公共成员,完全公开,没有访问限制。
d)  internal:  在同⼀命名空间内可以访问。
6.  列举 ASP.NET 页⾯之间传递值的⼏种⽅式。
答:
a)  URL 使⽤ QueryString,  如....?id=1; response. Redirect()....
b)  使⽤ Session 对象
c)  Cache
d)  ⽂件
e)  数据库
7.  C#中的委托是什么?事件是不是⼀种委托?
答:
a)  委托也是类型
b)  委托是类型安全的指针
c)  事件是特殊的委托
8.  override 与  OverLoad 重载的区别
答:
a)  Override 是进⾏基类中函数的重写。
b)  重载是⽅法的名称相同,但是参数或者返回值不同。
OO 实现多态的⽅式。
9.  如果在⼀个 B/S 结构的系统中需要传递变量值,但是⼜不能使⽤ Session、Cookie、
Application,您有⼏种⽅法进⾏处理?
答:
a)  this.Server.Transfer
b)  Cache
c)  ⽂件
d)  数据库
10.  ⽤ 开发系统,⼀般是什么架构?,每⼀层之间的关系以及为什么要这样分层?
答:⼀般为 3 层架构
a)  数据访问层 DAL,业务层 BLL,显⽰层 PL。
b)  优点:分⼯明确,条理清晰,易于调试,⽽且具有可扩展性。
缺点:增加资源开销、提升开发、运营成本。
11.  什么叫应⽤程序域 AppDomain?
答:应⽤程序域(由  AppDomain  对象表⽰)为执⾏托管代码提供隔离、卸载和安全边界。多个应⽤程序域可以在⼀个进程中运⾏;但是,在应⽤程序域和线程之间没有⼀对⼀的关联。多个线程可以属于⼀个应⽤程序域,尽管给定的线程并不局限于⼀个应⽤程序域,但在任何给定时间,线程都在⼀个应⽤程序域中执⾏。
12.  .NET 中的 CTS、CLS、CLR 分别是什么?
答:CTS:通⽤语⾔系统。CLS:通⽤语⾔规范。CLR:公共语⾔运⾏库。作⽤类似于
JVM 虚拟机,托管执⾏代码。
13.  什么是装箱和拆箱?
答:Inbox 从值类型转换到引⽤类型叫做装箱。OutBox 从引⽤类型转换到值类型叫做
拆箱。
14.  什么是托管代码?
答:托管代码,指的的是 C#或者 VB.NET 等语⾔编写的代码,不是直接编译成机器码,
⽽是编译成中间语⾔ IL,由  CLR 托管运⾏。Java 也属于托管语⾔,使⽤ Java 编写的代码也属于托管代码。
15.  ADO.NET 中读写数据库需要⽤到那些类?他们的作⽤?
答:
a)  DataSet:数据集,可以离线存储数据库数据。
b)  DataCommand:执⾏语句命令,也可以执⾏ SQL 和存储过程。
c)  DataAdapter:数据的集合,⽤语填充。
d)  SQLConnection 提供链接字符串对象
e)  DataReader 数据读取器,每次读取⼀⾏数据。
16.  ASP 的⾝份验证⽅式有哪些?分别是什么原理?
答:
a)  Windows(默认):使⽤ Window  域验证。
b)  From(表单)⽤帐户:⽤户再 Form 中输⼊⽤户名和密码,然后提交给服务器验证。
c)  Passport(密钥)  微软提供服务,收费。
17.  什么是 Code-Behind 技术?
答:代码后植。也叫代码隐藏,是.NET 提供了⼀种把前台 UI 代码和后台逻辑代码分离的技术。在 Winform、WebForm、WPF、Silverlight 很常见。MVC 开发中已经不再⽀
持。
18.  .NET 调⽤ Web Service 的⽅法有哪些?
答:
a)  使⽤ 命令⾏⼯具。
b)  使⽤ Visual Studio 中的 Add Web Reference,⾃动⽣成客户端调⽤代码
c)  ⽤ WCF 带的 SvcUtils ⼯具。
d)  ⾃定义代码构造 SOAP 消息调⽤。
19.  Remoting 的⼯作原理是什么?
答:客户端和服务通过对象序列化传递信息,使⽤ HTTP、 TCP 或者 IPC,服务端收到消息后执⾏⽅法调⽤。实际也是⼀种代理模式。WCF 框架⼀定程度上借鉴了.NET
Remoting 的编程模型,差别是 WCF 还可以⽀持跨平台调⽤。
20.  在 C#中,string str = null 与 string str = “” 请尽量使⽤⽂字或图象说明其中的区别。
答:
a)  string str = null 是不给他分配内存空间,
b)  ⽽ string str = "" 给它分配长度为空字符串的内存空间。
21.  请详述在 dotnet 中类(class)与结构(struct)的异同?
答:
a)  Class 属于引⽤类型,是分配在内存的堆上,  可以被实例化,
b)  Struct 属于值类型,分配在内存的栈上.
22.  简要谈⼀下您对微软.NET remoting 和 ASP.NET web service、WCF 技术的理解以及
实际中的应⽤。
答:
a)  ASP.NET web  service,微软早期的 Web 服务开发技术,⽀持的 WS 协议。使⽤HTTP 协议,不⽀持安全、事务等⾼级特性。
b)  Remoting 只能应⽤于.NET 平台,不能夸平台。可以利⽤ TCP/IP,HTTP,IPC
等协议。
c)  WCF 是微软推出的全新的分布式开发技术,兼容旧的 ASP.NET web service,⽀
持最新的 WS 规范,⽐如 WS 安全、分布式事务、会话等特性。功能强⼤。
23.  写出⼀条 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)
24.  C#中 abstract class 抽象类和 interface 有什么区别?
答:
a)  抽象类使⽤ abstract 声明,(abstract class)
b)  不能创建 abstract 类的实例。在⼦类中实现该⽅法。知道其⾏为的其它类可以在
类中实现这些⽅法。实现多态。
c)  抽象类只能单继承,可以包含实现的⽅法。
d)  接⼝表⽰契约,⼀种约束关系(interface)是抽象类的变体。在接⼝中,所有⽅法
都是抽象的。
e)  多继承性可通过实现这样的接⼝⽽获得。
f)  接⼝允许多继承。
25.  启动⼀个线程 thread 是⽤ run()还是 start()?
答:启动⼀个线程是调⽤ start()⽅法
26.  接⼝是否可继承接⼝? 抽象类是否可实现(implements)接⼝? 抽象类是否可继承实体类(concrete class)?
答:
a)  接⼝可以继承接⼝。抽象类可以实现(implements)接⼝,
b)  抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。
27.  C#构造函数 Constructor 是否可被 override?
答:
a)  构造器 Constructor 不能被继承,因此不能重写 Overriding,
b)  但可以被重载 Overloading。
28.  C#中是否可以继承 String 类?
答:String 类是 final 类故不可以继承。
29.  try {}⾥有⼀个 return 语句,那么紧跟在这个 try 后的 finally {}⾥的 code 会不会被执⾏,什么时候被执⾏,在 return 前还是后?
答:不⼀定,可能会执⾏,A)异常被捕获,则在 return 前执⾏。B)如果没有捕获,
则  finally  块的执⾏取决于如何触发异常展开操作。此操作⼜取决于计算机是如何设置的。应该说在{}括号前执⾏。
30.  两个对象值相同(x.equals(y) == true),但却可有不同的 hash code,这句话对不对?
答:不对,有相同的 hash code。
31.  swtich 是否能作⽤在 byte 上,是否能作⽤在 long 上,是否能作⽤在 String 上?
答:switch (expr1)中,expr1 是⼀个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作⽤于 swtich。
32.  当⼀个线程进⼊⼀个对象的⼀个 synchronized ⽅法后,其它线程是否可进⼊此对象的
其它⽅法?
不能,⼀个对象的⼀个 synchronized ⽅法只能由⼀个线程访问。
33.  abstract 的 method 是否可同时是 static,是否可同时是 native,是否可同时是
synchronized?
答:抽象⽅法只能属于抽象类,都不能。
34.  Thread 的线程的 sleep() 和 wait() ⽅法有什么区别?
答:
a)  sleep()⽅法是使线程停⽌⼀段时间的⽅法。在 sleep 时间间隔期满后,线程不⼀定
⽴即恢复执⾏正在运⾏的线程因为其它原因⽽阻塞。
b)  wait()是线程交互时,如果线程对⼀个同步对象 x 发出⼀个 wait()调⽤,该线程会
暂停执⾏,被调对象进⼊等待状态,直到被唤醒或等待时间到。
35.  谈谈 C#中 final, finally 区别
答:
a)  final—修饰符(关键字)如果⼀个类被声明为 final,意味着它不能再派⽣出新的⼦类,不能作为⽗类被继承。
b)  finally—再异常处理时提供 finally 块来执⾏任何清除操作。
36.  Session 有什么重⼤ BUG,微软提出了什么解决⽅法?
答:
a)  可能出现会话信息丢失的问题。
b)  是 iis 中由于有进程回收机制,系统繁忙的话 Session 会丢失
c)  可以⽤ Sate  server 或 SQL  Server 数据库的⽅式存储 Session 不过这种⽅式⽐
较慢,⽽且⽆法捕获 Session 的 END 事件。
37.  进程和线程的区别?
答:
java重写和重载的区别
a)  进程是系统进⾏资源分配和调度的单位;
b)  线程是 CPU 调度和分派的单位,⼀个进程可以有多个线程,这些线程共享这个进
程的资源。
38.  堆和栈的区别?
答:
栈:由编译器⾃动分配、释放。在函数体中定义的变量通常在栈上。
堆:⼀般由程序员分配释放。⽤ new、malloc 等分配内存函数分配得到的就是在堆
上。C#中的堆为托管堆,GC 负责管理。
39.  C# static 的作⽤?是不是所有的⽅法都应该声明为 Static 的?
答:
a)  对象⽅法或者声明为  Static 静态成员,表⽰此成员不在属于对象的实例,⽽是属
于整个 Class,我们可以直接通过 Class  直接调⽤该⽅法。
b)  不应该,静态成员存储在内存静态存储区,访问速度快,但是容量有限。
40.  ASP.NET Web Form 有⼏种页⾯传值⽅式?各有什么优劣?
Session、Viewstate、URL 等
41.  ASP.NET Web Form 与 ASP 相⽐,主要有哪些进步?
答:
a)  asp 属于微软早起的编程技术,页⾯代码嵌⼊脚本 VbScript,解释执⾏类型.已经
被淘汰了。存在很多安全问题,执⾏效率低下。和 JSP 类似。
b)  ASP.NET  Web Form 属于新的⽹站开发框架,基于.NET 平台。编译型,性能提⾼,安全性更⾼,更利于提升开发、调试⼯作的效率。提供了丰富的控件库、⽀持事件
编程模型。
42.  ASP.NET MVC 是什么?
ASP.NET MVC 是微软推出的全新的⽹站开发框架,⽀持 MVC 架构模式。⽀持关注点分离,更好地⽀持团队开发,⽀持单元测试。让程序员更深⼊地了解 Web 开发的本质。⽬前已经发布到最新的 MVC6.0 版本。
43.  ASP.NET MVC ⼀共有⼏个版本,哪个版本⽐较稳定?哪个集成到.NET 框架中?

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。