C# 面试题 (二)
1. 什么是C#?
C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。
C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。
2. C#的有哪些注释类型?
C#中有三种注释类型。
单行(//)
多行(/* */)
Page/XML 注释(///)。
3. C#.NET中使用的命名空间有哪些?
命名空间是类型的逻辑分组。
using System;
using System.Collections.Generic;
using System.Windows.Forms;
4. C#有哪些特点?
C#有以下特点:
简单
类型安全
灵活
面向对象
兼容
持久化
互操作性
有别于传统
5. 继承有哪些不同的类别?
在面向对象编程中继承的四种类型:
单继承:包括一个基类和一个派生类。
多层继承(Hierarchical inheritance) :包括一个基类和继承自同一个基类的派生类。
多级继承(Multilevel inheritance):包括从一个派生类派生出来的类。
多重继承(Multiple inheritance):包括多个基类和一个派生类。
6. 面向对象编程的基本概念是什么?
有必要理解一些在面向对象编程中广泛使用的概念。它们包括:
对象
类
数据抽象和封装
继承
多态性
动态绑定
信息传递。
7. 你可以继承多个接口吗?
可以的。在C#中可能继承多个接口。
8. 什么是继承?
继承是从一个已经存在的类中派生出来的新类。
9. Define scope?定义作用域?
作用域指的是代码中一个变量可以被访问的区域。
10. public、static和void之间的区别是什么?
public:关键字public是访问修饰符,用来告诉C#编译器主(Main)方法可以被任何人调用。
static:关键字static表明主(Main)方法是一个全局方法,不需要穿件类实例即可访问。编译器储存该方法的地址作为切入点,并利用这个信息在任何对象创建之前开始执行它。
void:关键字void是一个类型修饰符表明主(Main)方法不返回任何值。
11. C#中的修饰符有哪些?
Abstract
Sealed
Virtual
Const
Event
Extern
Override
Readonly
Static
New
12. C#中访问修饰符的种类有哪些?
C#中的访问修饰符是:
public
protect
private
internal
internal protect
13. 什么是装箱和拆箱?
变量值类型隐式转换为引用类型成为装箱,例如integer到object的类型转换。
引用类型变量转换回值类型成为拆箱。
14. 对象是什么?
对象是类的实例。对象的创建使用new操作。一个类在内存中创建一个对象,将包含特定对象的值和行为(或者方法)的信息。
15. C#中有哪些类型的数组?
一维数组(Single-Dimensional)
多维数组(Multidimensional)
交错数组(Jagged arrays)。
16. 对象和实例之间的区别是什么?
用户定义的类型的实例称为一个对象。我们可以从一个类实例化很多对象。
对象是类的实例。
17. Define destructors?定义析构函数?
当类对象超出作用域或者被明确删除的时候,析构函数被调用。析构函数,顾名思义是用来销毁由构造函数创建的对象的。正如构造函数,析构函数是一个类成员方法,方法名和类名相同,只是由波浪号开头。
18. 枚举数据类型怎么用?
枚举类型是另一种用户定义类型,它提供了一种连接名字为数字的方式,从而提高了代码的可理解性。enum关键字自动地枚举一组词,赋予它们的值为0,1,2并以此类推。
19. 定义构造函数?
构造函数是和它的类同名的成员方法。每当创建其关联的类的对象时构造函数都会被调用。它之所以被称为构造函数是因为它构造了类的数据成员的值。
20. 什么是封装?
包装数据和功能成为一个单元(称为类)就被称为封装。封装包含并且隐藏对象信息,例如内部数据结构和代码。
21. C#支持多重继承吗?
不支持,它不可能。支持多级继承。
22. 什么是ENUM?
Enum用于定义常量。
23. 数据集是什么?
数据集(DataSet)是从任何数据源载入数据的内存表示。
24. private和public关键字的区别是什么?
Private:关键字private是默认访问级别,并且在所有其他访问级别中是最严格的。它给予一个类型或者类型成员最小的权限。私有成员仅仅在声明其的类体中可以被访问。
Public:关键字public是所有访问级别中最自由地,没有任何访问限制。公共成员的访问不仅可以来自外部,也可以来自内部,并且可以自由访问定义在类体内或者体外的任何成员。
25. 定义多态性?
多态性意味着一个名字,多种形式。它使我们在一个程序中可以定义一个以上相同名字的方法。它让我们重载操作以便这样的操作可以对不同的实例表现不同的行为。
26. 什么是交错数组?
交错数组是元素为数组的数组。
交错数组元素的维度和大小可以不同。
交错数组有时称为“数组的数组”。
27. 什么是抽象基类?
抽象类是被设计为专门用于作为基类的类。抽象类至少还有一个纯虚方法。
28. 方法重写和方法重载有什么区别?
当重写一个方法时,你改变了派生类中方法的行为。重载方法只涉及在类中另一个同名的方法。
29. ref和out参数之间的区别是什么?
传递给ref参数的参数必须先初始化。与此相比,对out参数来说,在参数传递给out参数之前不需要显示初始化。
30. C#中using语句怎么用?
using语句通常是获取资源,执行语句,然后释放该资源。
31. 什么是序列化?
序列化(Serialization)是将对象转换为字节流的过程。
反序列化(De-serialization)是从字节流创建对象这样相反的过程。
序列化/反序列化常用于传递对象。
32. 结构和类之间有什么区别?
结构是值类型,类是引用类型。
结构不能有构造函数和析构函数。
类可以同时有构造函数和析构函数。
结构不支持继承,而类支持继承。
33. 类和接口之间有什么区别?
类(Class)是对象的逻辑表示。它是数据集合和相关子过程的定义。
接口(Interface)也是一个类,包含没有任何方法体定义的方法。类不支持多重继承,但是接口支持。
34. 什么是委托?
委托是类型安全,面向对象的函数指针的实现,并且在许多一个组件需要回调到使用它的组件这样的情况下使用。
35. 什么是认证与授权?
认证是识别用户的过程。认证是以证书(用户名和密码)来识别/验证用户。
授权在认证之后执行。授权是一个基于这些用户身份授予访问权限的过程。
授权允许用户对特定资源的访问。
36. 什么是基类?
类声明可以通过类名加一个冒号和基类名来指定基类。省略基类说明等同于从object类派生。
37. “this”可以在静态方法中用吗?
不,‘This’不能在静态方法中使用。仅仅只有静态变量/方法可以在静态方法中使用。
38. constants、readonly和static之间的区别是什么?
Constants: 值不能变。
Read-only: 值在类的构造函数中仅仅初始化一次。
Static: 值可以被初始化一次。
39. C#中支持哪些语句类型?
C#支持的几种不同的语句类型是
块语句
声明语句
表达式语句
选择语句
迭代语句
跳转语句
异常处理语句
检查和未检查
Lock语句
40. 什么是接口类?
它是一个抽象类,所有公共抽象方法必须要在其继承类中实现。
41. 什么是值类型和引用类型?
值类型存储在堆栈中。
例如: bool, byte, chat, decimal, double, enum, float, int, long, sbyte, short, strut, uint, ulong, ushort。
引用类型存储在托管堆中。
例如: class, delegate, interface, object, string。
42. 关键字string和System.String类之间有什么区别?
关键字string是System.String类的别名。所以,System.String和关键字string是一样的,你可以使用任何你喜欢的命名约定。String类提供了许多方法用于安全创建,操作和比较字符串。
43. C#中提供的两种数据类型是什么?
值类型
引用类型
44. 有哪些缓存的种类?
有三种类型的缓存:
输出缓存(Output Caching):存储asp.net页面的应答信息。
片段缓存(Fragment Caching):仅缓存/存储部分页面内容(用户控制)。
数据缓存(Data Caching):为了性能通过编程的方式来缓存对象。
45. 自定义控件和用户控件之间的区别是什么?
自定义控件是编译后的代码(Dlls),容易使用,创建困难,可以放在工具箱。拖拉使用的控件。
属性可以直观地在设计时指定。可以被多个应用程序使用(如果共享Dlls),即使是私有的也能拷贝到web应用程序的bin目录,添加引用和使用。通常是用来为独立的消费应用程序提供公用功能。
用户控件和ASP的include文件,轻松创建,不能放置在箱中来拖拉放置它。用户控件在单个应用程序文件之间共享。
46. 什么是方法?
方法是由对象或者类执行来实现计算或者操作的成员。静态方法通过类访问。实例方法通过类的实例来访问。
47. 什么是域?
域是类或者类的实例相关的变量。
48. 什么是事件?
事件是使一个类或对象能够提供通知的成员。事件声明像域声明一样,除了声明包含event关键字并且类型必须为委托类型。
49.什么是文本和它们的类型?
文本是程序分配给变量的值常量。C#支持的几种文本类型是
整数(Integer literals)
实数(Real literals)
布尔值(Boolean literals)
单字符(Single character literals)
字符串(String literals)
反斜线(Backslash character literals)
50. 值类型和引用类型的区别是什么?
值类型存储在堆栈上,是一个变量的值赋值给另一个变量。
引用类型存储在托管堆上,是两个引用变量之间的发生赋值。
51. C#有什么特性?
C#是一个简单而强大的编程语言,用于编写企业版的应用程序。
它是C++和VB的混合体。它保留了许多C++特性,如语句,表达式和运算符并结合了VB的生产力。
C#帮助开发者轻易地构建网络服务,能够通过任何语言,任何平台来访问Internet。
C#帮助开发者用更少的代码完成开发,从而在代码中错误更少。
C#引入了相当大的改进和创新,如类型安全,版本控制,事件和垃圾收集这些领域。
52. 错误的类型是什么?
语法错误(Syntax error)
逻辑错误(Logic error)
运行时错误(Runtime error)
53. break和continue语句之间有什么区别?
break语句是用来终止当前封闭循环或者它所在的条件语句的。我们已经使用break语句跳出switch语句。
continue语句是用来改变执行顺序的。和break语句那样跳出循环相反,continue语句停止当前迭代并且只将控制返回到循环顶部。
54. 定义命名空间?
命名空间被称为容器,用来组织分层的.NET类。
55. 什么是代码组?
代码组是一组共享安全上下文的套件。
56. C#中什么是密封类?
sealed修饰符用来阻止从一个类派生。如果一个密封类被指定为另一个类的基类时会发生编译时错误。
57. 静态方法和实例方法的区别是什么?
以static修饰符声明的方法是静态方法。静态方法不操作具体的实例,并且只能被静态成员访问。
没有以static修饰符声明的方法是实例方法。实例方法操作一个具体的实例并且可以被静态和实例成员访问。在其上调用实例方法的实例可以像这样显示访问。在静态方法中这么调用是错误的。
58. C#中有哪些变量的类型?
C#中不同的变量类型是:
静态变量(static variables)
实例变量(instance variable)
值参数(value parameters)
引用参数(reference parameters)
数组元素(array elements)
输出参数(output parameters)
局部变量(local variables)
59. 方法重载是什么意思?
方法重载允许在同一个类中的多个方法有相同的名字,只要它们具有独特的签名。当编译一个重载方法的调用时,编译器使用重载决策决定具体调用的方法。
60. 什么是参数?
参数是用来传递值或者变量引用给方法的。方法的参数从被调用方法时指定的参数得到它们实际的值。有四种参数:值参数,引用参数,输出参数和参数数组。
61. C#是面向对象的语言吗?
是的,C#和传统的Java及C++一样是面向对象的语言。
62. Array和Arraylist之间的区别是什么?
数组是相同类型的集合。数组大小在它声明的时候就固定了。链表和数组相似,但它没有固定的大小。
63. C#中有什么特殊的运算符?
C#支持一下特殊运算符。
is (关系运算符)
as (关系运算符)
typeof (类型运算符)
sizeof (大小运算符,用于获取非托管类的大小)
new (对象运算符)
.dot (成员访问运算符)
checked (溢出检查)
unchecked?(防止溢出检查)
64. C#中运算符的含义是什么?
运算符是界定了对类实例应用特定的运算表达式内涵的成员。可以定义三种类型的运算符:一元运算符,二元运算符和转换运算符。所有的运算符必须声明为public和static的。
65. 什么是类型参数化?
类型参数化是一个类型在另一个值或者类型之上参数化。
C# 面试题 (二)的更多相关文章
- 数据库基础SQL知识面试题二
数据库基础SQL知识面试题二 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.选课系统SQL语法练习 course数据库中有以下四张表: •students表(学生表): si ...
- C/C++常考面试题(二)
网上看到的面经,说是dynamic_cast的实现,和RTTI的相关,这才发现原来对这个概念这么模糊,所以作了这个总结. C/C++常考面试题(二) RTTI(Runtime Type Informa ...
- php面试题二--解决网站大流量高并发方案(从url到硬盘来解决高并发方案总结)
php面试题二--解决网站大流量高并发方案(从url到硬盘来解决高并发方案总结) 一.总结 从外到内解决网站大流量高并发问题---从提交一个url开始(从用户按下搜索栏回车键开始) url最开始会到d ...
- php开发面试题---2、php常用面试题二(表单提交方式中的get和post有什么区别)
php开发面试题---2.php常用面试题二(表单提交方式中的get和post有什么区别) 一.总结 一句话总结: 数据位置:get参数在url里面,post在主体里面 数据大小:get几kb,pos ...
- C++经典面试题(二)
近期看一些面试题,认为假设自己被问到了,并不能非常利落的回答出来. 一是从来没有这个意识,二是没有认真的梳理下. 以下对这些题做出分析,哈!个人能力有限,当中难免有疏漏,欢迎大家补充咯. 11.引用与 ...
- JAVA面试题二
JAVA 综合面试题 2007-08-12 目录 Java面试题整理 9 Java面向对象 9 1. super()与this()的区别? 9 2. 作用域public,protected,priva ...
- Java面试题(二)
系统整理了一下有关Java的面试题,包括基础篇,javaweb篇,框架篇,数据库篇,多线程篇,并发篇,算法篇等等,陆续更新中.其他方面如前端后端等等的面试题也在整理中,都会有的. 注:文末有福利! 1 ...
- Java常考面试题(二)
序言 昨天刚开始的”每日5题面试“这类文章,感觉还不错,把一些平常看似懂了的东西,弄清楚了.就像什么是虚拟机?这个问题,看起来知道,但是要说出个所以然来,又懵逼了,经常回过头来看看做过的面试题,试着用 ...
- C# 面试题 二
1.进程和线程的区别 进程是系统进行资源分配和调度的单位:线程是CPU调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源. 2.成员变量和成员函数前加static的作用 它们被称为常 ...
- python面试题(二)
最近参加了几场招聘,发现好多人的一些基础知识不是很扎实,做的题很多都是错误的,因此找了一些我们公司面试过程中的一些最基本的面试题供大家参考,希望各位都能找到一个好的工作.今天给大家先分享的是关于Pyt ...
随机推荐
- Future Research Directions in Social Recommendation
From the tutorial published by Martin Ester in RecSys 2013 Future Research Directions --Recommendati ...
- phoneGap的Android下编写phonegap 发送短信插件
一.前端代码的编写 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...
- Yii 验证和消息
setFlash(), getFlash()可以完成验证成功后提示 <?php # 成功信息提示 Yii::app()->user->setFlash('success', &quo ...
- springmvc小结(下)
1.@ModelAttribute 1.给共享的数据设置model数据设置,贴在形参上,也可以贴在方法上,设置一个model的key值 2.当controller方法返回一个对象的时候,,缺省值会把当 ...
- 使用Timer组件_实现定时更改窗体颜色
1 向窗体拖入Timer组件 2 更改其Enable属性为true 3 其interval属性为300 4 在Tick事件中写入随机变色代码 private void timer1_Tick(obje ...
- position和BFC
一.关于position流定位:不能通过left/top属性来进行定位(那用什么定位),上下排列的元素纵向边距会被合并,左右元素横向边距不会合并.浮动定位:脱离文本流,就好像不在父元素中,像是浮在父元 ...
- python 爬虫简介以及使用方法
阶段大纲: 一. 爬虫 1. 基本操作 - 登录任意网站(伪造浏览器的任何行为) 2. 性能相关 - 并发方案: - 异步IO: gevent/Twisted/asyncio/aiohttp - 自定 ...
- Reading Notes : 180213 计算机的硬件构成与处理流程
读书<计算机组成原理>,<鸟哥的Linux私房菜基础篇> 基本上接触过计算机的人,都多少知道计算机的具体构成,但是真正能讲明白的却说了很多,本节将讲解一下计算机的基本硬件构成和 ...
- insert插入数据
insert 语法1 --插入的值需要用单引号引起来,否则字段插入会有问题,可能造成查询的时候查询不出结果 insert into 表名 (列名1,列名2……) ] values ( '值1' ...
- MongoTemplate复合条件查询
分. 排序.按时间查询 Query query = new Query(); //必须条件 Criteria c = Criteria.where("VINID& ...