码迷,mamicode.com
首页 > Web开发 > 详细

.NET面试题

时间:2017-08-24 18:03:31      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:另一个   main   style   abs   line   规范   直接   声明   编译   

1.private、protected、public、internal修饰符的访问权限

   private 私有成员,只有在类的内部可以访问

   protected 保护成员,在类的内部和继承类中可以访问

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

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

2.ASP.NET页面之间传值得几种方式(Cookie 。Application等)

   1)QueryString

QueryString是一种非常简单的传值方式,可以将传送的值暴露在浏览器地址栏,如果传递对安全性

要求不高或结构简单的数值时,可以使用这个方式,但是传递数组或对象就不能用了

A。使用方法: a、在源页面中构造URL地址

                         b、在源页面使用 Response.Redirect(URL)重定向到上面的URL地址

                         c、才目的页面中使用 Response.QueryString["name"] 取出上面URL地址中传递的值

eg:

 (1)  index.aspx

private void Button1_Click(object sender, System.EventArgs e) 
{ 
  string s_url; 
  s_url = "b.aspx?name=" + Label1.Text; 
  Response.Redirect(s_url); 
}
(2)index2.aspx

   private void Page_Load(object sender, EventArgs e)

   {  

      Label2.Text = Request.QueryString["name"];

   }

2)Session

Session使用简单,不仅能传递简单数据类型,还能传递对象,数据量大小不限制,但是在Session

变量中存储大量的数据会消耗较多的服务器资源。容易丢失。

A。使用方法:a、在源页面中构造Session变量:Session["Name"]=“Value(Or Object)”

                       b、在目的页面使用Session变量取出传递的值。Result=Session["Name"]

B。Session不用时可以销毁,方法是 Session.Remove(“session名”)=====清除一个

                                                        Session.Clear()======清除所有

eg:

index.aspx

private void  Button_Click(object sender,System.EventArgs e)

{

    Session["name"]=Lable.Text;

}

index2.aspx

private void Page_Load(object sender,EventArgs e)

{

    string name;

    name=Session["name"].ToString();

}

3)Servere.Transfer

 这个才可以说是面象对象开发所使用的方法,其使用Server.Transfer方法把流程从当前页面引导

到另一个页面中,新的页面使用前一个页面的应答流,所以这个方法是完全面象对象的。

ps:比较Server.Transfer和Response.Redirect的区别。

a、Server.Transfer在服务器端完成,所以客户端浏览器中的URL地址是不会改变的;

      Response.Redirect是客户端完成,向服务器端提出新的页面处理请求,所以

      客户端浏览器中的URL地址是会改变的

b、Server.Transfer在服务器端完成,不需要客户端提出请求,减少了客户端对服务器端提出请求。

c、Server.Transfer只能够转跳到本地虚拟目录指定的页面,也就是工程项目中的页面,

     而Response.Redirect则十分灵活,可以跳转到任何URL地址。

d、Server.Transfer可以将前一个页面的各种类型的值传到新的页面;Response.Redirect

      则只能借助URL中带参数或是结合上面四种办法把各种类型的值传到新的页面。

使用方法:

  a、在源页面中使用Page类的Server.Transfer传递页面数据。Server.Transfer("b.aspx","false")

  b.在目的页面中,使用Context.Handler来接收数据:FormerPage formerPage = (FormerPage)Context.Handler; 然后用

formerPage的属性和方法来获取前一个页面的值,或者直接用Context.Items["myParameter "]

eg:

   index.aspx

   public string Name 

{ 
  get{ return Label1.Text;} 
} 
private void Button1_Click(object sender, System.EventArgs e) 
{ 
  Server.Transfer("b.aspx"); 
}

index2.aspx
private void Page_Load(object sender, EventArgs e) 
{ 
  a newWeb; //实例a窗体 
  newWeb = (source)Context.Handler; 
  string name; 
  name = newWeb.Name; 
}
3.C#中的委托是什么?事件是不是一种委托?
委托是一种特殊的引用类型,它将方法作为特殊的对象封装,从而将方法作为变量或参数进行传递,
事件是一种特殊的委托
using System;
namespase delegate
{
delegate void Function(double x,double y) //定义委托
class Program
{
static void Main()
{
Function fun;
double a=2,b=3;
Console.Write("请选择函数:");
int i= int.Parse(Console.ReadLine());
if(i==1)
{
fun=new Function(Add);
                     }
fun(a,b);
}
static void Add(double x,double y)
{
Console.WriteLine("{0}+{1}={2}",x,y,x+y);
}
}

}
该程序首先定义了一个委托类型 Function,注意delete关键字之后需要说明委托的返回类型
(没有返回类型位void)和参数类型,程序主方法首先创建了该类型的变量fun,之后可以将
指定的方法封装到该委托对象,注意方法的参数列表和返回类型都必须和委托的定义保持一致。
C#还允许将方法名直接写在委托赋值表达式的等号右边。eg: Function fun=Add;
4.override(重写)与overload(重载)的区别

   override是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在继承父类时,

   重写(重新实现)父类中的方法。不管重写还是覆盖都不会影响父类自身的功能。

   覆盖使用new关键字,重写会改变父类方法的功能即调用子类的功能,覆盖仍调用父类功能

   虚方法,实方法都可被覆盖,抽象方法和接口不可以。

   重写(覆盖)的规则:

   1、重写方法的参数列表与返回值必须完全与被重写的方法的相同

   2、重写方法的访问修饰符大于被重写方法的访问修饰符(public>protected>default>private)

   3、重写的方法所抛出的异常必须和被重写方法的所抛出的异常一致,或者是其子类;

   4、被重写的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行重写。

   5、静态方法不能被重写为非静态的方法(会编译出错)。

   6、父类中被重写的方法必须声明为virtual或abstract类型,子类方法用override关键字修饰,

eg:

    public  class  parent

    {

    public virtual string Function()
{
return "1";
}
}
 public class A : parent
{
public override string Function()
{
return "2";
}
}
public class B : parent
{
public new string Function() //new放在public前面和后面效果一样。且不会编译出错
{
return "3";
}
}
 public class JustForTest
{
public void DoTest()
{
parent p=new parent();
A a = new A();
Parent parent1=new A();
B b = new B();
Parent parent2=new B();

Console.WriteLine(p.Function); //输出1
            Console.WriteLine(a.Function());//输出2
Console.WriteLine(parent1.Function);//输出2
Console.WriteLine(b.Function());//输出3
Console.WriteLine(parent2.Function)//输出1
}
}
注:B b = new parent()编译出错(无法将类型parent隐式转换为B)
overload
重载发生在同一个类中,方法名相同,参数不同,返回类型可以不同的情况。应对不同需求
5.描述一下C#中索引器的实现过程,是否只能根据数字进行索引?
C#索引器可以根据任何数据类型进行索引
6.用.NET做B/S的系统,使用几层来开发,为什么这样分层?
一般为三层,数据访问层,业务逻辑层,表示层
数据访问层实现对数据库的增删改查
业务层一般分为两层,业务表现层实现对表示层的沟通,业务规则层实现用户密码的安全等
表示层实现与用户的交互
优点:分工明确,易于调试,具有可扩展性。缺点:增加成本
7.什么叫应用程序域?
8.CTS、CLS、CLR分别作何解释?
CTS:通用语言系统 。CLS:通用语言规范 。CLR:公共语言运行库
9.什么是装箱?
从值类型转换为引用类型是装箱
10..net中读写数据库需要用到哪些类?他们的作用?
DataSet: 数据存储器
DataTable:用于存储一个表的数据
SqlConnection:用于创建一个到数据库的连接
SqlCommand:执行SQL语句命令
DataReader:用于顺序读取数据
DataAdapter:数据的集合,用于将数据填充到DataSet或DataTable
11.ASP.NET的身份验证方式有哪些?分别是什么原理?
windows:使用 IIS 验证方式
Forms:使用基于窗体的验证方式
Passport:采用 Passport cookie验证模式
None:不采用任何验证方式
12.什么是Code-Behind技术?
Code-Behind就是代码分离,在 ASP.NET 中通过 aspx页面指向 cs 文件的方式
实现逻辑和处理逻辑的分离,有助于 web 应用程序的创建,合理分工,易于维护
13.在.net中,配件的意思是?
14.常用的调用 WebService 的方法有哪些?
1)使用WSDL.exe命令行工具
2)使用VS.NET中的Add Web Reference菜单选项
15. .net Remoting的工作原理是什么?
服务器向客户端发送一个进程编号,一个程序域编号,以确定对象的位置。
注:
Remoting,简而言之,我们可以将其看着是一种分布式处理方式。.net Remoting
和 webservice都是用来通信的框架,可以像调用本地对象一样调用远程对象,区别是
(1)webservice是使用应用层 http 协议封装的,可以被很多其他的语言调用,只要知道
webserice的地址,就可以使用,简单但效率一般,.net Remoting是用传输层 tcp协议封装的,
可以以二进制传输数据,效率高。.net Remoting是基于.net的反射机制,只方便.net使用
(2)webservice能穿越防火墙,http协议是现在广泛应用的协议,防火墙一般不会做屏蔽,
并不是说webserivece有某种功能可以穿越防火墙
16.C#中,string str1=null 与 string str2=“”的区别
str2是一个空字符串,空字符串是一个特殊的字符串,只不过它的值为空,在内存中是有
明确的指向的,string str1=null没有分配内存,引用指向了一个null,string str2=“”
这个引用指向了一个地址。地址里面存的是空的字符
17.类(class)和结构(struct)的异同
a、类是引用类型,其实例被分配在托管堆上。结构是值类型,实例被分配在栈上。
b、类实例的赋值,赋值的是引用地址。结构实例的赋值,赋值的是值
c、类作为参数类型传递,传递的是引用地址,结构传递的是值
d、类支持继承,结构不支持
e、结构总是有一个默认的无参构造函数,其不允许删除和重新定义,也不会因为
我们定义了其他带参构造函数而自动消失,而类里面如果被重载了一个或多个
带参构造函数,则编译器不再为该类提供默认的构造函数
18. SQL SERVER服务器中,给定表table1中有两个字段ID、LastUpdateDate,ID
表示更新的事物号,LastUpdateDate表示更新时的服务器事件,请获得最后更新的事物号
select id from table1 where lastUpdateDate=(select max lastUpdateDate from table1)
19.写出一条sql语句,取出表A中第31到40的记录(以自动增长的id作为主键,id可能不是连续的)
select top 10 * from A where id not in(select top 30 id from A)
20.GC是什么?
GC是 .NET 的垃圾回收机制
在 .NET 中,托管代码的内存管理是自动的,有GC 进行管理对于非托管堆的代码,.NET无法
进行管理。CLR允许时,内存分为托管堆和栈两部分,其中,栈是用来存储值类型的数据,托管
堆是用来存储引用类型的数据,而托管堆是GC 处理的内存部分。进程中的每个线程都有自己的堆栈



.NET面试题

标签:另一个   main   style   abs   line   规范   直接   声明   编译   

原文地址:http://www.cnblogs.com/mff520mff/p/7424095.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!