马上要到2020年了,这里整理一个.NET 工程师面试题系列,希望年底或者明年金三银四跳槽的程序猿们带来一些帮助,建议收藏,如果文中答案有不准确的地方,请在评论中指出。
前文传送门
- dotNET面试题汇总系列连载(1):基础语法
- dotNET面试题汇总系列连载(2):面向对象
- dotNET面试题汇总系列连载(3):数据库
- dotNET面试题汇总系列连载(4):前端
- dotNET面试题汇总系列连载(5):MVC
- dotNET面试题汇总系列连载(6):集合、异常、泛型、日志
- dotNET面试题汇总系列连载(7):算法
- dotNET面试题汇总系列连载(8):设计模式
- dotNET面试题汇总系列连载(9):HR谈谈人生,说说理想
问题目录
- 1.通常采用的访问修饰符有哪五种
- 2.多态的理解
- 3.什么是构造函数
- 4.重写和重载的区别
- 5.class和struct的异同
- 6.构造函数是否能被重写?
- 7.简述一下面向对象的三大特性
- 8.抽象类和接口有什么区别?
- 9.类的执行顺序
- 10.接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实现类(concrete class)?
- 11.继承最大的好处?
- 12.请说说引用和对象?
- 13.什么是匿名类,有什么好处
- 14.有哪些引用类型,有哪些值类型,有什么区别
- 15.C#中有没有静态构造函数,如果有是做什么用的?
- 16.怎样理解静态变量?静态成员和非静态成员的区别?
- 17.在项目中为什么使用接口?接口的好处是什么?什么是面向接口开发?
- 18.属性能在接口中声明吗?
- 19.什么时候用重载?什么时候用重写?
- 20.静态方法可以访问非静态变量吗?如果不可以为什么?
1.通常采用的访问修饰符有哪五种
public:公开,访问无限制
internal:本项目内可以访问
internal protected:本项目的父子类可以访问
protected:子类可以访问
private:受保护的,只能在奔类中使用,对外完全封闭
2.多态的理解
解释:同一操作作用于不同的对象,实现不同的结果。
作用:增强代码的灵活性,重用性,可读性
实现:通过派生类,覆写基类的虚方法、重写基类的override方法。
3.什么是构造函数
概念:构造函数的方法名与类型相同、没有返回类型
作用:完成对类的对象初始化
创建一个类的新对象时,系统会自动调用该构造函数初始化新对象,
如果没有写定义,那么系统会自动提供一个不带任何参数的public 构造函数
4.重写和重载的区别
重写方法:关键字用override修饰,派生类重写基类的方法,方法命名、返回类型,参数必须相同
重载方法:方法名必须相同,参数列表必须不相同,返回类型可以不相同。
作用:重写主要是实现面向对象的多态性、重载主要是实现实例化不同的对象
5.class和struct的异同?
- 相同点
都可以实现接口
- 不同点
1.class是引用类型,struct是值类型
2.class允许继承、被继承,struct不允许,只能继承接口
3.class可以初始化变量,struct不可以
4.class可以有无参的构造函数,struct不可以,必须是有参的构造函数,而且在有参的构造函数必须初始化所有成员
- 使用场景
1.Class比较适合大的和复杂的数据,表现抽象和多级别的对象层次时。Struct适用于作为经常使用的一些数据组合成的新类型,表示诸如点、矩形等主要用来存储数据的轻量级对象时,偏简单值。
2.Struct有性能优势,Class有面向对象的扩展优势。
6.构造函数是否能被重写?
构造器Constructor不能被继承,因此不能重写,但可以被重载
7.简述一下面向对象的三大特性
- 封装、继承、多态。
- 封装:是通过把对象的属性的实现细节隐藏起来,仅对外提供公共的访问方法。
- 继承:是通过子类继承基类、继承抽象类、继承接口实现的。
- 多态:是通过重写基类的override 方法、重写虚方法实现的。
- 好处是:方便维护、易扩展。
- 缺点是:比面向过程性能低。
8.抽象类和接口有什么区别?
相同点:都不能直接实例化
- 1.抽象类用abstract修饰、接口用interface修饰
- 2.抽象类中的方法可以实现,也可以不实现,有抽象方法的类一定要用abstract修饰,接口中的方法不允许实现
- 3.抽象类只能单继承,接口支持多继承
- 4.抽象类有构造方法,接口不能有构造方法
- 5.接口只负责功能的定义,通过接口来规范类的,(有哪些功能),而抽象类即负责功能的定义有可以实现功能(实现了哪些功能)
9.类的执行顺序
执行顺序:父类,子类,静态块,静态字段,非静态块,非静态字段,构造器,方法
10.接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实现类(concrete class)?
接口可以继承接口,抽象类可以实现接口,抽象类可以继承实现类,但前提是实现类必须有明确的构造函数。
11.继承最大的好处?
对父类成员进行重用,增加代码的可读性、灵活性。
12.请说说引用和对象?
对象和引用时分不开的,对象生成一个地址,放在堆里面,引用则指向这个地址,放在栈里面
13.什么是匿名类,有什么好处
不用定义、没有名字的类,使用一次便可丢弃。好处是简单、随意、临时的。
14.有哪些引用类型,有哪些值类型,有什么区别
- 引用类型:类、接口、委托、字符串、数组
- 值类型:整形、浮点型、结构体、枚举、bool
- 值类型和引用类型的区别在于,值类型的变量直接存放实际的数据,而引用类型的变量存放的则是数据的地址,即对象的引用。
- 默认值,值类型是0,引用类型null。
15.C#中有没有静态构造函数,如果有是做什么用的?
- 特点
静态构造函数既没有访问修饰符,也没有参数。
在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化类。
无法直接调用静态构造函数。在程序中,用户无法控制何时执行静态构造函数。 - 用途
当类使用日志文件时,将使用这种构造函数向日志文件中写入项。
16.怎样理解静态变量?静态成员和非静态成员的区别?
静态变量属于类,而不属于对象;并对所有对象所享;静态成员在加类的时候就被加载。
17.在项目中为什么使用接口?接口的好处是什么?什么是面向接口开发?
- 接口是一种约束,描述类的公共方法/公共属性,不能有任何的实现
- 好处是:结构清晰,类之间通信简单易懂,扩展性好,提高复用性。
- 面向接口开发就是指面向抽象协议编程,实现者在实现时
18.属性能在接口中声明吗?
可以,不能有访问修饰符,不能初始化赋值。
19.什么时候用重载?什么时候用重写?
当一个类需要用不同的实现来做同一件事情,此时应该用重写,而重载是用不同的输入做同一件事情
20.静态方法可以访问非静态变量吗?如果不可以为什么?
静态方法和非静态变量不是同一生命周期,静态方法属于类,非静态变量属于具体的对象,静态方法和具体的对象没有任何关联
作者信息:
【文章信息】:
作者-张林
原文链接-https://blog.csdn.net/kebi007/article/details/103501723
【原创公众号】:dotNet全栈开发。
【简介】:CSDN 博客专家, xamarin跨平台开发者,博客园app开发者(ps:虽然下载量还行10万+,并没有什么大用)这是一个坚持原创的技术公众号,每天坚持推送各种 dotNet 基础/进阶文章,编程技巧,爬虫实战,面试经验,xamarin开发系列不定期分享各类资源。
【福利】:送你新人大礼包一份,关注微信公众号,后台回复:“CSDN” 即可获取!
版权声明:本文为CSDN博主「dotNet全栈开发」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
————————————————
版权声明:本文为CSDN博主「dotnet全栈开发」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/kebi007/article/details/103655685