C#经典笔面试题.docx
《C#经典笔面试题.docx》由会员分享,可在线阅读,更多相关《C#经典笔面试题.docx(21页珍藏版)》请在冰豆网上搜索。
C#经典笔面试题
C#经典笔面试题
存储过程和函数的区别2.事务是什么?
3.游标的作用?
如何知道游标已经到了最后?
4.触发器分为事前触发和事后触发,这两种触发有和区别。
语句级触发和行级触发有何区别。
1。
用C#实现以下功能
a产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。
b对上面生成的数组排序,需要支持升序、降序两种顺序
2。
请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。
3。
请说明.net中的错误处理机制,并举例
4。
请说出强名的含义
5。
请列出c#中几种循环的方法,并指出他们的不同
6。
请指出.net中所有类型的基类
7。
请指出GAC的含义
8。
SQLSREVER中,向一个表中插入了新数据,如何快捷的得到自增量字段的当前值
您在什么情况下会用到虚方法?
它与接口有什么不同?
Q:
Override与重载有什么区别?
Q:
值类型与引用类型有什么区别?
Q:
怎样理解静态变量?
Q:
向服务器发送请求有几种方式?
Q:
DataReader与Dataset有什么区别?
Q:
如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理?
Q:
用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?
Q:
软件开发过程一般有几个阶段?
每个阶段的作用?
Q:
微软推出了一系列的ApplicationBlock,请举出您所知道的ApplicationBlock并说明其作用?
Q:
请列举一些您用到过的设计模式以及在什么情况下使用该模式?
Q:
您对WebService的体会?
Q:
您对编程的兴趣如何?
工作中遇到不懂的问题是怎样去解决的?
您一般怎样去提高自己的编程水平?
Q:
您离职的原因是什么?
Q:
通过超链接怎样传递中文参数?
Q:
请编程遍历页面上所有TextBox控件并给它赋值为string.Empty?
Q:
请编程实现一个冒泡排序算法?
1、override与重载的区别2、.net的错误处理机制是什么
3、C#中接口和类的异同4、DataReader和DataSet的异同
1.有哪几种方法可以实现一个类存取另外一个类的成员函数及属性,并请举列来加以说明和分析.
2.如果需记录类的实例个数,该如何实现,请写一个简单的类于以证明.
3.A类是B类的基类,并且都有自己的构造,析构函数,请举例证明B类从实例化到消亡过程中构造,析构函数的执行过程.
4.需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,如果字符串中间还有连续空格的话,仅保留一个空格,即允许字符串中间有多个空格,但连续的空格数不可超过一个.
1.c#中的三元运算符是__?
:
___?
2.当整数a赋值给一个object对象时,整数a将会被__装箱(封装)___?
3.类成员有_____种可访问形式?
this.;newClass().Method;
4.publicstaticconstintA=1;这段代码有错误么?
是什么?
const不能用static修饰
5.floatf=-123.567F;
inti=(int)f;
i的值现在是_____?
123
6.利用operator声明且仅声明了“==”,有什么错误么?
7.委托声明的关键字是______?
delagete
8.用sealed修饰的类有什么特点?
密封,不能继承
9.在A中所有的自定义用户控件都必须继承自________?
Control
10.在.Net中所有可序列化的类都被标记为_____?
11.在.Net托管代码中我们不用担心内存漏洞,这是因为有了______?
gc
12.下面的代码中有什么错误吗?
_______
usingSystem;
classA
{
publicvirtualvoidF(){
Console.WriteLine("A.F");
}
}
abstractclassB:
A
{
publicabstractoverridevoidF();//newpublicabstractvoidF();
}
13.当类T只声明了私有实例构造函数时,则在T的程序文本外部,___可以___(可以or不可以)从T派生出新的类,不可以____(可以or不可以)直接创建T的任何实例。
14.下面这段代码有错误么?
switch(i){
case():
CaseZero();
break;
case1:
CaseOne();
break;
case2:
dufault;
//wrong
CaseTwo();
break;
}
15.在.Net中,类System.Web.UI.Page可以被继承么?
可以
二.简答题
1.在c#中using和new这两个关键字有什么意义,请写出你所知道的意义?
using指令和语句new创建实例new隐藏基类中方法
4.谈谈类和结构的区别?
类是引用类型、结构是值类型
5.一个长度为10000的字符串,通过随机从a-z中抽取10000个字符组成。
请用c#语言编写主要程序来实现。
6.对于这样的一个枚举类型:
enumColor:
byte{
Red,
Green,
Blue,
Orange
}
string[]ss=Enum.GetNames(typeof(Color));
byte[]
bb=Enum.GetValues(typeof(Color));
试写一段程序显示出枚举类型中定义的所有符号名称以及它们对应的数值。
7.您了解设计模式么?
请列出您所知道的设计模式的名称。
//
8.请在SQLServer中设计表来保存一个树状结构的组织结构图(假设结构图中只有名称这一项内容需要保存),如果我想查询某一职位下的所有职位,用一个存储过程来实现,你有什么思路?
9.什么叫做SQL注入,如何防止?
请举例说明。
10.下面这段代码输出什么?
为什么?
inti=5;
intj=5;
if(Object.ReferenceEquals(i,j))
Console.WriteLine("Equal");
else
Console.WriteLine("NotEqual");
//不相等,因为比较的是对象
1.写一个实现对一段字符串翻转的方法,附加一些条件,如其中包括“,”、“.”,对其设计测试用例。
2.对一支纸杯设计测试用例(可以是广义的杯,不一定是某一支特定功能的杯)
开发语言概念题
3.什么是反射?
4.用Singleton如何写设计模式
5.C#中的垃圾回收机制是怎样的?
6.什么是ApplicationPool?
7.链表和数组的区别,各有什么优缺点.
8.Remoting在客户端服务器怎么实现?
9.什么是友元函数?
10.用标准C如何实现多态?
11.什么是虚函数?
12.什么是抽象函数?
13.什么是内存泄漏,怎样最简单的方法判断被存泄漏?
英语题
14.用英文介绍一下使用C#/C++做的项目,主要功能
15.如果要与美国开电话会议,会如何与美国的工程师沟通
16.如果老板认为你的技术落后,你会怎么回答
数据库知识题
17.使用什么工具来调用存储过程
18.SQLServer的两种索引是何形式?
索引的作用?
索引的优缺点?
19.触发器的作用
其它知识题及问题
20.什么是WebService?
21.什么是XML?
22.Socket怎么实现?
Q:
您在什么情况下会用到虚方法?
它与接口有什么不同?
Q:
Override与重载有什么区别?
Q:
值类型与引用类型有什么区别?
Q:
怎样理解静态变量?
Q:
向服务器发送请求有几种方式?
Q:
DataReader与Dataset有什么区别?
Q:
如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理?
Q:
用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?
Q:
软件开发过程一般有几个阶段?
每个阶段的作用?
Q:
微软推出了一系列的ApplicationBlock,请举出您所知道的ApplicationBlock并说明其作用?
Q:
请列举一些您用到过的设计模式以及在什么情况下使用该模式?
Q:
您对WebService的体会?
Q:
您对编程的兴趣如何?
工作中遇到不懂的问题是怎样去解决的?
您一般怎样去提高自己的编程水平?
Q:
您离职的原因是什么?
以下几道题目如果您不会,请较为详细的描述您的解决思路和方法
Q:
通过超链接怎样传递中文参数?
Q:
请编程遍历页面上所有TextBox控件并给它赋值为string.Empty?
Q:
请编程实现一个冒泡排序算法?
.NET面试题
(2)
一道数据库设计的面试题,考查的重点和供参考的解决方案如下。
一大型企业,有10000名员工,每半个月发一次工资,试为此企业设计一个工资数据库.(数据库为SQLserver).
这题考查的重点是面对数据量大时,如何设计一个系统的性能好、速度快的数据库。
-----------------------------------------
可供参考的解决方法有几点,希望大家补充:
1.建立索引是必须的。
2.可以设计成两个表,一个用来操作,一个用来查询。
操作表只保存最近若干段时间内的数据,就如移动公司查询话费记录。
3.查询考虑用最优的存储过程。
.NET面试题(3)
1.写一个实现对一段字符串翻转的方法,附加一些条件,如其中包括“,”、“.”,对其设计测试用例。
2.对一支纸杯设计测试用例(可以是广义的杯,不一定是某一支特定功能的杯)
开发语言概念题
3.什么是反射?
4.用Singleton如何写设计模式5.C#中的垃圾回收机制是怎样的?
6.什么是ApplicationPool?
7.链表和数组的区别,各有什么优缺点.
8.Remoting在客户端服务器怎么实现?
9.什么是友元函数?
10.用标准C如何实现多态?
11.什么是虚函数?
12.什么是抽象函数?
13.什么是内存泄漏,怎样最简单的方法判断被存泄漏?
英语题
14.用英文介绍一下使用C#/C++做的项目,主要功能
15.如果要与美国开电话会议,会如何与美国的工程师沟通16.如果老板认为你的技术落后,你会怎么回答
数据库知识题
17.使用什么工具来调用存储过程
18.SQLServer的两种索引是何形式?
索引的作用?
索引的优缺点?
19.触发器的作用
其它知识题及问题
20.什么是WebService?
21.什么是XML?
22.Socket怎么实现?
1.面向对象的思想主要包括什么?
2.什么是ASP.net中的用户控件
3.什么叫应用程序域?
什么是受管制的代码?
什么是强类型系统?
什么是装箱和拆箱?
什么是重载?
CTS、CLS和CLR分别作何解释?
4.列举一下你所了解的XML技术及其应用
5.值类型和引用类型的区别?
写出C#的样例代码。
6.ADO.net中常用的对象有哪些?
分别描述一下。
7.如何理解委托?
8.C#中的接口和类有什么异同。
9.。
net中读写数据库需要用到哪些类?
他们的作用10.UDP连接和TCP连接的异同。
11.ASP.net的身份验证方式有哪些?
分别是什么原理?
12.进程和线程分别怎么理解?
13.什么是code-Behind技术。
14.活动目录的作用。
中读写XML的类都归属于哪些命名空间?
16.解释一下UDDI、WSDL的意义及其作用。
17.什么是SOAP,有哪些应用。
18.如何部署一个ASP.net页面。
19.如何理解.net中的垃圾回收机制。
20.常用的调用webservice方法有哪些?
C#面试
1.填空:
(1)面向对象的语言具有________性、_________性、________性。
答:
1.
(1)继承性、封装性、多态性。
(考基本概念)
(2)能用foreach遍历访问的对象需要实现________________接口或声明________________方法的类型。
答:
(2)IEnumerable、GetEnumerator(对foreach机制的理解)
(3)列举ADO.net中的五个主要对象_______________、_____________、_______________、_______________、_________________。
2.不定项选择:
(1)以下叙述正确的是:
A.接口中可以有虚方法。
B.一个类可以实现多个接口。
C.接口不能被实例化。
D.接口中可以包含已实现的方法。
答:
B,C
(2)从数据库读取记录,你可能用到的方法有:
A.ExecuteNonQueryB.ExecuteScalar
C.FillD.ExecuteReader
答:
B.C.D
3.简述private、protected、public、internal修饰符的访问权限。
答:
private:
私有成员,在类的内部才可以访问。
protected:
保护成员,该类内部和继承类中可以访问。
public:
公共成员,完全公开,没有访问限制。
internal:
在同一命名空间内可以访问。
4.写出一条Sql语句:
取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:
ID可能不是连续的。
)
答:
解1:
selecttop10*fromAwhereidnotin(selecttop30idfromA)
解2:
selecttop10*fromAwhereid>(selectmax(id)from(selecttop30idfromA)asA)
5.列举ASP.NET页面之间传递值的几种方式。
答:
1.使用QueryString,如....?
id=1;response.Redirect()....
2.使用Session变量
3.使用Server.Transfer
6.写出程序的输出结果
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);
}
}
答:
(考查值引用和对象引用)
10
21
0
str
stringbeingconverted.
7.写出程序的输出结果
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();
}
}
答:
A
B
A.Fun()
8.写出程序的输出结果:
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);
}
}
答:
2
5
1
6
9.一列数的规则如下:
1、1、2、3、5、8、13、21、34......
求第30位数是多少,用递归算法实现。
(C#语言)
答:
publicclassMainClass
{
publicstaticvoidMain()
{
Console.WriteLine(Foo(30));
}
publicstaticintFoo(inti)
{
if(i<=0)
return0;
elseif(i>0&&i<=2)
return1;
elsereturnFoo(i-1)+Foo(i-2);
}
}
10.程序设计:
猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。
(C#语言)
要求:
1.要有联动性,老鼠和主人的行为是被动的。
2.考虑可扩展性,猫的叫声可能引起其他联动效应。
答:
要点:
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);
}