.net必问的面试题系列之面向对象
上个月离职了,这几天整理了一些常见的面试题,整理成一个系列给大家分享一下,机会是给有准备的人,面试造火箭,工作拧螺丝,不慌,共勉。
1.net必问的面试题系列之基本概念和语法
2.net必问的面试题系列之面向对象
3.net必问的面试题系列之设计模式
4.net必问的面试题系列之集合、异常、泛型
5.net必问的面试题系列之简单算法
6.net必问的面试题系列之数据库
7.net必问的面试题系列之web前端
1.通常采用的访问修饰符有哪五种
public:公开,访问无限制
internal:本项目内可以访问
internal protected:本项目的父子类可以访问
protected:子类可以访问
private:受保护的,只能在奔类中使用,对外完全封闭
2.多态的理解
解释:同一操作作用于不同的对象,实现不同的结果。
作用:增强代码的灵活性,重用性,可读性
实现:通过派生类,覆写基类的虚方法、重写基类的override方法。
3.什么是构造函数
概念:构造函数的方法名与类型相同、没有返回类型
作用:完成对类的对象初始化
创建一个类的新对象时,系统会自动调用该构造函数初始化新对象,
如果没有写定义,那么系统会自动提供一个不带任何参数的public 构造函数
4.重写和重载的区别
重写方法:关键字用override修饰,派生类重写基类的方法,方法命名、返回类型,参数必须相同,
重载方法:方法名必须相同,参数列表必须不相同,返回类型可以不相同。
作用:重写主要是实现面向对象的多态性、重载主要是实现实例化不同的对象
5.class和struct的异同?
相同点:
1.都可以实现接口
不同点:
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.在项目中为什么使用接口?接口的好处是什么?什么是面向接口开发?
接口是一种约束,描述类的公共方法/公共属性,不能有任何的实现
好处是:结构清晰,类之间通信简单易懂,扩展性好,提高复用性。
面向接口开发就是指面向抽象协议编程,实现者在实现时
.net必问的面试题系列之面向对象的更多相关文章
- net必问的面试题系列之基本概念和语法
上个月离职了,这几天整理了一些常见的面试题,整理成一个系列给大家分享一下,机会是给有准备的人,面试造火箭,工作拧螺丝,不慌,共勉. 1.net必问的面试题系列之基本概念和语法 2.net必问的面试题系 ...
- .NET面试题系列[0] - 写在前面
.NET面试题系列目录 .NET面试题系列[1] - .NET框架基础知识(1) .NET面试题系列[2] - .NET框架基础知识(2) .NET面试题系列[3] - C# 基础知识(1) .NET ...
- 【转载】.NET面试题系列[0] - 写在前面
原文:.NET面试题系列[0] - 写在前面 索引: .NET框架基础知识[1] - .NET框架基础知识(1) http://www.cnblogs.com/haoyifei/p/5643689.h ...
- .NET面试题系列
索引: .NET框架基础知识[1] - http://www.cnblogs.com/haoyifei/p/5643689.html .NET框架基础知识[2] - http://www.cnblog ...
- 互联网公司面试必问的mysql题目(下)
这是mysql系列的下篇,上篇文章地址我附在文末. 什么是数据库索引?索引有哪几种类型?什么是最左前缀原则?索引算法有哪些?有什么区别? 索引是对数据库表中一列或多列的值进行排序的一种结构.一个非常恰 ...
- (转)面试前必知Redis面试题—缓存雪崩+穿透+缓存与数据库双写一致问题
背景:redis问题在面试过程中经常被问到,对于常见问题一定不能放过. 面试前必知Redis面试题—缓存雪崩+穿透+缓存与数据库双写一致问题 一.缓存雪崩 1.1什么是缓存雪崩? 如果缓存数据设置的过 ...
- 高级测试工程师面试必问面试基础整理——python基础(一)(首发公众号:子安之路)
现在深圳市场行情,高级测试工程师因为都需要对编程语言有较高的要求,但是大部分又没有python笔试机试题,所以面试必问python基础,这里我整理一下python基本概念,陆续收集到面试中python ...
- Java面试必问之Hashmap底层实现原理(JDK1.7)
1. 前言 Hashmap可以说是Java面试必问的,一般的面试题会问: Hashmap有哪些特性? Hashmap底层实现原理(get\put\resize) Hashmap怎么解决hash冲突? ...
- Java容器--2021面试题系列教程(附答案解析)--大白话解读--JavaPub版本
Java容器--2021面试题系列教程(附答案解析)--大白话解读--JavaPub版本 前言 序言 再高大上的框架,也需要扎实的基础才能玩转,高频面试问题更是基础中的高频实战要点. 适合阅读人群 J ...
随机推荐
- 将 unsiged char 转换成对应的十六进制字符用以显示出来如 unsiged char a[]={0x00,0x01,0x30,0x38}转化为“00013038”
int CEnCryptionAndDeCryptionDlg::Byte2Hex(const unsigned char* input,unsigned long inLen, unsigned c ...
- 洛谷P2055 [ZJOI2009]假期的宿舍 题解
题目链接: https://www.luogu.org/problemnew/show/P2055 分析: 这道题比较简单,二分图的练习题(当然最大流同理). 易得我们可以将人放在一侧,床放在一侧. ...
- 【CodeForces - 1167C 】News Distribution(并查集)
News Distribution 题意 大概就是分成几个小团体,给每个人用1 - n编号,当对某个人传播消息的时候,整个小团体就知道这个消息,输出 分别对1 - n编号的某个人传递消息时,有多少人知 ...
- 个人永久性免费-Excel催化剂功能第56波-获取Excel对象属性相关自定义函数
之前零散开发过一些自定义函数获取Excel对象属性,此次再细细地把有价值的属性都一一给开发完成,某些场景下,有这些小函数还是可以比较方便地实现一些通过Excel界面没法轻松获取到的信息. 修复与更新 ...
- [PTA] 数据结构与算法题目集 6-11 先序输出叶结点
//函数PreorderPrintLeaves应按照先序遍历的顺序输出给定二叉树BT的叶结点,格式为一个空格跟着一个字符. void PreorderPrintLeaves(BinTree BT) { ...
- Linux 下载文件命令(wget)
wget是Linux最常用的下载命令, 一般的使用方法是: wget + 空格 + 要下载文件的url路径 例如: # wget http://www.linuxsense.org/xxxx/xxx. ...
- TP框架基础(一)
[使用框架] 官网:thinkphp.cn. 目前建议使用thinkPHP3.2版本 一.结构目录>Thinkphp文件夹,是thinkPHP的核心文件,里面的内容是不允许我们修改的 > ...
- jquery的addClass、removeClass、toggleClass方法
1.addClass()添加类 1.1 用jquery为某一个元素添加类 $("div").addClass("active");//给div元素添加activ ...
- 深入学习 Intellij IDEA 调试技巧
程序员的日常工作除了写代码之外,很大一部分时间将会在查找 BUG,解决问题.查找 BUG,离不开在 IDE 中调试代码.熟练的掌握调试技巧,可以帮助我们减少查找时间,快速定位问题. 在 IDEA 中调 ...
- 前端工程师和设计师必备的chrome插件
Google Chrome是最好用的几个浏览器之一,今天我来分享下自己收集的一系列Chrome插件,希望对大家的学习和工作有帮助. 注:你可以通过复制链接或者在谷歌商店搜索相应插件的名称来获取以下插件 ...