C面试习题大全.docx

上传人:b****4 文档编号:24279083 上传时间:2023-05-26 格式:DOCX 页数:119 大小:96.74KB
下载 相关 举报
C面试习题大全.docx_第1页
第1页 / 共119页
C面试习题大全.docx_第2页
第2页 / 共119页
C面试习题大全.docx_第3页
第3页 / 共119页
C面试习题大全.docx_第4页
第4页 / 共119页
C面试习题大全.docx_第5页
第5页 / 共119页
点击查看更多>>
下载资源
资源描述

C面试习题大全.docx

《C面试习题大全.docx》由会员分享,可在线阅读,更多相关《C面试习题大全.docx(119页珍藏版)》请在冰豆网上搜索。

C面试习题大全.docx

C面试习题大全

网上搜集的,应该对你有帮助吧,抽空看看吧.面试还是最重要的.

1.Stringstr=newString("a")和Stringstr="a"有什么区别?

Stringstr="a";这个只是一个引用,内存中如果有“a"的话,str就指向它,如果没有才创建如后还用到"a"这个字符串的话并且是这样用:

Stringstr1="a";Stringstr2="a";Stringstr2="a";这4个变量都共享一个字符串"a"而Stringstr=newString("a");是根据"a"这个String对象再次构造一个String对象,将新构造出来的String对象的引用赋给str

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

a、str=="";b、str==String.Empty;c、str.Length==0;?

答案是c;

3.string与String的区别

string、int是C#定义的类型,而String、Int32是.net类型即是CTS类型;string是.NET框架中System.String的别名。

string在编译的时候会转化为String类

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

1:

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

virtual用于修饰方法、属性、索引器或事件声明,并使它们可以在派生类中被重写。

2:

子类继承父类,可以对父类中的虚方法进行重写、覆盖、不处理三种处理(见5),对抽象方法却必须实现

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

有父类ParentClass和子类ChildClass、以及父类的虚方法VirtualMethod。

有如下程序段:

ParentClasspc=newChildClass();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.ExecuteNonQueryB.ExecuteScalarC.FillD.ExecuteReader

9.简述private、protected、public、internal修饰符的访问权限。

A.Private:

关键字是一个成员访问修饰符。

私有访问是允许的最低访问级别。

私有成员只有在声明它们的类和结构体中才是可访问的,同一体中的嵌套类型也可以访问那些私有成员

B.Protected关键字是一个成员访问修饰符。

受保护成员在它的类中可访问并且可由派生类访问。

有关protected与其他访问修饰符的比较,请参见可访问性级别,只有在通过派生类类型发生访问时,基类的受保护成员在派生类中才是可访问的

C.Internal关键字是类型和类型成员的访问修饰符。

只有在同一程序集的文件中,内部类型或成员才是可访问的

DProtectedInternal它可以看作是Protected与Internal的并集,意思是:

如果是继承关系,无论在不在同一程序集里都能访问;如果不是继承关系,那么只能在同一程序集内访问。

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

10.写出一条Sql语句:

取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:

ID

可能不是连续的。

11.列举ASP.NET页面之间传递值的几种方式。

QueryString,Session和Server.Transfer

12.写出程序的输出结果

classClass1{

privatestringstr="Class1.str";

privateinti=0;

staticvoidStringConvert(stringstr){

str="stringbeingconverted.";

}

staticvoidStringConvert(Class1c){

c.str="stringbeingconverted.";

}

staticvoidAdd(inti){

i++;

}

staticvoidAddWithRef(refinti){

i++;

}

staticvoidMain(){

inti1=10;

inti2=20;

stringstr="str";

Class1c=newClass1();

Add(i1);

AddWithRef(refi2);

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.写出程序的输出结果

publicabstractclassA

{

publicA()

{

Console.WriteLine('A');

}

publicvirtualvoidFun()

{

Console.WriteLine("A.Fun()");

}

}

publicclassB:

A

{

publicB()

{

Console.WriteLine('B');

}

publicnewvoidFun()

{

Console.WriteLine("B.Fun()");

}

publicstaticvoidMain()

{

Aa=newB();

a.Fun();

}

}

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

publicclassA

{

publicvirtualvoidFun1(inti)

{

Console.WriteLine(i);

}

publicvoidFun2(Aa)

{

a.Fun1

(1);

Fun1(5);

}

}

publicclassB:

A

{

publicoverridevoidFun1(inti)

{

base.Fun1(i+1);

}

publicstaticvoidMain()

{

Bb=newB();

Aa=newA();

a.Fun2(b);

b.Fun2(a);

}

}

15.一列数的规则如下:

1、1、2、3、5、8、13、21、34......求第30位数是多少,用递归算法实现。

16.程序设计:

猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。

(C#语言)

要求:

1.要有联动性,老鼠和主人的行为是被动的。

2.考虑可扩展性,猫的叫声可能引起其他联动效应。

参考答案

1.

(1)继承性、封装性、多态性。

(2)IEnumerable、GetEnumerator(3)对ADO.net的了解

2.

(1)B、C(考对接口的理解)

(2)B、C、D(考查对ADO.net的熟练程度)

3.private:

私有成员,在类的内部才可以访问。

protected:

保护成员,该类内部和继承类中可以访问。

public:

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

internal:

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

4.解1:

selecttop10*fromAwhereidnotin(selecttop30idfromA)

解2:

selecttop10*fromAwhereid>(selectmax(id)from(selecttop30idfromA)asA)

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

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

10

21

0

Str

stringbeingconverted.

7.AB

A.Fun()

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

8.2

5

1

6

评分标准:

答对一点得2分,两点得5分,3点得7分。

全对得10分。

9.

publicclassMainClass

{

publicstaticvoidMain()

{

Console.WriteLine(Foo(30));

}

publicstaticintFoo(inti)

{

if(i<=0)

return0;

elseif(i>0&&i<=2)

return1;

elsereturnFoo(i-1)+Foo(i-2);

}

}

评分标准:

写出returnFoo(i-1)+Foo(i-2);得5分。

写出if(i>0&&i<=2)return1;得5分。

方法参数过多需要扣分(扣除分数=参数个数-1)

不用递归算法扣5分

(递归算法在树结构建立等方面比较常用)

10.要点:

1.联动效果,运行代码只要执行Cat.Cryed()方法。

2.对老鼠和主人进行抽象

评分标准:

<1>.构造出Cat、Mouse、Master三个类,并能使程序运行(2分)

<2>从Mouse和Master中提取抽象(5分)

<3>联动效应,只要执行Cat.Cryed()就可以使老鼠逃跑,主人惊醒。

(3分)

publicinterfaceObserver

{

voidResponse();//观察者的响应,如是老鼠见到猫的反映

}

publicinterfaceSubject

{

voidAimAt(Observerobs);//针对哪些观察者,这里指猫的要扑捉的对象---老鼠

}

publicclassMouse:

Observer

{

privatestringname;

publicMouse(stringname,Subjectsubj)

{

this.name=name;

subj.AimAt(this);

}

publicvoidResponse()

{

Console.WriteLine(name+"attempttoescape!

");

}

}

publicclassMaster:

Observer

{

publicMaster(Subjectsubj)

{

subj.AimAt(this);

}

publicvoidResponse()

{

Console.WriteLine("Hostwaken!

");

}

}

publicclassCat:

Subject

{

privateArrayListobservers;

publicCat()

{

this.observers=newArrayList();

}

publicvoidAimAt(Observerobs)

{

this.observers.Add(obs);

}

publicvoidCry()

{

Console.WriteLine("Catcryed!

");

foreach(Observerobsinthis.observers)

{

obs.Response();

}

}

}

classMainClass

{

staticvoidMain(string[]args)

{

Catcat=newCat();

Mousemouse1=newMouse("mouse1",cat);

Mousemouse2=newMouse("mouse2",cat);

Mastermaster=newMaster(cat);

cat.Cry();

}

}

//---------------------------------------------------------------------------------------------设计方法二:

使用event--delegate设计..

publicdelegatevoidSubEventHandler();

publicabstractclassSubject

{

publiceventSubEventHandlerSubEvent;

protectedvoidFireAway()

{

if(this.SubEvent!

=null)

this.SubEvent();

}

}

publicclassCat:

Subject

{

publicvoidCry()

{

Console.WriteLine("catcryed.");

this.FireAway();

}

}

publicabstractclassObserver

{

publicObserver(Subjectsub)

{

sub.SubEvent+=newSubEventHandler(Response);

}

publicabstractvoidResponse();

}

publicclassMouse:

Observer

{

privatestringname;

publicMouse(stringname,Subjectsub):

base(sub)

{

this.name=name;

}

publicoverridevoidResponse()

{

Console.WriteLine(name+"attempttoescape!

");

}

}

publicclassMaster:

Observer

{

publicMaster(Subjectsub):

base(sub){}

publicoverridevoidResponse()

{

Console.WriteLine("hostwaken");

}

}

classClass1

{

staticvoidMain(string[]args)

{

Catcat=newCat();

Mousemouse1=newMouse("mouse1",cat);

Mousemouse2=newMouse("mouse2",cat);

Mastermaster=newMaster(cat);

cat.Cry();

}

}

18.有哪几种方法可以实现一个类存取另外一个类的成员函数及属性,并请举列来加以说明和分析.

19.A类是B类的基类,并且都有自己的构造,析构函数,请举例证明B类从实例化到消亡过程中构造,析构函

数的执行过程.请附code

构造先父后子,析够反之

publicclassTestB

{

publicTestB()

{

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

}

~TestB()

{

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

}

}

publicclassTestA:

TestB

{

publicTestA()

{

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

}

~TestA()

{

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

}

}

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

他们的作用

sqlconnection连接数据库,sqlcommand执行T-SQL语句,或存储过程

22.ASP.net的身份验证方式有哪些?

分别是什么原理?

提供了3种认证方式:

windows身份验证,Forms验证和Passport验证.windows,身份验证:

IIS根据应用程序的设置执行身份验证.要使用这种验证方式,在IIS中必须禁用匿名访问.Forms验证:

用Cookie来保存用户凭证,并将未经身份验证的用户重定向到自定义的登录页.Passport验证:

通过Microsoft的集中身份验证服务执行的,他为成员站点提供单独登录和核心配置文件服务.

23.解释一下UDDI、WSDL的意义及其作用。

UDDI(UniversalDescription,DiscoveryandIntegration)统一描述、发现和集成协议,是为解决Web服务的发布和发现问题而制订的新一代基于Internet的电子商务技术标准。

它包含一组基于Web的、分布式的Web服务信息注册中心的实现标准,以及一组使企业能将自己提供的Web服务注册到该中心的实现标准。

UDDI利用SOAP消息来查找和注册Web服务。

并为应用程序提供了一系列接口来访问注册中心。

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

三种

利用webservice.htc调用WebService方法

在Internet上调用WebService方法

25.讲一讲你理解的webservice,在dotnetframework中,怎么很好的结合xml(讲概念就行了)

WebService就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。

这就是说,你能够用编程的方法通过Web调用来实现某个功能的应用程序。

WebService是一种新的Web应用程序分支,它们是自包含、自描述、模块化的应用,可以在网络(通常为Web)中被描述、发布、查找以及通过Web来调用。

WebService便是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得WebService能与其他兼容的组件进行互操作。

它可以使用标准的互联网协议,像超文本传输协议HTTP和XML,将功能体现在互联网和企业内部网上。

WebService平台是一套标准,它定义了应用程序如何在Web上实现互操作性。

你可以用你喜欢的任何语言,在你喜欢的任何平台上写WebService。

可扩展的标记语言XML是WebService平台中表示数据的基本格式。

除了易于建立和易于分析外,XML主要的优点在于它既与平台无关,又与厂商无关。

XML是由万维网协会(W3C)创建,W3C制定的XMLSchemaXSD定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。

WebService平台是用XSD来作为数据类型系统的。

当你用某种语言如VB.NET或C#来构造一个WebService时,为了符合WebService标准,所有你使用的数据类型都必须被转换为XSD类型。

如想让它使用在不同平台和不同软件的不同组织间传递,还需要用某种东西将它包装起来。

这种东西就是一种协议,如SOAP。

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

(这可是个难点哦?

要注意!

),如果能,如何操作;如果不能,为什么

可以,用指针来操作

27.描述一下C#中索引器的实现过程,是否只能根据数字进行索引?

C#通过提供索引器,可以象处理数组一样处理对象。

特别是属性,每一个元素都以一个get或set方法暴露。

索引器不单能索引数字(数组下标),还能索引一些HASHMAP的字符串,所以,通常来说,C#中类的索引器通常只有一个,就是THIS,但也可以有无数个,只要你的参数列表不同就可以了索引器和返回值无关,索引器最大的好处是使代码看上去更自然,更符合实际的思考模式.

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

封装:

用抽象的数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型内部。

继承:

子类拥有父类的所有数据和操作。

多态:

一个程序中同名的不同方法共存的情况。

有两种形式的多态–重载与重写。

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

有时可能需要控件中具有内置ASP.NETWeb服务器控件未提供的功能。

在这种情况下,您可以创建自己的控件。

有两个选择。

您可以创建:

用户控件。

用户控件是能够在其中放置标记和Web服务器控件的容器。

然后,可以将用户控件作为一个单元对待,为其定义属性和方法。

自定义控件。

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

ASP.NETWeb用户控件与完整的ASP.NET网页(.aspx文件)相似,同时具有用户界面页和代码。

可以采取与创建ASP.NET页相似的方式创建用户控件,然后向其中添加所需的标记和子控件。

用户控件可以像页面一样包含对其内容进行操作(包括执行数据绑定等任务)的代码。

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

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

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

用户控件不能作为独立文件运行。

而必须像处理任何控件一样,将它们添加到ASP.NET页中。

用户控件中没有html、body或form元素。

这些元素必须位于宿主页中。

可以在用户控件上使用与在ASP.NET网页上所用相同的HTML元素(html、body或form元除外)和Web控件。

例如,如果您要创建一

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1