.net笔试宝典系列(一)

来源:互联网 发布:centos nat 网络配置 编辑:程序博客网 时间:2024/04/29 23:26

1. CLR、CTS、CLS 分别是什么意思?

公共语言运行库,通用类型系统,公共语言规范

2. 什么是基元类型?

由编译器直接支持的数据类型称为基元类型.

例如:C#中的int,string等等就是

实际运行过程中被映射为FCL中对应的类型(java中叫做包装类)如:System.Int32,System.String.

ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.chs/dv_fxintro/html/7e4c5921-955d-4b06-8709-101873acf157.htm


3. 值类型和引用类型的区别是什么?为什么要设计值类型?值类型会被GC回收吗?值类型是否能在托管堆分配?

 

  •  如果一个变量是使用基本的内置数据类型之一或用户定义的结构进行声明的,则该变量为值类型。但 string 数据类型除外,它是引用类型。

值类型的内容存储在堆栈上分配的内存中

  • 引用类型的变量又称为对象,可存储对实际数据的引用

使用栈效率较高,但值类型的生命周期有限,不适合在不同类之间共享数据。

相反,引用类型(例如,类或数组的实例)在另一个称为“堆”的内存区域中分配

仅当 C# 的垃圾回收系统确定不再需要该引用类型变量内存时,才进行回收。声明引用类型需要更多系统开销,但它们的优点是可以从其他类进行访问

  • 设计值类型为了效率高,快速分配空间
  • 它在栈上,不会被GC回收.(GC只回收托管堆上的内容)
  • 不可以,除非将它装箱.


 4.Equals、==、ReferenceEquals 如何区别使用?

Equals确定指定的实例是否被视为相等,但是如果为空就不能被调用,常被重写override

==:对于预定义的值类型,如果操作数的值相等,则相等运算符 (==) 返回 true,否则返回 false。对于 string 以外的引用类型,如果两个操作数引用同一个对象,则 == 返回 true。对于 string 类型,== 比较字符串的值。

ReferenceEquals: 确定指定的 Object 实例是否是相同的实例,不会被重写.基础类型值相等时返回false.

例子:

static void Main(string[] args)        {            int s1 = 10;            int s2 = 10;            Console.WriteLine(s1.Equals(s2));            Console.WriteLine(s1 == s2);            Console.WriteLine(ReferenceEquals(s1, s2));            string s1 = null;            string s2 = null;            Console.WriteLine(s1.Equals(s2));            Console.WriteLine(s1 == s2);            Console.WriteLine(ReferenceEquals(s1, s2));             string s1 = "A";            string s2 = "A";            Console.WriteLine(s1.Equals(s2));            Console.WriteLine(s1 == s2);            Console.WriteLine(ReferenceEquals(s1, s2));             C s1 = new C();            C s2 = new C();            Console.WriteLine(s1.Equals(s2));            Console.WriteLine(s1 == s2);            Console.WriteLine(ReferenceEquals(s1, s2));             }    }    class C    {        public int i = 10;    }

请仔细比较结果.

5. 什么是虚方法?如何理解多态?

虚方法就是用virtual修饰的方法.调用虚方法时,将为重写成员检查该对象的运行时类型。将调用大部分派生类中的该重写成员,如果没有派生类重写该成员,则它可能是原始成员.它是实现多态的途径之一.

通过多态,实现了对象的多样性,并且实现迟绑定,提高程序的灵活性.

6. overload 和 override 有什么区别?

Overload:c#没有该关键字,理解为重载,属于运行前,编译时的一种技术.是继承的范畴.

Override:是运行时技术,用它实现多态.


7. 基于接口编程的目的是什么?什么情况下使用接口,什么情况下使用抽象类?

基于接口编程的目的是为了提高程序的灵活性.

当一个类要准备继承多个类的时候,必须用接口,

当一个类需要被继承且有方法必须要被定义时,用抽象类.


8. 委托是什么意思?什么叫委托链?我们能在代码中继承 MulticastDelegate吗?

1.委托是通过对方法名的调用来调用方法的一种对象,委托类似于 C++ 函数指针,但它们是类型安全的。

委托允许将方法作为参数进行传递。委托可用于定义回调方法。

2.将多个委托链接在一起,供对象使用,构成委托链

3. MulticastDelegate 是一个特殊类。编译器和其他工具可以从此类派生,但是不能显式地从此类进行派生


9. 实现 Iterators 一般用到哪些接口?

IEnumerable, IEnumerator

10. 请写一个简单泛型类型,要求有两个泛型参数 T、K,其中 T 必须是值类型,K 必须实现了 IDisposable 接口。 
 

class cls<T,K>     where T:struct     where K:IDisposable{      private bool disposed = false;      public cls()      {      }        public void Dispose()        {            Dispose(true);            GC.SuppressFinalize(this);        }        private  void    Dispose(bool disposing)        {            if(!this.disposed)            {                 if(disposing)                {                         component.Dispose();                }                CloseHandle(handle);                handle = IntPtr.Zero;                disposed = true;            }        }}

 

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

remoting是.net   中服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置,跨越machine,   process,   appdomain   进行方法调用的技术,对于三层结构的程序,就可以使用remoting技术来构建.它是分布应用的基础技术.相当于以前的DCOM, Remoting可以利用TCP/IP,二进制传送提高效率.

Web   Service是一种构建应用程序的普通模型,并能在所有支持internet网通讯的操作系统上实施。Web   Service令基于组件的开发和web的结合达到最佳,基于组件的对象模型 . Web   Service主要是可利用HTTP,穿透防火墙.

 

12 .请解释ASP。NET中以什么方式进行数据验证


 Asp.net 中有非空验证,比较验证,取值范围验证,正则表达式验证及客户自定义验证五大控件,另还有一个集中验证信息处理控件


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


在web控件发生事件时,客户端采用提交的形式将数据交回服务端,服务端先调用Page_Load事件,然后根据传回的状态信息自动调用服务端事件自动传回是当我们在点击客户端控件时,采用提交表单的形式将数据直接传回到服务器端.
只有通过自动传回才能实现服务端事件的机制,如果没有自动回传机制就只能调用客户端事件,而不能调用服务端事件,模拟单击按钮时发生到服务器的往返行程.


14.  WEB控件及HTML服务端控件能否调用客户端方法?如果能,请解释如何调用?


可以调用
例如:

<asp:TextBox id="TextBox1" onclick="clientfunction();" runat="server"></asp:TextBox>

或                    

 TextBox1.Attributes.Add("onclick","clientfunction();")


或者

<INPUT id="Button2" value="Button" name="Button2" runat="server" onclick="clientfunction();">


 

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


appSettings包含自定义应用程序设置。
system.web 系统配置
compilation动态调试编译设置
customErrors自定义错误信息设置
authentication身份验证,此节设置应用程序的身份验证策略。
authorization授权, 此节设置应用程序的授权策略.


16. 请解释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" :表用运行时使用哪一个隐藏类.Web页面描述的是显示内容,而隐藏类描述的大多是c#的业务逻辑


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


Viewstate是保存页面标签状态的一种机制,EnableViewState属性设置为false即可禁用,理论上都可以禁用,但是一个页面总会有20个字节来保留页面标签的内容.


18. 当发现不能读取页面上的输入的数据时很有可能是什么原因造成的?怎么解决(题意不清)


很有可能是在Page_Load中数据处理时没有进行Page的IsPostBack属性判断


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


上下文对象是指HttpContext类的Current 属性,当我们在一个普通类中要访问内置对象(Response,Request,Session,Server,Appliction等)时就要以使用此对象. (它封装有关HTTP 请求中的所有 HTTP 特定的信息,由于WEB程序以请求为基础的,所以通过这个可以访问请求页面的信息.)


20. 请解释转发与跳转的区别?

转发就是服务端的跳转A页面提交数据到B页面,B页面进行处理然后从服务端跳转到其它页面,是服务器端行为,以前的request中存放的变量不会失效,就像把两个页面拼到了一起,asp.net中的Server.Transfer就是,地址栏不会改变内容。速度较快。
跳转就是指客户端的跳转,是客户端行为. Response.Redirect()就是。


21.请简述一下用Socket进行同步通讯编程的详细步骤

  1. 在应用程序和远程设备中使用协议和网络地址初始化套接字
  2. 应用程序中服务器端通过指定端口和地址建立监听,服务器挂起等待
  3. 远程设备(客户端)发出连接请求 ,服务器激活
  4. 应用程序接受连接产生通信socket
  5. 应用程序和远程设备开始通讯(在通讯中应用程序将挂起直到通讯结束)
  6.  通讯结束,关闭应用程序和远程设备的Socket回收资源

 

原创粉丝点击