首页 > 其他分享 >net面试题

net面试题

时间:2023-07-13 14:11:40浏览次数:34  
标签:面试题 静态 接口 修饰 类型 net class 构造函数

1. 什么是扩展方法

扩展方法使你能够向现有类型"添加"方法,无需修改类型。

条件:按扩展方法必须满足的条件,1必须是静态类中的静态方法,2.第一个参数类型是要扩展的类型,并且需要添加this关键字以表示其扩展方法。

2. const和readonly的区别

都标识一个常量。

区别:

    1. 初始化位置不同,const必须在声明的同时赋值;readonly即可以在声明处赋值,也可以在静态构造方法(必须是静态构造方法,普通构造方法不行)里赋值
    2. 修饰对象不同,const可以修饰类的字段,也可以修饰局部变量;readonly只能修饰类的字段
    3. const是编译时常量,在编译时确定改值;readonly是运行时常量,在运行时确定该值
    4. const默认是静态的,而readonly如果设置成静态需要显示声明
    5. 修饰引用类型时不同,const只能修饰string或者值为null的其他引用类型;readonly可以是任何类型

3. CTS、CLS、CLR

CTS:通用语言系统(Common Type System)

CLS:通用语言规范(Common Language Specification)

CLR:公共语言运行库(Common Language Runtime)

4. C#可否对内存直接操作

C#在unsafe模式下可以使用指针对内存进行操作,但在托管模式下不可以使用指针,C# Net默认不运行带指针的,需要设置下,选择项目右键->属性->选择生成->允许不安全代码 打√->保存

5. short s=1;s=s+1;有什么错误?short s1=1,s1+=1;有什么错误

s=s+1不能显示转换成short类型,可以修改为s=(short)(s+1).short s1=1;s1+=1正确

6. class和struct的区别

相同点:都可以实现接口

不同点

    1. class是引用类型,struct是值类型
    2. class允许继承,被继承,struct不允许,只能继承接口
    3. class可以初始化变量,struct不可以
    4. class可以有无参构造函数,struct不可与,必须是有参的构造函数,而且在有参的构造函数必须初始化所有成员

7. 抽象类和接口的区别

相同点:都不能直接实例化

不同点:

  1. 抽象类用abstrace修饰,接口用interface修饰
  2. 抽象类中的方法可以实现,也可以不实现。有抽象方法的类一定要用abstract修饰,接口中的方法不允许被实现。
  3. 抽象类只能单继承,接口支持多实现
  4. 抽象类有构造方法,接口不能有构造方法
  5. 接口只负责功能的定义,通过接口来规范类的。而抽象类即负责功能的定义有可以实现哪些功能。

8. 类的执行顺序

父类,子类,静态块,静态字段,非静态块,非静态字段,构造器,方法

9. C#有没有静态构造函数,如果有是做什么用的

静态构造函数既没有访问修饰符,也没有参数。在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化类。无法直接调用静态构造函数。在程序中,用户无法控制何时执行静态构造函数‘

用途:当类使用日志文件时,将使用这种构造函数向日志文件中写入项

10. 泛型的主要约束和次要约束是什么

  • 一个泛型参数至多拥有一个主要约束,主要约束可以是引用类型、class或struct.如果指定一个引用类型(class),那么实参必须是该类型或者该类型的派生类型。相反,struce则规定必须是一个值类型。
  • 次要约束
    • 主要是实参实现的接口限定,对于一个泛型,可以有0到无限的次要约束,次要约束规定了实参必须实现所有的次要约束中规定的接口。

11. Set里面的元素是不可重复的,那么用什么方法来区分重复与否?是用==还是equals()?它们有什么区别?

set的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判断两个set是否相等。

equals()和==方法决定引用值是否指向统一对象,equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回true。

 

标签:面试题,静态,接口,修饰,类型,net,class,构造函数
From: https://www.cnblogs.com/xiaoxi888/p/17550294.html

相关文章

  • 记一次 .NET 某游戏服务后端 内存暴涨分析
    一:背景1.讲故事前几天有位朋友找到我,说他们公司的后端服务内存暴涨,而且CPU的一个核也被打满,让我帮忙看下怎么回事,一般来说内存暴涨的问题都比较好解决,就让朋友抓一个dump丢过来,接下来我们用WinDbg一探究竟。二:WinDbg分析1.到底是谁在暴涨拿到dump之后,首先要判断是托......
  • ASP.NET Core 6框架揭秘实例演示[40]:基于角色的授权
    原文:https://www.cnblogs.com/artech/p/inside-asp-net-core-6-40.htmlASP.NET应用并没有对如何定义授权策略做硬性规定,所以我们完全根据用户具有的任意特性(如性别、年龄、学历、所在地区、宗教信仰、政治面貌等)来判断其是否具有获取目标资源或者执行目标操作的权限,但是针对角色......
  • kubernetes之 存储卷
    第八部分kubernetes之存储卷脱离节点而存在共享存储。存储卷不属于容器,他属于pod缓存,宿主机,不具备真正意义上存储,宿主机退役后,存储资源随之丢失,除非宿主机上也挂载独立的卷信息。容器真正意义上的存储卷类型emptyDir:pod删除,存储内容也删除,只能当临时存储空间或缓存使用,无真正意......
  • 网络net服务名配置
    网络net服务名配置oracle服务连接其他服务器上的oracle服务器需要配置net服务。如果需要连接169.254.10.121这台机器的oracle服务服务端需要确认的信息需要服务的端口号默认是1521需要让对方对1521这个端口进行放行,取消防火墙设置。要进行测试网络是否通畅ping......
  • net core-异步,同步理解
    并发: 一个车间只有一台机器,所有的工人都需要完成相同的工作,谁先抢到这个机器谁先工作,其余人需要等待。并行: 一个车间有4台机器,有4个工人,四个工人分别使用四台机器,同时执行任务,不用等待其它工人任务执行完毕。单线程: 当有三件事要处理,乙需要在甲之后处理,同时丙需要在乙之......
  • .Net8的AOT引导程序BootStrap
    前言.Net8的本地预编机器码AOT,它几乎进行了100%的自举。微软为了摆脱C++的钳制,做了很多努力。也就是代码几乎是用C#重写,包括了虚拟机,GC,内存模型等等。而需要C++做的,也就仅仅是引导程序,本篇通过代码来看下这段至关重要的引导程序的运作模式。原文:.Net8的AOT引导程序BootStrap概......
  • ubuntu20使用iptables-persistent libfakeroot libxtables-dev netfilter-persistent
    实施防火墙是保护服务器安全的重要一步。其中很大一部分是决定将对您的网络实施流量限制的单个规则和策略。像iptables这样的防火墙还允许您对应用规则的结构框架有发言权。在本指南中,您将学习如何构建防火墙,作为更复杂规则集的基础。该防火墙将主要关注提供合理的默认值和建立......
  • 使用C#编写.NET分析器(完结)
    译者注这是在Datadog公司任职的KevinGosse大佬使用C#编写.NET分析器的系列文章之一,在国内只有很少很少的人了解和研究.NET分析器,它常被用于APM(应用性能诊断)、IDE、诊断工具中,比如Datadog的APM,VisualStudio的分析器以及Rider和Reshaper等等。之前只能使用C++编写,自从.NETNative......
  • .net 温故知新【12】:Asp.Net Core WebAPI 中的Rest风格
    RPCRPC(RemoteProcedureCall),远程过程调用),这种RPC形式的API组织形态是类和方法的形式。所以API的请求往往是一个动词用来标识接口的意思,比如https://xxxx/GetStudent?id=1和https://xxxx/AddStudent这种风格,并且往往没有规范需要我们去查看接口定义文档。HTTP方法基本只用GE......
  • 一个高性能、低内存文件上传流.Net组件
    推荐一个用于轻松实现文件上传功能的组件。项目简介一个基于.NET平台的开源项目,提供了一个简单易用的API,可以在Web应用程序中快速集成文件上传功能。优化多部分流式文件上传性能:减少25%的CPU使用量、50%内存。项目特点1、简单易用的API: 提供了简单的API,可以轻松地集......