最近的面试让我知道基础知识的重要性
而我也每天都在网上找一些基础题来看
其实面试无非都是一些理论基础
只有基础过关了
才会被问到技术性的问题
所以第一关一定要打好
下面是我收集的一些题目以及答案(答案可能有些包含我自己的见解如有错误请指出)
面向对象的三大特性
封装继承多态
装箱和拆箱
装箱值类型转换为引用类型
拆箱引用类型转换为值类型
NET中数据类型划分为值类型和引用(不等同于C++的指针)类型与此对应内存分配被分成了两种方式一为栈二为堆注意是托管堆
值类型只会在栈中分配
引用类型分配内存与托管堆
托管堆对应于垃圾回收
C#可否对内存进行直接的操作?
可以通过加一个unsafe关键字实现
C#中结构和类的区别
机构和类具有大体的语法结构受到的限制比类要多结构不能声明构造函数结构是值类型类是引用类型结构的实例化可以不使用new关键字类可以实现接口结构不可以
接口可否继承接口?抽象类可否实现接口?抽象类可否继承实体类?
()接口可以继承接口
()抽象类可以实现接口
()抽象类可以继承实体类但是有个条件实体类必须有明确的构造方法
构造器Constructor是否可以被继承?是否可以被重写(Override)?
构造器不可以被继承因此不能被重写但可以被重载(overload)
Error和Exception的区别
error 表示恢复不是不可能但很困难的情况下的一种严重问题比如说内存溢出不可能指望程序能处理这样的情况 exception 表示一种设计或实现问题也就是说它表示如果程序运行正常从不会发生的情况
说说你对C#中的委托的理解
委托是一个类它定义了方法的类型使得可以将方法当作另一个方法的参数来进行传递这种将方法动态地赋给参数的做法可以避免在程序中大量使用IfElse(Switch)语句同时使得程序具有更好的可扩展性事件是一种消息机制是一种委托委托不带方法体
简述反射与序列化
反射其实就对程序集的动态操作程序集包括了模块而模块里面包含类型类型又包含成员反射提供了封装程序集模块和类型的对象
我们可以使用反射动态的创建类型的实例将类型绑定到现有的对象或者从现有对象中获取类型然后就可以调用类型的方法或访问字段和属性了
序列化简单理解成把对象转换为容易传输的格式的过程比如可以序列化一个对象然后使用HTTP通过Internet在客户端和服务器端之间传输该对象
在另一端可以使用反序列化从该流重新构造对象
C#中值类型和引用类型的区别
()值类型的数据存储在内存的栈中引用类型的数据存储在内存的堆中而内存单元中只存放堆中对象的地址
()值类型存取速度快引用类型存取速度慢
()值类型表示实际数据引用类型表示指向存储在内存堆中的数据的指针或引用
()值类型继承自SystemValueType引用类型继承自SystemObject
()栈的内存分配是自动释放而堆在NET中会有GC来释放
()值类型的变量直接存放实际的数据而引用类型的变量存放的则是数据的地址即对象的引用
欢迎补充……
谈谈你对三层架构的认识
()DAL数据访问层直接对数据库进行增删改查
()BLL业务逻辑层对数据业务的处理
()UI表现层对处理过的数据展现给用户
优点体现面向对象编程的思想高内聚低耦合提高扩展性
adonet使用到哪些类?
SqlConnectionSqlDataAdaptorDataSetSqlCommandSqlDataReader
SQL语句实现分页在表T中(有自增子段ID)查询第条记录
select * from (select ROW_NUMBER() over (order by ID) as rowNum* from T) as t where rowNum between and
欢迎各位补充希望这些对需要的人有点用