c# 面试题

.NET和C#有什么区别?
答:.NET一般指 .NET FrameWork框架,它是一种平台,一种技术。
C#是一种编程语言,可以基于.NET平台的应用。


C#中的委托是什么?事件是不是一种委托?
委托可以把一个方法作为参数代入另一个方法。委托可以理解为指向一个函数的引用。
是,是一种特殊的委托


简述 private、 protected、 public、internal 修饰符的访问权限。
private : 私有成员, 在类的内部才可以访问。
protected: 保护成员,该类内部和继承类中可以访问。
public: 公共成员,完全公开,没有访问限制。
internal:在同一命名空间内可以访问。


override与重载的区别
重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要
Override是进行基类中函数的重写。为了适应需要。


什么是装箱和拆箱?
从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱。

请详述在dotnet中类(class)与结构(struct)的异同?
Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的.


启动一个线程是用run()还是start()?
启动一个线程是调用start()方法


接口是否可继承接口? 抽象类是否可实现接口? 抽象类是否可继承实体类?
接口可以继承接口。抽象类可以实现接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。


sleep()和 wait() 有什么区别?
sleep()方法是使线程停止一段时间的方法。
wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。


进程和线程的区别?
进程是系统进行资源分配和调度的单位;线程是CPU调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源。

 

向服务器发送请求有几种方式?
get,post。get一般为链接方式,post一般为按钮方式。

 

在c#中using和new这两个关键字有什么意义
using 引入名称空间或者使用非托管资源
new新建实例或者隐藏父类方法

 

什么叫做SQL注入,如何防止?
用sql关键字对网站进行攻击。过滤关键字'等

 

什么是反射?
动态获取程序集信息


c#中的三元运算符是?
?:。


委托声明的关键字是
delegate

 

const和readonly有什么区别?
const关键字用来声明编译时的常量 readonly用来声明运行时的常量

 

接口和抽象类的区别是什么?
接口中所有的方法都不能有实现,并且不能指定方法的修饰符
抽象类中可以有方法的实现,也可以指定方法的访问修饰符
第一个继承接口的类必须实现接口里的所有方法
而抽象类中抽象方法的实现是由第一个非抽象的派生类来实现


C#是否支持多重继承?
不支持。多重继承指的是一个类可以同时继承多个类,比如A类继承自B类和C类,这就是多重继承。C#只能继承一个类,但是可以继承多个接口。

 

int,string,hashtable,datetime,datatable中哪些是引用类型?
string,hashtable,datatable

 

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

 


如何在C#中实现继承?也就是继承的格式
在类名后加上一个冒号,再加上基类的名称。


C#中所有对象共同的基类是什么?
System.Object

 

面向对象的特征有哪些方面?
面向对象的编程语言有封装、继承 、抽象、多态等4个主要的特征。
封装:封装的目标就是要实现软件部件的“高内聚、低耦合”,防止程序相互依赖性而带来的变动影响。
抽象:抽象就是找出一些事物的相似和共性之处,然后将这些事物归为一个类
继承:子类继承父类成员,实现代码复用,提高了软件的可重用性和可扩展性。
多态:不同子类对同一个消息作出不同的反映,提高软件灵活性

 

什么是依赖注入
依赖注入是一种解除类之间直接依赖关系的方法,有以下几种注入方式:构造函数注入,属性注入,方法注入

 

什么是事务?什么是锁?
事务是指一个工作单元,它包含了一组数据操作命令,并且所有的命令作为一个整体一起向系统提交或撤消请求操作,即这组命令要么都执行,要么都不执行。
锁是在多用户环境中对数据的访问的限制。SqlServer自动锁定特定记录、字段或文件,防止用户访问,以维护数据安全或防止并发数据操作问题,锁可以保证事务的完整性和并发性。

 

 

什么是索引,有什么优点?
索引象书的目录类似,索引使数据库程序无需扫描整个表,就可以在其中找到所需要的数据,索引包含了一个表中包含值的列表,其中包含了各个值的行所存储的位置,索引可以是单个或一组列,索引提供的表中数据的逻辑位置,合理划分索引能够大大提高数据库性能。

 

视图是什么?游标是什么?
视图是一种虚拟表,虚拟表具有和物理表相同的功能,可以对虚拟表进行增该查操作;视图通常是一个或多个表的行或列的子集;
视图的结果更容易理解(修改视图对基表不影响),获取数据更容易(相比多表查询更方便),限制数据检索(比如需要隐藏某些行或列),维护更方便。
游标对查询出来的结果集作为一个单元来有效的处理,游标可以定位在结果集的特定行、从结果集的当前位置检索一行或多行、可以对结果集中当前位置进行修改、

 


什么是存储过程?有什么优点?

存储过程是一组予编译的SQL语句
它的优点:1.允许模块化程序设计,就是说只需要创建一次过程,以后在程序中就可以调用该过程任意次。
2.允许更快执行,如果某操作需要执行大量SQL语句或重复执行,存储过程比SQL语句执行的要快。
3.减少网络流量,例如一个需要数百行的SQL代码的操作有一条执行语句完成,不需要在网络中发送数百行代码。
4.更好的安全机制,对于没有权限执行存储过程的用户,也可授权他们执行存储过程。


列举ADO.NET中的五个主要对象,并简单描述
Connection连接对象,Command执行命令和存储过程,DataReader向前只读的数据流,DataAdapter适配器,支持增删查询,DataSet数据级对象,相当与内存里的一张或多张表。

 

概述三层结构体系
表示层(UI),业务逻辑层(BLL),数据访问层(DAL)

 

C#中的接口和类有什么异同?
答:异:接口不能直接实例化。
    接口不包含方法的实现。
    接口、类和结构可从多个接口继承。但是C#类只支持单继承:类只能从一个基类继承实现。类定义可在不同的源文件之间进行拆分。

  同:接口、类和结构可从多个接口继承。
    接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员。
    接口可以包含事件、索引器、方法和属性。

 

死锁的必要条件?怎么克服?
系统的资源不足,进程的推进的顺序不合适,资源分配不当,一个资源每次只能被一个进程使用,一个资源请求资源时,而此时这个资源已阻塞,对已获得资源不放,进程获得资源时,未使用完前,不能强行剥夺。


如何处理几十万条并发数据?
用存储过程或事务。取得最大标识的时候同时更新。注意主键不是自增量方式,这种方法并发的时候是不会有重复主键的。取得最大标识要有一个存储过程来获取.

 

多看一下LINQ。

 

posted @ 2019-07-15 16:27  捕头的爱  阅读(161)  评论(0编辑  收藏  举报