姓名: 日期:
1. 填空: (1)面向对象的语言有____Inheritance_性、Encapsulation_性、_Polymorphsim 性。
(2)能用foreach遍历访问的对象需要实现 IEnumerator__接口或声明__GetEnumerator___方法的类型。
(3)列举ADO.net中的五个主要对
象_______________、_____________、_______________、_______________、_________________。
Response,Request,Server,Session,Application,Cookie,Cache
2. 不定项选择:
(1) 以下叙述正确的是: BC
A. 接口中可以有虚方法。 B. 一个类可以实现多个接口。
C. 接口不能被实例化。 D. 接口中可以包含已实现的方法。
(2) 从数据库读取记录,你可能用到的方法有:BCD
A. ExecuteNonQuery B. ExecuteScalar
C. Fill D. ExecuteReader
3. 简述 private、 protected、 public、 internal 修饰符的访问权限。
4. 写出一条Sql语句: 取出表A中第31到第40记录(SQLServer, 以自动增长的ID作为主键, 注意:ID可能不是连
续的。)
CREATE DATABASE Interview
GO
USE Interview
GO
CREATE TABLE Test(id int)
GO
Insert Test SELECT 1
UNION ALL SELECT 3
UNION ALL SELECT 5
UNION ALL SELECT 7
UNION ALL SELECT 9
GO
select * from tEST
GO
--METHOD1
SELECT IDENTITY(int,1,1) as idClone,* INTO #T FROM TEST
SELECT ID
from #t
where idClone between 3 and 4
DROP TABLE #T
GO
--METHOD2
SELECT TOP 2 * FROM TEST B
WHERE B.ID >
(SELECT MAX(ID) FROM (SELECT TOP 2 ID FROM TEST) A)
--METHOD3
SELECT TOP 2 * FROM TEST B
WHERE B.id not in
(SELECT TOP 2 ID FROM TEST)
5 .列举ASP.NET 页面之间传递值的几种方式。
<1>Request.QueryString<2>Session<3>Application<4>Cookie<5>Cache<6>Server.Transfer
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);
}
}
Display:
10
21
0
str
string being converted.
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);
}
}
2
5
1
6
9. 一列数的规则如下: 1、1、2、3、5、8、13、21、34......
求第30位数是多少, 用递归算法实现。(C#语言)
using System;
public class MainClass
{
public static void Main()
{
Console.WriteLine(Foo(30));
Console.Read();
}
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);
}
}
10. 程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言)
要求: 1.要有联动性,老鼠和主人的行为是被动的。
2.考虑可扩展性,猫的叫声可能引起其他联动效应。
using System.Collections;
using System.Collections.Generic;
using System;
public abstract class ISubject
{
List<IObserver> _list = new List<IObserver>();
public void AddObserver(IObserver observer)
{
_list.Add(observer);
}
public void RemoveObserver(IObserver observer)
{
_list.Remove(observer);
}
public virtual void OutCry()
{
if(_list!=null)
{
foreach(IObserver obs in _list)
{
obs.BeFrighted();
}
}
}
public void Appear()
{
OutCry();
}
}
public class Cat:ISubject
{}
public interface IObserver
{
void BeFrighted();
}
public class HouseMaster:IObserver
{
private string _name;
public HouseMaster(string name)
{
_name=name;
}
public void BeFrighted()
{
Console.WriteLine(_name+" is be frighted");
}
}
public class Mouse:IObserver
{
private string _name;
public Mouse(string name)
{
_name=name;
}
public void BeFrighted()
{
Console.WriteLine(_name+" is be frighted");
}
}