面试题整理:C#(二)
1.类,接口的区别
从定义的角度
类描述一个实体,包括状态、属性和动作
接口定义一类动作,没有实现,也没有状态信息
从程序的角度
接口是函数声明;类是函数实现
接口可以有属性,不能有字段
一个子类只能继承一个父类,但是可以继承多个接口
2.接口和抽象类的区别
抽象类是一类事物的高度聚合,接口是定义行为的规范
抽象类定义方法时,可以有实现,也可以没有
接口中定义的方法,不能有实现
抽象类子类可以不重写抽象方法,继承接口的类必须有方法和属性的实现
3.抽象方法和虚方法的区别
抽象方法使用abstract关键字,虚方法是用virtual关键字
抽象方法必须被派生类重写,虚方法可以不重写
抽象方法可以看作没有实现的虚方法
类包含抽象方法,必须被定义为抽象类
4.Equal()、ReferenceEqual()、== 的区别
对于引用类型
Equal是比较引用的值是否相等
ReferenceEqual比较是否是同一个引用
Object a=new Object();
Object b=a;
Object c=new Object();
Object d=new Object();
c=(object)100;
d=(object)100;
System.Object.Equals(a, b); //return true
System.Object.ReferenceEquals(a, b); //return true
System.Object.Equals(c, d); //return true
System.Object.ReferenceEquals(c, d); //return false
对于值类型,如果操作数的值相等,则相等运算符 (==) 返回 true,否则返回 false。对于 string 以外的引用类型,如果两个操作数引用同一个对象,则 == 返回 true。对于 string 类型,== 比较字符串的值。
5.进程和线程的区别
线程时CPU调度和分配的单位,进程内可以有多个线程,共享进程资源
6.使用Operator的注意事项
需要提供public static修饰符;
需要有返回值;参数类型可以不同;==和!=必须成对出现
7.Task和ThreadPool的区别
ThreadPool不支持线程的取消,完成、失败通知等交互
ThreadPool不支持线程执行的顺序
Task有属性,可以查询任务完成时的状态(IsCanceled\IsCompleted\IsFaulted)
Task没有提供回调时间通知,通过启动一个新任务的方式完成类似的功能。
ContinueWith可以在一个Task完成时发起一个新的任务,支持了任务的完成通知,可以在新任务中获取旧任务的结果
ThreadPool可以节省创建销毁线程消耗的时间,减少内存浪费,和性能损失
8.Sealed关键字的作用
被Sealed类修饰的类和方法不能被继承和重写
9.能用foreach遍历访问的对象需要实现什么接口或者声明什么方法
不一定要实现IEnumerable接口,一定要实现GetEnumerator方法
10.构造函数是否可以被Override
不可以,构造器不能被继承,不能被Override,可以被Overload
TO BE CONTINUE...
面试题整理:C#(二)的更多相关文章
- Touch事件or手机卫士面试题整理回答(二)
Touch事件or手机卫士面试题整理回答(二) 自定义控件 1. Touch事件的传递机制 顶级View->父View->子View,不处理逆向返回 OnInterceptTouchEve ...
- 【IT笔试面试题整理】二叉搜索树转换为双向链表
[试题描述] 将二叉搜索树转换为双向链表 对于二叉搜索树,可以将其转换为双向链表,其中,节点的左子树指针在链表中指向前一个节点,右子树指针在链表中指向后一个节点. 思路一: 采用递归思想,对于二叉搜索 ...
- python面试题整理(二)
1.进程,线程,协程定义,有什么区别 进程是操作系统分配资源的最小单位,一个进程对应一块CPU 线程是进程中的某一个控制单元,是CPU调度的最小单元,线程之间相互独立,进程结束线程也会结束,一个进程至 ...
- iOS开发面试题整理(二)
8 类别的作用?继承和类别在实现中有何区别? 答案:category 可以在不获悉,不改变原来代码的情况下往里面添加新的方法,只能添加,不能删除修改. 并且如果类别和原来类中的方法产生名称冲突,则类别 ...
- php面试题整理(二)
索引,desc 和explain unset只是删除了变量名
- myBatis+Spring+SpringMVC框架面试题整理
myBatis+Spring+SpringMVC框架面试题整理(一) 2018年09月06日 13:36:01 新新许愿树 阅读数 14034更多 分类专栏: SSM 版权声明:本文为博主原创文章 ...
- iOS 面试题整理(带答案)二
第一篇面试题整理: http://www.cocoachina.com/bbs/read.php?tid-459620.html 本篇面试题同样:如答案有问题,欢迎指正! 1.回答person的ret ...
- 尚学堂Java面试题整理
博客分类: 经典分享 1. super()与this()的差别? - 6 - 2. 作用域public,protected,private,以及不写时的差别? - 6 - 3. 编程输出例如以 ...
- 北京Java笔试题整理
北京Java笔试题整理 1.什么是java虚拟机?为什么ava被称作是"平台无关的编程语言? 答:Java虚拟机可以理解为一个特殊的"操作系统",只是它连接的不是硬件,而 ...
- Java笔试面试题整理第八波
转载至:http://blog.csdn.net/shakespeare001/article/details/51388516 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...
随机推荐
- 从C#到Objective-C,循序渐进学习苹果开发(7)--使用FMDB对Sqlite数据库进行操作
本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换历程体验.本篇主要开始介绍基于XCod ...
- JavaScript中的parseInt的进制问题
昨天帮原来同学写个js,碰见个问题,parseInt('08')的结果竟然是0后来突然想过来,是八进制的原因parseInt 方法 返回由字符串转换得到的整数.parseInt(numString, ...
- asp.net中Ajax控件的用途(二)
1.个人觉得对于新手最为实用的PopupControlExtender,弹出层载体,在实例中可以弹出登录框,百度的登陆页面基本都用的这种形式,可以把浮动的panel宽高都设置为100%,以屏蔽底层操作 ...
- ASP.NET 缓存
(一)什么是缓存 缓存是指临时数据或者文件交换区.比方说CPU上的L1或是L2缓存,内存上被划分出来的缓冲区.我们知道CPU的速度是最快的,其次是内存,最后是硬盘,各个部件之间运算速度有很大的差距,但 ...
- 不可或缺 Windows Native 系列文章索引
[源码下载] 不可或缺 Windows Native 系列文章索引 作者:webabcd 1.不可或缺 Windows Native (1) - C 语言: hello c 介绍不可或缺 Window ...
- jsp--- jsp图片上传到了正确路径,但在正确路径显示不出来
首先要说的是,路径里没有中文 图片也在正确路径 ************************************ 刷新(Refresh)一下项目
- Delphi 10.1 Berlin 官方未列之修正
Delphi 10.1 Berlin 官方修正列表: Bug fix list for RAD Studio 10.1 Berlin Delphi 10.1 Berlin 官方未列之修正: 修正 iO ...
- Apache+Mod_Python配置
我其实不是个适合做编程的人,因为喜欢折腾,不喜欢日复一日的重复同样的事情.感觉挺适合做网管(运维)的. 经常在摆弄一些小众的程序员不怎么会关心的东西,不走寻常路.有时也挺纠结的,折腾这些东西的过程中, ...
- MongoDB学习-安装流程
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型. ...
- 2016弱校联盟十一专场10.3---Similarity of Subtrees(深搜+hash、映射)
题目链接 https://acm.bnu.edu.cn/v3/problem_show.php?pid=52310 problem description Define the depth of a ...