.net基础收集汇总

下面是我收集的一些题目以及答案(答案可能有些包含我自己的见解,如有错误请指出)。
1.面向对象的三大特性
封装、继承、多态

2.装箱和拆箱
装箱:值类型转换为引用类型
拆箱:引用类型转换为值类型

.NET中,数据类型划分为值类型和引用(不等同于C++的指针)类型,与此对应,内存分配被分成了两种方式,一为栈,二为堆,注意:是托管堆。
值类型只会在栈中分配。
引用类型分配内存与托管堆。
托管堆对应于垃圾回收。

3.C#可否对内存进行直接的操作?
可以,通过加一个unsafe关键字实现。

4.C#中结构和类的区别
机构和类具有大体的语法,结构受到的限制比类要多。结构不能声明构造函数。结构是值类型,类是引用类型。结构的实例化可以不使用new关键字。类可以实现接口,结构不可以。

5.接口可否继承接口?抽象类可否实现接口?抽象类可否继承实体类?
(1)接口可以继承接口
(2)抽象类可以实现接口
(3)抽象类可以继承实体类,但是有个条件,实体类必须有明确的构造方法。

6.构造器Constructor是否可以被继承?是否可以被重写(Override)?
构造器不可以被继承,因此不能被重写,但可以被重载(overload)。

7.Error和Exception的区别
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况; exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

8.说说你对C#中的委托的理解
委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。事件是一种消息机制,是一种委托,委托不带方法体。

9.简述反射与序列化
反射:其实就对程序集的动态操作,程序集包括了模块,而模块里面包含类型,类型又包含成员。反射提供了封装程序集,模块和类型的对象。

我们可以使用反射动态的创建类型的实例,将类型绑定到现有的对象,或者从现有对象中获取类型,然后就可以调用类型的方法或访问字段和属性了。

序列化:简单理解成把对象转换为容易传输的格式的过程。比如,可以序列化一个对象,然后使用HTTP通过Internet在客户端和服务器端之间传输该对象。
在另一端可以使用反序列化从该流重新构造对象。

10.C#中值类型和引用类型的区别
(1)值类型的数据存储在内存的栈中;引用类型的数据存储在内存的堆中,而内存单元中只存放堆中对象的地址。
(2)值类型存取速度快,引用类型存取速度慢。
(3)值类型表示实际数据,引用类型表示指向存储在内存堆中的数据的指针或引用
(4)值类型继承自System.ValueType,引用类型继承自System.Object
(5)栈的内存分配是自动释放;而堆在.NET中会有GC来释放      
(6)值类型的变量直接存放实际的数据,而引用类型的变量存放的则是数据的地址,即对象的引用。
欢迎补充……

11.谈谈你对三层架构的认识
(1)DAL:数据访问层,直接对数据库进行增删改查。
(2)BLL:业务逻辑层,对数据业务的处理。
(3)UI:表现层,对处理过的数据展现给用户。
优点:体现面向对象编程的思想:高内聚低耦合,提高扩展性。

12. ado.net使用到哪些类?
SqlConnection、SqlDataAdaptor、DataSet、SqlCommand、SqlDataReader

13.SQL语句实现分页:在表T中(有自增子段ID)查询第31-40条记录
select * from (select ROW_NUMBER() over (order by ID) as rowNum,* from T) as t  where rowNum between 31 and 40

欢迎各位补充,希望这些对需要的人有点用。

(0)

相关推荐

  • ASP.net基础知识之常见错误分析

    1:command调用存储过程的时候,如果输出是dataset,selectcommand的command对象的connection先要指出,否则catch一辈子也是空的.. 2:存储过程的varchar字段如果是x.x的这种格式,容易出现细微的傻错误,注意不要漏了[]. 3:如果ascx文件的默认服务器控件的事件不重写的话在control控件里面没有自动回送!切记. 4:Page.RegisterOnSubmitStatement在ascx文件中小心使用... 5:viewstate在true

  • .net基础收集汇总

    下面是我收集的一些题目以及答案(答案可能有些包含我自己的见解,如有错误请指出).1.面向对象的三大特性封装.继承.多态 2.装箱和拆箱装箱:值类型转换为引用类型拆箱:引用类型转换为值类型 .NET中,数据类型划分为值类型和引用(不等同于C++的指针)类型,与此对应,内存分配被分成了两种方式,一为栈,二为堆,注意:是托管堆.值类型只会在栈中分配.引用类型分配内存与托管堆.托管堆对应于垃圾回收. 3.C#可否对内存进行直接的操作?可以,通过加一个unsafe关键字实现. 4.C#中结构和类的区别机构

  • Java基础知识汇总

    Java基础知识 1.Java语言的优点: 1)Java是纯面向对象语言 2)与平台无关性,一次编译到处运行 3)Java提供了狠多内置类库 4)提供了对web应用的支持 5)具有较好的安全性(数组边界检测.Bytecode检测)和健壮性(强制型机制.垃圾回收器.异常处理) 6)去除c++难以理解的一些特性(头文件 指针 运算符重载 多重继承) 2.java与c++的异同: 1)Java为解释型语言,c++为编译型语言,java会慢但是跨平台 2)Jave为纯面向对象,c++既面向对象又能面向过

  • 学习Python列表的基础知识汇总

    千里之行,始于足下.要练成一双洞悉一切的眼睛,还是得先把基本功扎扎实实地学好.今天,本喵带大家仔细温习一下Python的列表.温故而知新,不亦说乎. 当然,温习的同时也要发散思考,因为有些看似无关紧要的.约定俗成的语言习惯,例如数组索引为何从0开始,其背后可能大有来历.知其然,亦需知其所以然啊喵喵喵~~~ 最后,在基础知识之上,更要探索进阶,例如学习生成器表达式,这样既能更扎实地掌握基础,又能融会贯通,获得更全面的认知升级. Python的列表是怎样滴? 列表(list)是一种有序的集合,可以随

  • C#多线程基础知识汇总

    最近自己写了个小爬虫,里面用到了多线程技术,忽然发现对此技术竟然有些陌生了,于是乎开始疯狂的去问度娘,在此记录下来,以便自己和各位小伙伴们学习. 一.什么是线程 一个应用程序就相当于一个进程,进程拥有应用程序的所有资源进程包括线程,进程的资源被线程共享,但不拥有线程.我们可以打开电脑中的任务管理器,运行的.exe都是一个进程,里面的分支是线程. 二.多线程 多线程其实就是进程中一段并行运行的代码 1. 创建并启动线程 static void Main() { //获取线程Id var threa

  • node.js基础知识汇总

    一.node介绍 1.node的应用场景 工具类 gulp webpack vite (node可以让js运行在服务器) 可以做服务端 优化ssr 可以做中间层 (解决跨域问题,格式化数据) 2.性能 非阻塞 异步I/O(当这个方法调用完毕后不会立即返回结果) 事件驱动(发布订阅模式) 3.优势 在Java.PHP或者.NET等服务器语言中,会为每一个客户端连接创建一个新的线程.而每个线程需要耗费大约2MB内存.也就是说,理论上,一个8GB内存的服务器可以同时连接的最大用户数为4000个左右.要

  • CSS Hack收集汇总

    屏蔽IE浏览器(也就是IE下不显示) *:lang(zh) select {font:12px !important;} /*FF的专用*/ select:empty {font:12px !important;} /*safari可见*/ 这里select是选择符,根据情况更换.第二句是MAC上safari浏览器独有的. 仅IE7识别 *+html {-} 当面临需要只针对IE7做样式的时候就可以采用这个HACK. IE6及IE6以下识别 * html {-} 这个地方要特别注意很多地主都写了

  • mysql表的基础操作汇总(三)

    针对mysql表进行的基础操作,具体内容如下 1.创建表: 创建表的语法形式: CREATE TABLE table_name( 属性名 数据类型, 属性名 数据类型, ... 属性名 数据类型 ) 示例: CREATE TABLE t_dept( deptno int, dname varchar(20), loc varchar(20) 备注:在创建表之前,通常你需要使用 USE 库名:这样一条语句来选择一个库,在所选择的库中创建表.对于表名标识符,不能是mysql的关键字,如 CREATE

  • Python 函数基础知识汇总

    一.函数基础 简单地说,一个函数就是一组Python语句的组合,它们可以在程序中运行一次或多次运行.Python中的函数在其他语言中也叫做过程或子例程,那么这些被包装起来的语句通过一个函数名称来调用. 有了函数,我们可以在很大程度上减少复制及粘贴代码的次数了(相信很多人在刚开始时都有这样的体验).我们可以把相同的代码可以提炼出来做成一个函数,在需要的地方只需要调用即可.那么,这样就提高了代码的复用率了,整体代码看起来比较简练,没有那么臃肿了. 函数在Python中是最基本的程序结构,用来最大化地

  • C#面向对象编程基础概念汇总

    一.类与实例 对象是一个自包含的实体,用一组可识别的特性和行为类标示,面向对象编程,就是针对对象编写类,就是具有相同属性和功能的抽象的集合. 注意: 类名称首字母要大写,多个单词则各个首字母大写: 对外公开的方法需要用public修饰符 实例,就是一个真实的对象,实例化就是创建对象过程,使用new关键字来创建. 二.构造方法 构造方法又叫构造函数,其实就是对类进行初始化,构造方法与类同名,无返回值,也无需void,在new时候调用. 所有的类都有构造方法,如果你不编码则系统会默认生成空的构造方法

  • 关于数据库优化问题收集汇总

    人们在使用SQL时往往会陷入一个误区,即太关注于所得的结果是否正确,而忽略了不同的实现方法之间可能存在的性能差异,这种性能差异在大型的或是复杂的数据库环境中(如联机事务处理OLTP或决策支持系统DSS)中表现得尤为明显. 笔者在工作实践中发现,不良的SQL往往来自于不恰当的索引设计.不充份的连接条件和不可优化的where子句. 在对它们进行适当的优化后,其运行速度有了明显地提高! 下面将从这三个方面分别进行总结: 为了更直观地说明问题,所有实例中的SQL运行时间均经过测试,不超过1秒的均表示为(

随机推荐