.NET笔试题(@20081022)

来源:互联网 发布:爱知日语培训班价格 编辑:程序博客网 时间:2024/05/16 16:04

第一次应聘程序员的笔试题目,只是能想起来的一部分,给大家参考一下。

我基础还是太薄弱了,很多都没答上来。

在网络上搜索了一些参考答案,没回答的有待完善。

------------------------------------------

1.URL中文编码和解码(HTML以及JS两种方式)
2.ASP.NET页面重定向的几种方法?以及区别。

3.聚集索引和非聚集索引的区别,各自在什么场合下使用?

4.什么是程序集?什么是命名空间?

5.从一个页面转向另一个页面的请求方式有两种,Post和Get。说出两者的区别。

6.如果有一个myClass类,怎么写成单件模式,只能实例化一个对象。

7.check 11位手机号码,考虑用正则表达式。

8.类有哪些修饰符,各自什么含义?

9.如何实现上传文件,如图片?服务器端代码怎么写?

10.分别用HTML和JavaScript实现:点某个button(id:btnTest),div(id:divTest)隐藏?

11.什么叫“可序列化”?DataSet 和DataTable哪个是可序列化的?

------------------------------------------

以下答案来源网络,仅供参考,欢迎指正。

 

1.URL中文编码和解码(HTML以及JS两种方式)

  Server.UrlEncode()  
  Server.UrlDecode() 
 

2.ASP.NET页面重定向的几种方法?以及区别。

 

主要有三种方式:

  Response.Redirect("a.aspx")
  Server.Transfer("a.aspx")
  Server.Execute(a.aspx)

主要区别:
 
首先Response.Redirect("a.aspx"),在保存此页的数据后,服务器将页面直接转向到a.aspx。此方法有个

缺陷,就是转向后会丢失此页所有的Request的参数,并且此方法是需要Client发起一个请求。

在IIS 5.0中引入了一个新的函数Server.Transfer("a.aspx"),它很好地解决了转向后丢失此页Request参

数的问题。并且由于它是从server端直接向下一页发起请求,所以不需要client再次发送请求。它与

Response.Redirect的区别在于:Response.Redirect可以转向任何一个页面,而Server.Transfer只能转向

同目录或子目录的网页;Response.Redirect转向时地址会变成跳转后的页面地址,而Server.Transfer转

向时原地址不变,并且传递的参数值也被隐藏。

另一个方法是Server.Execute(a.aspx),它和Server.Transfer功能类似。主要的区别在于,

server.execute在转向a.aspx执行完成后,还会返回原来的页面继续处理。

 

3.聚集索引和非聚集索引的区别,各自在什么场合下使用?


聚集索引和非聚集索引的根本区别是表记录的排列顺序和与索引的排列顺序是否一致,聚集索引表记录的

排列顺序与索引的排列顺序一致,优点是查询速度快,因为一旦具有第一个索引值的纪录被找到,具有连

续索引值的记录也一定物理的紧跟其后。
聚集索引的缺点是对表进行修改速度较慢,这是为了保持表中的记录的物理顺序与索引的顺序一致,而把

记录插入到数据页的相应位置,必须在数据页中进行数据重排,降低了执行速度。建议使用聚集索引的场

合为:
  a.此列包含有限数目的不同值;
  b.查询的结果返回一个区间的值;
  c.查询的结果返回某值相同的大量结果集。

  非聚集索引指定了表中记录的逻辑顺序,但记录的物理顺序和索引的顺序不一致,聚集索引和非聚集

索引都采用了B+树的结构,但非聚集索引的叶子层并不与实际的数据页相重叠,而采用叶子层包含一个指

向表中的记录在数据页中的指针的方式。非聚集索引比聚集索引层次多,添加记录不会引起数据顺序的重

组。建议使用非聚集索引的场合为:
  a.此列包含了大量数目不同的值;
  b.查询的结束返回的是少量的结果集;
  c.order by 子句中使用了该列。


--不用索引查询
Select * FROM IndexTestTable WHIT(INDEX(0))
Where Status='B'

--创建聚集索引
Create CLUSTERED INDEX icIndexTestTable
ON IndexTestTable(Status)
GO

--使用索引查询
Select * FROM IndexTestTable WITH(INDEX(icIndexTestTable))
Where Status='B'

 

4.什么是程序集?什么是命名空间?

 

程序集是 .NET Framework 应用程序的主要构造块。所有托管类型和资源都包含在某个程序集内,并被标

记为只能在该程序集的内部访问,或者被标记为可以从其他程序集中的代码访问。程序集在安全方面也起

着重要作用。代码访问安全系统使用程序集信息来确定为程序集中的代码授予的权限集。

就是一个程序集合,用一个DLL封装起来。类似于文件夹,包含了若干文件。


例如我们要用A类,则需要把包含A类的程序集(即*.DLL)引用到该工程中(物理);而在程序中要声明A类

的命名空间(逻辑)。

  命名空间(namespace)    
  将相关的类型进行分组的逻辑命名方案。.NET   Framework   使用分层命名方案,将类型分为相关功能

的逻辑类别,如   ASP.NET   技术或远程处理功能。设计工具可以使用命名空间,使开发人员在他们的代

码中浏览和引用类型更为方便。单个程序集可以包含其分层名称具有不同命名空间根的类型,而且逻辑命

名空间根可以跨多个程序集。在.NET   Framework   中,命名空间在逻辑设计时提供命名方便,而程序集

在运行时确定类型的命名范围。 

 

5.从一个页面转向另一个页面的请求方式有两种,Post和Get。说出两者的区别。


如果从原理上来探究他们的区别,涉及到Http传输协议的细节,这样深究下去,就成华为人干的事了,有

空可以请教一下华为高人,我一个做企业软件的实在没那么多时间也没必要去研究那些东西,所以就看一

下表象吧。

所有的人都知道如下区别:
1.Post传输数据时,不需要在URL中显示出来,而Get方法要在URL中显示。
2.Post传输的数据量大,可以达到2M,而Get方法由于受到URL长度的限制,只能传递大约1024字节.
3.Post顾名思义,就是为了将数据传送到服务器段,Get就是为了从服务器段取得数据.而Get之所以也能传送

数据,只是用来设计告诉服务器,你到底需要什么样的数据.Post的信息作为http请求的内容,而Get是在

Http头部传输的。

 

6.如果有一个myClass类,怎么写成单件模式,只能实例化一个对象。

 

7.验证文本框输入的手机号码(要求11位,第一位数字为1),考虑用正则表达式。

 

8.类有哪些修饰符,各自什么含义?

 

private : 私有成员, 在类的内部才可以访问。
protected : 保护成员,该类内部和继承类中可以访问。
public : 公共成员,完全公开,没有访问限制。
internal: 在同一命名空间内可以访问。

 

9.如何实现上传文件,如图片?服务器端代码怎么写?

 

10.分别用HTML和JavaScript实现:点某个button(id:btnTest),div(id:divTest)隐藏?

 

11.值类型和引用类型的区别?

C# 支持两种类型:“值类型引用类型
值类型(如
charintfloat)、枚举类型和结构类型。
引用类型包括类 (Class) 类型、接口类型、委托类型和数组类型。

值类型与引用类型的区别在于值类型的变量直接包含其数据而引用类型的变量则存储对象引用。对于引用类型,两个变量可能引用同一个对象,因此对一个变量的操作可能影响另一个变量所引用的对象。对于值类型,每个变量都有自己的数据副本,对一个变量的操作不可能影响另一个变量。

示例

using System;

class Class1

{

     public int Value = 0;

}

class Test

{

     static void Main() {

         int val1 = 0;

         int val2 = val1;

         val2 = 123;

         Class1 ref1 = new Class1();

         Class1 ref2 = ref1;

         ref2.Value = 123;

         Console.WriteLine("Values: {0}, {1}", val1, val2);

         Console.WriteLine("Refs: {0}, {1}", ref1.Value, ref2.Value);

     }

}

显示了这种区别。运行该程序可见下列输出

Values: 0, 123

Refs: 123, 123

 


 

12.什么叫“可序列化”?DataSet 和DataTable哪个是可序列化的?

 

将对象的状态信息转换为可以存储或传输的窗体的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。
序列化使其他代码可以查看或修改那些不序列化便无法访问的对象实例数据。确切地说,代码执行序列化需要特殊的权限:即指定了 SerializationFormatter 标志的 SecurityPermission。在默认策略下,通过 Internet 下载的代码或 Intranet 代码不会授予该权限;只有本地计算机上的代码才被授予该权限。

 

DataSet是可序列化的。 

 

 

 

 

 


原创粉丝点击