1.
填空
: (1)
面向对象的语言具有
___
继承性、封装性、多态性。
(2)
能用
foreach
遍历访问的对象需要实现
IEnumerable
接口或声明
GetEnumerator
方法的类型
(3)
列举
ADO.net
中的五个主要对象
Command
、
Connection
、
DataSet
、
DataAdapter
、
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
页面之间传递值的几种方式。
三种比较常见的方式,一种是可以通过用
QueryString
来传送相应的值,再一种是通过
session
变量来传送相应的值,还有就是通过
Server.Transfer
方法来实现
(1)queryString
(2)session (3)cookie (4)server.transfer (5)hidden control/view state (6)static member. (7)cache (8)application (9)DataBase (10)xml or other Files (11)XMLHTTP or Hidden iFrame/frame (12)Context.user.identity 我正在做一个通用提示叶面,所有叶面出现问题都要,传递几个变量字符串到同一个叶面 hitMsg.aspx 变量字符串包括提示语言,即将跳转的叶面,跳转时间。在 1-11 种方案中哪个更好些 ? (1)queryString 的毛病是无法传递很长字符串,比如系统错误信息往往就一整个屏幕。 (2)session 的毛病是不能过多使用,依赖 Cookie, 容易丢失。 (3)cookie 的毛病是依赖客户端设置,不可靠。 (4)server.transfer 的毛病是接收叶面要为发送叶面准备好,只能定制专门一个叶面接受定制好的叶面。 不能是一个叶面接受任何叶面。 (5)hidden control/view state 只能传递本页。除非特殊制作。 (6)static member. 无法保证线程安全,可能会此处栽瓜他处得豆。 (7)cache 不适合使用一次就扔的变量。 (8)application 全局的,开销大。 (9)DataBase 全局固化的 , 开销更大,除非做日志跟踪。 (10)xml or other Files 全局固化的 , 开销大,除非做日志跟踪。 (11)XMLHTTP or Hidden iFrame/frame ,做这个过于烦琐。 (12)Context 这个占用了用户 id ,不适合做这个。
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#
语言
)
-------------------------------------------
a0 = 0,a1 = 1,An = An-1 + An-2(n>=2)
int[] iArray = new int[31]; iArray[0] = 0; iArray[1] = 1; for (int i = 2; i <= 30; i++) { iArray[i] = iArray[i - 1] + iArray[i - 2]; } --------------- 参考答案二 ---------------------------------
int i=0,ii=1,s=1,num=0;
while(num<=30) { s=i+ii; Response.Write(i+"+"+ii+"="+s+"<br>"); if(s==1) { i=1; } else { i=s-i; } ii=s; num++; }
========================
10.
程序设计
:
猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。
(C#
语言
)
要求:
1.
要有联动性,老鼠和主人的行为是被动的。
2.
考虑可扩展性,猫的叫声可能引起其他联动效应。
三个类
,
猫
,
老鼠和主人
猫
public sealed class Cat
{
//
猫叫时引发的事件
public event EventHandler Calling;
public void Call()
{
Console.WrietLine("
猫叫了
...");
if(Calling != null) //
检查是否有事件注册
Calling(this, EventArgs.Empty); //
调用事件注册的方法。
}
}
//
老鼠,提供一个方法表示逃跑
public sealed calss Mouse
{
public void Escape(object sender, EventArgs e)
{
Console.WriteLine("
老鼠逃跑了
...");
}
}
//
主人,发生猫叫的时候惊醒
public sealed class Master
{
public void Wakened(object sender, EventArgs e)
{
Console.WriteLine("
主人惊醒了
...);
}
}
//
用于测试的执行方法
//
程序入口点
public static Program
{
public static int Main(string[] args)
{
//
建立猫
Cat cat = new Cat();
//
建立老鼠
Mouse mouse = new Mouse();
//
建立主人
Master master = new Master();
//
注册事件
cat.Calling += new EventHandler(mouse.Escape);
cat.Calling += new EventHandler(master.Wakened);
//
猫开始叫
cat.Call();
}
}
要点:
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(); } } |