码迷,mamicode.com
首页 > Windows程序 > 详细

asp.net c# 网上搜集面试题目大全(附答案)

时间:2015-07-16 21:32:53      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:

1.String str=new String("a")String str = "a"有什么区别?

String str = "a"; 这个只是一个引用,内存中如果有“a"的话,str就指向它,如果没有才创建如后还用到"a"这个字符串的话并且是这样用: String str1 = "a"; String str2 = "a"; String str2 = "a"; 4个变量都共享一个字符串"a" String str = new String("a");是根据"a"这个String对象再次构造一个String对象,将新构造出来的String对象的引用赋给str

2.判断字符串变量str是否为空的一下三种方法哪个性能更优

astr=="";bstr==String.Empty;cstr.Length==0;?答案是c

3.stringString的区别

stringintC#定义的类型,而StringInt32.net类型即是CTS类型; string .NET 框架中 System.String 的别名。string在编译的时候会转化为String

4.虚方法(virtual )和抽象方法(abstract)的区别?

1:抽象方法仅有声明,而没有任何实现,如abstract someMethod();,虚方法却不能如此

virtual用于修饰方法、属性、索引器或事件声明,并使它们可以在派生类中被重写。 2:子类继承父类,可以对父类中的虚方法进行重写、覆盖、不处理三种处理(见5),对抽象方法却必须实现

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

有父类ParentClass和子类ChildClass、以及父类的虚方法VirtualMethod。有如下程序段: ParentClass pc = new ChildClass();pc.VirtualMethod(...); 如果子类是重写(override)父类的VirtualMethod,则上面的第二行语句将调用子类的该方法 如果子类是覆盖(new)父类的VirtualMethod,则上面的第二行语句将调用父类的该方法

6.抽象类(abstract)和接口(interface)的区别

抽象类可以有自己的实现,接口却仅有声明,可以有自己的静态数据字段; javaC#中可以实现多个接口,却只能继承一个抽象类(或者非抽象类)(单继承,和c++的多继承不同);

7.填空:

(1)面向对象的语言具有 继承性多态性封装性 (2)能用foreach遍历访问的对象需要实现 _IEnumerable___接口或声明_GetEnumerator_方法的类型。 (3)列举ADO.net中的五个主要对象

Connection,Command,DataReader,DataAdapter,DataSet

connection 连接对象 command 命令对象,指示要执行的命令和存储过程! datareader是一个向前的只读的数据流。 dataadapter是功能强大的适陪器,支持增删改查的功能 dataset是一个数据级对象,相当与内存中的一张表或多张表

8.不定项选择:

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

A. 接口中可以有虚方法。 B. 一个类可以实现多个接口。

C. 接口不能被实例化。 D. 接口中可以包含已实现的方法。 (2) 从数据库读取记录,你可能用到的方法有: BCD

A. ExecuteNonQuery B. ExecuteScalar C. Fill D. ExecuteReader 9.简述 private protected public internal 修饰符的访问权限。

A.Private:关键字是一个成员访问修饰符。私有访问是允许的最低访问级别。私有成员只有在声明它们的类和结构体中才是可访问的, 同一体中的嵌套类型也可以访问那些私有成员

B.Protected 关键字是一个成员访问修饰符。受保护成员在它的类中可访问并且可由派生类访问。有关 protected 与其他访问修饰符的比较,请参见可访问性级别,只有在通过派生类类型发生访问时,基类的受保护成员在派生类中才是可访问的

C.Internal关键字是类型和类型成员的访问修饰符。只有在同一程序集的文件中,内部类型或成员才是可访问的

D Protected Internal   它可以看作是ProtectedInternal的并集,意思是:如果是继承关系,无论在不在同一程序集里都能访问;如果不是继承关系,那么只能在同一程序集内访问。

E.Public具有最高级别的访问权限,对访问成员没有限制。

10.写出一条Sql语句:取出表A中第31到第40记录(SQLServer, 以自动增长的ID作为主键, 注意:ID

可能不是连续的。) 11.列举ASP.NET 页面之间传递值的几种方式。

QueryString,SessionServer.Transfer 12.写出程序的输出结果     class Class1 {

private string str = "Class1.str";

private int i = 0;

static void StringConvert(string str) {

str = "string being converted.";

}

static void StringConvert(Class1 c) {

c.str = "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";

Class1 c = new Class1();

Add(i1);

AddWithRef(ref i2);

Add(c.i);

StringConvert(str);

StringConvert(c);

Console.WriteLine(i1);

Console.WriteLine(i2);

Console.WriteLine(c.i);

Console.WriteLine(str);

Console.WriteLine(c.str);

}

}

13.写出程序的输出结果

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();

}

} 14.写出程序的输出结果:

public class A

{

public virtual void Fun1(int i)

{

Console.WriteLine(i);

}

public void Fun2(A a)

{

a.Fun1(1);

Fun1(5);

}

}

public class B : A

{

public override void Fun1(int i)

{

base.Fun1 (i + 1);

}

public static void Main()

{

B b = new B();

A a = new A();

a.Fun2(b);

b.Fun2(a);

}

}

15.一列数的规则如下: 112358132134......求第30位数是多少, 用递归算法实现。

16.程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言)

要求: 1.要有联动性,老鼠和主人的行为是被动的。2.考虑可扩展性,猫的叫声可能引起其他联动效应。

参考答案

1.(1) 继承性、封装性、多态性。 (2) IEnumerable GetEnumerator (3) ADO.net的了解 2. (1) BC (考对接口的理解) (2) BCD (考查对ADO.net的熟练程度) 3. private : 私有成员, 在类的内部才可以访问。protected : 保护成员,该类内部和继承类中可以访问。public : 公共成员,完全公开,没有访问限制。internal: 在同一命名空间内可以访问。 4. 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)

5. 1.使用QueryString, ....id=1; response. Redirect()2.使用Session变量3.使用Server.Transfer

  6. (考查值引用和对象引用)

10

21

0

Str

string being converted.

7. A B

A.Fun()

(考查在继承类中构造函数, 以及new 方法, )

8. 2 5 1 6 评分标准: 答对一点得2分,两点得5分,3点得7分。全对得10分。 9. 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); } } 评分标准: 写出return Foo(i -1) + Foo(i - 2); 5分。 写出if(i > 0 && i <= 2) return 1; 5分。 方法参数过多需要扣分(扣除分数 = 参数个数 - 1 不用递归算法扣5 (递归算法在树结构建立等方面比较常用) 10.要点:1. 联动效果,运行代码只要执行Cat.Cryed()方法。2. 对老鼠和主人进行抽象 评分标准: <1>.构造出CatMouseMaster三个类,并能使程序运行(2) <2>MouseMaster中提取抽象(5分) <3>联动效应,只要执行Cat.Cryed()就可以使老鼠逃跑,主人惊醒。(3) 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(); } } //---------------------------------------------------------------------------------------------设计方法二: 使用event -- delegate设计.. public delegate void SubEventHandler(); public abstract class Subject { public event SubEventHandler SubEvent; protected void FireAway() { if (this.SubEvent != null) this.SubEvent(); } } public class Cat : Subject { public void Cry() { Console.WriteLine("cat cryed."); this.FireAway(); } } public abstract class Observer { public Observer(Subject sub) { sub.SubEvent += new SubEventHandler(Response); } public abstract void Response(); } public class Mouse : Observer { private string name; public Mouse(string name, Subject sub) : base(sub) { this.name = name; } public override void Response() { Console.WriteLine(name + " attempt to escape!"); } } public class Master : Observer { public Master(Subject sub) : base(sub){} public override void Response() { Console.WriteLine("host waken"); } } class Class1 { 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(); } }

18.有哪几种方法可以实现一个类存取另外一个类的成员函数及属性,并请举列来加以说明和分析. 19. A类是B类的基类,并且都有自己的构造,析构函数,请举例证明B类从实例化到消亡过程中构造,析构函

数的执行过程.请附code

构造先父后子,析够反之

public class TestB

    {

        public TestB()

        {

            Console.Write("begin create B object"r"n");

        }

        ~TestB()

        {

            Console.Write("begin destory B object"r"n");

        }

    }

    public class TestA : TestB

    {

        public TestA()

        {

            Console.Write("begin create A object"r"n");

        }

        ~TestA()

        {

           Console.Write("begin destory A object"r"n");

        }

    }

21..Net中读写数据库需要用到哪些类?他们的作用

sqlconnection 连接数据库,sqlcommand 执行T-SQL语句,或存储过程 22.ASP.net的身份验证方式有哪些?分别是什么原理?

asp.net提供了3种认证方式: windows身份验证, Forms验证和Passport验证.windows, 身份验证: IIS根据应用程序的设置执行身份验证.要使用这种验证方式,IIS中必须禁用匿名访问.Forms验证:Cookie来保存用户凭证,并将未经身份验证的用户重定向到自定义的登录页.Passport验证:通过Microsoft的集中身份验证服务执行的,他为成员站点提供单独登录和核心配置文件服务.

23.解释一下UDDIWSDL的意义及其作用。

UDDIUniversal Description, Discovery and Integration)统一描述、发现和集成协议,是为解决Web服务的发布和发现问题而制订的新一代基于Internet的电子商务技术标准。它包含一组基于Web的、分布式的Web服务信息注册中心的实现标准,以及一组使企业能将自己提供的Web服务注册到该中心的实现标准。

UDDI利用SOAP消息来查找和注册Web服务。并为应用程序提供了一系列接口来访问注册中心。

24.常用的调用webservice方法有哪些?三种

利用webservice.htc调用WebService方法

Internet上调用WebService方法 25.讲一讲你理解的web service,dot net framework中,怎么很好的结合xml(讲概念就行了)

Web Service就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。这就是说,你能够用编程的方法通过Web调用来实现某个功能的应用程序。Web Service是一种新的Web应用程序分支,它们是自包含、自描述、模块化的应用,可以在网络(通常为Web)中被描述、发布、查找以及通过Web来调用。Web Service便是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼容的组件进行互操作。它可以使用标准的互联网协议,像超文本传输协议HTTPXML,将功能体现在互联网和企业内部网上。Web Service平台是一套标准,它定义了应用程序如何在Web上实现互操作性。你可以用你喜欢的任何语言,在你喜欢的任何平台上写Web Service。可扩展的标记语言XML Web Service平台中表示数据的基本格式。除了易于建立和易于分析外,XML主要的优点在于它既与平台无关,又与厂商无关。XML是由万维网协会(W3C)创建,W3C制定的XML SchemaXSD 定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。 Web Service平台是用XSD来作为数据类型系统的。当你用某种语言如VB.NETC# 来构造一个Web Service时,为了符合Web Service标准,所有你使用的数据类型都必须被转换为XSD类型。如想让它使用在不同平台和不同软件的不同组织间传递,还需要用某种东西将它包装起来。这种东西就是一种协议,如 SOAP

26.C#可否对内存进行直接的操作?(这可是个难点哦?要注意!),如果能,如何操作;如果不能,为什么

可以,用指针来操作 27.描述一下C#中索引器的实现过程,是否只能根据数字进行索引?

C#通过提供索引器,可以象处理数组一样处理对象。特别是属性,每一个元素都以一个getset方法暴露。索引器不单能索引数字(数组下标),还能索引一些HASHMAP的字符串,所以,通常来说,C#中类的索引器通常只有一个,就是THIS,但也可以有无数个,只要你的参数列表不同就可以了索引器和返回值无关, 索引器最大的好处是使代码看上去更自然,更符合实际的思考模式.

28.面向对象的思想主要包括什么?

封装:用抽象的数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型内部。 继承:子类拥有父类的所有数据和操作。

多态:一个程序中同名的不同方法共存的情况。有两种形式的多态– 重载与重写。

29.什么是ASP.net中的用户控件

有时可能需要控件中具有内置 ASP.NET Web 服务器控件未提供的功能。在这种情况下,您可以创建自己的控件。有两个选择。您可以创建:用户控件。用户控件是能够在其中放置标记和 Web 服务器控件的容器。然后,可以将用户控件作为一个单元对待,为其定义属性和方法。

自定义控件。自定义控件是编写的一个类,此类从 Control WebControl 派生。

ASP.NET Web 用户控件与完整的 ASP.NET 网页(.aspx 文件)相似,同时具有用户界面页和代码。可以采取与创建 ASP.NET 页相似的方式创建用户控件,然后向其中添加所需的标记和子控件。用户控件可以像页面一样包含对其内容进行操作(包括执行数据绑定等任务)的代码。

用户控件与 ASP.NET 网页有以下区别:

用户控件的文件扩展名为 .ascx

用户控件中没有 @ Page 指令,而是包含 @ Control 指令,该指令对配置及其他属性进行定义。

用户控件不能作为独立文件运行。而必须像处理任何控件一样,将它们添加到 ASP.NET 页中。

用户控件中没有 htmlbody form 元素。这些元素必须位于宿主页中。

可以在用户控件上使用与在 ASP.NET 网页上所用相同的 HTML 元素(htmlbody form 元除外)和 Web 控件。例如,如果您要创建一个将用作工具栏的用户控件,则可以将一系列 Button Web服务器控件放在该控件上,并创建这些按钮的事件处理程序。

创建用户控件要比创建自定义控件方便很多,因为可以重用现有的控件。用户控件使创建具有复杂用户界面元素的控件极为方便。

30.什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?

   CTSCLSCLR分别作何解释?

  应用程序域应用程序域为安全性、可靠性、版本控制以及卸载程序集提供了隔离边界。应用程序域通常由运行库宿主创建,运行库宿主负责在运行应用程序之前引导公共语言运行库。应用程序域提供了一个更安全、用途更广的处理单元,公共语言运行库可使用该单元提供应用程序之间的隔离。托管代码使用基于公共语言运行库的语言编译器开发的代码称为托管代码;托管代码具有许多优点,例如:跨语言集成、跨语言异常处理、增强的安全性、版本控制和部署支持、简化的组件交互模型、调试和分析服务等。装箱和拆箱装箱和拆箱使值类型能够被视为对象。对值类型装箱将把该值类型打包到 Object 引用类型的一个实例中。这使得值类型可以存储于垃圾回收堆中。拆箱将从对象中提取值类型。重载每个类型成员都有一个唯一的签名。方法签名由方法名称和一个参数列表(方法的参数的顺序和类型)组成。只要签名不同,就可以在一种类型内定义具有相同名称的多种方法。当定义两种或多种具有相同名称的方法时,就称作重载。CTS通用类型系统 (common type system)一种确定公共语言运行库如何定义、使用和管理类型的规范。CLR公共语言运行库.NET Framework 提供了一个称为公共语言运行库的运行时环境,它运行代码并提供使开发过程更轻松的服务。CLS公共语言规范要和其他对象完全交互,而不管这些对象是以何种语言实现的,对象必须只向调用方公开那些它们必须与之互用的所有语言的通用功能。为此定义了公共语言规范 (CLS),它是许多应用程序所需的一套基本语言功能。强类型C# 是强类型语言;因此每个变量和对象都必须具有声明类型。

31.列举一下你所了解的XML技术及其应用

可扩展标记语言XML(eXtensible Markup Language)[1]是一种简单灵活的文本格式的可扩展标记语言,起源于SGML(Standard Generalized Markup Language),SGML的一个子集合,也就是SGML的一个简化版本,非常适合于在Web上或者其它多种数据源间进行数据的交换.

32.值类型和引用类型的区别?写出C#的样例代码

基于值类型的变量直接包含值。将一个值类型变量赋给另一个值类型变量时,将复制包含的值。这与引用类型变量的赋值不同,引用类型变量的赋值只复制对对象的引用,而不复制对象本身。所有的值类型均隐式派生自 System.ValueType。与引用类型不同,从值类型不可能派生出新的类型。但与引用类型相同的是,结构也可以实现接口。与引用类型不同,值类型不可能包含 null 值。然而,可空类型功能允许将 null 赋给值类型。每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。值类型主要由两类组成:结构、枚举,结构分为以下几类:Numeric(数值)类型、整型、浮点型、decimalbool、用户定义的结构。引用类型的变量又称为对象,可存储对实际数据的引用。声明引用类型的关键字:classinterfacedelegate、内置引用类型: objectstring

33.ADO.net中常用的对象有哪些?分别描述一下。

Connection 数据库连接对象Command 数据库命令DataReader 数据读取器DataSet 数据集

34.如何理解委托?

委托类似于 C++ 函数指针,但它是类型安全的。委托允许将方法作为参数进行传递。委托可用于定义回调方法。委托可以链接在一起;例如,可以对一个事件调用多个方法。方法不需要与委托签名精确匹配。有关更多信息,请参见协变和逆变。C# 2.0 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。

35.C#中的接口和类有什么异同。

异:不能直接实例化接口。接口不包含方法的实现。接口、类和结构可从多个接口继承。但是C# 只支持单继承:类只能从一个基类继承实现。类定义可在不同的源文件之间进行拆分。

同:接口、类和结构可从多个接口继承。接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员。接口可以包含事件、索引器、方法和属性。一个类可以实现多个接口。

37.UDP连接和TCP连接的异同。

TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。 UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。

39.进程和线程分别怎么理解?

   进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于:简而言之,一个程序至少有一个进程,一个进程至少有一个线程.线程的划分尺度小于进程,使得多线程程序的并发性高。另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.

40.什么是code-Behind技术。

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

41..net中读写XML的类都归属于哪些命名空间?

System.XML

42.什么是SOAP?有哪些应用。

SOAPSimple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议,是一个基于XML的协议。使用SOAP,不用考虑任何特定的传输协议(最常用的还是HTTP协议),可以允许任何类型的对象或代码,在任何平台上,以任何一直语言相互通信。

SOAP 是一种轻量级协议,用于在分散型、分布式环境中交换结构化信息。 SOAP 利用 XML 技术定义一种可扩展的消息处理框架,它提供了一种可通过多种底层协议进行交换的消息结构。这种框架的设计思想是要独立于任何一种特定的编程模型和其他特定实现的语义。SOAP 定义了一种方法以便将 XML 消息从 A 点传送到 B 点。 为此,它提供了一种基于 XML 且具有以下特性的消息处理框架:1) 可扩展,2) 可通过多种底层网络协议使用,3) 独立于编程模型。

43.如何理解.net中的垃圾回收机制。

   .NET Framework 的垃圾回收器管理应用程序的内存分配和释放。每次您使用 new 运算符创建对象时,运行库都从托管堆为该对象分配内存。只要托管堆中有地址空间可用,运行库就会继续为新对象分配空间。但是,内存不是无限大的。最终,垃圾回收器必须执行回收以释放一些内存。垃圾回收器优化引擎根据正在进行的分配情况确定执行回收的最佳时间。当垃圾回收器执行回收时,它检查托管堆中不再被应用程序使用的对象并执行必要的操作来回收它们占用的内存。

44.什么是WEB控件?使用WEB控件有那些优势?

运行在服务器端的控件,只要将HTML控件加上runat=server. 45.请谈谈对正则表达式的看法?

正则表达式是一种处理文本的有用工具。无论是验证用户输入、搜索字符串内的模式、还是以各种有效方式重新设置文本格式,正则表达式都非常有用。

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

要使用自动传回。

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

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

可以调用,例如:<asp:TextBox id="TextBox1" onclick="clientfunction();" runat="server"> </asp:TextBox><INPUT id="Button2" value="Button" name="Button2"runat="server" onclick="clientfunction();">

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

Web.config文件是一个XML文本文件,它用来储存 ASP.NET Web 应用程序的配置信息(如最常用的设置ASP.NET Web 应用程序的身份验证方式),它可以出现在应用程序的每一个目录中。当你通过VB.NET新建一个Web应用程序后,默认情况下会在根目录自动创建一个默认的Web.config文件,包括默认的配置设置,所有的子目录都继承它的配置设置。如果你想修改子目录的配置设置,你可以在该子目录下新建一个Web.config文件。它可以提供除从父目录继承的配置信息以外的配置信息,也可以重写或修改父目录中定义的设置。 1<authentication> 节作用:配置 ASP.NET 身份验证支持(为WindowsFormsPassPortNone四种)。该元素只能在计算机、站点或应用程序级别声明。<authentication> 元素必需与<authorization> 节配合使用。示例:以下示例为基于窗体(Forms)的身份验证配置站点,当没有登陆的用户访问需要身份验证的网页,网页自动跳转到登陆网页。<authentication mode="Forms" > <forms loginUrl="logon.aspx" name=".FormsAuthCookie"/></authentication> 其中元素loginUrl表示登陆网页的名称,name表示Cookie名称2<authorization> 节作用:控制对 URL 资源的客户端访问(如允许匿名用户访问)。此元素可以在任何级别(计算机、站点、应用程序、子目录或页)上声明。必需与<authentication> 节配合使用。3<compilation>节作用:配置 ASP.NET 使用的所有编译设置。默认的debug属性为“True.在程序编译完成交付使用之后应将其设为TrueWeb.config文件中有详细说明,此处省略示例)4<customErrors>作用:为 ASP.NET 应用程序提供有关自定义错误信息的信息。它不适用于 XML Web services 中发生的错误。5<httpRuntime>节作用:配置 ASP.NET HTTP 运行库设置。该节可以在计算机、站点、应用程序和子目录级别声明。 6 <pages>作用:标识特定于页的配置设置(如是否启用会话状态、视图状态,是否检测用户的输入等)。<pages>可以在计算机、站点、应用程序和子目录级别声明。7<sessionState>  作用:为当前应用程序配置会话状态设置(如设置是否启用会话状态,会话状态保存位置)。 8<trace>  作用:配置 ASP.NET 跟踪服务,主要用来程序测试判断哪里出错。

49.请解释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" 表用运行时使用哪一个隐藏类

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

Viewstate是保存状态的一种机制,EnableViewState属性设置为false即可禁用

ViewState 是由   ASP.NET   页面框架管理的一个隐藏的窗体字段。当 ASP.NET 执行某个页面时,该页面上的 ViewState   值和所有控件将被收集并格式化成一个编码字符串,然后被分配给隐藏窗体字段的值属性(即<input   type=hidden>)。由于隐藏窗体字段是发送到客户端的页面的一部分,所以 ViewState 值被临时存储在客户端的浏览器中。如果客户端选择将该页面回传给服务器,则ViewState 字符串也将被回传。回传后,ASP.NET 页面框架将解析ViewState字符串,并为该页面和各个控件填充 ViewState属性。然后,控件再使用 ViewState 数据将自己重新恢复为以前的状态 51.当发现不能读取页面上的输入的数据时很有可能是什么原因造成的?怎么解决

很有可能是在Page_Load中数据处理时没有进行PageIsPostBack属性判断 52.请解释一个WEB页面中代码执行次序。

Init,Load,PreRender事件执行顺序:

1)控件的Init事件

2)控件所在页面的Init事件

3)控件所在页面的Load事件

4)控件的Load事件

5)控件所在页面的PreRender事件

6)控件的PreRender事件

规律:

1Init事件从最里面的控件(包括用户控件及普通控件)向最外面的控件(页面)引发,LoadPreRender等其他事件从最外面的控件向最里面的控件引发;

2)控件之间相同事件的执行顺序依控件在页面的位置按从左到右,从上到下的先后顺序执行。

注意:

1)切记用户控件也被视为页面中的一个控件;

2)把用户控件作为单独的一个特殊页面来看,它本身及其所包含的控件同样遵守相同的规律;

3)有时在客户端程序(如javascript)中会用到客户端body对像的onload事件,注意这个客户端事件是最后执行,即在服务器端所有事件执行完后才执行. 53.请解释什么是上下文对象,在什么情况下要使用上下文对象

上下文对象是指HttpContext类的Current 属性,当我们在一个普通类中要访问内置对象(Response,Request,Session,Server,Appliction)时就要以使用此对象

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

转发就是服务端的跳转A页面提交数据到B页面,B页面进行处理然后从服务端跳转到其它页面跳转就是指客户端的跳转

55.请解释ASP.NET中不同页面之间数据传递有那些方式?

session(viewstate) 简单,但易丢失,application 全局,cookie 简单,但可能不支持,可能被伪造input ttype="hidden" 简单,可能被伪造,url参数 简单,显示于地址栏,长度有限,数据库 稳定,安全,但性能相对弱

56.请解释ASP.NETbutton linkbutton imagebutton hyperlink这四个控件之间的功别

1.ButtonImageButton用于将数据传递回服务器.

2.Hyperlink用于在页面之间导航

3.LinkButton用于将数据保存到服务器或访问服务器上的数据

4.LinkButton 控件具有与 HyperLink 控件相同的外观,不过却具有与 Button 控件相同的功能

57.请解释一下.NET多层应用程序中层与层之间以那几种方式进行数据传递。并解释你自己的项目中采用那

种方式进行

自定义类结构传数据 58.如果需要在GridView控件中的某一列中添加下拉列表框并绑定数据怎么解决?

后台的Rowdatabound事件可以进行绑定,比如这样

if(数据行)

{

    DropDownList ddl = (DropDownList)e.row.FindControl("DropDownListID");

    ddl.datasource = 数据源;(假定你已经设置了keyvalue绑定字段)

    ddl.databind();

} 59.请解释asp.net中的数据绑定与传统数据绑定有什么区别?

传统的数据绑定是一种“连接数据绑定”,即在数据绑定期间,客户端一直保持与数据库的连接,这种状态下,数据库的性能大受影响。asp.net的数据绑定是一种“非连接数据绑定”,即只在读取和更新数据的瞬间,才与数据库连接并交换数据,之后便可释放与数据库的连接,数据库的性能因此将大大提高。

60.请解释接口的显式实现有什么意义?

接口可以有静态成员、嵌套类型、抽象、虚拟成员、属性和事件。实现接口的任何类都必须提供接口中所声明的抽象成员的定义。接口可以要求任何实现类必须实现一个或多个其他接口。

1、因为显式接口成员执行体不能通过类的实例进行访问,这就可以从公有接口中把接口的实现部分单独分离开。如果一个类只在内部使用该接口,而类的使用者不会直接使用到该接口,这种显式接口成员执行体就可以起到作用。

2、显式接口成员执行体避免了接口成员之间因为同名而发生混淆。如果一个类希望对名称和返回类型相同的接口成员采用不同的实现方式,这就必须要使用到显式接口成员执行体。如果没有显式接口成员执行体,那么对于名称和返回类型不同的接口成员,类也无法进行实现。

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

当在继承类中想重写某一方法时会用到虚方法;虚方法是类的成员函数,接口相当于抽象类 62.Override与重载有什么区别?

重载是提供了一种机制, 相同函数名通过不同的返回值类型以及参数来表来区分的机制

override是用于重写基类的虚方法,这样在派生类中提供一个新的方法

覆写(Override)的两个函数的函数特征相同,重载(Overload)的两个函数的函数名虽然相同,但函数特征不同。

函数特征包括函数名,参数的类型和个数。

1. override

使用 override 修饰符来修改方法、属性、索引器或事件。重写方法提供从基类继承的成员的新实现。由重写声明重写的方法称为重写基方法。重写基方法必须与重写方法具有相同的签名。

不能重写非虚方法或静态方法。重写基方法必须是虚拟的、抽象的或重写的。

也就是说,用 override 修饰符重写的基类中的方法必须是 virtual, abstract override 方法

2. 重载

当类包含两个名称相同但签名不同的方法时发生方法重载。

使用重载方法的指南:

a. 用方法重载来提供在语义上完成相同功能的不同方法。

b. 使用方法重载而不是允许默认参数。默认参数的版本控制性能不好,因此公共语言规范(CLS)中不允许使用默认参数。

c. 正确使用默认值。在一个重载方法系列中,复杂方法应当使用参数名来指示从简单方法中假定的默认状态发生的更改。

d. 对方法参数使用一致的排序和命名模式。提供一组重载方法,这组重载方法带有递增数目的参数,以使开发人员可以指定想要的级别的信息,这种情况很常见。您指定的参数越多,开发人员就可指定得越详细。

e. 如果必须提供重写方法的能力,请仅使最完整的重载是虚拟的并根据它来定义其他操作。

// 下面具体解释一下这种模式,只有最后一个方法(参数最完整的方法)是虚方法,在继承了这个类的子类中只要重写(override)这个方法就行了。

63.怎样理解静态变量?

静态变量具有在某一个类中具有全局型. 64.向服务器发送请求有几种方式?

Post,Get. 65.DataReaderDataset有什么区别?

DataReaderDataSet最大的区别在于,DataReader使用时始终占用SqlConnection,在线操作数据库.任何对SqlConnection的操作都会引发DataReader的异常.因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的..因为DataReader的特殊性和高性能.所以DataReader是只进的.你读了第一条后就不能再去读取第一条了. DataSet则是将数据一次性加载在内存中.抛弃数据库连接.读取完毕即放弃数据库连接.因为DataSet将数据全部加载在内存中.所以比较消耗内存.但是确比DataReader要灵活.可以动态的添加行,,数据.对数据库进行回传更新操作

66.如果在一个B/S结构的系统中需要传递变量值,但是又不能使用SessionCookieApplication,您有

几种方法进行处理?

使用Request["string"].Request.QueryString["flag"] 67..netB/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?

一般为3 , 数据访问层,业务层,表示层。数据访问层对数据库进行增删查改。业务层一般分为二层,业务表观层实现与表示层的沟通,业务规则层实现用户密码的安全等。表示层为了与用户交互例如用户添加表单。优点:分工明确,条理清晰,易于调试,而且具有可扩展性。缺点:增加成本。

68.软件开发过程一般有几个阶段?每个阶段的作用?

1)问题定义;2)可行性研究;3)需求分析;4)总体设计;5)详细设计;6)编码和单元测试;7)综合测试;8)软件维护。

69.微软推出了一系列的Application Block,请举出您所知道的Application Block并说明其作用?

SqlHelper 列如:SqlHelper.ExcuteDataSet()执行存储过程. 70.请列举一些您用到过的设计模式以及在什么情况下使用该模式?

抽象工廠 71.通过超链接怎样传递中文参数?

传递时用HttpUtility.UrlEncodeUnicode("中文参数"),获取时直接用Request.QueryString["参数"]就行了<%@ import namespace="System.Web.Util"%>

72.请编程遍历页面上所有TextBox控件并给它赋值为string.Empty

foreach (Control a in this.Page.Form.Controls)

        {

            string name = a.GetType().Name;

            if (a.GetType().Name == "TextBox")

            {

                TextBox mm = a as TextBox;

                mm.Text = string.Empty;

            }                                 

        }

73.请编程实现一个冒泡排序算法?

private static int[] Sort(int[] arrayNum)

        {

            int i, j, k;

            bool exchange;

            for (i = 1; i < arrayNum.Length; i++)

            {

                exchange = false;

                for (j = arrayNum.Length - 1; j >= i; j--)

                {

                    if (arrayNum[j - 1] > arrayNum[j])

                    {

                        k = arrayNum[j];

                        arrayNum[j] = arrayNum[j - 1];

                        arrayNum[j - 1] = k;

                        exchange = true;

                    }

                }

                if (!exchange)

                {

                    break;

                }

            }

            return arrayNum;

        }

75.进程和线程的区别

进程是系统进行资源分配和调度的单位;线程是CPU调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源。

76.成员变量和成员函数前加static的作用

它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数。分别用来反映类的状态。比如类成员变量可以用来统计类实例的数量,类成员函数负责这种统计的动作。

77.堆和栈的区别

栈:由编译器自动分配、释放。在函数体中定义的变量通常在栈上。堆:一般由程序员分配释放。用newmalloc等分配内存函数分配得到的就是在堆上。栈是机器系统提供的数据结构,而堆则是C/C++函数库提供的。栈是系统提供的功能,特点是快速高效,缺点是有限制,数据不灵活;而栈是函数库提供的功能,特点是灵活方便,数据适应面广泛,但是效率有一定降低。栈是系统数据结构,对于进程/线程是唯一的;堆是函数库内部数据结构,不一定唯一。不同堆分配的内存无法互相操作。栈空间分静态分配和动态分配两种。静态分配是编译器完成的,比如自动变量(auto)的分配。动态分配由alloca函数完成。栈的动态分配无需释放(是自动的),也就没有释放函数。为可移植的程序起见,栈的动态分配操作是不被鼓励的!堆空间的分配总是动态的,虽然程序结束时所有的数据空间都会被释放回系统,但是精确的申请内存/释放内存匹配是良好程序的基本要素。

78. C# property attribute的区别,他们各有什么用处,这种机制的好处在哪里?

C#中有两个属性,分别为PropertyAttribute Property比较简单,就是我们常用的getset,主要用于为类中的privateprotected变量提供读取和设置的接口。Attribute用来说明这个事物的各种特征的一种描述。而Attribute就是干这事的。它允许你将信息与你定义的C#类型相关联,作为类型的标注。这些信息是任意的,就是说,它不是由语言本身决定的,你可以随意建立和关联任何类型的任何信息。你可以作用属性定义设计时信息和运行时信息,甚至是运行时的行为特征。关键在于这些信息不仅可以被用户取出来作为一种类型的标注,它更可以被编译器所识别,作为编译时的一种附属条件参加程序的编译。定义属性:属性实际上是一个派生自System.Attribute基类的类。System.Attribute类含有几个用于访问和检查自定义属性的方法。尽管你有权将任何类定义为属性,但是按照惯例来说,从System.Attribute派生类是有意义的

79.C#可否对内存进行直接的操作?

可以,我们知道,.NET相比C++最值得称赞的是他的GC(垃圾回收机制)。GC会在系统空闲或内存不足的时候自动回收不再被使用的对象。因此,我们不再需要向C++编程一样处处小心内存泄漏。同时,为了提高内存的使用效率,GC在回收内存的时候,会对内存进行整理,有些类似硬盘整理的原理。从而导致对象被在内存中移位。

80.维护数据库的完整性、一致性、你喜欢用触发器还是自写业务逻辑?为什么

   尽可能用约束(包括CHECK、主键、唯一键、外键、非空字段)实现,这种方式的效率最好;其次用触发器,这种方式可以保证无论何种业务系统访问数据库都能维持数据库的完整性、一致性;最后再考虑用自写业务逻辑实现,但这种方式效率最低、编程最复杂,当为下下之策。

81.ADO.NET相对于ADO等主要有什么改进?

ADORecordset存储,而ADO.NET则以DataSet表示。Recordset看起来更像单表,如果让Recordset以多表的方式表示就必须在SQL中进行多表连接。反之,DataSet可以是多个表的集合。ADO 的运作是一种在线方式,这意味着不论是浏览或更新数据都必须是实时的。ADO.NET则使用离线方式,在访问数据的时候ADO.NET会利用XML制作数据的一份幅本,ADO.NET的数据库连接也只有在这段时间需要在线。由于ADO使用COM技术,这就要求所使用的数据类型必须符合COM规范,而ADO.NET基于XML格式,数据类型更为丰富并且不需要再做COM编排导致的数据类型转换,从而提高了整体性能。

82.C#中要使一个类支持FOREACH遍历,实现过程怎样?

若要循环访问集合,集合必须满足特定的要求。例如,在下面的 foreach 语句中:

   foreach (ItemType item in myCollection)

myCollection 必须满足下列要求:

集合类型:

必须是 interfaceclass struct

必须包括返回类型的名为 GetEnumerator 的实例方法,例如 Enumerator

Enumerator 类型(类或结构)必须包含:

一个名为 Current 的属性,它返回 ItemType 或者可以转换为此类型的类型。属性访问器返回集合的当前元素。

一个名为 MoveNext bool 方法,它递增项计数器并在集合中存在更多项时返回 true

有三种使用集合的方法:

1.使用上述指导创建一个集合。此集合只能用于 C# 程序。

2.使用上述指导创建一个一般集合,另外实现 IEnumerable 接口。此集合可用于其他语言(如 Visual Basic)。

3.在集合类中使用一个预定义的集合。

83.接口和抽象类有什么区别?你选择使用接口和抽象类的依据是什么?

接口是一个纯粹的抽象类,没有任何实际的东西,只是定义了一个框架,而抽象类里面可以有实际的一个方法,并不要求所有的方法都是抽象的。可以实现一个接口中的所有方法,也可以继承一个抽象的类,然后覆写其中的方法。接口一般只有方法,而没有数据成员或属性。抽象类有方法,也有数据成员或属性,一般情况下,优先考虑用接口,只有当可能要访问到数据成员或属性时,用抽象类。

84.自定义控件和一般用户控件的异同?如果要用这两者之一,你会选择哪种?为什么

用户控件模型适合创建内部,应用程序特定的控件,而自定义控件模型更适合创建通用的和可再分发的控件

85.大概描述一下ASP.NET服务器控件的生命周期

1. 初始化  - Init 事件 (OnInit 方法)

2. 加载视图状态 - LoadViewState 方法

3. 处理回发数据 - LoadPostData 方法:s对实现 IPostBackDataHandler 接口的控件,即可以自动加载回发数据的控件,如 TextBox, DropDownList 等。

4. 加载 - Load 事件 (OnLoad 方法)

5. 发送回发更改通知 - RaisePostDataChangedEvent 方法 :对实现 IPostBackDataHandler 接口的控件,即可以自动加载回发数据的控件。    在第 3 步中加载回发数据,如果回发前后数据发生更改,则在这一步触发相应的服务端事件。

6. 处理回发事件 - RaisePostBackEvent 方法:对实现 IPostBackEventHandler 接口的控件,即能引起回发的控件,如 Button, LinkButton, Calendar

7. 预呈现 - PreRender 事件 (OnPreRender 方法)

8. 保存视图状态 - SaveViewState 方法

9. 呈现 - Render 方法

10. 处置 - Dispose 方法

11. 卸载 - UnLoad 事件 (OnUnLoad 方法)

86.UML

統一建模语言( U M L)是一个通用的可视化建模语言,用于对软件进行描述、可视化处理、构造和建立软件系统制品的文档。它记录了对必须构造的系统的决定和理解,可用于对系统的理解、设计、浏览、配置、维护和信息控制。

87.谈谈final, finally, finalize的区别。

final 修饰符用于指定类不能扩展或者方法或属性不能重写。它将防止其他类通过重写重要的函数来更改该类的行为。带有 final 修饰符的方法可以由派生类中的方法来隐藏或重载。finally 块用于清除在 try 块中分配的任何资源。控制总是传递给 finally 块,与 try 块的存在方式无关。finalize允许 Object 在“垃圾回收”回收 Object 之前尝试释放资源并执行其他清理操作。

88.&&&的区别。

&&为逻辑与,输出结果为布尔(真假)型; &为按位与,输出结果为数值型。

89.GC是什么 为什么要有GC

GC是垃圾收集器。这个类别中的方法会影响什么时候对对象执行内存回收,以及什么时候释放对象所配置的资源。这个类别的属性会提供系统中可用内存的总数量以及配置至对象的内存之年龄分类或层代等等相关信息。内存回收行程会追踪并重新利用在 Managed 内存中配置的对象。内存回收行程会定期执行内存回收来重新利用配置给对象的内存 (该对象并无有效的参考)。当没有可用的内存来因应内存的要求时,会自动发生内存回收。或者,应用程序可以使用 Collect 方法来强制进行内存回收。

内存回收包含下列步骤:

a.内存回收行程会搜寻在 Managed 程序代码中所参考的 Managed 对象。

b.内存回收行程会尝试最终处理未参考的对象。

c.内存回收行程会释放未参考并且回收其内存的对象。

90.Math.round(11.5)等於多少 Math.round(-11.5)等於多少

Math.round(11.5)==12;Math.round(-11.5)==-11;round方法返回与参数最接近的长整数,参数加1/2

求其floor

91.short s1 = 1; s1 = s1 + 1;有什么错 short s1 = 1; s1 += 1;有什么错

short s1 = 1; s1 = s1 + 1; s1+1运算结果是int型,需要强制转换类型)

short s1 = 1; s1 += 1;(可以正确编译)

92.数组有没有length()这个方法 String有没有length()这个方法:

c#数组和string只有length属性,没有方法

93.abstract classinterface有什么区别

abstract 修饰词可用于类别、方法、属性、索引子 (Indexer) 和事件。在类别宣告里使用 abstract

饰词,表示该类别只是当做其它类别的基底类别而已。成员如果标记为抽象,或是包含在抽象类(Abstract Class) 内,则必须由衍生自此抽象类别的类别实作这个成员。

在静态属性上使用 abstract 修饰词是错误的。

在抽象方法宣告中使用 static virtual 修饰词是错误的。

接口只包含方法、委派或事件的签章。方法的实作 (Implementation) 是在实作接口的类别中完成,

94.是否可以继承String

   ,无法继承自密封类

95.try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后

   ,return.

96.两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对

不对,有相同的GetHashCode();

97.当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那

这里到底是值传递还是引用传递

引用传递 98.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String

都可以 99.编程题: 写一个Singleton出来。 100.c#中的三元运算符是

a?b:c

101.当整数a赋值给一个object对象时,整数a将会被

   装箱

102.类成员有_____种可访问形式?

this.;new Class().Method; 103.public static const int A=1;这段代码有错误么?是什么?

const不能用static修饰 104.float f=-123.567F; int i=(int)f; i的值现在是

-123 105.委托声明的关键字是______ delagete 106.sealed修饰的类有什么特点?

密封,不能继承sealed 修饰词可套用至类别 (Class)、执行个体方法 (Instance Method) 和属性。密封类别无法被继承。密封方法会覆写基底类别 (Base Class ) 中的方法,但在任何衍生类别中却无法进一步覆写密封方法本身。当套用至方法或属性时,sealed 修饰词必须一律和 override (C# 参考) 搭配使用。

107.Asp.net中所有的自定义用户控件都必须继承自

System.Web.UI.UserControl 108..Net中所有可序列化的类都被标记为_____

[Serializable] 109..Net托管代码中我们不用担心内存漏洞

GC 110..当类T只声明了私有实例构造函数时,则在T的程序文本外部,___不可以___(可以 or 不可以)从T

派生出新的类,不可以直接创建T的任何实例。 111.下面这段代码有错误么?

錯誤

switch (i){

case():

CaseZero();

break;

case 1:

CaseOne();

break;

case 2:

dufault; //wrong

CaseTwo();

break;

} 112..Net中,类System.Web.UI.Page 可以被继承么?

可以 113.c#usingnew这两个关键字有什么意义,请写出你所知道的意义?

new 关键词可当做运算子、修饰词或条件约束 (Constraint) 使用。

用来建立对象并叫用 (Invoke) 建构函式

Class1 o = new Class1();

new 关键词做为修饰词时,会明确隐藏继承自基底类别的成员。隐藏继承的成员表示成员的衍生版本取代了基底类别版本。可以不使用 new 修饰词隐藏成员,但这么做会产生警告。使用 new 明确隐藏成员会隐藏这个警告,并记录使用衍生版本来替代。

new 条件约束 (Constraint) 指定在泛用类别宣告中的任何型别参数,都必须具有公用的无参数建构函式。当您的泛用类别建立型别的新执行个体时,将此条件约束套用至型别参数

class ItemFactory<T> where T : new()

{

    public T GetNewItem()

      {

       return new T();

      }

}

using 关键词有两种主要的用法:

做为指示词,此时它是用来建立命名空间的别名,或是用来汇入在其它命名空间中定义的型别。请参阅 using 指示词。

做为陈述式,此时它是用来定义一个范围,对象会在此范围结尾处进行处置 (Dispose)。请参阅 using 陈述式。

114.谈谈类和结构的区别?

类是引用类型、结构是值类型

结构与类别使用的语法几乎相同,不过结构的限制比类别多:

结构执行个体字段宣告不可使用初始设定式,即使结构上的静态字段可初始化也一样

结构不可宣告预设建构函式,即没有参数的建构函式或解构函式

结构有下列属性:

结构是值类型,而类别为引用类型

当传递结构到方法上时,是以传值而非以当做参考的方式传递

与类别不同的是,结构不需使用 new 运算子就能执行个体化

结构可以宣告建构函式,但是必须采用参数

结构无法从另一个结构或类别继承而来,且它不能成为类别的基底。所有结构都是从继承自 System.Object System.ValueType 直接继承而来

结构可实作接口

在结构里初始化执行个体字段是错误的 115.一个长度为10000的字符串,通过随机从a-z中抽取10000个字符组成。请用c#语言编写主要程序来

实现。

string[] LetterList = new string[] { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" };

            StringBuilder sbRe = new StringBuilder();

            Random rd=new Random();

            for (int i = 0; i < 10000; i++)

            {

                sbRe.Append(LetterList[rd.Next(26)]);

            }

        Console.Write(sbRe.ToString()); 116.对于这样的一个枚举类型:

enum Color:byte{

Red,

Green,

Blue,

Orange

}

试写一段程序显示出枚举类型中定义的所有符号名称以及它们对应的数值。

foreach (string aa in Enum.GetNames(typeof(Color)))

            {

                Console.Write(aa);

                Console.Write(""r"n");

            }

            foreach (byte aa in Enum.GetValues(typeof(Color)))

            {

                Console.Write(aa);

                Console.Write(""r"n");

            }

117.写一个实现对一段字符串翻转的方法,附加一些条件,如其中包括“,”、“..

string kk = "abc‘,.字符串";

            string reKK = "";

            for (int i = 0; i < kk.Length; i++)

            {

                reKK = kk[i] + reKK;

            }

            Console.Write(reKK);
118.什么是虚函数?

Virtual CallSomeOne(); 119.什么是抽象函数?

public abstract void CallSomeOne(); 120.触发器的作用

触发器是一种特殊的存储过程,它在插入,删除或修改特定表中的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力。数据库触发器有以下的作用:

安全性。可以基于数据库的值使用户具有操作数据库的某种权利。

可以基于时间限制用户的操作,例如不允许下班后和节假日修改数据库数据。

可以基于数据库中的数据限制用户的操作,例如不允许股票的价格的升幅一次超过10%

审计。可以跟踪用户对数据库的操作。

审计用户操作数据库的语句。

把用户对数据库的更新写入审计表。

实现复杂的数据完整性规则。

实现非标准的数据完整性检查和约束。触发器可产生比规则更为复杂的限制。与规则不同,触发器可以引用列或数据库对象。例如,触发器可回退任何企图吃进超过自己保证金的期货。

提供可变的缺省值。

实现复杂的非标准的数据库相关完整性规则。触发器可以对数据库中相关的表进行连环更新。例如,在authsauthor_code列上的删除触发器可导致相应删除在其它表中的与之匹配的行。

在修改或删除时级联修改或删除其它表中的与之匹配的行。

在修改或删除时把其它表中的与之匹配的行设成NULL值。

在修改或删除时把其它表中的与之匹配的行级联设成缺省值。

触发器能够拒绝或回退那些破坏相关完整性的变化,取消试图进行数据更新的事务。当插入一个与其主健不匹配的外部键时,这种触发器会起作用。例如,可以在 books.author_code列上生成一个插入触发器,如果新值与auths.author_code列中的某值不匹配时,插入被回退。

121.求以下表达式的值,写出您想到的一种或几种实现方法:

1-2+3-4+……+m

public static int Foo(int i)

        {

            int result = 0;

            for (int j = 1; j < i; j++)

            {

                if (j % 2 == 0)

                {

                    result = result - j;

                }

                else if (j % 2 == 1)

                {

                    result = result + j;

                }

            }

            return result;

        } 122.C#中的委托是什么?事件是不是一种委托?

委派是参考方法的一种型别,一旦将一个方法指定给某委派,则该委派的行为便会与该方法完全相同。委派方法可以当做任何其它方法一般使用,也有参数和传回值,

任何与委派的签名码 (即由传回型别和参数所组成) 相符的方法,都可指派给委派。如此便可利用程序设计的方式变更方法呼叫,也可将新的程序代码外挂至现有类别中。只要您知道委派的签名码为何,即可指派自己的委派方法。

由于委派能够将方法当做参数来参考,使得委派很适合用来定义回呼方法。例如,您可以将比较两个对象的方法参考传递至排序算法。分开撰写比较程序代码,可让您撰写更适合通用的算法。

委派有下列属性:

a.委派与 C++ 函式指标类似,但为型别安全。

b.委派允许将方法当做参数传递。

c.委派可用于定义回呼方法。

d.您可将委派链接在一起,例如,可在单一事件上呼叫多个方法。

123.C#中,执行以下代码后S的结果:

string[] a=new string[7];

aa[0]="33";

aa[6]="66";

string s="";

foreach(string m in aa) s+=m;

3366 124.适配器datadapter的作用

表示 SQL 命令集和数据库连接,用来填入 DataSet 并更新数据来源。

DataAdapter DataSet 和数据来源之间的桥接器 (Bridge),用来撷取和储存数据。DataAdapter 藉由对应 Fill (它会变更 DataSet 中的数据来符合数据来源中的数据) Update (它会变更数据来源中的数据来符合 DataSet 中的数据) 来提供这个桥接器。

125.所有类中最顶层的类是哪个类

System.Object 126.跳转页面有哪几种方式?

Response.Redirect("");

Server.Transfer("");

Server.Execute(""); 127.类包含哪些成员

1.建构函式 2.解构函式 3.常数 4.字段 5.方法 6.属性 7.索引子 8.运算子 9.事件 10.委派

11.类别 12.界面 13.结构

128.索引器

索引子 (Indexer) 允许使用与数组相同的方式来索引类别或结构的执行个体。索引子除了其存取子需要使用参数以外,其余特性都与属性相似。

a.索引子让对象能以类似数组的方式来索引。

b.get 存取子会传回一个值。set 存取子会指定一个值。

c.this 关键词的用途为定义索引子。

d.value 关键词是用来定义 set 索引子所指定的值。

e.索引子不需要以整数值来索引;您可以决定如何定义特定的查询机制。

f.索引子可以多载。

g.索引子可以具有一个以上的型式参数,例如,在存取二维数组时便是如此。

class SampleCollection<T>

{

    private T[] arr = new T[100];

    public T this[int i]

    {

        get

        {

            return arr[i];

        }

        set

        {

            arr[i] = value;

        }

    }

} 129. HYPERLINK linkbotton控件的差别

HYPERLINK导航。

使用 LinkButton 控件,在 Web 网页上建立超级链接样式按钮。LinkButton 控件具有与 HyperLink 控件相同的外观,但拥有与 Button 控件相同的功能。

130.DataReaderDataset有什么区别?

执行查询时会传回结果,并一直储存于客户端上的网络缓冲区中,直至您使用 DataReader Read 方法要求它们为止。使用 DataReader 可以提高应用程序的效能,方法是立即撷取可用的数据,及 (依预设) 一 次只将一个数据列储存到内存中,从而减少系统负荷

DataSet 是以常驻内存表示的数据,不论内含数据来源为何,都可提供一致的关系型程序设计模型。DataSet 表示一组完整的数据,包括内含、排序和约束数据的数据表,以及数据表间的关联性。

131.简要说出privateprotected的区别

private 存取只限于包含类别。

protected 存取只限于包含的类别或衍生自包含类别的型别。 132. 说出下面几个函数的区别:

private void test(string str){}

private void test(ref string str){}

private void test(out string str){}

out 关键词会导致以传址 (By Reference) 方式传递自变量。这点与 ref 关键词相类似,除了 ref 需要在传递变量之前先初始化变量以外。若要使用 out 参数,方法定义和呼叫方法都必须明确使用 out 关键词。

133.写代码:取得服务器时间并显示(弹出消息框即可),要求完全在服务器端实现(提示:在C#中使用

Response.Write()方法)

Response.Write("<script >alert(‘當前時間:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "‘)</script>");

134.说出下面各处正确或错误的理由(写在该行)

class Test

{

int x;

static int y;

void F() {

x = 1; //ok

y = 1; //ok

}

static void G() {

x = 1; //error 非靜態成員不能在靜態

y = 1; //ok

}

static void Main() {

Test t = new Test();

t .x = 1; // Ok

t .y = 1; // Error

Test.x = 1; // Error

Test.y = 1; // Ok

}

}

135.简要的谈谈你对多态的理解,并简单的实现一个多态的例子 136.下面关于索引的描述中。哪些是正确的?(AB

A、索引能够加快查询的速度

B、索引可能会降低数值的更新速度

C、应该尽可能多的为表建立索引

137.请描述一下在.netForms认证模式下,怎样用代码(用户名单存在数据库中,而不是WebConfig中)

实现一个基于角色的授权? 138.Vs.net中,怎样配置数据库连接,可以使开发环境到应用环境迁移数据库时不修改程序?

Machine.config

139.假设有一个数据库字段name,需要在网页中只显示该字段的姓,而隐藏名字,类似“张**”形式,请写

出数据绑定的自定义表达式。 140.请简单描述一下制作一个用户控件(UserControl)的过程。 141.您有没有制作过自定义的webcontrol(注意不是用户控件)?如果有,请描述一下自定义控件制作基本

过程,主要重载哪些方法?。 142.请描述构成ADO.net的主要对象以及他们的作用。 143.你编写一段程序来判断服务器请求是get,还是post请求?

string mm=Request.ServerVariables["REQUEST_METHOD"];

    string ll = Request.ServerVariables["QUERY_STRING"]; 144.如果需记录类的实例个数,该如何实现,请写一个简单的类于以证明.

public class TestA

    {

        public static int Count;

        public TestA()

        {

            Count = Count + 1;

        }

        public int CountA

        {

            get { return Count; }

        }

    }

 

TestA testa = new TestA();

            TestA testb = new TestA();

            TestA testb1 = new TestA();

            TestA testb2 = new TestA();

            TestA testb3 = new TestA();

            TestA testb4 = new TestA();

            TestA testb5 = new TestA();

            Console.Write(testb.CountA); 145.是否了解 URL Rewrite?请简要说明其原理和在 ASP.NET 中的实现方式。

URL 重写是截取传入 Web 请求并自动将请求重定向到其他 URL 的过程. 146. ASP.NET 中如何调用 Web Service 的方法?

添加引用

        TestService.Service ts = new TestService.Service();

        DataSet ds = ts.GetUserInfo("", "");

     Response.Write(ds.Tables[0].Rows.Count); 147.ViewState 的作用和实现方式?

ViewState 属性提供 Dictionary 对象来保留对相同网页的多个要求之间的值。这是网页用来在来回往返之间保留网页和控件属性值的预设方法。处理网页时,网页目前的状态和控件会杂凑至字符串中,并且储存在网页中当做一个隐藏字段,或是如果储存在 ViewState 属性的数据量超过 MaxPageStateFieldLength 属性中指定的值时,则会当做多个隐藏字段。网页回传到服务器时,网页会在网页初始化时剖析检视状态字符串,并且还原网页中的属性资

148.如何实现页面分段缓存?

页面分段缓存

页面分段缓存是用用户控件实现的。通过为页面每个区域创建单独的用户控件来定义页面的区域。在每个用户控件中,可以使用Output-Cache指令指出如何缓存控件的输出。

注意:

1、注意分段缓存不支持Location特性;缓存页面分段惟一合法的地方是web服务器。这是因为分段缓存在ASP.NET中是新的功能,所以浏览器和代理服务器不支持。

2、分段缓存有另外一个在页面缓存中没有的特性——VaryByControlVaryByControl特性允许指定一个由分号分隔的字符串列表,代表用户控件内使用的控件的名称;ASP.NET将针对值的每个不同的组合生成用户构件的一个缓存版本。

页面分段缓存的限制

1、如果为用户控件启用了缓存,就不能在包含它的页面中通过程序访问此控件了;

   例如:ctlContents.Message = "Hello!"

2、不应该对缓存的用户控件使用数据绑定语法;

   不允许:<myControls:PageContents CategoryID=‘<%# CategoryID%>‘ Runat=‘Server‘/> 会产生一个错误信息; 允许: <myControls:PageContents CategoryID=‘2‘ Runat=‘Server‘/> 

149.你是否知道下列名字:.NET Pet ShopIBuySpy StoreDotNetNukeNUnitData Access Application

Block?说说它们分别都是什么。 150.如何实现XML系列化(给出简单的代码示例)

XML 序列化只会将对象的公用字段和属性值序列化为 XML 数据流。

XML 序列化不会转换方法、索引子、私用字段或只读属性 (只读集合则除外)。若要序列化对象的所有字段和属性 (包括公用和私用的),请使用 BinaryFormatter,而不要使用 XML 序列化。

public class TestXML

    {

        public string UserName;

        public string Address;

        public string Company;

        public string Description;

    }

XmlSerializer serializer =

            new XmlSerializer(typeof(TestXML));

        string FilePath = Server.MapPath("XML/woody.xml");

        TestXML tx = new TestXML();

        tx.Address = "MITC";

        tx.Company = "MDS";

        tx.Description = "WOODY";

        tx.UserName = "WU";

        Stream writer = new FileStream(FilePath, FileMode.Create);

        serializer.Serialize(writer, tx);

        writer.Close();

151.你知道 AJAX 吗?说说它的特点和一般实现方式152.写出一段利用XMLHTTP工作的简单代码 153.如何定义嵌套的CSS样式类

table.hover {     background-color: white; border-right:1px solid #f1f1f1 } 154..NET Remoting的工作原理是什么?请简要地写出一个.NET Remoting的示例

分布式处理方式,Windows操作系统中,是将应用程序分离为单独的进程。这个进程形成了应用程序代码和数据周围的一道边界。如果不采用进程间通信(RPC)机制,则在一个进程中执行的代码就不能访问另一进程。这是一种操作系统对应用程序的保护机制。然而在某些情况下,我们需要跨过应用程序域,与另外的应用程序域进行通信,即穿越边界.

Remoting的通道主要有两种:Tcp和Http。在.Net中,System.Runtime.Remoting.Channel中定义了IChannel接口。IChannel接口包括了TcpChannel通道类型和Http通道类型。它们分别对应Remoting通道的这两种类型。

TcpChannel类型放在名字空间System.Runtime.Remoting.Channel.Tcp中。Tcp通道提供了基于Socket的传输工具,使用Tcp协议来跨越Remoting边界传输序列化的消息流。TcpChannel类型默认使用二进制格式序列化消息对象,因此它具有更高的传输性能。HttpChannel类型放在名字空间System.Runtime.Remoting.Channel.Http中。它提供了一种使用Http协议,使其能在Internet上穿越防火墙传输序列化消息流。默认情况下,HttpChannel类型使用Soap格式序列化消息对象,因此它具有更好的互操作性。通常在局域网内,我们更多地使用TcpChannel;如果要穿越防火墙,则使用HttpChannel.

155.从程序请求远程http站点,有哪些可用的类?

WebRequest request = WebRequest.Create(PageUrl);

        WebResponse response = request.GetResponse();

        Stream resStream = response.GetResponseStream();

        StreamReader sr = new StreamReader(resStream, System.Text.Encoding.Default);

        string KK = sr.ReadToEnd();

        resStream.Close();

        sr.Close(); 156.对于Web Services,.NET Remoting,MSMQ,Enterprise Services这四个中接触过多少?能否简要的介绍

他们的特点

157.可否简要的介绍asp.net 2.0 Membership,WebPartC#的匿名函数和泛型,希望可以简要地阐述其中

的特点

Membership:

Membership 类别是用在 ASP.NET 应用程序中,以验证使用者认证,并管理使用者设定,例如密码和电子邮件地址。Membership 类别可以单独使用,也可以结合 FormsAuthentication 使用,以建立验证 Web 应用程序或网站使用者的完整系统。Login 控件会封装 Membership 类别,以提供验证使用者的便利机制。

Membership 类别提供多项功能,以供进行:建立新使用者。

将成员资格信息 (使用者名称、密码、电子邮件地址,以及支持数据) 存放于 Microsoft SQL Server 或替代数据存放区中。

验证造访您网站的使用者。您可以透过程序设计方式验证使用者,您也可以使用 Login 控件,建立需要少数或不需要程序代码的完整验证系统。

管理密码,其中包括建立、变更、撷取,及重设等动作。您也可以选择设定 ASP.NET 成员资格,向遗忘密码的使用者要求密码问题和解答,以验证密码重设或撷取要求。

 

WebPart:

ASP.NET Web 组件是用于建立网站的整合式控件集合,可让使用者直接从浏览器修改 Web 网页的内容、外观和行为。这些修改可以套用至网站上的所有使用者或个别使用者。当使用者修改页面和控件时,可以储存这些设定,以保留使用者的个人偏好设定,在未来的浏览器工作阶段 (Session) 使用,这个功能称为个人化。这些 Web 组件能力让开发人员可以授权使用者动态地个人化 Web 应用程序,而不需要开发人员或管理员介入。

藉由使用 Web 组件控件集合,开发人员可让使用者执行下列功能:

个人化页面内容。使用者可以将新的 Web 组件控件加入至页面,或是移除、隐藏或最小化控件,如同使用普通窗口一样。

个人化页面配置。使用者可以将 Web 组件控件拖曳至页面上的不同区域,或变更其外观、属性和行为。

汇出和汇入控件。使用者可以汇入或汇出 Web 组件控件设定以用于其它页面或网站,并保留控件中的属性、外观或甚至数据,如此可让使用者减少数据输入和组态设定的需要。

建立连接。使用者可以在控件间建立连接,例如,图表控件可以将股票行情实时广告牌控件中的数据显示为图表。使用者不但能个人化连接本身,也能个人化图表控件显示数据之外观和细节的方式。

管理和个人化网站层级设定。授权的使用者可以设定网站层级设定,决定谁可以存取网站或网页,以及设用者共享,并防止不是管理员的使用者个人化共享的控件。

与区域变量不同的是,外部变量的存留期会延续,直到参考匿名方法的委派可进行内存回收为止。n 的参考是在建立委派时所撷取。

 

匿名方法:

将程序代码区块当做委派参数传递的一种方式

藉由使用匿名方法,您无须另外建立方法,因而可以减少在执行个体化委派时所需要另外撰写的程序代码。

匿名方法不能存取外部范围的 ref out 参数。

anonymous-method-block 内不能存取 Unsafe 程序代码。

button1.Click += delegate(System.Object o, System.EventArgs e)

                   { System.Windows.Forms.MessageBox.Show("Click!"); };

泛型:

泛型是指一些类别、结构、接口和方法,而它们具有其储存或使用的一或多个型别之替代符号 (型别参数)。泛型集合类别可能会将型别参数当做它所储存的对象型别之替代符号;这些型别参数会以其字段型别及其方法的参数型别之形式出现。泛型方法可能会将它的型别参数当做其传回值的型别或是其中一个正规参数的型别使用。

System.Collections.Generic System.Collections.ObjectModel 命名空间中的泛型集合类别 158.如何理解责任链和命令模式的异同?

159.数据量下的列表显示分页如何处理? 160.附件上传后的保存方式以及如何浏览?

string FileVName = DateTime.Now.ToString("yyyyMMddHHmm") + WebCom.RandomnAlpha(7) + fileExt;

file_up_load.PostedFile.SaveAs(loadFilePath + FileVName); 161.面向对象中的基类指什么,什么时候用到基类 162.存储过程跟SQL语句比较,各有什么优点和缺点? 163.描述怎样区分使用ExecuteNonQueryExecuteScalar方法?

ExecuteNonQuery:

使用 ExecuteNonQuery 以执行数据库目录 (Catalog) 作业 (例如,查询数据库结构或建立如数据表的数据库对象),或藉由执行 UPDATEINSERT DELETE 陈述式变更数据库的数据。

虽然 ExecuteNonQuery 不传回任何数据列,但是对应至参数的任何输出参数或传回值会填入 (Populate) 资料。对 UPDATEINSERT DELETE 陈述式而言,传回值是受命令影响的数据列数目。对其他类型的陈述式而言,传回值为 -1

ExecuteScalar:

执行查询,并传回查询所传回的结果集中第一个数据列的第一个资料行。会忽略所有其它的数据行和数据列。 

164.SQL语句中是否用过Sum,Count,Top,Group By,Case...When这些关键字,请描述具体用法?

Sum加總;Count:記錄總數; Top:前多少條; Group By集合函數; Case...When條件語句 165.是否用过Xml Schema或者DTD,怎样使用一个Xml Schema或者DTD去校验一个xml的格式是否正确?

   XmlTextReader tr = new XmlTextReader(Server.MapPath("XML/woody.xml"));

        XmlValidatingReader vr = new XmlValidatingReader(tr);

        vr.ValidationType = ValidationType.DTD;

        vr.ValidationEventHandler += new ValidationEventHandler(ValidationHandler);

        while (vr.Read()) ; 166.是否使用过Xsl样式表?解释xsl:apply-templatesxsl:call-templatexsl:choosexsl:value-of

的用法?

XSL 之于 XML ,就像 CSS 之于 HTML。它是指可扩展样式表语言 (EXtensible Stylesheet Language)。这是一种用于以可读格式呈现 XML 数据的语言。XSL 实际上包含两个部分:

* XSLT 用于转换 XML 文档的语言

*XPath 用于在 XML 文档中导航的语言

XSLT 是指 XSL 转换 (XSL Transformation),它是 XSL 最重要的部分。

XSLT 可以将 XML 文档转换为其它 XML 文档、XHTML 输出或简单的文本。这通常是通过将每个 XML 元素转换为 HTML 元素来完成的。由于 XML 标签是用户定义的,浏览器不知道如何解释或呈现每个标签,因此必须使用 XSLXML 标签的意义是为了方便用户(而不是计算机)理解。

XSLT 还可以对 XML 树进行下列操作:

* 添加和删除元素

* 添加和删除属性

* 对元素进行重新排列或排序

* 隐藏或显示某些元素

* 查找或选择特定元素

XSL 语法

您可能还记得 XML 概述文章中提到过,所有 XML 文档都是以 XML 声明开头。XSL 样式表也是一样。任何 XSL 文档的第一行实际上都是 XML 声明:

<?xml version="1.0" encoding="ISO-8859-1"?>

XSL 是否与 XML 相同?

既是又不是。说是,是因为它们遵循相同的语法规则(只有少许差异,下面我将会讲到)。说不是,是因为它们的用途不同:XML 用于承载数据,而 XSL 则用于设置数据的格式。

XML 声明之后,就是 XSL 声明,例如:

<xsl:stylesheet><xsl:transform>

但是,在大多数实际情况下,XSL 声明看起来要稍微复杂一些:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

这是因为,根据 W3C 联盟的建议,它还包含命名空间和 XSL 规范的版本。

XSL 声明与 XML 声明的不同之处在于,XML 声明只写一行,而且没有结束标签,而 XSL 声明必须包含结束标签,该标签表示 XSL 样式表结束:

</xsl:stylesheet>

请注意,这并不与 XML 语法规则冲突:XSL 样式表是完全有效的 XML 文档,因为它有一个根元素,由 <xsl:stylesheet> 标签指定。

在什么情况下应该使用 XSL

XSL 在设计时有几个目标用途,这些用途使它成为某些开发情况下的完美解决方案,而对另一些开发情况则毫无用处。

XSL 专门用于处理 XML 文档,并且遵循 XML 语法。因此,它只能在支持 XML 的应用程序中与 XML 结合使用。最合适使用 XML XSL 的情况是:Web 门户、新闻聚合器、社区网站或其它任何需要向各种设备及大    客户端提供信息的 Web 应用程序。

XSLT 是一种基于模式匹配的语言。它会查找匹配特定条件的节点,然后应用相应的规则。因此,它不具备大多数编程语言的计算能力。例如,XSL 无法在运行时更改变量的值。它不应该用于从使用复杂公式的动态数据源(例如在线商店)来计算值。Web 编程语言更适于此用途。

XSL 不能代替或补充 CSS。它不应(也不能)用于设置 HTML 的样式。但是,您可以将其用于需要频繁重新设计可视化效果、频繁更换布局以及以灵活格式处理数据的网站。

XSL 不是内容管理工具。它不应(也不能)用于更改 XML 文档的内容或者编辑信息。但是,您可以将 XML XSL 用于需要处理几种不同格式文档的内容管理系统。

167. 讲一讲你理解的web service,dot net framework中,怎么很好的结合xml(讲概念就行了)

168.C#实现以下功能

   a 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。

   b 对上面生成的数组排序,需要支持升序、降序两种顺序

169.需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,如果字符串中间还有连续空格的话,

保留一个空格,即允许字符串中间有多个空格,但连续的空格数不可超过一个.

FilterStr = Regex.Replace(FilterStr, "[\\s]{2,}", " ");

170.设有关系框架R(A,B,C,D)及其上的函数相关性集合F={BA,BCD},那么关系框架R最高是....................(a) a. 第一范式的 b. 第二范式的 c. 第三范式的 d. BCNF范式的

172.设有关系EMPENOENAMESALARYDNO ),其中各属性的含义依次为职工号、姓名、工资和所在部门号,以及关系DEPTDNODNAMEMANAGER),其中各属性含义依次为部门号、部门名称、部门经理的职工号。试用SQL语句完成以下查询:

a) 列出各部门中工资不低于600元的职工的平均工资。 select dno , avg(salary) as average from emp where salary>=600 group by dno

b) 查询001号职工所在部门名称。 select DNAME from dept where DNO = (select DNO from emp where eno=001) 或者 select d.dname from dept as d left jon emp as e on e.dno = d.dno where e.eno=001

c)请用SQL语句将“销售部”的那些工资数额低于600的职工的工资上调10% update EMP set SALARY =SALARY*(1+0.1) where SALARY<600 and DNO = ( select DNO from dept where dname= 销售部 )

173. 程序补充

using System;

class Point

{

     public int x,y,z;

     public Point()

     {

         x = 0;

y = 0;

z = 0;

     }

     public Point(int x, int y,int z)

     {

         this.x=x;

         this.y=y;

         this.Z=y;

     }

     public override string ToString()

     {

         return(String.Format("({0},{1},{2})", x, y,z));

     }

}

class MainClass

{

     static void Main()

     {

         Point p1 = new Point();

         Point p2 = new Point(10,20,30);

         Console.WriteLine("三维中各点坐标:");

         Console.WriteLine("1的坐标为{0}", p1);

         Console.WriteLine("2的坐标为{0}", p2);

     }

}

 

174.   程序填空

using System;

class SwitchTest

{

     public static void Main()

     {

         Console.WriteLine("邮箱种类: 1:免费邮箱 2:企业邮箱 3VIP邮箱");

         Console.Write("请输入您的选择: ");

         string s = Console.ReadLine();

         int n = int.Parse(s);

         int cost = 0;

         switch(n)      

         {        

              case 0:        

              case 1:  

<!--cost赋值为0-->                          cost = 0;

Break;

              case 2:           

<!--cost赋值为100-->                     cost = 100;

Break;

              case 3:           

<!--cost赋值为300-->                 cost = 300;

Break;

              default:           

                   Console.WriteLine("错误的选择.请输入1, 2,或者 3.");           

                   Break;

         }

         if (cost != 0)

              Console.WriteLine("您选择的邮箱每年的费用为{0}.", cost);

     }

}

asp.net c# 网上搜集面试题目大全(附答案)

标签:

原文地址:http://www.cnblogs.com/yangwujun/p/4652461.html

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