C# 面试题大全

     1.    类成员有 2 种可访问形式?注:this.       new Class().Method

2.    public static const int A=1;这段代码有错误么?是什么? const成员都是static所以应该去掉static.

3.    float f=-123.567F;  int i=(int)f;
i
的值现在是  -123

4.    利用operator声明且仅声明了==,有什么错误么要同时修改EqualeGetHash() ?  重载了"==" 就必须重载 "!="     注:operator是运算符重载

5.    面向对象的语言具有 继承性封装性多态性

 

6.    能用foreach遍历访问的对象需要实现 IEnumerable 接口或声明  GetEnumerator 方法的类型。

 

7.    sealed修饰的类有什么特点? 不可被继承

 

8.    .Net中所有可序列化的类都被标记为 [serializable]

 

9.    .Net托管代码中我们不用担心内存漏洞,这是因为有了 GC  

 

10.  下面的代码中有什么错误吗?

using System;
class A
{
    public virtual void F(){
         Console.WriteLine("A.F");
    }
}
abstract class B:A
{
    public abstract override void F();
}

abstract override 是不可以一起修饰

11.  当类T只声明了私有实例构造函数时,则在T的程序文本外部, 不可以 (可以 or 不可以)从T派生出新的类, 不可以 (可以 or 不可以)直接创建T的任何实例。

 

12.  try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
    答:会执行,在return前执行。

 

13.  简述 private protected public internal 修饰符的访问权限。

private: 私有成员, 在类的内部才可以访问。 

protected: 保护成员,该类内部和继承类中可以访问,可以跨程序集。 

public: 公共成员,完全公开,没有访问限制。 

internal: 在同一命名空间内可以访问,可以跨类。 

protected internal(同internal protected):当前程序集里的当前类、当前类的派生类都可以访问,但其他程序集派生当前类的不能访问。

private < protected internal(internal protected) < protected / internal < public

14.  列举ASP.NET 页面之间传递值的几种方式。

1. 使用QueryString, 如....?id=1; response. Redirect()....
2.使用Session变量
3.使用Server.Transfer

15.  请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。

1.session(viewstate) 简单,但易丢失
2.application 全局
3.cookie 简单,但可能不支持,可能被伪造
4.input type="hidden" 简单,可能被伪造
5.url参数简单,显示于地址栏,长度有限
6.数据库稳定,安全,但性能相对弱

16.  重写(override)与重载(overload)的区别。

重写(override)用来重写父类有相同名称和参数的方法;重载(overload)使用相同名的方法但有不同的参数个数或不同的参数类型。

17.  .net的错误处理机制是什么

.net错误处理机制采用try->catch->finally结构,发生错误时,层层上抛,直到找到匹配的Catch为止。

18.  C#中接口和类的异同

接口和类都是类。不同的

接口只包含方法和属性的声明,不包含具体实现方法的代码,接口可以实现多继承,接口主要定义一种规范,统一调用方法。

类只能是单继承,继承接口的类必须实现接口中声明的方法或属性。

 

19.  DataReaderDataSet的异同

DataReader和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection,在线操作数据库,任何对SqlConnection的操作都会引发DataReader的异常,因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的,因为DataReader的特殊性和高性能,所以DataReader是只进的,你读了第一条后就不能再去读取第一条了。

DataSet则是将数据一次性加载在内存中,抛弃数据库连接,读取完毕即放弃数据库连接,因为DataSet将数据全部加载在内存中.所以比较消耗内存,但是确比DataReader要灵活,可以动态的添加行、列、数据,对数据库进行回传更新操作。

20.  c#usingnew这两个关键字有什么意义,请写出你所知道的意义?

Using 引入一个命名空间,或在使用了一个对像后自动调用其IDespose。

New 实例化一个对像;或修饰一个方法,表此完全重写此方法

 

21.  using System;
class A
{
     public A(){
           PrintFields();
     }
     public virtual void PrintFields(){

      Console.WriteLine("This is class B method!");//(加不加都一样)

}
}
class B:A
{
     int x=1;
     int y;
     public B()
[:base()]{
          y=-1;
     }
     public override void PrintFields(){
          Console.WriteLine("x={0},y={1}",x,y);
     }

}
当使用new B()创建B的实例时,产生什么输出?X=1,Y=0

分析:1.在new B时会先调父类即A的构造函数,这时会执行PrintFields()方法,因为PrintFields为虚拟方法,在子类中又重写了该方法,所以实际执行是子类B中的PrintFields()方法;

        2.为什么y=0? 这是因为调用的是父类的构造函数,子类B中的y还没有初始化,系统赋值为0.

 

22.  谈谈类和结构的区别?

结构(struct): 值类型,不能被继承(可以继承接口),没有默认的构造函数(可以添加构造函数)和析构函数,不能有abstract、sealed(因为不能被继承)、protected.

类(class): 引用类型,完全可扩展,有默认的构造函数(还可以添加构造函数)和析构函数.

23.  .netC# or vb.net)中,Appplication.Exit 还是 Form.Close有什么不同?
答案:一个是退出整个应用程序,一个是关闭其中一个form

 

24.  C#中有一个double型的变量,比如10321.5122235401.21644,作为货币的值如何按各个不同国家的习惯来输出?(比如美国用$10,321.50$122235401.22而在英国则为£10 321.50和£122 235 401.22)

System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo("en-US");

//System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo("en-GB");//为英国货币类型

decimal y = 10321.5m;

string str = String.Format(MyCulture,"My amount = {0:c}",y);

输出:$10,321.5(美国); £10,321.5(英国)

 

25.  概述反射和序列化
反射: 程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性
序列化: 序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。

 

26.  概述O/R Mapping 的原理
利用反射,配置将类于数据库表映射

 

27.  密封sealed修饰的类有什么特点
sealed 修饰符用于防止从所修饰的类派生出其它类。如果一个密封类被指定为其它类的基类,则会发生编译时错误。
密封类不能同时为抽象类。
sealed 修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。

 

28.  概述.NET里对 remoting webservice 两项技术的理解和实际中的应用
webservice: 平台独立性, 跨语言, 穿透企业防火墙,基于http的是无状态的, 速度比较慢。

Remoting: 既可以使用TCP信道进行二进制流方式通信,也可以使用HTTP信道进行SOAP格式的通信,可以用于有状态的情况,效率相对WebService要高不少,

只能应用于.net framework之下。

 

29.  什么是code-behind技术

代码分离技术,也就是.net中的HTML代码(.aspx)和程序代码(.cs)分别位于不同的文件

 

30.  什么叫应用程序域?

应用程序域为安全性、可靠性、版本控制以及卸载程序集提供了隔离边界。应用程序域通常由运行库宿主创建,运行库宿主负责在运行应用程序之前引导公共语言运行库。

 

31.  什么是受管制的代码?

在CLR虚拟机中运行的代码(在.net环境中运行的代码都称之为受管制的代码)。

在.net环境之外,在Windows上运行的代码称之为不受管制的代码

 

32.  什么是强类型系统?

C# 是强类型语言;因为每个变量和对象都必须具有声明类型。

 

33.  什么是装箱和拆箱?

装箱就是隐式的将一个值型转换为引用型对象。

     拆箱就是将一个引用型对象转换成任意值类型

 

34.  CTSCLSCLR分别作何解释

CTS: 通用类型系统(Common Type System)

CLS: 公共语言定义(Common Language Specification)

CLR: 公共语言运行时(common language runtime)

 

35.  值类型和引用类型的区别?

值类型分配在堆栈上(作用域结束时,所占空间自行释放,效率高,无需进行地址转换);引用类型分配在堆上(由GC来控制其回收,需要进行地址转换,效率降低)

 

36.  如何理解委托?

相当于函数指针,委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。

 

37.  UDP连接和TCP连接的异同。

UDP: 只管传,不管数据到不到,无须建立连接

TCP: 保证传输的数据准确,需要连接

 

38.  ASP.net的身份验证方式有哪些?
windows身份验证: IIS根据应用程序的设置执行身份验证.要使用这种验证方式,在IIS中必须禁用匿名访问.
Forms验证:用Cookie来保存用户凭证,并将未经身份验证的用户重定向到自定义的登录页.
Passport验证:通过Microsoft的集中身份验证服务执行的,他为成员站点提供单独登录和核心配置文件服务.

 

39.  请解释进程与线程的区别?进程与程序的区别?

一个程序至少有一个进程,一个进程至少有一个线程

进程是表示资源分配的基本单位,又是调度运行的基本单位,

线程是进程中执行运算的最小单位,亦即执行处理机调度的基本单位。

 

40.  请解释web.config文件中的重要节点

appSettings包含自定义应用程序设置。

system.web 系统配置

compilation动态调试编译设置

customErrors自定义错误信息设置

authentication身份验证,此节设置应用程序的身份验证策略。

authorization授权, 此节设置应用程序的授权策略.

 

41.  什么是viewstate,能否禁用?是否所用控件都可以禁用?

Viewstate是保存状态的一种机制,EnableViewState属性设置为false即可禁用

     

42.  请解释什么是上下文对象,在什么情况下要使用上下文对象

上下文对象是指HttpContext类的Current 属性,当我们在一个普通类中要访问内置对象(Response,Request,Session,Server,Appliction等)时就要以使用此对象

     

43.  请解释转发与跳转的区别?

转发就是服务端的跳转A页面提交数据到B页面,B页面进行处理然后从服务端跳转到其它页面

跳转就是指客户端的跳转

 

44.  C#中,string str = null string str = “” 请尽量使用文字或图象说明其中的区别。  
string str = null 是不给他分配内存空间,而string str = “” 给它分配长度为空字符窜的内存空间.

 

45.  String strTmp = "abcdefg某某某";

int i = System.Text.Encoding.Default.GetBytes(strTmp).Length;  
int j = strTmp.Length;  

以上代码执行完后,i = 13          j =  10

46.  .C# property attribute的区别,他们各有什么用处,这种机制的好处在哪里?

 一个是属性,用于存取类的字段,一个是特性,用来标识类,方法等的附加 性质

47.  需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,如果字符串中间还有连续空格的话,仅保留一个空格,即允许字符串中间有多个空格,但连续的空格数不可超过一个.
   答:string inputStr=" xx  xx ";
    inputStr=Regex.Replace(inputStr.Trim()," *"," ");

48.  String类与StringBuilder类有什么区别?为什么在.Net类库中要同时存在这2个类?(简答)

如果要操作一个不断增长的字符串,尽量不用String类,改用StringBuilder类。两个类的工作原理不同:String类是一种传统的修改字符串的方式,它确实可以完成把一个字符串添加到另一个字符串上的工作没错,但是在.NET框架下,这个操作实在是划不来。因为系统先是把两个字符串写入内存,接着删除原来的String对象,然后创建一个String对象,并读取内存中的数据赋给该对象。这一来二去的,耗了不少时间。而使用System.Text命名空间下面的StringBuilder类就不是这样了,它提供的Append方法,能够在已有对象的原地进行字符串的修改,简单而且直接。当然,一般情况下觉察不到这二者效率的差异,但如果你要对某个字符串进行大量的添加操作,那么StringBuilder类所耗费的时间和String类简直不是一个数量级的。

     

49.  final, finally, finalize的区别

final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。

finally是异常处理语句结构的一部分,表示总是执行。

finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等

50.  叙述constreadonly的区别

const 关键字用于修改字段或局部变量的声明。它指定字段或局部变量的值不能被修改。常数声明引入给定类型的一个或多个常数。

const数据成员的声明式必须包含初值,且初值必须是一个常量表达式。因为它是在编译时就需要完全评估。

const成员可以使用另一个const成员来初始化,前提是两者之间没有循环依赖。

readonly在运行期评估赋值,使我们得以在确保“只读访问”的前提下,把object的初始化动作推迟到运行期进行。

readonly 关键字与 const 关键字不同: const 字段只能在该字段的声明中初始化。

readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。另外,const 字段是编译时常数,而 readonly 字段可用于运行时常数。

readonly 只能在声明时或者构造函数里面初始化,并且不能在 static 修饰的构造函数里面。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/171181.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙开发报错:agconnect sdk not initialized. please call initialize()【BUG已解决】

文章目录 项目场景:问题描述原因分析:解决方案:总结:项目场景: 鸿蒙开发报错: agconnect sdk not initialized. please call initialize() 问题描述 报错内容为: 10-25 11:41:01.152 6076-16676 E A0c0d0/JSApp: app Log: 数据查询失败: {“code”:1100001,“messag…

使用VC++设计程序对一幅256级灰度图像进行全局固定阈值分割、自适应阈值分割

图像分割–全局固定阈值分割、自适应阈值分割 获取源工程可访问gitee可在此工程的基础上进行学习。 该工程的其他文章&#xff1a; 01- 一元熵值、二维熵值 02- 图像平移变换&#xff0c;图像缩放、图像裁剪、图像对角线镜像以及图像的旋转 03-邻域平均平滑算法、中值滤波算法、…

定长子网划分和变长子网划分问题_二叉树解法_通俗易懂_配考研真题

引入:定长子网划分和变长子网划分的基本概念 定长子网划分和变长子网划分的基本概念 目前常用的子网划分&#xff0c;是基于CIDR的子网划分&#xff0c;也就是将给定的CIDR地址块划分为若干个较小的CIDR地址块。 定长子网划分: 使用同一个子网掩码来划分子网&#xff0c;因…

C语言每日一题(39)寻找两个正序数组的中位数

力扣网 4 寻找两个正序数组的中位数 题目描述 给定两个大小分别为 m 和 n 的正序&#xff08;从小到大&#xff09;数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (mn)) 。 示例 1&#xff1a; 输入&#xff1a;nums1 [1,…

任意文件读取漏洞理解

任意文件读取漏洞理解 1. 漏洞描述&#xff1a; 任意文件读取漏洞是指攻击者可以利用漏洞读取系统上的任意文件&#xff0c;包括敏感信息的配置文件、用户数据甚至系统文件&#xff0c;从而获取未经授权的访问权限。 2. 漏洞原理&#xff1a; 这种漏洞通常是由程序处理用户输入…

libmosquitto库的一个bug,任务消息id(mid)分配后不起作用

代码如图所示: 当订阅了所有主题后,每个主题的mid是他们的下标索引加100的数字,可是实际打印出来的值是: mid依然是1,2,这个参数在这里失效了,不知道是bug还是mqtt的什么机制?

SpringBoot封装Elasticsearch搜索引擎实现全文检索

一、前言 注&#xff1a;本文实现了Java对Elasticseach的分页检索/不分页检索的封装 ES就不用过多介绍了&#xff0c;直接上代码&#xff1a; 二、实现步骤&#xff1a; 创建Store类&#xff08;与ES字段对应&#xff0c;用于接收ES数据&#xff09; import com.alibaba.f…

武汉数字孪生赋能工业制造,加速推进制造业数字化转型

随着数字孪生技术的不断推进&#xff0c;互联网、物联网、智能传感技术开始应用到数控机床的远程服务&#xff0c;状态监控&#xff0c;故障诊断&#xff0c;维护管理等方面。武汉数字孪生是在虚拟空间中创建物理对象的高保真虚拟模型&#xff0c;以模拟其在现实世界中的行为提…

2023年03月 Scratch(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 计算“2+4+8+……+128”,用变量n表示每项,根据变化规律,变量n的赋值用下列哪个最合适?( ) A: B: C: D: 答案:D

叠加原理(superposition principle)

叠加原理&#xff08;superposition principle&#xff09;指对线性系统而言&#xff0c;两个或多个输入产生的输出&#xff0c;等于这几个输入单独引起的输出的和&#xff0c;即输入的叠加等于各输入单独引起的输出的叠加。 例如&#xff0c;如果输入产生的输出是&#xff0c;…

「C++」入门

&#x1f387;个人主页&#xff1a;Ice_Sugar_7 &#x1f387;所属专栏&#xff1a;C启航 &#x1f387;欢迎点赞收藏加关注哦&#xff01; 文章目录 &#x1f349;前言&#x1f349;命名空间&#x1f34c;访问命名空间中的元素&#x1f34c;同名命名空间&#x1f34c;展开&…

2018年1月22日 Go生态洞察:Hello, 中国!

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

C语言之指针知识点总结

C语言之指针知识点总结 文章目录 C语言之指针知识点总结1. 初识指针1.1 取地址操作符 &1.2 指针变量1.3 解引用操作符 *1.4 指针变量1.4.1 大小1.4.2 指针类型的意义 1.5 void*指针1.6 const关键字1.61 const修饰变量1.6.2 const修饰指针变量 1.7 指针的运算1.7.1 指针-整数…

pyhon数据分析A股股票策略实际买卖总结(每月末更新数据)

简介 本篇文章主要记录python数据分析a股股票选股后实际买卖的记录。 选股策略 低位寻股&#xff0c;筛选出低位股价股票已经做过调整的股票&#xff0c;做短线交易&#xff08;不超过7天&#xff09;&#xff0c;不贪&#xff0c;小赚即走。分三个时段&#xff0c;开盘三十…

SAS9.2软件“OLE:对象的类没有在注册数据库中注册“问题的解决. 2023-11-25

操作系统测试平台: Win7 sp1 32bit (6.1.7601.26321 (Win7 RTM)) ; Win 11 64bit(具体版本不详) 其它win平台理论上也可以,可自行测试 1.安装依赖库(必要步骤) 下载地址: Microsoft Visual C 2005 Redistributable 下载 Microsoft Visual C 2008 Redistributable 官方vc库总…

buuctf web [极客大挑战 2019]PHP

提示有备份,dirsearch扫描网站备份 GitHub - maurosoria/dirsearch: Web path scanner下载.zip格式文件 解压到python目录下 在上图位置cmd打开窗口 输入python setup.py install安装dirsearch 安装好后输入命令使用dirsearch python dirsearch.py -u http://44296191-973d-…

第一百八十回 介绍两种阴影效果

文章目录 1. 概念介绍2. 实现方法3. 代码与效果3.1 示例代码3.2 运行效果 4. 内容总结 我们在上一章回中介绍了"自定义SlideImageSwitch组件"相关的内容&#xff0c;本章回中将介绍两种阴影效果.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在…

【深入剖析K8s】容器技术基础(一):从进程开始说起

容器其实是一种特殊的进程而已。 可执行镜像 为了能够让这些代码正常运行’我们往往还要给它提供数据’比如我们这个加法程序所需要的输人文件这些数据加上代码本身的二进制文件放在磁盘上’就是我们平常所说的一个程序,也叫代码的可执行镜像&#xff08;executablejmage&…

用xlwings新建一个excel并同时生成多个sheet

新建一个excel并同时生成多个sheet&#xff0c;要实现如下效果&#xff1a; 一般要使用数据透视表来快速实现。 今天记录用xlwings新建一个excel并同时生成多个sheet。 import xlwings as xw # 打开excel,参数visible表示处理过程是否可视,add_book表示是否打开新的Excel程序…

CSDN助手:一键下载CSDN博客:高效保存,随时阅读

文章目录 &#x1f4d6; 介绍 &#x1f4d6;&#x1f3e1; 环境 &#x1f3e1;&#x1f4d2; 使用方法 &#x1f4d2;⚓️ 相关链接 ⚓️ &#x1f4d6; 介绍 &#x1f4d6; 这是我自己无聊的时候写的一个应用&#xff0c;以前UI有点丑&#xff0c;这次重写了一下UI 功能如下 …