我做技术主管的时候出的一份C#笔试题
2008-11-09 08:22
411 查看
C# [/b]笔试题[/b]
1、 [/b]基础知识[/b]
1) 值类型与引用类型
下面类型哪些是值类型?哪些是引用类型?
i. class enum struct delegate interface
ii. object int string float DateTime
2) 非静态成员与静态成员
写出下面代码的输出结果:
class MyClass
{
public MyClass() { v1++; v2++; }
public static int v1;
public int v2;
}
// 注意:为了书写方便,没有将下面的代码放在函数中,下同
MyClass mc1 = new MyClass(), mc2 = new MyClass();
Console.WriteLine(“{0} {1} {2}”, MyClass.v1, mc1.v2, mc2.v2);
3) 接口
写出下面代码的输出结果
interface IMyInterface
{
void Write();
}
class MyClass1 : IMyInterface
{
public void Write() { Console.WriteLine(“Hello World 1”); }
}
class MyClass2 : MyClass1
{
public new void Write() { Console.WriteLine(“Hello World 2”); }
}
class MyClass3 : MyClass2, IMyInterface
{
public new void Write() { Console.WriteLine(“Hello World 3”); }
}
class MyClass4 : MyClass3, IMyInterface
{
void IMyInterface.Write() { Console.WriteLine(“Hello World 4”); }
public new void Write() { Console.WriteLine(“Hello World 5”); }
}
IMyInterface myIn1 = new MyClass1();
IMyInterface myIn2 = new MyClass2();
IMyInterface myIn3 = new MyClass3();
IMyInterface myIn4 = new MyClass4();
myIn1.Write();
myIn2.Write();
myIn3.Write();
myIn4.Write();
4) 传参方式
写出下面程序的输出结果:(如果代码有语法错误请指明)
void MyMethod1(int v) { v ++; }
int v1 = 0;
MyMethod(v1);
Console.WriteLine(v1);
void MyMethod2(ref int v) { v ++; }
int v2 = 0;
MyMethod(ref v2);
Console.WriteLine(v2);
void MyMethod3(out int v) { v ++; }
int v3 = 0;
MyMethod(out v3);
Console.WriteLine(v3);
5) 继承、隐藏与重写
写出下面程序的输出结果:
class MyClass1
{
public void Write() { Console.WriteLine(“Hello World 1”) }
}
class MyClass2 : MyClass1
{
public new virtual void Write() { Console.WriteLine(“Hello World 2”); }
}
class MyClass3 : MyClass2
{
public override void Write() { Console.WriteLine(“Hello World 3”); }
}
MyClass1 mc1 = new MyClass2();
MyClass2 mc2 = new MyClass3();
mc1.Write();
mc2.Write();
6) 委托
有如下的代码:
string MyMethod(object obj){ return obj.ToString(); }
则下面语法正确的有:
a) delegate string MyDelegate(object obj); MyDelegate func = MyMethod;
b) delegate object MyDelegate(object obj); MyDelegate func = MyMethod;
c) delegate string MyDelegate(string obj); MyDelegate func = MyMethod;
d) delegate object MyDelegate(string obj); MyDelegate func = MyMethod;
7) 反射
i. 简单说明一下您对反射的理解,及什么情况下使用反射
ii. 简述C#关键字is与as的用法
8) 装箱与拆箱
请指出下面代码中,哪些地方会发生装箱或拆箱
int a = 10;
object obj = a;
obj = 100;
int b = (int)obj;
Type type = b.GetType();
string str = b.ToString();
Console.Write(obj);
Console.Write(b);
9)泛型
i. 如果要限制泛型中的类型参数T为引用类型,可以用什么样的语法?
ii. 如果泛型类中,某方法要返回类型参数T的默认值,可以用什么样的语法?
10)运算符重载
i. C#中的运算符重载,哪些运算符要求成对重载?
ii. 实现C#运算符重载的方法,需要有哪些固有的特征?(例如访问修饰符等特征)
11)集合类
i. 简述object类中的两个虚函数GetHashCode()与Equals()的作用
ii. 简述接口IEnumerable与IEnumerator的作用
iii. 请列举一下您所熟悉的.NET集合类,越多越好
12)异常
以下对异常的解释正确的有:
a) 异常类必须要派生于System.Exception(或其派生类)
b) 在一个方法中出现的异常,如果该方法没有对其进行处理(catch),则会沿着调用堆栈寻找可以处理该异常的代码
c) 如果一个方法有返回值,那么即使出现了异常,也应该返回一个明确的值;
d) 只要进入了try块,那么它会最终执行finally块;(不考虑突然断电等导致程序突然中止的情况)
e) 在finally中也可以使用return语句
f) 如果在finally块中出现了异常,那么原先在try或catch块中抛出的异常会丢失
13)多线程
i. 简述Monitor、Semaphore、Mutex的作用
ii. 简述C#关键字lock的作用
14).NET类库知识
i. 简述StringBuilder的用途
ii. 简述IDisposable接口的用途
15)您是否了解C#3.0,如果了解,简单说一下它的新特性。(选答)
2、 [/b]设计模式[/b]
1) 请列举一下您所知道的模式,越多越好:
2)请从您所熟悉的模式中,任选两个模式,并用简单的代码描述一下:
3[/b]、编程[/b]
1) 请任选一种算法,用C#语法实现对一个整型数组的逆序排序
2) 假如一个整型数组中有重复的元素,请用C#写一个算法,将其中重复的元素去除,只保留一个
1、 [/b]基础知识[/b]
1) 值类型与引用类型
下面类型哪些是值类型?哪些是引用类型?
i. class enum struct delegate interface
ii. object int string float DateTime
2) 非静态成员与静态成员
写出下面代码的输出结果:
class MyClass
{
public MyClass() { v1++; v2++; }
public static int v1;
public int v2;
}
// 注意:为了书写方便,没有将下面的代码放在函数中,下同
MyClass mc1 = new MyClass(), mc2 = new MyClass();
Console.WriteLine(“{0} {1} {2}”, MyClass.v1, mc1.v2, mc2.v2);
3) 接口
写出下面代码的输出结果
interface IMyInterface
{
void Write();
}
class MyClass1 : IMyInterface
{
public void Write() { Console.WriteLine(“Hello World 1”); }
}
class MyClass2 : MyClass1
{
public new void Write() { Console.WriteLine(“Hello World 2”); }
}
class MyClass3 : MyClass2, IMyInterface
{
public new void Write() { Console.WriteLine(“Hello World 3”); }
}
class MyClass4 : MyClass3, IMyInterface
{
void IMyInterface.Write() { Console.WriteLine(“Hello World 4”); }
public new void Write() { Console.WriteLine(“Hello World 5”); }
}
IMyInterface myIn1 = new MyClass1();
IMyInterface myIn2 = new MyClass2();
IMyInterface myIn3 = new MyClass3();
IMyInterface myIn4 = new MyClass4();
myIn1.Write();
myIn2.Write();
myIn3.Write();
myIn4.Write();
4) 传参方式
写出下面程序的输出结果:(如果代码有语法错误请指明)
void MyMethod1(int v) { v ++; }
int v1 = 0;
MyMethod(v1);
Console.WriteLine(v1);
void MyMethod2(ref int v) { v ++; }
int v2 = 0;
MyMethod(ref v2);
Console.WriteLine(v2);
void MyMethod3(out int v) { v ++; }
int v3 = 0;
MyMethod(out v3);
Console.WriteLine(v3);
5) 继承、隐藏与重写
写出下面程序的输出结果:
class MyClass1
{
public void Write() { Console.WriteLine(“Hello World 1”) }
}
class MyClass2 : MyClass1
{
public new virtual void Write() { Console.WriteLine(“Hello World 2”); }
}
class MyClass3 : MyClass2
{
public override void Write() { Console.WriteLine(“Hello World 3”); }
}
MyClass1 mc1 = new MyClass2();
MyClass2 mc2 = new MyClass3();
mc1.Write();
mc2.Write();
6) 委托
有如下的代码:
string MyMethod(object obj){ return obj.ToString(); }
则下面语法正确的有:
a) delegate string MyDelegate(object obj); MyDelegate func = MyMethod;
b) delegate object MyDelegate(object obj); MyDelegate func = MyMethod;
c) delegate string MyDelegate(string obj); MyDelegate func = MyMethod;
d) delegate object MyDelegate(string obj); MyDelegate func = MyMethod;
7) 反射
i. 简单说明一下您对反射的理解,及什么情况下使用反射
ii. 简述C#关键字is与as的用法
8) 装箱与拆箱
请指出下面代码中,哪些地方会发生装箱或拆箱
int a = 10;
object obj = a;
obj = 100;
int b = (int)obj;
Type type = b.GetType();
string str = b.ToString();
Console.Write(obj);
Console.Write(b);
9)泛型
i. 如果要限制泛型中的类型参数T为引用类型,可以用什么样的语法?
ii. 如果泛型类中,某方法要返回类型参数T的默认值,可以用什么样的语法?
10)运算符重载
i. C#中的运算符重载,哪些运算符要求成对重载?
ii. 实现C#运算符重载的方法,需要有哪些固有的特征?(例如访问修饰符等特征)
11)集合类
i. 简述object类中的两个虚函数GetHashCode()与Equals()的作用
ii. 简述接口IEnumerable与IEnumerator的作用
iii. 请列举一下您所熟悉的.NET集合类,越多越好
12)异常
以下对异常的解释正确的有:
a) 异常类必须要派生于System.Exception(或其派生类)
b) 在一个方法中出现的异常,如果该方法没有对其进行处理(catch),则会沿着调用堆栈寻找可以处理该异常的代码
c) 如果一个方法有返回值,那么即使出现了异常,也应该返回一个明确的值;
d) 只要进入了try块,那么它会最终执行finally块;(不考虑突然断电等导致程序突然中止的情况)
e) 在finally中也可以使用return语句
f) 如果在finally块中出现了异常,那么原先在try或catch块中抛出的异常会丢失
13)多线程
i. 简述Monitor、Semaphore、Mutex的作用
ii. 简述C#关键字lock的作用
14).NET类库知识
i. 简述StringBuilder的用途
ii. 简述IDisposable接口的用途
15)您是否了解C#3.0,如果了解,简单说一下它的新特性。(选答)
2、 [/b]设计模式[/b]
1) 请列举一下您所知道的模式,越多越好:
2)请从您所熟悉的模式中,任选两个模式,并用简单的代码描述一下:
3[/b]、编程[/b]
1) 请任选一种算法,用C#语法实现对一个整型数组的逆序排序
2) 假如一个整型数组中有重复的元素,请用C#写一个算法,将其中重复的元素去除,只保留一个
相关文章推荐
- 我做技术主管时出的一份C#笔试题(附答案)
- 通过一份笔试题来发现技术水平,查缺补漏
- 雅虎公司C#笔试题【中文C#技术站 】
- 一份C#的笔试题
- 通过一份笔试题来发现技术水平,查缺补漏
- 有名的英文技术网站(包含C#的)
- C# ASP.NET B/S模式下,采用lock语法 实现多用户并发产生不重复递增单号的一种解决方法技术参考
- 利用NVelocity模板替换技术显示页面,模板里怎么调用C#类库的静态方法
- 一位技术主管的十年编程经验总结
- C#开发技术博客收集,觉得好的网点记录帖子
- 笔试怎么过(4)C#笔试和设计模式
- C#汉字转换拼音技术详解(高性能)
- 浅谈C#从入门到开发需要掌握的技术
- C#语法——消息,MVVM的核心技术。
- 睿城_技术02----说一下关于平台在属性查询,以及空间查询分析等时候遇到的问题
- java C#.net C++分布式设计技术
- c#笔试逻辑题
- 插件技术原理及其C#实现(一)插件技术原理及其特性
- c# 打开exe文件与关闭exe文件 c#服务打开exe时候默认是没有窗体界面的
- c# 双缓冲 技术与例子