1、追加字符串时,当字符总长度超过了当前设置的容量Capacity,这个时候,会重新创建一个更大的字符数组,此时会涉及到分配新对象。调用StringBuilder.ToString(),创建新的字符串。相对于string的不可变,StringBuilder代表可变字符串,不会像字符串,在托管堆上频繁分配新对象。 6、什么是事件?什么是委托?两者的区别?事件的含义:事件可以理解为一种特殊的委托,事件内部是基于委托来实现的。委托的含义: 委托类似于 C或 C+中的函数指针,允许将方法作为参数进行传递; C#中的委托都继承自System.Delegate类型; 委托类型的声明与方法签名类似,有返回值和参
2、数; 委托是一种可以封装命名(或匿名)方法的引用类型,把方法当做指针传递,但委托是面向对象、类型安全的;两者的区别: 事件是特殊化的委托,委托是事件的基础; 事件只能在本类型内部“触发”,委托不管在本类型内部还是外部都可以“调用”; 在类的外部,事件只能用“+=”和“-=”去订阅/取消订阅,如果是委托的话还可以使用“=”。7、XML两种文档的定义:DTD、Schema。8、DTD和Schema的区别? Schema本身也是XML文档,DTD定义跟XML没有什么关系,Schema在理解和实际应用有很多的好处。 DTD文档的结构是“平铺型”的,如果定义复杂的XML文档,很难把握各元素之间的嵌套关系
3、;Schema文档结构性强,各元素之间的嵌套关系非常直观。 DTD只能指定元素含有文本,不能定义元素文本的具体类型,如字符型、整型、日期型、自定义类型等。Schema在这方面比DTD强大。 Schema支持元素节点顺序的描述,DTD没有提供无序情况的描述,要定义无序必需穷举排列的所有情况。Schema可以利用xs:all来表示无序的情况。 对命名空间的支持。DTD无法利用XML的命名空间,Schema很好满足命名空间。并且,Schema还提供了include和import两种引用命名空间的方法。(1)DTD不遵守XML语法,Schema遵循XML的语言规范(2)DTD不可扩展,Schema是可
4、扩展的(3)DTD不支持命名空间的应用,Schema支持命名空间的应用(4)DTD没有提供强大的数据类型支持,只能表示很简单的数据类型;Schema支持更多的数据类型与元素类型;8、XML有什么优势,用在什么地方? 可扩展性是XML最主要的特点; 另外XML是一种元标记语言(它只表示数据本身,没有显示的样式);和HTML比较: HTML不仅表示数据而且还有显示的样式; 真正的数据和显示分离。基于这样的特点,XML主要用来交换数据,用交换双方都可以明白的标签来封装数据,比如WebServices,就是在不同平台和不同语言之间交换数据写配置文件。9、什么是垃圾?GC是什么,简述一下GC的工作方式?
5、GC进行垃圾回收时的主要流程?一个变量如果在其生存期内的某一时刻已经不再被引用,那么,这个对象就有可能成为垃圾。GC是垃圾回收(Garbage Collect)的缩写,是.NET核心机制的重要部分。她的基本工作原理就是遍历托管堆中的对象,标记哪些被使用对象(哪些没人使用的就是所谓的垃圾),然后把可达对象转移到一个连续的地址空间(也叫压缩),其余的所有没用的对象内存被回收掉。 标记:先假设所有对象都是垃圾,根据应用程序根Root遍历堆上的每一个引用对象,生成可达对象图,对于还在使用的对象(可达对象)进行标记(其实就是在对象同步索引块中开启一个标示位)。 清除:针对所有不可达对象进行清除操作,针对
6、普通对象直接回收内存,而对于实现了终结器的对象(实现了析构函数的对象)需要单独回收处理。清除之后,内存就会变得不连续了,就是步骤3的工作了。 压缩:把剩下的对象转移到一个连续的内存,因为这些对象地址变了,还需要把那些Root跟指针的地址修改为移动后的新地址。10、什么是索引?缺点是什么?索引的分类?索引碎片是如何产生的?索引碎片有什么危害?索引碎片该如何处理(预防)?索引就一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检索。缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。两种类型:聚焦索引和非聚焦索引。索引碎片是如何产生的:索引在使用一段时间后(主要是新增、修改、删除数据
7、,如果该页已经存储满了,就要进行页的拆分,频繁的拆分,会产生较多的索引碎片)会产生索引碎片。危害:索引碎片会严重印象数据的查询效率,如果碎片太多,索引可能不会被使用。如何处理(预防):第一种是预防:设置页的填充因子,意思就是在页上设置一段空白区域,在新增数据的时候,可以使用这段空白区域,可以一定的避免页的拆分,从而减少索引碎片的产生。第二种是索引修复:定期对索引进行检查、维护。11、线程内部多线程引用空间system.threading。12、线程包含的四部分:线程内核对象、线程环境块、1M大小的用户模式栈、内核模式栈 。13、为什么引入线程池?优缺点是什么?每个CLR都有一个线程池,线程池在
8、CLR内可以多个AppDomain共享,线程池是CLR内部管理的一个线程集合,初始是没有线程的,在需要的时候才会创建。优点:线程池使得线程可以充分有效地被利用,减少了任务启动的延迟,也不用大量的去创建线程,避免了大量线程的创建和销毁对性能的极大影响 缺点:1、线程池内的线程不支持线程的挂起、取消等操作,如想要取消线程里的任务,.NET支持一种协作式方式取消,使用起来也不少很方便,而且有些场景并不满足需求;2、线程内的任务没有返回值,也不知道何时执行完成;3、不支持设置线程的优先级,还包括其他类似需要对线程有更多的控制的需求都不支持;14、内存分为两个部分:托管堆、GC堆。15、继承、接口和抽象
9、类的概念(了解):继承的本质:方法表的创建过程是从父类到子类自上而下的,这是.NET中继承的很好体现,当发现有覆写父类虚方法会覆盖同名的父方法,所有类型的加载都会递归到System.Object类 。抽象类提供多个派生类共享基类的公共定义,它既可以提供抽象方法,也可以提供非抽象方法。抽象类不能实例化,必须通过继承由派生类实现其抽象方法,因此对抽象类不能使用new关键字,也不能被密封。接口简单理解就是一种规范、契约,使得实现接口的类或结构在形式上保持一致。实现接口的类或结构必须实现接口定义中所有接口成员,以及该接口从其他接口中继承的所有接口成员。16、错误和异常的区别?程序的错误主要是语法错误和
10、语义错误;异常是一个程序在编译和运行时出现的错误统一。17、数据库的基本原理?在物理层面上,数据库有数据文件组成,而这些数据文件可以组成文件组,然后存储在磁盘上。每个文件包含许多区,每个区的大小为64K由八个物理上连续的页组成(一个页8K),我们知道页是SQL Server数据库中的数据存储的基本单位。18、ASP.NET 页生命周期概述? 页请求:发生在页生命周期开始之前,用户请求页时,ASP.NET将确定是否需要分析和编译页,或者是否可以在不运行页的情况下发送页的缓存版本以进行响应。 开始:在开始阶段,将设置页属性,如Request和Response。在此阶段,页还将确定请求是回发请求还是
11、新请求,并设置IsPostBack属性。此外,在开始阶段,还将设置页的UICulture属性。 页初始化:在这个期间,可以使用页中的控件,并设置每个控件的UniqueID属性。此外,任何主题都将应用于页。如果请求是回发请求,则回发数据并不加载,并且控件属性值也不还原为视图状态中的值。 加载:加载期间,如果当前请求是回发请求,这将使用从视图状态和控件状态恢复的信息加载控件属性。 验证:在验证期间,将调用所有验证程序控件的Validate方法,此方法将设置各个验证程序控件和页的IsValid属性。 回发事件处理:如果请求是回发请求,则调用所有事件处理程序。 呈现:在呈现期间,视图状态将被保存到页,
12、然后页将调用每个控件,以将其呈现的输出提供给页的Response属性的OutputStream。 卸载:完全呈现页、将页发送至客户端并准备丢弃时,将调用卸载。此时,卸载页属性并执行清理。19、Session:对网站的一次访问叫做会话(Session),超时后,自动结束会话(一般是20分钟)。20、(了解)HTTP是一个无状态的协议,这意味着它不会自动提示一个请求序列是否都来自相同的客户端,甚至不提示单个浏览器实例是否仍在活跃地查看某个页或网站。因此,如果没有其他基础架构的帮助,要想生成需要维护某些跨请求状态信息的Web应用程序(如购物车等),就会非常困难。21、下列哪些情景会应用到sessio
13、n?(登录、验证、购物车功能)22、如何判断一个同一个回话?每一个Session都具有独一无二的SessionID。23、五个状态的优缺点和使用场景。24、在ASP.NET性能优化中,利用什么指标来测试web应用?吞吐量、响应时间、执行时间、可伸缩性、可伸缩性、25、基本优化原则 减少不必要的资源消耗。 提高CPU和内存的使用率。26、DataReader的含义SqlDataReader 类提供了一种读取从SQL Server 数据库检索的只进数据流的方法。如果创建ASP.NET应用程序时出现允许用户使用它的情况,则SqlDataReader 类提供比DataSet 类更高的性能。那是因为 S
14、qlDataReader使用SQL Server的本机网络数据传输格式从数据库中直接读取数据。另外,SqlDataReader 类实现 IEnumerable 接口,该接口也允许用户将数据绑定到服务器控件。27、熟悉在.NET中经常使用的函数,以及功能,和用在哪些数据语句?28、数据库包含的两个方面:提供者、数据集、29、ASP.NET状态管理类别分为几类,具体有哪些?Session有什么重大BUG,微软提出了什么方法加以解决?iis中由于有进程回收机制,系统繁忙的话Session会丢失,可以用Sate server或SQL Server数据库的方式存储Session,不过这种方式比较慢,而且无法捕获Session的END事件。(会话状态管理的默认时间20分钟,注意题目要求默认时间还是请求时间)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1