1. .NET和C#有什么区别?

.NET一般指 .NET FrameWork框架,它是一种平台,一种技术。

C#是一种编程语言,可以基于.NET平台的应用。

2.请编程遍历页面上所有TextBox控件并给它赋值为string.Empty?

  1. foreach (System.Windows.Forms.Control control in this.Controls)
  2. {
  3. if (control is System.Windows.Forms.TextBox)
  4. {
  5. System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control ;
  6. tb.Text = String.Empty ;
  7. }
  8. }

3.CTS、CLS、CLR分别作何解释?

CTS:通用语言系统。CLS:通用语言规范。CLR:公共语言运行库。

4.什么是受管制的代码?

unsafe:非托管代码。不经过CLR运行。

5.什么是强类型系统?

RTTI:类型识别系统。

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

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

2).使用Session变量

3).使用Server.Transfer

7. 什么是Code-Behind技术?

代码后植。

8.在.net中,配件的意思是?

程序集。(中间语言,源数据,资源,装配清单)

9. .netRemoting 的工作原理是什么?

服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置

10.分析以下代码,i=? j=?

  1. stringstrTmp = "abcdefg某某某";
  2. inti= System.Text.Encoding.Default.GetBytes(strTmp).Length;
  3. intj= strTmp.Length;

答:i=13,j=10

11.是否可以继承String类?

String类是final类故不可以继承。

12.Session有什么重大BUG,微软提出了什么方法加以解决?

是iis中由于有进程回收机制,系统繁忙的话Session会丢失,可以用Sate server或SQL Server数据库的方式存储Session不过这种方式比较慢,而且无法
捕获Session的END事件。

13.DataReader与Dataset有什么区别?

一个是只能向前的只读游标,一个是内存中虚拟的数据库。

14.什么是XML?

XML即可扩展标记语言。eXtensible Markup Language.标记是指计算机所能 理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。如何定义这些标记,即可以选择国际通用的标记语言,比如HTML,也可以使用象XML这样由相关人士自由决定的标记语言,这就是语言的可扩展性。XML是从SGML中简化修改出来的。它主要用到的有XML、XSL和XPath等。

15.什么是WebService?UDDI?

Web Service便是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼容的组件进行互操作。UDDI的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为WebService提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。

16.什么是ASP.net中的用户控件?

用户控件一般用在内容多为静态,或者少许会改变的情况下..用的比较大..类似ASP中的include..但是功能要强大的多。

17.列举一下你所了解的XML技术及其应用

xml用于配置,用于保存静态数据类型.接触XML最多的是web Services..和config

18. 什么是code-Behind技术?

ASPX,RESX和CS三个后缀的文件,这个就是代码分离.实现了HTML代码和服务器代码分离.方便代码编写和整理。

19.什么是SOAP,有哪些应用?

simple object access protocal,简单对象接受协议.以xml为基本编码结构,建立在已有通信协议上(如http,不过据说ms在搞最底层的架构在tcp/ip上的soap)的一种规范WebService使用的协议。

20.C#中 property 与 attribute的区别,他们各有什么用处,这种机制的好处在哪里?

一个是属性,用于存取类的字段,一个是特性,用来标识类,方法等的附加性质。

21.XML与 HTML 的主要区别?

  1. XML是区分大小写字母的,HTML不区分。

2.在HTML中,如果上下文清楚地显示出段落或者列表键在何处结尾,那么你可以

省略

3.在XML中,拥有单个标记而没有匹配的结束标记的元素必须用一个 / 字符作为

结尾。这样分析器就知道不用查找结束标记了。

4.在XML中,属性值必须分装在引号中。在HTML中,引号是可用可不用的。

5.在HTML中,可以拥有不带值的属性名。在XML中,所有的属性都必须带有相应的值。

21.在.Net中,类System.Web.UI.Page 可以被继承么?

可以。

22.在.net(C# or vb.net)中,Appplication.Exit 还是 Form.Close有什么不同?

一个是退出整个应用程序,一个是关闭其中一个form。

23.<%# %> 和 <% %> 有什么区别?

<%# %>表示绑定的数据源

<%%>是服务器端代码块

24.ADO.NET中读写数据库需要使用哪些对象?作用是什么?

Connection连接对象,Command执行命令和存储过程,DataReader向前只读的数据流,DataAdapter适配器,支持增删查询,DataSet数据级对象,相当与内存里的一张或多张表。

25.什么是SQL注入,应该如何防止?

利用sql关键字对网站进行攻击,用参数化的SQL就可以避免SQL注入!

26.详细描述三层架构开发模式以及三层架构的好处?

数据访问层,业务层,表示层。

数据访问层(DAL),主要是存放对数据类的访问,即对数据库的添加、删除、修改、更新等基本操作

业务逻辑层(BLL)对传送数据进行逻辑判断分折,并进行传送正确的值。      
表示层为了与用户交互例如用户添加表单。

优点: 分工明确,条理清晰,易于调试,而且具有可扩展性。

27.说出一些常用的类、接口,请各举5个?

要让人家感觉你对.Net开发很熟,所以,不能仅仅只列谁都能想到的那些东西,要多列你在做项目中涉及的那些东西。就写你最近写的那些程序中涉及的那些类。

常用的类:StreamReader、WebClient、Dictionary、StringBuilder、SqlConnection、FileStream、File、Regex、List

常用的接口:IDisposable、IEnumerable、IDbConnection、IComparable、ICollection、IList、IDictionary

28.不是说字符串是不可变的吗?string s=”abc”;s=”123”不就是变了吗?

String是不可变的在这段代码中,s原先指向一个String对象,内容是 “abc”,然后我们将s指向”123”,那么s所指向的那个对象是否发生了改变呢?答案是没有。这时,s不指向原来那个对象了,而指向了另一个 String对象,内容为”123”,原来那个对象还存在于内存之中,只是s这个引用变量不再指向它了。

29.post、get的区别?

get的参数会显示在浏览器地址栏中,而post的参数不会显示在浏览器地址栏中;

使用post提交的页面在点击【刷新】按钮的时候浏览器一般会提示“是否重新提交”,而get则不会;

用get的页面可以被搜索引擎抓取,而用post的则不可以;

用post可以提交的数据量非常大,而用get可以提交的数据量则非常小(2k),受限于网页地址的长度。

用post可以进行文件的提交,而用get则不可以。

30.http 响应码 301 和 302 代表的是什么?有什么区别?

301:永久重定向;302:暂时重定向。

它们的区别是,301 对搜索引擎优化(SEO)更加有利;302 有被提示为网络拦截的风险。

31.Server.Transfer和Response.Redirect的区别是什么?

Server.Transfer仅是服务器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;Response.Redirect则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。

Server.Transfer是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。 这个过程中浏览器和Web服务器之间经过了一次交互。

Response.Redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求。这个过程中浏览器和Web服务器之间经过了两次交互。

Server.Transfer不可以转向外部网站,而Response.Redirect可以。

Server.Execute效果和Server.Transfer类似,但是是把执行的结果嵌入当前页面。

32.什么是 XSS 攻击,如何避免?

XSS 攻击:即跨站脚本攻击,它是 Web 程序中常见的漏洞。原理是攻击者往 Web 页面里插入恶意的脚本代码(css 代码、Javascript 代码等),当用户浏览该页面时,嵌入其中的脚本代码会被执行,从而达到恶意攻击用户的目的,如盗取用户 cookie、破坏页面结构、重定向到其他网站等。 预防 XSS 的核心是必须对输入的数据做过滤处理。

33.HTTP fetch发送2次请求的原因?

fetch发送post请求的时候,总是发送2次,第一次状态码是204,第二次才成功?

原因很简单,因为你用fetch的post请求的时候,导致fetch 第一次发送了一个Options请求,询问服务器是否支持修改的请求头,如果服务器支持,则在第二次中发送真正的请求。

34.HTTP常见的的头部有哪些?

可以将http首部分为通用首部,请求首部,响应首部,实体首部

通用首部表示一些通用信息,比如date表示报文创建时间,

请求首部就是请求报文中独有的,如cookie,和缓存相关的如if-Modified-Since

响应首部就是响应报文中独有的,如set-cookie,和重定向相关的location,

实体首部用来描述实体部分,如allow用来描述可执行的请求方法,content-type描述主题类型,content-Encoding描述主体的编码方式

35.什么是 CSRF 攻击,如何避免?

CSRF:Cross-Site Request Forgery(中文:跨站请求伪造),可以理解为攻击者盗用了你的身份,以你的名义发送恶意请求,比如:以你名义发送邮件、发消息、购买商品,虚拟货币转账等。 防御手段:

验证请求来源地址; 关键操作添加验证码; 在请求地址添加 token 并验证。

36.HTTP 状态码 304 的含义?什么时候用304?

304:如果客户端发送了一个带条件的GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个304状态码。

37.ASP.NET和ASP有什么区别?

ASP.NET的脚本是雨HTML分离的,代码被编译成了DLL, DLL可以在server端执行。
ASP的脚本是与HTML在一起的,每次都会进行解释执行。

38.简述 Application,session,cookie,cache,viewState 的概念,以及相互之间的区别?

Application 任意大小 整个应用程序的生命期 所有用户 服务器端

Seccion 小量,简单的数据 用户活动时间+ 单个用户 服务器端一段延迟时间(一般为20分钟)

Cookie 小量,简单的数据 可以根据需要设定 单个用户 客户端

ViewState 小量,简单的数据 一个Web页面的生命期 单个用户 客户端

Cache 任意大小 可以根据需要设定 所有用户 服务器端

39.ASP.NET中的六大对象有哪些?

1.Response
2.Request
3.Server
4.Application
5.Session
6.Cookie

40. 在c#中,反射是什么?处理反射相关的namespace是什么?

反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获 得.NET 中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和参数等。

41.ExecuteScalar 和 ExecuteNonQuery 的区别?

ExecuteNonQuery:返回受影响的行数。
ExecuteScalar:返回结果集的第一行第一列,忽略其他行。

42.说明C#中的方法声明参数关键字params,ref,out的意义及用法?

1) params关键字,官方给出的解释为用于方法参数长度不定的情况。有时候不能确定一个方法的方法参数到底有多少个,可以使用params关键字来解决问题

2) ref关键字:使用引用类型参数,在方法中对参数所做的任何更改都将反应在该变量中

  1. out 关键字:out 与ref相似但是out 无需进行初始化。

43.简单描述Ihtttphandler和Ihttpmodule的区别和各自的作用?

1.先后次序.先IHttpModule,后IHttpHandler. 注:Module要看你响应了哪个事件,一些事件是在Handler之前运行的,一些是在Handler之后运行的

2.对请求的处理上:
IHttpModule 是属于大小通吃类型,无论客户端请求的是什么文件,都会调用到它;例如 aspx,rar,html的请求.
IHttpHandler则属于挑食类型,只有ASP.net注册过的文件类型(例如aspx,asmx等等) 才会轮到调用它.

3.IHttpHandler按照你的请求 生成响应的内容,IHttpModule对请求进行预处理,如验证、修改、过滤等等,同时也可以对响应进行处理

44. 什么是托管代码、非托管代码托管代码 (managed code)

由公共语言运行库环境(而不是直接由操作系统)执行的代码。托管代码应用程序可以获得公共语言运行库服务,例如自动垃圾回收、运行库类型检查和安全支持等。这些服务帮助提供独立于平台和语言的、统一的托管代码应用程序行为。
非托管代码 (unmanaged code)

在公共语言运行库环境的外部,由操作系统直接执行的代码。非托管代码必须提供自己的垃圾回收、类型检查、安全支持等服务;它与托管代码不同,后者从公共语言运行库中获得这些服务。

45.GC是什么? 为什么要有GC?

1.GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理.

2 .NET的GC机制有这样两个问题:首先,GC并不是能释放所有的资源。它不能自动释放非托管资源。

GC并不是实时性的,这将会造成系统性能上的瓶颈和不确定性。
GC就是对“不可达“的对象进行回收,释放内存。

46.数组、链表、哈希、队列、栈数据结构特点,各自优点和缺点?

数组(Array):
优点:查询快,通过索引直接查找;有序添加,添加速度快,允许重复;
缺点:在中间部位添加、删除比较复杂,大小固定,只能存储一种类型的数据;
如果应用需要快速访问数据,很少插入和删除元素,就应该用数组。

链表(LinkedList):
优点:有序添加、增删改速度快,对于链表数据结构,增加和删除只要修改元素中的指针就可以了;
缺点:查询慢,如果要访问链表中一个元素,就需要从第一个元素开始查找;
如果应用需要经常插入和删除元素,就应该用链表。

栈(Stack):
优点:提供后进先出的存储方式,添加速度快,允许重复;
缺点:只能在一头操作数据,存取其他项很慢;

队列(Queue):
优点:提供先进先出的存储方式,添加速度快,允许重复;
缺点:只能在一头添加,另一头获取,存取其他项很慢;

哈希(Hash):
特点:散列表,不允许重复;
优点:如果关键字已知则存取速度极快;
缺点:如果不知道关键字则存取很慢,对存储空间使用不充分;

47.应用程序池集成模式和经典模式的区别?

如果托管应用程序在采用集成模式的应用程序池中知运行,服务器将使用 IIS 和 ASP.NET 的集成请求处理管道来处理请求。

如果托管应用程序在采用经典模式的应用程序池中运行,服务器会继续通过 Aspnet_isapi.dll
路由托管代码请求,其处理请求的方式就像应用程序在 IIS 6.0 中运行一样。

48.AJAX的底层实现原理?

Ajax核心———-XMLHttpRequest
上面我们大概感受了一下Ajax的过程,我们发现发送异步请求才是核心,事实上它就是XMLHttpRequest,整个Ajax之所以能完成异步请求完全是因为这个对应可以发送异步请求的缘故。

而且我们又发现上面那个事件就是整个处理过程的核心,可以根据不同状态执行不同操作,其实它就是XMLHttpRequest的方法onreadystatechange,它在每次状态发生改变时都会触发。那么是谁取得的返回信息呢?它就是XMLHttpRequest的另一个方法responseText(当然还有responseXML)。

我们还没有说发送给谁以及执行发送操作,这两个就是XMLHttpRequest的open和send方法。Y(o)Y,其他的当然还有了,我们直接列出来吧:

XMLHttpRequest对象属性

readyState:请求状态,开始请求时值为0直到请求完成这个值增长到4

responseText:目前为止接收到的响应体,readyState<3此属性为空字符串,=3为当前响应体,=4则为完整响应体

responseXML:服务器端相应,解析为xml并作为Document对象返回

status:服务器端返回的状态码,=200成功,=404表示“Not Found”

statusText:用名称表示的服务器端返回状态,对于“OK”为200,“Not Found”为400

方法

setRequestHeader():向一个打开但是未发生的请求设置头信息

open():初始化请求参数但是不发送

send():发送Http请求

abort():取消当前相应

getAllResponseHeaders():把http相应头作为未解析的字符串返回

getResponseHeader():返回http相应头的值

49.能够将非静态的方法覆写成静态方法吗?

答:不能,覆写方法的签名必须与被覆写方法的签名保持一致,除了将virtual改为override。

50.DateTime.Parse(myString); 这行代码有什么问题?

有问题,当myString不能满足时间格式要求的时候,会引发异常,建议使用DateTime.TryParse()

51.Server.UrlEncode、HttpUtility.UrlDecode的区别

Server.UrlEncode的编码方式是按照本地程序设置的编码方式进行编码的,而HttpUtility.UrlEncode是默认的按照.net的utf-8格式进行编码的。

52.何时创建连接池?

当第一个连接请求到来时创建连接池;连接池的建立由数据库连接的连接字符创来决定。每一个连接池都与一个不同的连接字符串相关。当一个新的连接请求到来时如果连接字符串和连接池使用的字符串相同,就从连接池取出一个连接;如果不相同,就新建一个连接池。

53.何时关闭连接池?

当连接池中的所有连接都已经关闭时关闭连接池。

54. 当连接池中的连接都已经用完,而有新的连接请求到来时会发生什么?

当连接池已经达到它的最大连接数目时,有新的连接请求到来时,新的连接请求将放置到连接队列中。当有连接释放给连接池时,连接池将新释放的连接分配给在队列中排队的连接请求。你可以调用close和dispose将连接归还给连接池。

55.如何允许连接池?

对于.NET应用程序而言,默认为允许连接池。(这意味着你可以不必为这件事情做任何的事情)当然,如果你可以在SQLConnection对象的连接字符串中加进Pooling=true;确保你的应用程序允许连接池的使用。

56.应该如何禁止连接池?

ADO.NET默认为允许数据库连接池,如果你希望禁止连接池,可以使用如下的方式:

  1. 使用SQLConnection对象时,往连接字符串加入如下内容:Pooling=False;
  2. 使用OLEDBConnection对象时,往连接字符串加入如下内容:OLE DB Services=-4;

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

一个私有程序集通常为单个应用程序所使用,并且存储于这个应用程序所在的目录之中,或此目录下面的一个子

目录中。共享程序集通常存储在全局程序集缓存(Global Assembly Cache)之中,这是一个由.NET运行时所维

护的程序集仓库。共享程序集通常是对许多应用程序都有用的代码库,比如.NET Framework类。

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

appSettings包含自定义应用程序设置。
system.web 系统配置;
compilation动态调试编译设置;
customErrors自定义错误信息设置;
authentication身份验证,此节设置应用程序的身份验证策略。
authorization授权, 此节设置应用程序的授权策略。

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

Viewstate是保存状态的一种机制,EnableViewState属性设置为false即可禁用

60.什么是Windows服务,它的生命周期与标准的EXE程序有什么不同?

Windows服务是运行在windows后台指定用户下(默认System)的应用程序,它没有标准的UI界面,想比标准

的EXE程序,Windows服务是在服务开始的时候创建,而在服务结束的时候销毁,而且可以设置服务是否与操作

系统一起启动,一起关闭。它支持三种方式:1)自动方式 2)手动方式 3)禁用 。自动方式的时

候,windows服务将在OS启动后自动启动运行,而手动方式则必须手工启动服务,禁用的情况下服务将不能被

启动。另外标准的EXE默认使用的当前登录的用户,而windows服务则默认使用System用户,这在对系统资源访

问的时候特别需要注意。

61.什么是GAC?它解决了什么问题?

Gloal Assembly Cache,全局应用程序集缓存。它解决了几个程序共享某一个程序集的问题。不必再将那个被共

享的程序集拷贝到应用程序目录了,其实这道理很简单,.net应用程序在加载的时候,会首先查看全局应用程序

集缓存,如果有就可以直接使用,没有再到应用程序目录进行查找。

62.数据访问通过aspx页面和DB层会很慢,有什么解决方法?

(1)浏览器使用缓存;(2)使用压缩的JS和CSS(3)减少发送HTTP请求的次数;(4)后台,对于一些不经常变化的数据进行Cache;(5)对可能的低效率的SQL语句进行优化;(6)进行服务器负载均衡