最近一个搞NET开发的朋友离职了,想让我给他找点关于NET的相关面试题,准备抱一下佛脚,迎接新的挑战。

我赶紧找到以前检索的各种宝典,试题,今天梳理一下关于NET的基础知识点。

1、面向对象语言的三大特性:封装、继承、多态;

2、接口和类有什么异同:

  不同点:

   ①接口不能直接实例化。

   ②接口只包含方法或属性的声明,不包含方法的实现。

   ③接口可以多继承,类只能单继承。

   ④表达的含义不同,接口主要定义一种规范,统一调用方法,也就是规范类,约束类,类是方法功能的实现和集合

 相同点:

   ①接口、类和结构都可以从多个接口继承。

   ②接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员。

   ③接口和类都可以包含事件、索引器、方法和属性。

3、抽象类和接口有什么异同

  ①继承:接口支持多继承;抽象类不能实现多继承。

  ②表达的概念:接口用于规范,更强调契约,抽象类用于共性,强调父子。抽象类是一类事物的高度聚合,那么对于继承抽象类的子类来说,对于抽象类来说,属于"Is A"的关系;而接口是定义行为规            范,强调“Can Do”的关系,因此对于实现接口的子类来说,相对于接口来说,是"行为需要按照接口来完成"。

  ③方法实现:对抽象类中的方法,即可以给出实现部分,也可以不给出;而接口的方法(抽象规则)都不能给出实现部分,接口中方法不能加修饰符。

  ④子类重写:继承类对于两者所涉及方法的实现是不同的。继承类对于抽象类所定义的抽象方法,可以不用重写,也就是说,可以延用抽象类的方法;而对于接口类所定义的方法或者属性来说,在继承类          中必须重写,给出相应的方法和属性实现。

  ⑤新增方法的影响:在抽象类中,新增一个方法的话,继承类中可以不用作任何处理;而对于接口来说,则需要修改继承类,提供新定义的方法。

  ⑥接口可以作用于值类型(枚举可以实现接口)和引用类型;抽象类只能作用于引用类型。

  ⑦接口不能包含字段和已实现的方法,接口只包含方法、属性、索引器、事件的签名;抽象类可以定义字段、属性、包含有实现的方法。

4、virtual、sealed、override和abstract的区别

  ①virtual申明虚方法的关键字,说明该方法可以被重写

  ②sealed说明该类不可被继承

  ③override重写基类的方法

  ④abstract申明抽象类和抽象方法的关键字,抽象方法不提供实现,由子类实现,抽象类不可实例化。

5、重载(override)和重写(overload)有什么区别

  重载:当类包含两个名称相同但签名不同(方法名相同,参数列表不相同)的方法时发生方法重载。用方法重载来提供在语义上完成相同而功能不同的方法。(一个类中、多个方法)

  重写:在类的继承中使用,通过覆写子类方法可以改变父类虚方法的实现。(二个类以上)

6、结构体和类的区别

  ①结构体是值类型,类是引用类型
  ②结构体不支持无惨构造函数,不支持析构函数,并且不能有protected修饰;
  ③结构体常用于数据存储,类class多用于行为;
  ④类class需要用new关键字实例化对象,struct可以不适用new关键字;
  ⑤类class可以为抽象类,struct不支持抽象;

7、out和ref的异同点

  ①ref要求参数在使用之前要显式初始化,out要在方法内部初始化;

  ②out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。

  ③ref是有进有出,out是只出不进;(ref可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空)

8、值类型和引用类型的区别

  ①值类型:就是一个包含实际数据的量。即当定义一个值类型的变量时,C#会根据它所声明的类型,以栈方式分配一块大小相适应的存储区域给这个变量,随后对这个变量的读或写操作就直接在这块内存          区域进行;

  ②引用类型:一个引用类型的变量不存储它们所代表的实际数据,而是存储实际数据的引用。
  引用类型分两步创建:首先在栈上创建一个引用变量,然后在堆上创建对象本身,再把这个内存的句柄(也是内存的首地址)赋给引用变量;

9、什么是拆箱和装箱

  装箱→值类型转换为引用类型,拆箱→引用类型转换为值类型。

10、装箱和拆箱有什么性能影响?怎么解决呢?

  ①影响:都涉及到内存的分配和对象的创建,有较大的性能影响;

  ②解决:使用泛型

11、委托是什么?事件是不是委托?

  ①委托:类似于 C或 C++中的函数指针,允许将方法作为参数进行传递;(可以把一个方法作为参数代入另一个方法)

  ②事件是特殊的委托,事件内部是基于委托来实现的;

12、构造器Constructor是否可以被继承?是否可以被Override?

  Constructor不可以被继承,因此不能被重写(Overriding),但可以被重载(Overloading).

13、是否可以集成String类?

  String类是final类所以不可以继承string类。

14、当一个线程进入一个对象的方法后,其他线程是否可以进入该方法?

  不可以,一个对象的方法只能由一个线程访问。

15、用最有效的方法算出2乘以8等于几?

  2<<3(左乘,右除)

16、Error和Exception有是区别?

  Error表示恢复不是不可能,但是很困难,Exception表示一种实际或实现问题,它表示程序运行正常不可以发生的。

17、UDP和TCP连接有和异同?

  ①TCP是传输控制协议,提供的是面向连接的,是可靠的,字节流服务,TCP提供超时重拨,检验数据功能。

  ②UDP是用户数据报协议,是一个简单的面向数据报的传输协议,是不可靠的连接。

18、new关键字的用法

 ①new 运算符 用于创建对象和调用构造函数。

②new 修饰符 用于向基类成员隐藏继承成员。

③new 约束   用于在泛型声明中约束可能用作类型参数的参数的类型。

19、Using关键字的用法

  ①引用命名空间;

  ②为命名空间或类型创建别名;(using + 别名 = 包括详细命名空间信息的具体的类型)

  ③释放资源(关闭文件流);

20、可访问性级别有哪几种

  ①pubic 访问不受限制。

  ②protected 访问仅限于包含类或从包含类派生的类型。

  ③internal 访问仅限于当前程序集。

  ④protected internal 访问仅限于从包含类派生的当前程序集或类型。

  ⑤private 访问仅限于包含类型。

21、 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现。

22、冒泡排序

所有的参考如下:

C# 相关面试试题简单的总结的更多相关文章

  1. web前端面试试题总结---html篇

    HTML Doctype作用?标准模式与兼容模式各有什么区别? (1).<!DOCTYPE>声明位于位于HTML文档中的第一行,处于 <html> 标签之前.告知浏览器的解析器 ...

  2. web前端面试试题总结---其他

    其他问题 原来公司工作流程是怎么样的,如何与其他人协作的?如何夸部门合作的? 你遇到过比较难的技术问题是?你是如何解决的? 设计模式 知道什么是singleton, factory, strategy ...

  3. web前端面试试题总结---css篇

    CSS 介绍一下标准的CSS的盒子模型?低版本IE的盒子模型有什么不同的? (1)有两种, IE 盒子模型.W3C 盒子模型: (2)盒模型: 内容(content).填充(padding).边界(m ...

  4. web前端面试试题总结---javascript篇

    JavaScript 介绍js的基本数据类型. Undefined.Null.Boolean.Number.String. ECMAScript 2015 新增:Symbol(创建后独一无二且不可变的 ...

  5. 珍藏版 Python 开发工程师面试试题

    珍藏版 Python 开发工程师面试试题 说明:不拿到几家公司的offer,那就是卑鄙的浪费 一.Python_基础语法 1.可变与不可变类型: 2.浅拷贝与深拷贝的实现方式.区别:deepcopy如 ...

  6. 【面试 redis】【第十二篇】redis的相关面试问题

    redis的相关面试问题 redis教程:http://www.redis.net.cn/tutorial/3501.html ==================================== ...

  7. Web前端经典面试试题(二)

    上次由于时间有限只分享了一部分的前端面试题,所以本篇继续分享前端经典面试试题 一. 栈和队列的区别? 栈的插入和删除操作都是在一端进行的,而队列的操作却是在两端进行的. 队列先进先出,栈先进后出. 栈 ...

  8. Redis基础及其相关面试题

    Redis持久化 一.持久化简介 Redis 的数据 全部存储 在 内存 中,如果 突然宕机,数据就会全部丢失,因此必须有一套机制来保证 Redis 的数据不会因为故障而丢失,这种机制就是 Redis ...

  9. spring MyBatis的相关面试题

    (相关面试题! 供参考!) 1.ORM框架有哪些? MyBatis:半自动化框架(不是纯ORM) 需要写动态SQL语句,实体类和SQL语句之间建立映射关系 Spring:轻量级框架, Java EE的 ...

随机推荐

  1. 使用Nginx实现服务器反向代理和负载均衡

    前言 同事总问我Nginx做反向代理负载均衡的问题,因此特意留下一篇扫盲贴! 直接部署服务器的风险 假设,我开发了一个网站,然后买了一台Web服务器和一台数据库服务器,直接部署到公共网络上.如下图,网 ...

  2. git 入门教程之安装 git

    安装 git git 目前支持 Linux/Unix.Solaris.Mac和 Windows 平台上运行,根据自身环境选择安装. Linux 系统 linux 系统安装软件大致有两种途径,一种是利用 ...

  3. Linux中Root密码破解

    1.开机后在选择菜单时按下e进入编辑模式 2.选择linux16这一行,在行末尾添加 rd.break 3.然后Ctrl+x执行.然后进入shell界面: 4.设置密码: 1.重新挂载根目录为读写模式 ...

  4. 无公网IP的阿里云ESC服务器如何访问外部网络

    新购买了3台阿里云ECS服务器(centos7)和弹性公网IP(EIP),虽然是从事计算机行业的人员但俺不是计算机网络从业人员

  5. css属性总结

    前言 有些属性不是很常用,但是工作中遇到了,记录一下,方便学习. 1.text-indent text-indent 属性规定文本块中首行文本的缩进.主要实现就像word那种首行缩进的效果. 详解ht ...

  6. redmine screenshot paste(粘贴截图)

    前言 本文所使用的 redmine 3.1.x 查看redmine版本:以管理员帐号登录 – 点 管理 – 点 信息,示例如下: 在线插件库 插件仓库,可以下载丰富的插件: http://www.re ...

  7. 聚类——KFCM

    聚类——认识KFCM算法 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 一.KFCM概述 KFCM:基于核的改进的模糊c均值聚类算法.它是通过核函数将 ...

  8. Python 列表&元组&字典&集合

    列表(list) 有序性,可存储任意类型的值 通过偏移存取,支持索引来读取元素,第一个索引为0 ,倒数第一个索引为-1 可变性 ,支持切片.合并.删除等操作 可通过索引来向指定位置插入元素 可通过po ...

  9. Spring Data JPA 简单查询--方法定义规则

    一.常用规则速查 1  And 并且2  Or  或3  Is,Equals 等于4  Between  两者之间5  LessThan 小于6  LessThanEqual   小于等于7  Gre ...

  10. 大数据计算平台Spark内核全面解读

    1.Spark介绍 Spark是起源于美国加州大学伯克利分校AMPLab的大数据计算平台,在2010年开源,目前是Apache软件基金会的顶级项目.随着Spark在大数据计算领域的暂露头角,越来越多的 ...