c#高级面试题.docx
《c#高级面试题.docx》由会员分享,可在线阅读,更多相关《c#高级面试题.docx(23页珍藏版)》请在冰点文库上搜索。
![c#高级面试题.docx](https://file1.bingdoc.com/fileroot1/2023-6/12/196797d6-bf57-4106-83cf-63a5bc81f7ed/196797d6-bf57-4106-83cf-63a5bc81f7ed1.gif)
c#高级面试题
一.填空题
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. 填空:
(1)面向对象的语言具有________性、_________性、________性。
(2)能用foreach遍历访问的对象需要实现________________接口或声明________________方法的类型。
(3)列举ADO.net中的五个主要对象_______________、_____________、_______________、_______________、_________________。
2.不定项选择:
(1)以下叙述正确的是:
A.接口中可以有虚方法。
B.一个类可以实现多个接口。
C.接口不能被实例化。
D.接口中可以包含已实现的方法。
(2)从数据库读取记录,你可能用到的方法有:
A.ExecuteNonQuery B.ExecuteScalar
C.Fill D.ExecuteReader
3.简述private、protected、public、internal修饰符的访问权限。
4.写出一条Sql语句:
取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键, 注意:
ID可能不是连续的。
)
5.列举ASP.NET页面之间传递值的几种方式。
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);
}
}
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();
}
}
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);
}
}
9.一列数的规则如下:
1、1、2、3、5、8、13、21、34......
求第30位数是多少,用递归算法实现。
(C#语言)
10. 程序设计:
猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。
(C#语言)
要求:
1.要有联动性,老鼠和主人的行为是被动的。
2.考虑可扩展性,猫的叫声可能引起其他联动效应。
.net笔试题
姓名:
日期:
1. 填空:
(1)面向对象的语言具有________性、_________性、________性。
(2)能用foreach遍历访问的对象需要实现________________接口或声明________________方法的类型。
(3)列举ADO.net中的五个主要对象_______________、_____________、_______________、_______________、_________________。
2.不定项选择:
(1)以下叙述正确的是:
A.接口中可以有虚方法。
B.一个类可以实现多个接口。
C.接口不能被实例化。
D.接口中可以包含已实现的方法。
(2)从数据库读取记录,你可能用到的方法有:
A.ExecuteNonQuery B.ExecuteScalar
C.Fill D.ExecuteReader
3.简述private、protected、public、internal修饰符的访问权限。
4.写出一条Sql语句:
取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键, 注意:
ID可能不是连续的。
)
5.列举ASP.NET页面之间传递值的几种方式。
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);
}
}
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();
}
}
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);
}
}
9.一列数的规则如下:
1、1、2、3、5、8、13、21、34......
求第30位数是多少,用递归算法实现。
(C#语言)
10. 程序设计:
猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。
(C#语言)
要求:
1.要有联动性,老鼠和主人的行为是被动的。
2.考虑可扩展性,猫的叫声可能引起其他联动效应。
参考答案:
1.
(1) 继承性、封装性、多态性。
(考基本概念)
(2) IEnumerable、GetEnumerator(对foreach机制的理解,本来不想出这题的,凑分)
(3) ...(送分题,对ADO.net的了解)
评分标准:
一空1分,满分10分。
2.
(1)B、C(考对接口的理解)
(2) B、C、D(考查对ADO.net的熟练程度)
评分标准:
一题5分,不选或者错选均不得分。
漏选得2分。
满分10分。
3..private:
私有成员,在类的内部才可以访问。
protected:
保护成员,该类内部和继承类中可以访问。
public:
公共成员,完全公开,没有访问限制。
internal:
在同一命名空间内可以访问。
评分标准:
答对1题2分,2题5分,3题7分。
全对10分。
(送分题)
4. 解1:
selecttop10*fromAwhereidnotin(selecttop30idfromA)
解2:
selecttop10*fromAwhereid>(selectmax(id)from(selecttop30idfromA)asA)
评分标准:
写对即10分。
(答案不唯一,datagrid分页可能需要用到)
5. 1.使用QueryString, 如....?
id=1;response.Redirect()....
2.使用Session变量
3.使用Server.Transfer
....等等
评分标准:
答对1点得3分,两点7分,3点10分。
6. (考查值引用和对象引用)
10
21
0
str
stringbeingconverted.
评分标准:
答对一点得2分,满分10分。
7. A
B
A.Fun()
评分标准:
写出A.B得5分,写出A.Fun()得5分,满分10分。
(考查在继承类中构造函数,以及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:
Obs