您的位置:首页 > 其它

就业模拟试题_Net(答案)

2010-12-19 17:44 197 查看
一、 基础知识部分(每题3分,共60分)

委托是什么,事件跟委托是不是一回事?

答案

委托是一种传递消息的机制,可以将与委托签名相同的方法作为参数传递

签名相同包括:方法的返回值类型,参数个数和类型

事件是一种特殊的委托

net中读写数据库需要用到那些类?他们的作用?

答案

SqlConnection 连接数据库

SqlCommand 执行Sql语句或存储过程

SqlDataReader 实现对数据表记录向前只读,一次读取一条记录

SqlDataAapter 执行Sql语句或存储过程

SqlParameter 向Sql语句或存储过程传递参数

DataSet和DataReader的区别是什么?

答案

DataSet提供一个内存中数据的关系表示形式,相当于内存中的数据库。DataSet中包含表集合和表和表之间的关系。

DataReader提供一个来自数据库的快速、向前、只读数据流。

DataSet 和DataReader都是ADO.NET提供以下两个操作关系数据库的主要对象。

DataSet经常会利用DataAdapter一次性从数据库里提取大量数据存放在其中,实现与用户数据源进行双向交互。当使用DataSet时,也可以利用DataView对DataSet中的数据应用排序和筛选。也可以从DataSet继承,创建强类型DataSet,用于将表、行和列作为强类型对象属性公开。
当设计应用程序时,要考虑应用程序所需功能的等级,以确定使用DataSet或者是DataReader。

能用foreach遍历访问的对象需要实现哪个接口或声明哪个方法的类型?

答案

IEnumerable 、 GetEnumerator

简述 private、 protected、 public、 internal 修饰符的访问权限

答案

Public 公有,其他类都可以访问

Protected 保护,只有本类和子类可以访问

Private 私有,只有本类可以使用

Internal 内部,本程序集中的类可以使用。

列举ASP.NET 页面之间传递值的几种方式

答案

1.使用Url重写QueryString, 如....?id=1; response. Redirect()....
2.使用Session变量

3.使用Cookie

4.使用Server.Transfer

5.使用Button控件的PostBackUrl属性

CTS、CLS、CLR分别作何解释?

答案

CTS:通用语言系统。CLS:通用语言规范。CLR:公共语言运行库。

什么是装箱和拆箱?

答案

从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱。

分析以下代码,完成填空
string strTmp = "abcdefg某某某";
int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;
int j= strTmp.Length;
以上代码执行完后,i=? j=?

答案

i=13(i输出的是字节数,一个汉字占两个字节),j=10(输出字符数,不分中英文)

GC是什么? 如何请求GC?

答案

GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()

接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?

答案

接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,前提是实体类必须有明确的构造函数。

什么是自定义控件?动态如何传数据?

答案

1) 概述:自定义控件也是asp.net的一种服务器控件,体现格式为*.dll

2) 适用场合:当.net平台给我们提供的web服务器控件不够用的时候,就需要我们自己开发一个自定义控件,或者又称为第三方控件;可以把该种控件添加到工具箱中,然后就像使用Web服务器控件一样。例如:分页控件

3) 在控件内部公开属性,通过给属性赋值进行数据的交互; 控件最终体现在界面上的样式是靠重写父类的Render方法来实现的

什么是Code-Behind技术?

答案

字面意思就是:代码在后面,也就是代码隐藏的意思。

主要是通过aspx页面指向对应的CS文件,可以实现显示逻辑和处理逻辑的分离,这样做有别于以前的asp页面和代码全混在一起不容易后期的修改和维护,使用code behind更容易维护,美工和程序员可以很好的分工

说明.net中的错误处理机制

答案

异常处理有两种方法:一种是使用Try Catch处理,一种使用throw扔出

列举一种适合asp.net应用开发的分层结构,介绍每层的作用

答案

1)表现层 显示数据和接受输入

2)业务逻辑层 用于进行业务数据的处理

3)数据访问层 用于访问数据

4)实体层 用于封装数据传递的对象

net的身份验证方式有哪些?分别是什么原理?

答案

Windows身份验证,基于Windows系统的用户的认证

Forms身份验证,基于Form表单的认证

请详述在dotnet中类(class)与结构(struct)的异同?

答案

Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的.Class可以被继承,struct不可以被继承

常用的调用WebService的方法有哪些?

答案

手动建立Web服务代理,

利用开发环境建立Web服务代理

在net中读取XML文件要用到那些包,类,方法?

答案

System.Xml命名空间包含了一些最重要的XML类,其中最主要的类是和XML文档的读写操作相关的类。这些类中包括4个与读相关的类以及2个与写相关的类。它们分别是:XmlReader、XmlTextReader、XmlValidatingReader、XmlNodeReader、XmlWriter以及 XmlTextWriter。

XmlReader类是一个虚基类,它包含了读XML文档的方法和属性。该类中的Read方法是一个基本的读XML文档的方法,它以流形式读取XML文档中的节点(Node)。另外,该类还提供了ReadString、ReadInnerXml、ReadOuterXml和ReadStartElement等更高级的读方法。除了提供读XML文档的方法外,XmlReader类还为程序员提供了MoveToAttribute、MoveToFirstAttribute、MoveToContent、MoveToFirstContent、MoveToElement以及 MoveToNextAttribute等具有导航功能的方法。

XmlTextReader、XmlNodeReader以及XmlValidatingReader等类是从XmlReader类继承过来的子类。根据它们的名称,我们可以知道其作用分别是读取文本内容、读取节点和读取XML模式(Schemas)。

XmlWriter类为程序员提供了许多写XML文档的方法,它是XmlTextWriter类的基类,我在后面的实例中会给出相关的运用方法。

XmlNode类是一个非常重要的类,它代表了XML文档中的某个节点。该节点可以是XML文档的根节点,这样它就代表整个XML文档了。它是许多很有用的类的基类,这些类包括插入节点的类、删除节点的类、替换节点的类以及在XML文档中完成导航功能的类。同时,XmlNode类还为程序员提供了获取双亲节点、子节点、最后一个子节点、节点名称以及节点类型等的属性。它的三个最主要的子类包括:XmlDocument、XmlDataDocument以及XmlDocumentFragment。XmlDocument类代表了一个XML文档,它提供了载入和保存XML文档的方法和属性。这些方法包括了Load、LoadXml和Save等。同时,它还提供了添加特性(Attributes)、说明(Comments)、空间(Spaces)、元素(Elements)和新节点(New Nodes)等XML项的功能。XmlDocumentFragment类代表了一部分XML文档,它能被用来添加到其他的XML文档中。XmlDataDocument类可以让程序员更好地完成和ADO.NET中的数据集对象之间的互操作。

什么是强类型系统?

答案

RTTI:类型识别系统。

二、 程序题(前6题每题5分,第7题10分。共40分)

1. 公司要求开发一个继承System.Windows.Forms.ListView类的组件,要求达到以下的特殊功能:点击ListView各列列头时,能按照点击列的每行值进行重排视图中的所有行 (排序的方式如DataGrid相似)。根据您的知识,请简要谈一下您的思路。

答案

根据点击的列头,包该列的ID取出,按照该ID排序后,在给绑定到ListView中。

2. 根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写:
namespaceTest
{
public delegate void OnDBOperate();
public class UserControlBase : System.Windows.Forms.UserControl
{
public event OnDBOperate OnNew;
privatevoidtoolBar_ButtonClick(objectsender,

System.Windows.Forms.ToolBarButtonClickEventArgs e)
{
if(e.Button.Equals(BtnNew))
{
//请在以下补齐代码用来调用OnDBOperate委托签名的OnNew事件。

}

}

}

}

答案

if( OnNew != null )
OnNew( this, e );

3. 仔细阅读下列代码
using System;
class A
{
public A()
{
PrintFields();
}

//类中定义了一个虚方法
public virtual void PrintFields(){}
}

//类B继承自类A
class B:A
{
int x=1;
int y;
public B()
{
y=-1;
}
public override void PrintFields()
{
Console.WriteLine("x={0},y={1}",x,y);
}

}
当使用new B()创建B的实例时,产生什么输出?

答案

X=1,Y=0;x= 1 y = -1

4. 写出程序的输出结果

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);
}
}

答案

(考查值引用和对象引用)
10
21
0
str
string being converted.

5. 用socket实现服务器端向客户端传递几个字符,在客户端输出

答案

Using System.Net.Sockets;

//启动监听

TcpListener objLsn = new TcpListener(1000);

objLsn.Start();

Socket objSocket = objLsn.AcceptSocket();

//发送

String msg = “测试发送”;

Byte[] arr = System.Text.Encoding.Default.GetBytes(msg);

objSocket.Send(arr);

参考:WinForm第八章Socket编程

6. 写出程序的输出结果

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();
 }
}

答案

A
B
A.Fun()
评分标准: 写出A.B 得5分,写出A.Fun()得5分,满分10分。
(考查在继承类中构造函数, 以及new 方法, )

7. 程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言)

要求: 1.要有联动性,老鼠和主人的行为是被动的。

2.考虑可扩展性,猫的叫声可能引起其他联动效应。

答案

要点: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();
}

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: