面试题整理: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...

时间: 2024-11-05 16:22:48

面试题整理:C#(二)的相关文章

Touch事件or手机卫士面试题整理回答(二)

Touch事件or手机卫士面试题整理回答(二) 自定义控件 1. Touch事件的传递机制 顶级View->父View->子View,不处理逆向返回 OnInterceptTouchEvent(),返回值控制Touch是否向下传递. true中断事件,false不中断事件. onTouchEvent() 返回值决定否处理事件.True消耗事件,False不处理事件向上传递. 2. 轮播动画的实现原理 ViewPage和TextView组合实现图片和标题的效果 ViewPage设置setOnPa

python面试题整理(二)

1.进程,线程,协程定义,有什么区别 进程是操作系统分配资源的最小单位,一个进程对应一块CPU 线程是进程中的某一个控制单元,是CPU调度的最小单元,线程之间相互独立,进程结束线程也会结束,一个进程至少要有一个线程 协程是更加轻量级的存在,不是由CPU进程管理而是由程序员管理,在执行一个函数过程中可以中断执行另一个函数,执行一个函数过程就叫协程,python3以前使用yield表示协程,yield关键字一般用于做生成器,实现在函数中暂停的效果,python3.3以后出现yield from后面跟

myBatis+Spring+SpringMVC框架面试题整理

myBatis+Spring+SpringMVC框架面试题整理(一) 2018年09月06日 13:36:01 新新许愿树 阅读数 14034更多 分类专栏: SSM 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_41541619/article/details/82459873 目录 ■ SpringMVC 的工作原理 ■ 谈谈你对SpringMVC的理解 ■ SpringMVC

海量数据面试题整理1.给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是

海量数据面试题整理 1. 给定a.b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a.b文件共同的url? 方案1:可以估计每个文件安的大小为50G×64=320G,远远大于内存限制的4G.所以不可能将其完全加载到内存中处理.考虑采取分而治之的方法. s 遍历文件a,对每个url求取,然后根据所取得的值将url分别存储到1000个小文件(记为)中.这样每个小文件的大约为300M. s 遍历文件b,采取和a相同的方式将url分别存储到1000各小文件(记为).这样

Java笔试面试题整理第八波

本系列整理Java相关的笔试面试知识点,其他几篇文章如下: Java笔试面试题整理第七波 Java笔试面试题整理第六波 Java笔试面试题整理第五波 Java笔试面试题整理第四波 Java笔试面试题整理第三波 Java笔试面试题整理第二波 Java笔试面试题整理第一波 1.运算符相关 What results from the following code fragment? inti = 5; intj = 10; System.out.println(i + ~j); A.Compilati

.Net 面试题整理(一)

.Net 面试题整理(一) 好久的资料了,拿出来分享给大家,主要是记录一些面试题整理. Main函数是什么?在程序中使用Main函数有什么需要注意的地方? Q:程序的入口函数!函数名字不能改变:一个程序中有且只有一个Main函数. CLR是什么?程序集是什么?当运行一个程序集的时候,CLR做了什么事情? Q:Common Language RunTime 公共语言运行时. 编译后代码的集合.(包括exe和dll). 加载项目里所有的类到内存,并找到其中的主函数,并作为默认的启动函数调用执行. 值

数据库面试题整理

数据库 以下是对面试常见面试题整理,来自知乎大神分享的pdf,引用部分链接已给出,如果有没有标注的,纯属意外,希望提醒.这篇主要整理出来给自己看的 B/B+树 B/B+ 一.B树: 定义:B 树又叫平衡多路查找树.一棵m阶的B 树 的特性如下: 树中每个结点最多含有m个孩子(m>=2): 除根结点和叶子结点外,其它每个结点至少有[ceil(m / 2)]个孩子(其中ceil(x)是一个取上限的函数): 若根结点不是叶子结点,则至少有2个孩子(特殊情况:没有孩子的根结点,即根结点为叶子结点,整棵树

MyBatis概念性面试题整理汇总

MyBatis概念性面试题整理汇总 MyBatis常见的概念性面试题 一.概念性填空题 1.#{}和$ {}的区别是什么?#{}是_____,${}是_____. 2.四个核心接口是()用于执行CRUD操作.()处理SQL的参数.()处理返回结果集.()用于执行SQL语句. 3.MyBatis中提供了一级缓存和二级缓存,其中()默认存在,不可控制,同一SqlSession范围内的操作共享该缓存,增.删.改后将(). 4.Mybatis的Xml映射文件中,不同的Xml映射文件,id是否可以重复?

Web网站服务及知识整理(二)

Web网站服务及知识整理(二)

小鹿·试题整理

1)在RHEL5系统中,以下命令(C)可用来查看系统的路由表信息 A) ip add list B) show ip route C) route -n D) route --print 补充:查看网络接口信息 ifconfig 查看网络连接情况 netstat 跟踪数据包       traceroute 目标主机地址 域名解析         nslookup 目标主机地址 2)在Linux系统日志消息中,重要性最低的是(C)级别,表示正常的程序或系统调试信息. A)EMERG B) WAR