• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

asp.netc#网上搜集面试题目大全(附答案)C#习题大全

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

C#习题大全

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)的区别

抽象类可以有自己的实现,接口却仅有声明,可以有自己的静态数据字段;
java
C#中可以实现多个接口,却只能继承一个抽象类(或者非抽象类)(单继承,和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) B
C (考对接口的理解) (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技术及其应用<


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#中的元组(Tuple)和结构体(struct)发布时间:2022-07-14
下一篇:
c#调用c++动态链接库的问题发布时间:2022-07-14
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap