您的位置:首页 > 职场人生

C#常见面试题

2014-12-27 03:06 197 查看
C#常见面试题
2007-02-21 21:19
1. 填空: (1)面向对象的语言具有___继承性、_封装___性、___多态性。

(2)能用foreach遍历访问的对象需要实现 IEnumerable接口或声明GetEnumerable 方法的类型。

(3)列举ADO.net中的五个主要对象Command、Connection、DataSet、DataSetCommand、DataReader。

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

class Class1 {

private string str = "Class1.str";

private int i = 0;

static void StringConvert(string str) {

str = "string being converted.";

}

static void StringConvert(Class1 c) {

c.str = "string being converted.";

}

static void Add(int i) {

i++;

}

static void AddWithRef(ref int i) {

i++;

}

static void Main() {

int i1 = 10;

int i2 = 20;

string str = "str";

Class1 c = new Class1();

Add(i1);

AddWithRef(ref i2);

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

public abstract class A

{

public A()

{

Console.WriteLine('A');

}

public virtual void Fun()

{

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

}

}

public class B: A

{

public B()

{

Console.WriteLine('B');

}

public new void Fun()

{

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

}

public static void Main()

{

A a = new B();

a.Fun();

}

}

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

public class A

{

public virtual void Fun1(int i)

{

Console.WriteLine(i);

}

public void Fun2(A a)

{

a.Fun1(1);

Fun1(5);

}

}

public class B : A

{

public override void Fun1(int i)

{

base.Fun1 (i + 1);

}

public static void Main()

{

B b = new B();

A a = new A();

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: select top 10 * from A where id not in (select top 30 id from A)

解2: select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A)

评分标准: 写对即10分。(答案不唯一,datagrid 分页可能需要用到)

5. 1.使用QueryString, 如....?id=1; response. Redirect()....

2.使用Session变量

3.使用Server.Transfer

....

评分标准: 答对1点得3分, 两点7分, 3点10分。

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

10

21

0

str

string being converted.

评分标准:答对一点得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.

public class MainClass

{

public static void Main()

{

Console.WriteLine(Foo(30));

}

public static int Foo(int i)

{

if (i <= 0)

return 0;

else if(i > 0 && i <= 2)

return 1;

else return Foo(i -1) + Foo(i - 2);

}

}

评分标准: 写出return Foo(i -1) + Foo(i - 2); 得5分。

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

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

不用递归算法扣5分

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

10

要点:1. 联动效果,运行代码只要执行Cat.Cryed()方法。2. 对老鼠和主人进行抽象

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

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

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

public interface Observer

{

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

}

public interface Subject

{

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

}

public class Mouse : Observer

{

private string name;

public Mouse(string name, Subject subj)

{

this.name = name;

subj.AimAt(this);

}

public void Response()

{

Console.WriteLine(name + " attempt to escape!");

}

}

public class Master : Observer

{

public Master(Subject subj)

{

subj.AimAt(this);

}

public void Response()

{

Console.WriteLine("Host waken!");

}

}

public class Cat : Subject

{

private ArrayList observers;

public Cat()

{

this.observers = new ArrayList();

}

public void AimAt(Observer obs)

{

this.observers.Add(obs);

}

public void Cry()

{

Console.WriteLine("Cat cryed!");

foreach (Observer obs in this.observers)

{

obs.Response();

}

}

}

class MainClass

{

static void Main(string[] args)

{

Cat cat = new Cat();

Mouse mouse1 = new Mouse("mouse1", cat);

Mouse mouse2 = new Mouse("mouse2", cat);

Master master = new Master(cat);

cat.Cry();

}

}

//---------------------------------------------------------------------------------------------

设计方法二: 使用event -- delegate设计..

public delegate void SubEventHandler();

public abstract class Subject

{

public event SubEventHandler SubEvent;

protected void FireAway()

{

if (this.SubEvent != null)

this.SubEvent();

}

}

public class Cat : Subject

{

public void Cry()

{

Console.WriteLine("cat cryed.");

this.FireAway();

}

}

public abstract class Observer

{

public Observer(Subject sub)

{

sub.SubEvent += new SubEventHandler(Response);

}

public abstract void Response();

}

public class Mouse : Observer

{

private string name;

public Mouse(string name, Subject sub) : base(sub)

{

this.name = name;

}

public override void Response()

{

Console.WriteLine(name + " attempt to escape!");

}

}

public class Master : Observer

{

public Master(Subject sub) : base(sub){}

public override void Response()

{

Console.WriteLine("host waken");

}

}

class Class1

{

static void Main(string[] args)

{

Cat cat = new Cat();

Mouse mouse1 = new Mouse("mouse1", cat);

Mouse mouse2 = new Mouse("mouse2", cat);

Master master = new Master(cat);

cat.Cry();

}

}

走自己的路让别人跟着走

绿色通道: 好文要顶 关注我 收藏该文与我联系






hiccsoft

关注 - 0

粉丝 - 0

+加关注

0

0

(请您对文章做出评价)

« 上一篇:不试不知道,一试吓一跳啊。。。。

» 下一篇:将XML文件插入到数据库

posted @ 2007-07-17 23:56 hiccsoft 阅读(20)
评论(0) 编辑 收藏

刷新评论刷新页面返回顶部

发表评论

昵称:

评论内容:













注销 订阅评论

[使用Ctrl+Enter键快速提交]

【免费课程】分享:移动优先的跨终端 Web

【推荐】50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库

融云,免费为你的App加入IM功能——让你的App“聊”起来!!

【推荐】最懂中文的 H5 开源前端框架

【活动】加班一整年了,程序员们,你们还好吗?

最新IT新闻:

· “2014年度编程语言”花落谁家?

· 你相信吗? 这些照片都是用iPhone拍出来的

· 调查称大学毕业生逐渐放弃买房梦

· 腾讯“内参”:和巨头竞争,要学会给用户“画脸谱”

· 陆金所将要分拆上市,国内P2P公司还需跨过几道坎

» 更多新闻...

最新知识库文章:

· 手机淘宝构架演化实践

· Azure的NoSQL技术

· 稳定婚姻问题和Gale-Shapley算法

· 为什么我看不懂你的代码

· 海尔电商峰值系统架构设计最佳实践

» 更多知识库文章...

昵称:hiccsoft

园龄:7年5个月

粉丝:0

关注:0
+加关注

<2014年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910


搜索


常用链接

我的随笔
我的评论
我的参与
最新评论
我的标签
更多链接


随笔分类

新技术


随笔档案

2007年8月
(1)
2007年7月
(1)


阅读排行榜

1. 将XML文件插入到数据库(232)
2. 不试不知道,一试吓一跳啊。。。。(74)


评论排行榜

1. 不试不知道,一试吓一跳啊。。。。(1)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: