.NET试题总结一
1:关于ASP.NET中的代码隐藏文件的描述正确的是: C
A.Web窗体页的程序的逻辑由代码组成,这些代码的创建用于与窗体交互。编程逻辑唯一与用户界面不同的文件中。该文件称作为“代码隐藏”文件,如果用C#创建,该文件
B.项目中所有Web窗体页的代码隐藏文件都被编译成.EXE文件
C.项目中所有的Web窗体页的代码隐藏文件都被编译成项目动态链接库(.dll)文件
D.以上都不正确
2:In Object Oriented Programming, how would you describe encapsulation?
A.The conversion of one type of object to another.
B.The runtime resolution of method calls.
C.The exposition of data.
D.The separation of interface and implementation.
3:如下程序的运行结果是:
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.A B A.Fun()
B.A B B.Fun()
C.B A A.Fun()
D.B A B.Fun()
4:What compiler switch creates an xml file from the xml comments in the files in an assembly? B
A./text
B./doc
C./xml
D./help
5:
下述程序代码中有语法错误的行是( A )。
int i,ia[10],ib[10]; /*第一行*/
for (i=0;i<=9;i++) /*第2行*/
ia[i]=0; /*第3行*/
ib=ia; /*第4行*/
A.第1行
B.第2行
C.第3行
D.第4行
6:以下描述错误的是: A
A.在C++中支持抽象类而在C#中不支持抽象类。
B.C++中可在头文件中声明类的成员而在CPP文件中定义类的成员,在C#中没有头文件并且在同一处声明和定义类的成员。
C.在C#中可使用 new 修饰符显式隐藏从基类继承的成员。
D.在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。
7:声明一个委托public delegate int myCallBack(int x); 则用该委托产生的回调方法的原型应该是 B
A.void myCallBack(int x)
B.int receive(int num)
C.string receive(int x)
D.不确定的
8:以下的C程序代码片段运行后C和d的值分别是多少 B
Int a =1,b =2;
Int c,d;
c =(a&b)&&a;
d =(a&&b)&a;
A.0,0
B.0,1
C.1,0
D.1,1
9:如果设treeView1=new TreeView(),TreeNode node=new TreeNode("根结点" ),则treeView1.Nodes.Add(node)返回的是一个 ( B )类型的值。
A.TreeNode
B.int
C.string
D.TreeView
10:假定a和b为int型变量,则执行下述语句组后,b的值为
a=1;
b=10;
do
{
b-=a;
a++;
} while (b--<0);
A.9
B.-2
C.-1
D.8
11:public static void Main(string[] args)
{
int i = 2000;
object o = i;
i = 2001;
int j =(int) o;
Console.WriteLine("i={0},o={1}, j={2}",i,o,j);
}
A.i=2001,o=2000,j=2000
B.i=2001,o=2001,,j=2001
C.i=2000,o=2001,,j=2000
D.i=2001,o=2000,j=2001
12:在下述选项时,没有构成死循环的程序是
A.int i=100 while (1) { i=i%100+1; if (i>100) break; }
B.for (;;);
C.int k=1000; do { ++k; }while(k>=10000);
D.int s=36; while (s);--s;
13:在软件生命周期中,下列哪个说法是不准确的?
A.软件生命周期分为计划、开发和运行三个阶段
B.在计划阶段要进行问题焉醛和需求分析
C.在开发后期要进行编写代码和软件测试
D.在运行阶段主要是进行软件维护
14:软件生命周期的瀑布模型把软件项目分为3个阶段、8个子阶段,以下哪一个是正常的开发顺序?
A.计划阶段、开发阶段、运行阶段
B.设计阶段、开发阶段、编码阶段
C.设计阶段、编码阶段、维护阶段
D.计划阶段、编码阶段、测试阶段
15:abstract class BaseClass
{
public virtual void MethodA()
{
Console.WriteLine("BaseClass");
}
public virtual void MethodB()
{
}
}
class Class1: BaseClass
{
public void MethodA()
{
Console.WriteLine("Class1");
}
public override void MethodB()
{
}
}
class Class2: Class1
{
new public void MethodB()
{
}
}
class MainClass
{
public static void Main(string[] args)
{
Class2 o = new Class2();
o.MethodA();
}
}
请问,此程序输出结果是:
A.BaseClass
B.BassClass Class1
C.Class1
D.Class1 BassClass
16:int[][] myArray3=new int[3][]{new int[3]{5,6,2},new int[5]{6,9,7,8,3},new int[2]{3,2}}; myArray3[2][2]的值是: D
A.9
B.2
C.6
D.越界
简答题
17:什么是Application Pool?
应用程序池是微软的一个全新概念:应用程序池是将一个或多个应用程序链接到一个或多个工作进程集合的配置。因为应用程序池中的应用程序与其他应用程序被工作进程边界分隔,所以某个应用程序池中的应用程序不会受到其他应用程序池中应用程序所产生的问题的影响。
18:列举ASP.NET 页面之间传递值的几种方式。
(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.user.identity
19:什么是PostBack?
20:说出ASP.NET 1.1中的3种Session State提供程序以及它们的优缺点?
ASP.NET支持3种session state的存储方式.
[1] in-process 和asp的session state兼容,Session Value被存放在ASP.net 的工作进程的内存中.
ASP.NET的工作进程为: aspnet_wp.exe或w3wp.exe(win 2003)
web.config的写法
[2] state server
session 会被存在state server上一个名为aspnet_state.exe的service的内存中,这个service是一个独立的进程,
可以运行在和IIS不同的机器上, 防止工作进程崩溃后session丢失.
首先要启动 service : net start aspstate
再在web.config中设定mode,server, port
cookieless=”false”
timeout=”20″
server=”127.0.0.1″
port=”42424″ />
[3] sql server
session会被存在sql server中,用于支持server farm
首先要安装相应的数据库,sql脚本存在于Microsoft.NET\Framework\[version]\
osql -S [server name] -U [user] -P [password]
或执行
Microsoft.NET\Framework\[version]\\aspnet_regsql -S .\sql2k5 -E -ssadd -sstype p
再在web.config中设定mode,server, port
cookieless=”false”
timeout=”20″
sqlconnectionstring=”data source=MySqlServer; user id=<…>; password=<…>”/>
21:当你在ASP.NET中运行一个组件时,它在Windows XP, Windows 2000, Windows 2003上分别跑在哪个进程里面?
XP : aspnet_Wp.exe
Windows 2000 : aspnet_Wp.exe
Windows 2003 : w3wp.exe
22:什么是ViewState? 它是否被编码过? 是否被加密过?谁会使用ViewState?
默认情况下__VIEWSTATE中存储的值仅仅仅进行了Base64编码,并没有进行加密,如果ViewState中有一些保密信息需要增加它的安全性,这样我们可以对ViewState进行加密。我们可以设置ViewStateEncryptionMode的值来决定是否加密,其值是“Auto”,“Always”,“Never”,默认值是“Auto”。“Always”表示进行加密,“Never”表示不进行加密,“Auto”时如果调用了RegisterRequiresViewStateEncryption方法后则进行加密。
23:.NET CLR中一代的垃圾收集器是如何管理对象的生命周期的?什么叫非确定性终结?
通过对象的引用计数控制。也就是记录了还有多少个变量在使用这个对象。当计数为0时,就代表对象没有用了,就进入回收条件。
垃圾回收器在系统空闲或内存紧缺以及代码中显示调用回收时自动决定何时启动回收,所以没法确定终结一个对象的具体时间。
24:为什么不提倡catch(Exception)?