2020年最新 C# .net 面试题,月薪20K+中高级/架构师必看(四)
七十六、C#中 property 与 attribute的区别,他们各有什么用处,这种机制的好处在哪里?
https://www.cnblogs.com/kevinwang/archive/2009/02/18/1393350.html
七十七、C#中的LINQ
七十八、string str=null 与 string str="" 的区别?
七十九、.net的错误处理机制是什么?
.net错误处理机制采用try->catch->finally结构,发生错误时,层层上抛,直到找到匹配的Catch为止
八十、在.Net中所有可序列化的类都被标记,为什么?
[Serializable]
八十一、用sealed修饰的类有什么特点?
1. sealed——“断子绝孙”
密封类不能被继承。密封方法可以重写基zhi类中的方法,但其本身不能在任何派生类中进一步重写。
当应用于方法或属性时,sealed修饰符必须始终与override一起使用。
即:密封类不会有子类,所以是“断子绝孙”。
八十二、什么是SOAP,有哪些应用?
https://www.cnblogs.com/zoro-zero/p/16225397.html
八十三、ADO.net中常用五个主要对象是什么?分别描述一下。
Connection:主要是开启程序和数据库之间的连接。没有利用连接对象将数据库打开,是无法从数据库中取得数据的。Close和Dispose的区别,Close以后还可以Open,Dispose以后则不能再用。
Command:主要可以用来对数据库发出一些指令,例如可以对数据库下达查询、新增、修改、删除数据等指令,以及调用存在数据库中的存储过程等。这个对象是架构在Connection 对象上,也就是Command 对象是透过连接到数据源。
DataAdapter:主要是在数据源以及DataSet 之间执行数据传输的工作,它可以透过Command 对象下达命令后,并将取得的数据放入DataSet 对象中。这个对象是架构在Command对象上,并提供了许多配合DataSet 使用的功能。
DataSet:这个对象可以视为一个暂存区(Cache),可以把从数据库中所查询到的数据保留起来,甚至可以将整个数据库显示出来,DataSet是放在内存中的。DataSet 的能力不只是可以储存多个Table 而已,还可以透过DataAdapter对象取得一些例如主键等的数据表结构,并可以记录数据表间的关联。DataSet 对象可以说是ADO.NET 中重量级的对象,这个对象架构在DataAdapter对象上,本身不具备和数据源沟通的能力;也就是说我们是将DataAdapter对象当做DataSet 对象以及数据源间传输数据的桥梁。DataSet包含若干DataTable、DataTableTable包含若干DataRow。
DataReader:当我们只需要循序的读取数据而不需要其它操作时,可以使用DataReader 对象。DataReader对象只是一次一笔向下循序的读取数据源中的数据,这些数据是存在数据库服务器中的,而不是一次性加载到程序的内存中的,只能(通过游标)读取当前行的数据,而且这些数据是只读的,并不允许作其它的操作。因为DataReader 在读取数据的时候限制了每次只读取一笔,而且只能只读,所以使用起来不但节省资源而且效率很好。使用DataReader 对象除了效率较好之外,因为不用把数据全部传回,故可以降低网络的负载。
ADO.NET 使用Connection 对象来连接数据库,使用Command 或DataAdapter对象来执行SQL语句,并将执行的结果返回给DataReader 或 DataAdapter ,然后再使用取得的DataReader 或DataAdapter 对象操作数据结果。
八十四、什么是强类型系统?
https://www.cnblogs.com/zoro-zero/p/13497917.html
八十五、简要谈一下您对微软.NET构架下remoting和webservice两项技术的理解以及实际中的应用。
八十六、构造器Constructor是否可被override?
Constructor不能被继承,所以Constructor也就不能被override,但是可以overload,所以你可以看到有多个构造函数这种情况。”
八十七、是否可以继承String类?
“不可以,String类是一个最终类,被final修饰,所以不能被继承”
八十八、谈谈final,finally, finalize的区别。
https://www.cnblogs.com/ktao/p/8586966.html
八十九、双if+lock模式
public class Singleton { private static Singleton _Singleton = null; private static object Singleton_Lock = new object(); public static Singleton CreateInstance() { if (_Singleton == null) //双if +lock { lock (Singleton_Lock) { Console.WriteLine("路过。"); if (_Singleton == null) { Console.WriteLine("被创建。"); _Singleton = new Singleton(); } } } return _Singleton; } }
九十、C#中的单例模式.
https://www.cnblogs.com/yaopengfei/p/7138700.html
九十一、构造函数?
1)我们都知道一个类可以有多个构造函数,并且C#会在我们创建类的时候默认的提供一个无参的构造函数,当我实现了另外一个有参数的构造函数的时候,我还能调用无参数的构造函数吗?请说明原因。
不能,因为一旦你实现了一个构造函数,C#就不会再提供默认的构造函数了,所以需要自己手动写入一个无参数的构造函数。
九十二、继承?
1)类的私有成员会被子类继承吗?请说明原因。
会被子类继承,但是不能被访问。所以看上去是不能被继承的,实际上确实被继承了。
2)C#中类是否支持多继承?请说明原因。
不支持,需要用接口来实现多继承。
九十三、多态?
多态是同一个行为具有多个不同表现形式或形态的能力。
多态就是同一个接口,使用不同的实例而执行不同操作。
多态性是对象多种表现形式的体现。
多态的优点
1. 消除类型之间的耦合关系
2. 可替换性
3. 可扩充性
4. 接口性
5. 灵活性
6. 简化性
多态存在的三个必要条件
继承
重写
父类引用指向子类对象
九十四、接口?
接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。
除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。
接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。
接口与类相似点:
一个接口可以有多个方法。
接口文件保存在 .java 结尾的文件中,文件名使用接口名。
接口的字节码文件保存在 .class 结尾的文件中。
接口相应的字节码文件必须在与包名称相匹配的目录结构中。
接口与类的区别:
接口不能用于实例化对象。
接口没有构造方法。
接口中所有的方法必须是抽象方法,Java 8 之后 接口中可以使用 default 关键字修饰的非抽象方法。
接口不能包含成员变量,除了 static 和 final 变量。
接口不是被类继承了,而是要被类实现。
接口支持多继承。
接口特性
接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)。
接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用 private 修饰会报编译错误)。
接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。
抽象类和接口的区别
1. 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。
2. 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。
3. 接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。
4. 一个类只能继承一个抽象类,而一个类却可以实现多个接口。
九十五、抽象类和抽象接口?
1)接口和抽象类的区别是什么?
接口中所有的方法都不能有实现,并且不能指定方法的修饰符。
抽象类中可以有方法的实现,也可以指定方法的访问修饰符。
第一个继承接口的类必须实现接口里的所有方法
而抽象类中抽象方法的实现是由第一个非抽象的派生类来实现
2)什么时候必须声明一个类为抽象类?
当这个类中有抽象方法的时候,必须声明类为抽象类。
该类没有完全实现父类的抽象方法时,也需要声明为抽象类。
九十六、const和readonly有什么区别?
https://www.cnblogs.com/royenhome/archive/2010/05/22/1741592.html
九十七、webapi接口访问权限的问题,JWT实现?
九十八、SQL Server数据库操作的原子性问题?
https://www.cnblogs.com/xiaoXuZhi/p/xyh_trans_conclude.html
九十九、using关键字几种用法?
https://www.cnblogs.com/qianlang/p/11015352.html
一百、关于秒杀活动的并发问题