.NET考试的一些题目

本文汇总了.NET课程考试中的典型题目,包括填空题、简答题等,涉及.NET框架的基本概念、设计模式、线程同步技术等内容,适用于.NET开发者及学生复习使用。
终于到连续考试的最后一天了,虽然我的考试昨天就结束了呃呵呵。把今天同学问的题目和以前见到的题目记些下来。
以前也在这边稍微记了一点,在[url=http://rednaxelafx.iteye.com/blog/133377]Fibonacci数列的一种经典递归实现[/url]。帖子里实现得太麻烦了,看看那帖下面的回复。

今天的考试题:(我没看到试卷实际是啥样的,只是听同学事后描述……大致复原如下)

一、填空题:
1、DOM节点中,[u]根节点[/u]没有父节点。
2、[u]JIT[/u]组件把MSIL编译成本地代码。
3、用户一般在[u]Init[/u]事件中处理程序中初始化页面中的控件。
[color=gray](注释:ASP.NET中页面从初始化到卸载事件顺序(及对页面控件调用)完整列表:
客户发出POST请求
->创建Page派生类,调用构造函数
->调用Page类的IHttpHandler.ProcessRequest方法
->激活Page类的Init事件
->调用Page类的CreateChildControls虚方法
->从POST变量和VIEWSTATE中还原服务器端控件状态
->激活Page类的Load事件->激活服务器端控件事件->激活Page类的PreRender事件
->调用Page类的Render虚方法->调用Page类的RenderChildren虚方法
->发送HTTP响应给客户端->激活Page类的Unload事件
->丢弃Page派生类的实例。)[/color]
4、实现磁盘目录服务的两个类是[u]Directory[/u]和[u]DirectoryInfo[/u]。
5、强名称的程序集放到[u]GAC[/u]中。
[color=gray](这题有点怪?是“可以部署到GAC中”吧?
或者说成“没有强名称的程序集不能放到GAC中”)[/color]
6、.NET Framework提供[u]XmlSerializer[/u]和[u]BinarySerializer[/u]两种序列化程序。
在.NET中所有可序列化的类都被标记为[u][Serializable][/u]。
[color=gray]([Serializable]也可以写为完整的[SerializableAttribute]。
根据MSDN的文档,手动实现ISerializable接口来序列化的类最好也标记上SerializableAttribute)[/color]
7、委托声明的关键字是[color=blue][u]delegate[/u][/color]。

二、简答题:
[b]1、什么是设计模式?请列举几个设计模式。[/b]
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。
GoF提出的经典的设计模式有:
·Behavioral patterns
Chain of responsibility
Command
Interpreter
Iterator
Mediator
Memento
Observer
State
Strategy
Template method
Visitor

·Creational patterns
Abstract factory
Builder
Factory method
Prototype
Singleton

·Structural patterns
Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy

[b]2、强名称包含的四个部分是什么?[/b]
程序集名称、语言(区域)、版本号、公钥。
[color=gray](还是原文写起来顺一点:
AssemblyName, Version, Culture, PublicKeyToken)[/color]

[b]3、写出.NET Framework支持的三类线程同步技术。[/b]
1) 同步上下文
·使用SynchronizationAttribute属性为ContextBoundObject类型对象提供简单、自动的线程同步。
2) 同步代码区域
·以MethodImplOptions.Synchronized枚举参数的MethodImplAttribute属性修饰需要同步的实例和静态方法。
·使用Monitor和SyncLock。
lock (typeof(Counter)) {
//被保护的代码
}

[color=gray](注释:其实不要用type object来同步的好……原因见CLR via C#一书)[/color]
3) 手动同步
·使用Interlocked类的方法来同步对多个线程共享变量的访问。

[b]4、请用代码写出用DataSet读取数据的一般操作步骤。[/b]
SqlDataAdapter adapter =
new SqlDataAdapter("select * from sometable", conn);
DataSet dataset = new DataSet();
adapter.Fill(dataset, "SomeTable");
// iterate the table with foreach loop
foreach (DataRow row in dataset.Tables["SomeTable"].Rows) {
// read the data with row["SomeColumn"].ToString());
}
// or create a DataView of this DataSet

[url=http://bestimmung.iblog.com/post/222303/420663][.NET] .NET程序设计 第四章课后复习题[/url]

[b]5、请解释下进程和线程的异同。[/b]
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。
线程是操作系统分配处理器时间的基本单位,支持多个活动同时进行。
一个进程中至少有一个线程,并且可以有多个线程。

三、
有下面的XML文件,如果对应一个数据库的话,数据库表应该如何设计?
[code]<?xml version="1.0" encoding="UTF-8"?>
<planets>
<planet ID="1">
<name>Mercury</name>
</planet>
<planet ID="2">
<name>Venus</name>
</planet>
</planets>[/code]
数据库表planets应设计为:
[code]id : int, primary key
name : varchar[/code]
于是表的内容为:
[code]id name
1 Mercury
2 Venus[/code]

四、程序填空:
正确设置InnerText属性来假如元素,输出以下的XML到控制台:
[code]<book>
<title></title>
<price></price>
</book>[/code]
代码:
using System;
using System.Xml;

sealed class TestXml {
static void Main(string[] args) {
XmlDocument doc = new XmlDocument();
doc.LoadXml("<book>"
+ "<title></title>"
+ "</book>");
XmlElement root = doc.DocumentElement;
XmlNode newElem = doc.CreateNode("price", string.Empty, string.Empty);
newElem.InnerText = "19.95";
root.AppendChild(newElem);
doc.Save(Console.Out);
}
}



五、编程题:
写一个程序,在Main()方法里启动一个新线程,调用MyClass里的public static void MyMethod方法。
using System;
using System.Threading;
/*
class MyClass {
public static void MyMethod() {
// ...
}
}
*/
sealed class Program {
static void Main(string[] args) {
Thread t = new Thread(new ThreadStart(MyClass.MyMethod));
t.Start();
}
}


===========================================================================

以前的考试题:(只记得填空了……总之考.NET的同学多仔细复习下课件,别漏掉任何一页有字的幻灯片)

一、填空题:
1、.NET框架类库的根命名空间是[u]System[/u],它包含所有基类型对象,所有其它类型都从基类型集成而来。
2、使用继承的主要目的是代码重用,同时可以保证方法的通用性。.NET Framework中集成的特点是单根继承。
3、程序集的[u]清单[/u]标识它的输入和输出类型以及它的版本信息。
[color=gray](注释:可恶,当年我这里写metadata被批改的师兄打了个叉,明明是……)[/color]
4、仅具有[u]强名称[/u]的程序集才可以进行版本控制。
[color=gray](注释:这“版本控制”好模糊……)[/color]
5、实现自定义序列化时,类必须继承自[u]ISerializable[/u]接口,实现接口的[u]GetObjectData()[/u]方法,并提供带[u]SerializationInfo[/u]和[u]StreamingContext[/u]类型参数的构造函数。
[color=gray](注释:原来题目里写的就是“继承自xxx接口”……诶诶,老师下次改改的好)[/color]
6、使用[color=blue][u]delegate[/u][/color]关键字来声明一个委托类型,使用[u]Thread.Start()[/u]方法启动一个线程。
7、在启动DataReader时,为了确保发生异常时数据库连接能够被关闭,要使用[u]try-catch-finally语句,在finally里调用Connection的Close()方法[/u]。
8、如果存储过程不返回记录集,就称为行为存储过程。可以调用[u]Command(SqlCommand)[/u]类对象的ExecuteNonQuery()方法来执行行为存储过程。
9、.NET目前提供的信道及所使用的协议是[u]HTTP信道[/u]和[u]SOAP协议[/u]。
[color=gray](注释:.NET 提供了HTTP和TCP信道
HTTP 信道默认使用SOAP 协议来传输XML 消息
TCP 信道默认使用TCP 协议来传输二进制消息比SOAP快,但不具备开放性)[/color]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值