(整理).net面试之葵花宝典

(整理).net面试之葵花宝典

 

1. CLR CTS CLS 分别是什么意思?

共公语言运行库 , 通用类型系统 , 公共语言规范

 

2. 什么是基元类型?

      由编译器直接支持的数据类型称为基元类型 .

 

3 、简要谈一下您对微软 .NET   构架下 remoting webservice 两项技术的理解以及实际中的应用。

       remoting .net 中用来跨越 machine,  process, appdomain  进行方法调用的技术 , 对于三成结构的程序,就可以使用 remoting 技术来构建.它是分布应用的基础技术 . 相当于以前的 DCOM Web Service 是一种构建应用程序的普通模型,并能在所有支持 internet 网通讯的操作系统上实施。 Web   Service 令基于组件的开发和 web 的结合达到最佳,基于组件的对象模型

 

4 . 如何把一个 array 复制到 arrayList

foreach(object o in array )arrayList.Add(o);

 

5.   WEB 控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回。

      web 控件发生事件时,客户端采用提交的形式将数据交回服务端,服务端先调用 Page_Load 事件 , 然后根据传回的状态信息自动调用服务端事件自动传回是当我们在点击客户端控件时,采用提交表单的形式将数据直接传回到务端只有通过自动传回才能实现服务端事件的机制,如果没有自动回传机制就只能调用客户端事件,而不能调用服务端事件

 

6   WEB 控件及 HTML 服务端控件能否调用客户端方法?如果能,请解释如何调用?

可以调用

例如 :<asp:TextBox id="TextBox1" οnclick="clientfunction();" runat="server">

     </asp:TextBox>

<INPUT id="Button2" value="Button" name="Button2" runat="server" οnclick="clientfunction();">

 

7   请解释 ASP.NET 中的 web 页面与其隐藏类之间的关系?

      一个 ASP.NET 页面一般都对应一个隐藏类 , 一般都在 ASP.NET 页面的声明中指定了隐藏类例如一个页面 Tst1.aspx 的页面声明如下

<%@ Page language="c#" Codebehind="Tst1.aspx.cs" AutoEventWireup="false" Inherits="T1.Tst1" %>

Codebehind="Tst1.aspx.cs" 表明经编译此页面时使用哪一个代码文件

Inherits="T1.Tst1" 表用运行时使用哪一个隐藏类

 

8   什么是 viewstate ,能否禁用?是否所有控件都可以禁用 ?

     Viewstate 是保存状态的一种机制,用来存储页面范围内的数据,以保证用户在离开页面之前数据的持续性,实现上来说, ViewState 被保存在页面内的一个隐藏控件内,并且提交到服务器后被提取后使用, EnableViewState 属性设置为 false 即可禁用 :

 

9   当发现不能读取页面上的输入的数据时很有可能是什么原因造成的?怎么解决

     很有可能是在 Page_Load 中数据处理时没有进行 Page IsPostBack 属性判断

 

10   请解释什么是上下文对象,在什么情况下要使用上下文对象

     上下文对象是指 HttpContext 类的 Current 属性,当我们在一个普通类中要访问内置对象         (Response,Request,Session,Server,Appliction ) 时就要以使用此对象

 

11   请解释转发与跳转的区别?

     转发就是服务端的跳转 A 页面提交数据到 B 页面 ,B 页面进行处理然后从服务端跳转到其它页面

跳转就是指客户端的跳转 ;

*         超链接跳转:通过地址栏传递字符串,丢失前面的请求,无法动态改变请求的地址; 地址栏改变。

        HyperLink1.NavigateUrl=“a.aspx?name="+TextBox1.Text;

*         浏览器重定向:通过地址栏传递字符串;丢失前面的请求;服务器得到的将是新的请求;地址栏改变;两次往返;只能传string,255个字符,Response.Redirect ( a.aspx?name= +a);

*         服务器转发:将新页面的输出覆盖到原页面上;不会丢失原始请求;地址栏没有变。

     Server.Transfer("a.aspx");

*         服务器执行:将新页面的输出附加到原页面上;不会丢失原始请求 ;地址栏没有变。

     Server.Execute("a.aspx");

 

12. 请简述一下用 Socket 进行同步通讯编程的详细步骤

   1 、在应用程序和远程设备中使用协议和网络地址初始化套接字

   2 、在应用程序中通过指定端口和地址建立监听

   3 、远程设备发出连接请求

   4 、应用程序接受连接产生通信 scoket

   5 、应用程序和远程设备开始通讯(在通讯中应用程序将挂起直到通讯结束)

   6 、通讯结束,关闭应用程序和远程设备的 Socket 回收资源

 

13   请解释 web.config 文件中的重要节点

      appSettings 包含自定义应用程序设置。

      system.web 系统配置

      compilation 动态调试编译设置

      customErrors 自定义错误信息设置

      authentication 身份验证 , 此节设置应用程序的身份验证策略。

      authorization 授权 , 此节设置应用程序的授权策略 .

 

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

1. 使用 QueryString, ....?id=1; response. Redirect()....

2. 使用 Session 变量

3. 使用 Server.Transfer

 

15. 请说明在 .net 中常用的几种页面间传递参数的方法,并说出他们的优缺点。

session(viewstate) 会话状态,简单,但易丢失

application  应用程序状态 全局

cookie 简单,但可能不支持,可能被伪造

input ttype="hidden" 简单,可能被伪造 :

url 参数简单,显示于地址栏,长度有限 :      数据库稳定,安全,但性能相对弱 :

16 override 与重载的区别

Override 用来重写父类的方法,重载使用相同名的方法或操作符拥有不同类型的参数

 

17 .net 的错误处理机制是什么

try{ 可能要出错的代码 }

catch{ 扑捉到错误后的处理 }

finally{ 不论代码是否出错都要执行 }

 

18 C #中接口和类的异同

    接口是负责功能的定义,项目中通过接口来规范类,操作类以及抽象类的概念! 而类是负责功能的具体实现! 在类中也有抽象类的定义,抽象类与接口的区别在于:

抽象类是一个不完全的类,类里面有抽象的方法,属性,也可以有具体的方法和属性,需要进一步的专业化。 但接口是一个行为的规范,里面的所有东西都是抽象的! 一个类只可以继承一个基类也就是父类,但可以实现多个接口

 

19 DataReader DataSet 的异同

     DataReader DataSet 最大的区别在于 ,DataReader 使用时始终占用 SqlConnection, 在线操作数据库 .. 任何对 SqlConnection 的操作都会引发 DataReader 的异常 .. 因为 DataReader 每次只在内存中加载一条数据 , 所以占用的内存是很小的 .. 因为 DataReader 的特殊性和高性能 . 所以 DataReader 是只进的 .. 你读了第一条后就不能再去读取第一条了 ..

DataSet 则是将数据一次性加载在内存中 . 抛弃数据库连接 .. 读取完毕即放弃数据库连接 .. 因为 DataSet 将数据全部加载在内存中 . 所以比较消耗内存 ... 但是确比 DataReader 要灵活 .. 可以动态的添加行 , , 数据 . 对数据库进行回传更新操作 ;

 

20. c# using new 这两个关键字有什么意义,请写出你所知道的意义?

Using 引入一个名子空间,他实现了 IDisposable 的类型对象调用 Dipose 方法, using 语句能够保证使用的对象的 Dispose 方法在 using 语句块结束时调用,无论是否有异常被抛出, C# 编译器在编译时自动为 using 语句加上 try/finally 块,所有 using 的本质和异常捕捉语句一样,但语法更为简洁,所有 using 使用的对象都应该在 using 语句开始后再初始化,以保证所有的对象能够被 Dispose

New 实例化一个对像,或修饰一个方法,表此方法完全重写此方法 ;

 

21. 谈谈类和结构的区别?

1. 结构是值类型:值类型在堆栈上分配地址,所有的基类型都是结构类型

类是引用类型:引用类型在堆上分配地址 堆栈的执行效率要比堆的执行效率高可是堆栈的资源有限,不适合处理大的逻辑复杂的对象所以结构处理作为基类型对待的小对象,而类处理某个商业逻辑

2 .继承性

结构:不能从另外一个结构或者类继承,本身也不能被继承 , 虽然结构没有明确的用 sealed 声明,可是结构是隐式的 sealed .

类:完全可扩展的,除非显示的声明 sealed 否则类可以继承其他类和接口,自身也能被继承

注:虽然结构不能被继承 可是结构能够继承接口,方法和类继承接口一样

3 .内部结构:

结构:

没有默认的构造函数,但是可以添加构造函数

没有析构函数

没有 abstract sealed( 因为不能继承 )

不能有 protected 修饰符

可以不使用 new 初始化

在结构中初始化实例字段是错误的

类:

有默认的构造函数

有析构函数

可以使用 abstract sealed

protected 修饰符

必须使用 new 初始化

 

22. 什么是 SOAP, 有哪些应用。

:SOAP Simple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议,是一个基于 XML 的协议。使用 SOAP ,不用考虑任何特定的传输协议(最常用的还是 HTTP 协议),可以允许任何类型的对象或代码,在任何平台上,以任何一直语言相互通信。这种相互通信采用的是 XML 格式的消息

 

23. 常用的调用 webservice 方法有哪些?

可以从浏览器、 ASP 页或其他 WEB 服务调用可以使用 HTTP-GET   HTTP-POST 访问 WEB 服务也可以从 ASP 页或其他 WEB 服务向其他 WEB 服务发出 SOAP 请求 GET POST  SOAP 使用 WEB 服务代理

 

24   私有程序集与共享程序集有什么区别?

一个私有程序集通常为单个应用程序所使用,并且存储于这个应用程序所在的目录之中,或此目录下面的一个子目录中。共享程序集通常存储在全局程序集缓存( Global Assembly Cache )之中,这是一个由 .NET 运行时所维护的程序集仓库。共享程序集通常是对许多应用程序都有用的代码库,比如 .NET Framework 类。

 

25   请解释进程与线程的区别?进程与程序的区别 ?

      一般,一个应用程序对应于一个或多个进程,可以把进程看作是该应用程序在 * 作系统中的标识;而一个进程通常由多个线程组成,而线程是 * 作系统为该应用程序分配处理时间的最小单元。

 

26   CLR IL 分别是什么含义?

      CLR: 公共语言运行时,类似于 Java 中的 JVM Java 虚拟机;在 .Net 环境下,各种编程语言使用一种共同的基础资源环境,这就是 CLR CLR 将直接与 * 作系统进行通信,而编程语言如 C#.NET 将尽量避免直接与 * 作系统直接通信,加强了程序代码的执行安全性,可以这样看: CLR 就是具体的编程语言如: C#.NET * 作系统之间的翻译,同时它为具体的编程语言提供了许多资源:

IL ,中间语言,也称 MSIL ,微软中间语言,或 CIL ,通用中间语言;所有 .NET 源代码(不管用哪种语言编写)在进行编译时都被编译成 IL 。在应用程序运行时被即时( Just-In-Time JIT )编译器处理成为机器码,被解释及执行。

 

27. 什么叫做 SQL 注入,如何防止?请举例说明。

     利用 sql 关键字对网站进行攻击。过滤关键字 '

 

 

28. 请叙述类与结构的区别。

   1) 、结构是值类型;

   2) 、结构不支持继承;

   3) 、结构不能定义默认的构造函数;

   4) 、结构不能定义析构函数;

   5) 、结构不能使用初始值设置域值。

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

术语

定义

Windows  

提供有关如何将 Windows 身份验证与 Microsoft Internet 信息服务 (IIS) 身份验证结合使用来确保 ASP.NET 应用程序安全的信息。

Forms  

提供有关如何使用您自己的代码创建应用程序特定的登录窗体并执行身份验证的信息。使用 Forms 身份验证的一种简便方法是使用 ASP.NET 成员资格和 ASP.NET 登录控件,它们一起提供了一种只需少量或无需代码就可以收集、验证和管理用户凭据的方法。有关更多信息,请参见 使用成员资格管理用户 ASP.NET 登录控件概述

Passport  

提供有关由 Microsoft 提供的集中身份验证服务的信息,该服务为成员站点提供单一登录和核心配置文 0 件服务。

 

30.. 请问 : String 类与 StringBuilder 类有什么区别? ( 简答 )

a)    string 是个独特的基本数据类型,它是基本数据类型中唯一的引用类型。 StringBuilder 也是引用类型;

b)    string 虽然是引用类型,但其分配一般不使用new 表达式,而StringBuilder 需要使用new 表达式;

c)    string.Empty 表示空字符串,不要用“” ,由于string.Empty 的定义为public static readonly string Empty ,编译时会转化成“” ,但是string.Empty 是一个常数,“” 是一个字符串对象,对字符串对象进行运算总是很慢的。使用new StringBuilder() 表示空的StringBuilder

d)    使用string 或者StringBuilder 前要检查字符串是否为nullnull 意味着字符串没有赋值,没有分配内存;

e)    使用Length 来检查检查String 或者StringBuilder 的长度,如果为0 表示空字符;

f)    string 的值存放在常量池中,引用置于栈上; StringBuilder 的值存放在堆中,引用存放在栈上;

g)    任何对string 的修改都会创建一个新string 对象;而StringBuilderAppend 方法只是修改最初分配的空间上的数据,并能动态改变容量;

h)    需要按引用传递两个参数才能交换两个string 或者StringBuilder 对象;

频繁进行字符串连接操作时,使用 StringBuilder 来改善性能,连接操作越频繁,差别越明显。

31. 请叙述属性与索引器的区别。

     属性                                   索引器     

通过名称标识                            通过签名标识。     

通过简单名称或成员访问来访问。          通过元素访问来访问。     

可以为静态成员或实例成员。              必须为实例成员。     

属性的 get 访问器没有参数。              索引器的 get 访问器具有与索引器相同的形参表。     

属性的 set 访问器包含隐式 valu 参数。       除了 value 参数外,索引器的 set 访问器还具有与索引器相同的形参表。

 

32. 请叙述 const readonly 的区别。

        readonly 关键字与 const 关键字不同:  const 字段只能在该字段的声明中初始化。 readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数, readonly 字段可能具有不同的值。另外, const 字段是编译时常数,而 readonly 字段可用于运行时常数。

   readonly 只能在声明时或者构造函数里面初始化,并且不能在 static 修饰的构造函数里面。

 

33. 重载与覆盖的区别

1 、方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系。

2 、覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。

3 、覆盖要求参数列表相同;重载要求参数列表不同。

4 、覆盖关系中,调用那个方法体,是根据对象的类型(对象对应存储空间类型)来决定;重载关系,是根据调用时的实参表与形参表来选择方法体的。

 

34 、在 C #中, string str = null string str = ”。

string str = null 是不给他分配内存空间 , string str = "" 给它分配长度为空字符串的内存空间 .

 

35   Internal 修饰符有什么含义?

internal 数据访问修饰符,表示对所修饰的成员在当前程序集内可以进行没有任何限制的访问;但在当前程序集外部则不能进行访问,其可访问性级别低于 public ,高于 protected

 

36   JAVA 的代码是半编译半解释的 ,C# 的代码是否也是这样

  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值