面试题整理: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相关的笔试面试知识点,其他几 ...
随机推荐
- Socket开发框架之数据加密及完整性检查
在前面两篇介绍了Socket框架的设计思路以及数据传输方面的内容,整个框架的设计指导原则就是易于使用及安全性较好,可以用来从客户端到服务端的数据安全传输,那么实现这个目标就需要设计好消息的传输和数据加 ...
- 史上最全系列Android开发环境搭建
一.安装JDK1.JDK下载打开网站http://www.oracle.com/technetwor ... nloads-1880260.html,选择相应的操作系统下载JDK 2.安装JDK本机是 ...
- Java final 修饰符知识点总结
final从字面上理解含义为“最后的,最终的”.在Java中也同样表示出此种含义. final可以用来修饰变量(包括类属性.对象属性.局部变量和形参).方法(包括类方法和对象方法)和类. 1. fin ...
- sqlserver 中存储过程的基础知识记录
1.什么是存储过程? 存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令. 通俗来讲:存储过程其实就是能完成一定操作的一组SQL语句. 2.为什么要用存储过程? 1)存储过程只在创建时进行 ...
- 点击页面任何位置隐藏div
<include file="Public:header" /> <style type="text/css"> table{width ...
- 孙鑫MFC学习笔记19:动态链接库
1.动态链接库 2.静态库和动态库 3.使用动态链接库的好处 4.动态链接库编译需要导出,使用需要导入 __declspec(dllexport),__declspec(dllimport) 5.动态 ...
- js中获取URL中指定的查询字符串
js中获取URL中指定的搜索字符串,主要利用location对象实现,废话少说,上代码. function getSearchString(key) { // 获取URL中?之后的字符 var str ...
- objective-c NSMutableAttributedString
NSMutableAttributedString 是一个很强悍的富文本处理字符串,可以方便的实现一个字符串中某个字符的样式处理.我把我下面代码实现的功能步骤说一下:首先拼接两个字符串,然后给前前半部 ...
- 项目总结笔记系列 Autonomy IDOL Server KT Session1
在说上面这个图之前,先说一下背景知识. Autonomy地址: http://www.autonomy.com.cn http://www.autonomy.com.cn/content/home/i ...
- static关键字详解
首先,要了解一下这些东西的存放位置 堆区: 1.存储的全部是对象,每个对象都包含一个与之对应的class的信息.(class的目的是得到操作指令) 2.jvm只有一个堆区(heap)被所有线程共享,堆 ...