C面试题目带完整答案.docx

上传人:b****7 文档编号:10069337 上传时间:2023-02-08 格式:DOCX 页数:31 大小:40.08KB
下载 相关 举报
C面试题目带完整答案.docx_第1页
第1页 / 共31页
C面试题目带完整答案.docx_第2页
第2页 / 共31页
C面试题目带完整答案.docx_第3页
第3页 / 共31页
C面试题目带完整答案.docx_第4页
第4页 / 共31页
C面试题目带完整答案.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

C面试题目带完整答案.docx

《C面试题目带完整答案.docx》由会员分享,可在线阅读,更多相关《C面试题目带完整答案.docx(31页珍藏版)》请在冰豆网上搜索。

C面试题目带完整答案.docx

C面试题目带完整答案

HessenwasrevisedinJanuary2021

 

C面试题目带完整答案

C#面试题集

1、C#中property与attribute的区别,他们各有什么用处,这种机制的好处在哪里

A:

property和attribute汉语都称之为属性。

不过property是指类向外提供的数据区域。

而attribute则是描述对象在编译时或运行时属性的。

这两者是有本质区别的

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

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

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

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

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

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

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

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

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

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

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

 

3.C#,Java和c++的特点,有什么相同的地方,不同的地方,C#分别从c++和java中吸取了他们那些优点

A:

C#看起来与Java有着惊人的相似;它包括了诸如单一继承,界面,与Java几乎同样的语法,和编译成中间代码再运行的过程.但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成。

微软c#语言定义主要是从C和C++继承而来的,而且语言中的许多元素也反映了这一点.C#在设计者从C++继承的可选选项方面比Java要广泛一些(比如说structs),它还增加了自己新的特点(比方说源代码版本定义).

C#从Java继承而来的特点

类:

在C#中类的申明与Java很相似。

特点看起来与Java相比没有变化.布尔运算:

条件表达式的结果是布尔数据类型,布尔数据类型是这种语言中独立的一种数据类型.从布尔类型到其他类型没有直接的转换过程.布尔常量true和false是C#中的关键字.错误处理:

如Java中那样,通过抛出和捕捉异常对象来管理错误处理过程.内存管理:

由底层.NET框架进行自动内存垃圾回收.

C#从C和C++继承的特点

编译:

程序直接编译成标准的二进制可执行形式.

结构体:

一个C#的结构体与C++的结构体是相似的,因为它能够包含数据申明和方法.但是,不象C++,C#结构体与类是不同的而且不支持继承.但是,与Java相同的是,一个结构体可以实现界面.

预编译:

C#中存在预编译指令支持条件编译,警告,错误报告和编译行控制.#error

C#独有的特点

中间代码:

微软在用户选择何时MSIL应该编译成机器码的时候是留了很大的余地.微软公司很小心的声称MSIL不是解释性的,而是被编译成了机器码.它也明白许多--如果不是大多数的话--程序员认为Java程序要不可避免的比C编写的任何东西都要慢.而这种实现方式决定了基于MSIL的程序(指的是用C#,VisualBasic,"ManagedC++"--C++的一个符合CLS的版本--等语言编写的程序)将在性能上超过"解释性的"Java代码.当然,这一点还需要得到事实证明,因为C#和其他生成MSIL的编译器还没有发布.但是JavaJIT编译器的普遍存在使得Java和C#在性能上相对相同.象"C#是编译语言而Java是解释性的,"之类的声明只是商业技巧.Java的中间代码和MSIL都是中间的汇编形式的语言,它们在运行时或其它的时候被编译成机器代码.

命名空间中的申明:

当你创建一个程序的时候,你在一个命名空间里创建了一个或多个类.同在这个命名空间里(在类的外面)你还有可能声明界面,枚举类型和结构体.必须使用using关键字来引用其他命名空间的内容.

基本的数据类型:

C#拥有比C,C++或者Java更广泛的数据类型.这些类型是bool,byte,ubyte,short,ushort,int,uint,long,ulong,float,double,和decimal.象Java一样,所有这些类型都有一个固定的大小.又象C和C++一样,每个数据类型都有有符号和无符号两种类型.与Java相同的是,一个字符变量包含的是一个16位的Unicode字符.C#新的数据类型是decimal数据类型,对于货币数据,它能存放28位10进制数字.

两个基本类:

一个名叫object的类是所有其他类的基类.而一个名叫string的类也象object一样是这个语言的一部分.作为语言的一部分存在意味着编译器有可能使用它--无论何时你在程序中写入一句带引号的字符串,编译器会创建一个string对象来保存它.

参数传递:

方法可以被声明接受可变数目的参数.缺省的参数传递方法是对基本数据类型进行值传递.ref关键字可以用来强迫一个变量通过引用传递,这使得一个变量可以接受一个返回值.out关键字也能声明引用传递过程,与ref不同的地方是,它指明这个参数并不需要初始值.

与COM的集成:

C#对Windows程序最大的卖点可能就是它与COM的无缝集成了,COM就是微软的Win32组件技术.实际上,最终有可能在任何.NET语言里编写COM客户和服务器端.C#编写的类可以子类化一个以存在的COM组件;生成的类也能被作为一个COM组件使用,然后又能使用,比方说,JScript语言子类化它从而得到第三个COM组件.这种现象的结果是导致了一个运行环境的产生,在这个环境里的组件是网络服务,可用用任何.NET语言子类化.

索引下标:

一个索引与属性除了不使用属性名来引用类成员而是用一个方括号中的数字来匿名引用(就象用数组下标一样)以外是相似的.

代理和反馈:

一个代理对象包括了访问一个特定对象的特定方法所需的信息.只要把它当成一个聪明的方法指针就行了.代理对象可以被移动到另一个地方,然后可以通过访问它来对已存在的方法进行类型安全的调用.一个反馈方法是代理的特例.event关键字用在将在事件发生的时候被当成代理调用的方法声明中.

4.C#可否对内存进行直接的操作(这可是个难点哦要注意!

A:

C#在Unsafe模式下可以使用指针对内存进行操作,但在托管模式下不可以使用指针

5.用VisualC++编写的代码(unmanagedcode),如何在CLR下和其他dotnetcomponent结合

A:

net与Com互操作在中可以通过添加引用的方式将COM加载在CLR下,将原有的COM中的类型相应变化为.Net下可识别的类型

6.用C#实现以下功能

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

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

Aa:

usingSystem;

publicclassMainEntry

{

publicstaticvoidMain()

{

int[]arrayint=newint[100];

Randomrandom=newRandom

(1);

for(inti=1;i<=100;i++)

{

intindex=(0,100);

if(arrayint[index]==0)

arrayint[index]=i;

else

i--;

}

foreach(intiinarrayint)

{

(i);

("\t");

}

}

}

7。

请说明在中常用的几种页面间传递参数的方法,并说出他们的优缺点。

1查询字符串。

优点:

简单易用;资源占用比较少。

缺点:

传递数据大小有限制,只能传递基本类型的数据,安全性差

2页面提交(POST)

优点安全性高,简单易用,资源占用多

缺点:

只适合在HTML页面中使用,传递数据多,不能传递对象。

3()

优点安全性高灵活性强能传递复杂的对象

缺点资源消耗大

4Session

优点安全性高灵活性强能传递复杂的对象

缺点资源消耗大

5Appliction

优点安全性高灵活性强能传递复杂的对象

缺点资源消耗大

6Cookie

缺点大小有限制不能超过4KB不恩能够存储复杂对面

8。

请说明中的错误处理机制,并举例

Try

{

您在什么情况下会用到虚方法或抽象类它与接口有什么不同

A:

如果某个方法可能性在派生类中会被重写。

这时就将该方法写为虚方法。

抽象类:

是一个类型,与派生类之间的关系是一个“ISA”的关系。

用来做基类

语法:

抽象类不能创建对象,类中包括抽象方法和实例方法。

接口:

设计:

接口是一个规范,描述了Cando;与实现类之间是中”LINEA的关系

语法接口可以多实现C#中接口不能包含字段访问修饰符。

15:

Override与重载有什么区别

A:

override是方法重写,而overload是方法重载.

Override发生在基类与派生类之间,派生类中的方法用override修饰表示重写基类中同名的方法,派生类的重写方法与基类中方法签名一致,并只能重写基类中声明为abstact,virtual、override的方法。

Overload发生在同一作用域中,如类域,表示类中的方法的不同版本,实现重载的方法必须方法名称相同,方法参数列表不同,

16:

值类型与引用类型有什么区别

基于值类型的变量直接包含值。

将一个值类型变量赋给另一个值类型变量时,将复制包含的值。

这与引用类型变量的赋值不同,引用类型变量的赋值只复制对对象的引用,而不复制对象本身。

所有的值类型均隐式派生自。

与引用类型不同,从值类型不可能派生出新的类型。

但与引用类型相同的是,结构也可以实现接口。

与引用类型不同,值类型不可能包含null值。

然而,可空类型功能允许将null赋给值类型。

每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。

值类型主要由两类组成:

结构、枚举

结构分为以下几类:

Numeric(数值)类型、整型、浮点型、decimal、bool、用户定义的结构。

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

声明引用类型的关键字:

class、interface、delegate、内置引用类型:

object、string

17:

怎样理解静态变量

A:

静态变量属于类,而不属于对象,并对所有对象所享,静态成员在加类的时候就被加载。

18:

向服务器发送请求有几种方式

A:

POSTGETSOAP

19:

DataReader与Dataset有什么区别

A:

DataReader:

是只读的读取器,在读取过程中需要与数据源保持连接状态无缓存

Dataset:

将数据院中的数据缓存在对象中,然后在短开连接可进行读取与写入操作

20:

用做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层

21:

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

A:

可性行分析报告:

需求分析概要设计,详细设计,编码,测试,运行与维护

22:

微软推出了一系列的ApplicationBlock,请举出您所知道的ApplicationBlock并说明其作用

数据访问日志处理系统缓存安全验证

23:

请列举一些您用到过的设计模式以及在什么情况下使用该模式

A:

工厂模式单件模式观察者命令模式适培器,模式

24:

您对WebService的体会

A:

分布式数据处理,实现异构系统的通信

25:

您对编程的兴趣如何工作中遇到不懂的问题是怎样去解决的您一般怎样去提高自己的编程水平

A:

不会问XX

26怎么在地址栏里传递中文参数

A:

我拉

27:

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

A:

Foreach(controlcin

{

If(cisHtmlForm)

{

Froeach(Controlctin

{

If(ctisTextBox)

{

(TextBox)=;

}

}

}

}

28:

概述反射和序列化

A:

反射

公共语言运行库加载器管理应用程序域。

这种管理包括将每个程序集加载到相应的应用程序域以及控制每个程序集中类型层次结构的内存布局。

程序集包含模块,而模块包含类型,类型又包含成员。

反射则提供了封装程序集、模块和类型的对象。

您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。

然后,可以调用类型的方法或访问其字段和属性。

序列化

序列化是将对象状态转换为可保持或传输的格式的过程。

与序列化相对的是反序列化,它将流转换为对象。

这两个过程结合起来,可以轻松地存储和传输数据。

29:

用Singleton如何写设计模式

30.什么是ApplicationPool

A:

应用程序池,Internet信息服务(IIS)中由工作进程提供提供服务的一个或多个URL的分组

应用程序池是将一个或多个应用程序链接到一个或多个工作进程集合的配置。

因为应用程序池中的应用程序与其他应用程序被工作进程边界分隔,所以某个应用程序池中的应用程序不会受到其他应用程序池中应用程序所产生的问题的影响

31.链表和数组的区别(ArrayList与Array的区别),各有什么优缺点.

A:

ArrayList:

存储空间不连续,可以自动填容,访问速度稍慢,可以容纳不同类型的对象

Array:

存储空间连续,不能动态改变大小,访问速度快,元素必须是同一类型

32.用标准C如何实现多态

A:

函数指针

33:

使用什么工具来调用存储过程

A:

Execute

Server的两种索引是何形式索引的作用索引的优缺点

A:

形式:

聚集与非聚集索引

作用:

提高查询速度,

优缺点:

优:

提高查询速度,减少查询时间

缺:

增大磁盘开销,减缓数据更新的速度

35.什么是数据完整性分为几种并如何维护数据完整性

A:

数据完整性是数据的正确性,唯一性,一致性,有效性

类别:

实体:

确保数据的唯一

引用(参考):

主从数据的一致性,从数据的有效性

域(范围):

保证数据在特定的一个范围领域

自定义:

保证数据满足用户自定义的业务规则

维护:

实体:

主键,唯一键

引用:

外建

域:

Check约束,

自定义:

触发器

36.触发器的作用

A:

维护数据的自定义完整性,如,级连删除与更新,当数据变化后,可以做自定的操作

37.<%#%>和<%%>有什么区别

A:

<%#%>表示绑定的数据源

<%%>是服务器端代码块

38.当整数a赋值给一个object对象时,整数a将会被__装箱___

 

39.类成员有___5__种可访问形式

(private、public、protected、internal、

protectedinternal)

staticconstintA=1;这段代码有错误么是什么

A:

Staticconst不能同时作用在一个变量上,const为隐式静态

41.利用operator声明且仅声明了“==”,有什么错误么

A:

没有

42.用sealed修饰的类有什么特点

A:

密封类,不能继承

43.下面的代码中有什么错误吗

usingSystem;

classA

{

publicvirtualvoidF()

{

("");

}

}

abstractclassB:

A

{

publicabstractoverridevoidF();

}

A:

没有

44.在c#中using和new这两个关键字有什么意义,请写出你所知道的意义

Using:

引入命令空间using(对象o){..}表示o只在using范围内有效,执行后立即释放对象o

New:

创建对象,隐藏(重定义)基类的同名方法,

calssA

{

PublicvoidMethod();

}

ClassB:

A

{

PublicnewvoidMethod();

}

45.在下面的例子里

usingSystem;

classA

{

publicA(){PrintFields();}

publicvirtualvoidPrintFields(){}

}

classB:

A

{

intx=1;

inty;

publicB()

{

y=-1;

}

publicoverridevoidPrintFields()

{

("x={0},y={1}",x,y);

}

}

当使用newB()创建B的实例时,产生什么输出

A:

x=1,y=0;

46.下面的例子中

usingSystem;

classA

{

publicstaticintX;

staticA()

{

X=+1;

}

}

classB

{

publicstaticintY=+1;

staticB(){}

staticvoidMain()

{

("X={0},Y={1}",,;

}

}

产生的输出结果是什么

A:

X=1,Y=2

47.谈谈类和结构的区别

A:

类为引用类型,结构为值类型,结构不能继承,结构中不可以显式重写无参构造方法

结构与类共享几乎所有相同的语法,但结构比类受到的限制更多:

尽管结构的静态字段可以初始化,结构实例字段声明还是不能使用初始值设定项。

结构不能声明默认构造函数(没有参数的构造函数)或析构函数。

结构的副本由编译器自动创建和销毁,因此不需要使用默认构造函数和析构函数。

实际上,编译器通过为所有字段赋予默认值(参见默认值表)来实现默认构造函数。

结构不能从类或其他结构继承。

结构是值类型--如果从结构创建一个对象并将该对象赋给某个变量,变量则包含结构的全部值。

复制包含结构的变量时,将复制所有数据,对新副本所做的任何修改都不会改变旧副本的数据。

由于结构不使用引用,因此结构没有标识--具有相同数据的两个值类型实例是无法区分的。

C#中的所有值类型本质上都继承自ValueType,后者继承自Object。

编译器可以在一个称为装箱的过程中将值类型转换为引用类型。

结构具有以下特点:

l结构是值类型,而类是引用类型。

l向方法传递结构时,结构是通过传值方式传递的,而不是作为引用传递的。

l与类不同,结构的实例化可以不使用new运算符。

l结构可以声明构造函数,但它们必须带参数。

l一个结构不能从另一个结构或类继承,而且不能作为一个类的基。

所有结构都直接继承自,后者继承自。

l结构可以实现接口。

l在结构中初始化实例字段是错误的。

 

48.一个长度为10000的字符串,通过随机从a-z中抽取10000个字符组成。

请用c#语言编写主要程序来实现。

A:

usingSystem;

using;

publicclassMainEntry

{

publicstaticvoidMain()

{

StringBuilderstr=newStringBuilder(10000);

Randomrandom=newRandom();

string[]arrayStr=newstring[]{"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"};

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

{

(arrayStr[(0,26)]);

}

}

}

49.对于这样的一个枚举类型:

enumColor:

byte{Red,Green,Blue,Orange}

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

A:

usingSystem;

publicclassMainEntry

{

publicstaticvoidMain()

{

foreach(objectoin(typeof(Color)))

{

("Name:

{0}",());

}

foreach(objectoin(typeof(Color)))

{

("Value:

{0}",(o));

}

}

}

50.请在SQLServer中设计表来保存一个树状结构的组织结构图(假设结构图中只有名称这一项内容需要保存),如果我想查询某一职位下的所有职位,用一个存储过程来实现,你有什么思路

51.什么叫做SQL注入,如何防止请举例说明。

52.下面这段代码输出什么为什么

inti=5;

intj=5;

if(i,j))

("Equal");

else

("NotEqual");

A:

NotEqual

53.在(C#or)如何启动另一个程序。

A:

"C:

\");

 

54.在(C#or)中如何取消一个窗体的关闭。

A:

privatevoidForm1_Closing(objectsender,e)

{

=true;

}

55.在(C#or)中,还是有什么不同

A:

一个是退出整个应用程序,一个是关闭其中一个form

56.在C#中有一个double型的变量,比如,比如,作为货币的值如何按各个不同国家的习惯来输出。

比如美国用$10,和$122,235,而在英国则为£10和£122235

A:

MyCulture=new"en-US");

62-63=1等式不成立,请移动一个数字(不可以移动减号和等于号),使得等式成立,如何移动

A:

62移动成2的6次方

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

A:

分而治之将相关行为抽象为类,类有职责,

复用:

代码,设计复用,经验复用

封装:

隐藏数据,保护元数据

继承:

代码复用,并使类具有层次性

多态:

同一个操作在不同的环境具有不同的行为,

59.什么是中的用户控件

A:

扩展名为.ascxUserControl的派生类

60.什么叫应用程序域什么是受管制的代码什么是强类型系统什么是装箱和拆箱什么是重载CTS、CLS和CLR分别作何解释

A:

应用程序域

应用程序域为安全

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

当前位置:首页 > 表格模板 > 合同协议

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

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