经典.NET面试题(基础)

1. 简述Web服务器端程序的用途。 
Web服务器端程序,提供了浏览器端和服务器端之间的会话功能。 

2. 简述CSS的用途。
   CSS是样式表。可以定义很多样式,这些样式用一个简短的字符串来表示,然后在html文件中就可以方
便的引用这些样式了。 

3. 在Visual Studio.Net中,一个完整的Asp.Net解决方案至少应包括那些项目? 
    没有严格的规定一定要包含哪些项目。只是现在比较流行的和合理的做法是分3层结构,数据访问层
,业务层,Web层。每个对应1个项目。当然还可以细分。

4. 简述全局变量和局部变量的区别。 
   全局变量和局部变量的差别:程序上讲是作用域不同,生存期不同,存储上来讲,存储的位置不同,
一个存放在静态存储区,另一个存放在动态存储区。 

5. 简述传值调用与传址调用的主要区别。 
    传值调用,实参把值传递给参数,在被调函数中形参的值得变化不会影响实参。传址调用,实参把值
的地址传给了形参,如果被调函数中形参所指的值发生了变化,实参所指的值夜将变化,因为他们指向的
是同一个地址。
 
6. 试述函数和过程的区别。 
函数和过程不是asp.net的内容吧?pascal中有这个概念,函数可有返回值,存过程没有(但是可以通过
参数达到这样的效果)。 

7. 对变量而言,遵循“先声明,后使用”的原则有什么好处。 
先声名,在编译调试的过程中可以及早的发现问题。众所周知,解决问题越早付出的代价越少。 

8. HtmlGenericControl控件与那些Html标记对应? 
HtmlGenericControl控件与那些Html标记对应?可以到msdn上察看。这就不累赘了。 

9. 控件LinkButton与Button的主要区别在哪里? 
  LinkButton和Button外观上不同,linkbutton上的文本显示为超链接的样子,用法和Button相同。 

10. 控件ImageButton与Image有哪些不同? 
ImageButton上显示的是图片,用法和Button也大同小异。
 
11. 简述ASP.NET网页的执行流程。 
客户端Request,服务器端Response。其中涉及到验证方式,公共语言编译成机器语言(如果是第一次运行
)等等

12. 简述Cookie的用途及其局限性。
、Cookie记录当前被验证通过的用户的一些信息。如果需要多用户会话,Cookie就不实现不了了,就要用
Session了。 
 
13. 在设计ASP.NET应用程序时,怎样获取客户端的IP地址? 
可以在客户端提取IP,也可以在服务器端提取。客户端用jscript或javascript,服务器端有相应的类解决。 

14. 在ASP.NET应用程序设计中,Server.MapPath()方法有什么实用价值?
Server.MapPath(),程序做出来以后,移植性好。 
 
15. 简述Response对象的主要用途。 
Response对象,页面跳转,动态添加客户端脚本,等等。 

16. 简述Request对象的主要用途。 
Request,获取URL参数,记录了客户端request的一些信息等等 

17. 试述数据源、DataAdapter与DataSet三者之间的关系。
数据源就是数据存储的地方;DataSet相当于一个小型的数据库,用来存放数据。DataAdapter是个适配器
,用来从数据源中提取需要的数据,可以为DataSet填充数据。 
 
18. 简述DataAdapter的用途。
DataAdapter是数据库与Command,Select,Update对象等之间的接口。 
 
19. 简述认证和授权的概念。
   包名:System.Security.Principal:
Identity:(识别)包装了已经验证过的用户名和认证的方式
 主要成员:Name, IsAuthenticated, AuthenticationType
Principal: 当前代码的security上下文。包含Identity和Roles. 用于授权
 主要成员:IsInRole, Identity

* // 一般用户可以有多个Indentity, 即多种身份来访问不同资源 --pending
* 每个AppDomain里面都有CallContext,CallContext里面包含Principal。线程在启动的时候也会带上

Pricncipal的ref。静态方法,仅对当前线程
* Thread.CurrentPrincipal / WindowsIdentity.GetCurrent()静态方法返回当前用户。

Permission: 权限。不是用户需要权限,是执行它的代码需要权限。
     Demand()要求调用此代码的代码有什么权限。Assert()断言
三种权限:
  1 代码权限: 基类为CodeAccessPermission .用来保护环境变量、文件、访问非托管代码。总表参见:
       ms-

help://MS.VSCC.2003/MS.MSDNQTR.2003APR.1033/cpguide/html/cpconcodeaccesspermissions.htm
  2 Identity权限:基类为CodeAccessPermission。对应于控制台中的信任集设定。基于发行者、强类型

、域、URL。总表:
   ms-help://MS.VSCC.2003/MS.MSDNQTR.2003APR.1033/cpguide/html/cpconidentitypermissions.htm
  3. PrincipalPermission(Role Based Permission)


Authorization 授权 判断用户是否有权操作,比如登录的用户有没有权限访问资源或者数据库
Authentication 认证 用户的Identity. 主要有:HTTP基础认证、证书、Kerberos、Passport、NTLM、

Forms-based、Digest

这两个东西最好从读音上区别,以前一直糊涂。一般应用先authenticate用户, 判断用户是否能链接到系

统。然后authorization, 判断对某个功能是否有权限。

authorization一般有两种:ACL/ROLES
ACL:Acess Control Lists. 判断用户是否在有权限的用户组内。缺点:不能定义动态条件。
Role based: 用户加入到某个role以后,自动获得了很多特定的权限。先判断请求者的Identity, 然后看

它是否在Role里面。类似windows用户和组的关系

1. 代码中的检查方式:new PrincipalPermission(name,role).Demand();
2. 利用Attribute的方式:[PrincipalPermissionAttribute(SecurityAction.Demand,Name="MyUser", 

Role="Administrator")]
3. 使用 Principal 对象中的属性和 IsInRole 方法执行显式安全性检查。
4. web.config里面authorization节中的users/roles(这个一般资料都没提到)
posted @ 2007-03-25 11:09  '.Elvis.'  阅读(689)  评论(0编辑  收藏  举报