.NET面试题(一)

1.C#中堆和栈的区别?

   堆(Heap)和栈(Stack)是C#中两种分配内存的不同方式
   栈(Stack):是一种先进后出的内存分配方式。它用于存储基本数据类型和对象引用,它是一种连续的内存空间,存储在cpu的寄存器上,它的大小在编译的时就是已知的,因此分配内存就是分配固定的大小空间。栈的分配和释放都是系统自动的,方法调用时在栈中分配一块内存空间,方法结束会自动释放,所以它的分配和释放速度特别快。
   堆(Heap):是一种后进先出的内存分配方式。它用于存储对象和动态分配内存,它是一种非连续的内存空间,存储在程序地址空间的堆区。它的大小在编译的时候是未知的,因此它的分配是根据实际所需的进行分配空间。堆是由程序员手动申请,如果申请的是托管堆,那么这个回收释放是有垃圾回收器(GC)回收释放的,当对象不在被程序引用的时候,就会被垃圾回收器(GC)自动回收,如果是申请的是非托管堆,那么这个就需要程序员手动释放回收。因此它的释放速度相对较慢。

2.C#中的委托是什么?事件是不是一种委托?

    委托(Delegate)是一种类似C/C++的函数指针,可以把它看作为是一种安全的函数指针。委托是一种引用类型变量,它存储了对某个方法的引用,但这个引用可以在运行时改变,它本质上还是一个类,是定义了方法的类,它可以将方法作为参数传给另外一个方法。
   事件是基于委托的,它是一种特殊的委托,事件通常用于类之间的通信,其中一个类发布一个事件,而其他类可以订阅这个事件。当你触发事件时,所有订阅该事件的方法都会被调用。

3.C#静态构造函数特点是什么?

   静态构造函数是一个特殊的构造函数,它不能被继承,没有参数,不能被调用。静态构造函数只在类被加载到内存中时执行一次。如果类中包含 Main() 方法,那么该类的静态构造函数会在 Main() 方法执行之前被调用。
   执行顺序:静态变量>静态构造函数>实例变量>实例构造函数

4.分别解释一下CTS、CLS、CLR的含义

   CTS(Common Type System):通用类型系统。每种语言都定义了自己的类型,.NET通过CTS提供了公共的类型,然后翻译生成对应的.NET类型。
   CLS(Common Language Specification):通用语言规范。它是一种规范,用于定义编程语言的基本语法和语义,以便不同的编程语言之间可以互相通信和交互。不同语言语法的不同,.NET通过CLS提供了公共的语法,然后不同语言翻译生成对应的.NET语法。例如,C#、Visual Basic、C++等语言都遵循了CLS规范。
   CLR(Common Language Runtime):公共语言运行时。它是一种运行时环境,用于执行遵循CLS规范的编程语言的程序。CLR是.NET Framework的核心组件之一,它提供了内存管理、垃圾回收、类型安全和安全性等功能。CLR支持多种编程语言,包括C#、Visual Basic、C++等。有不同的CLR,比如服务器 CLR、Linux CLR(Mono)、Silverlight CLR(CoreCLR)。相当于一个发动机,负责执行IL。

5.C#中什么是值类型与引用类型?

   值类型(Value Types):是一种简单的数据类型,通常存储的是它本身,值类型包含基本数据类型(整数类型,浮点数类型,字符类型,波尔类型)、枚举、结构体、以及元组(C#7.0版本开始引入的),它是通常分配在栈中,因此它访问的速度特别快。
   引用类型(Reference Types):是一种复杂的数据类型,它存储的是对象引用地址,而不是对象本身,引用类型包含类、接口、数组、委托等,它通常分配在堆中,因此它可以动态分配内存和释放。

6.C#中类(class)与结构(struct)的异同?

   C#中的类(class)和结构(struct)是两种不同的数据类型。
   内存分配方式:类是引用类型,存储在托管堆(managed heap)中;结构是值类型,在栈上分配内存。
   继承和多态性:类支持继承和多态性,可以作为基类或派生类;结构是sealed类型,因此无法从结构派生出新的类型,不支持继承和多态性,不能作为基类。
   接口实现:类可以实现多个接口;而结构只能实现一个接口。
   大小限制:结构存储在栈上,所以其大小通常受到限制,一般不应该超过几百个字节,否则可能导致栈溢出;类存储在托管堆上,大小一般不会受限制。
   装箱和拆箱:对于结构类型的值,需要进行装箱(boxing)操作才能将其作为object类型使用,这会带来一定的性能损失;而对于类类型的对象,则不需要进行装箱。
   默认构造函数:如果没有定义任何构造函数,类会自动提供一个无参公共构造函数;而结构不会自动提供这样的构造函数,必须显式定义。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

自动驾驶学习笔记(十九)——Planning模块

#Apollo开发者# 学习课程的传送门如下,当您也准备学习自动驾驶时,可以和我一同前往: 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo 社区开发者圆桌会》免费报名—>传送门 文章目录 前言 Planning作用 Planning内容 Plannin…

uni-app ucharts中饼图与圆环图区别

项目情况: uni-app的用于移动端H5项目,包使用uni_modules目录存放。 图表引用ucharts中的echarts配置的组件方式 区别1 饼图与圆环图在echarts使用的配置都是pie类型。但是配置raduis使用: radius: [40%, 70%] 区别2 组件type指明&#xf…

保护您的Android应用程序:Android应用程序安全一览

保护您的Android应用程序:Android应用程序安全一览 我们都知道Android是为所有人设计的——开放、面向开发者、面向用户,这种开放性为今天和明天的移动技术提供了很多便利。然而,开放性也带来了需要妥善处理的安全风险。 安全是我们所有人都…

广州华锐互动VRAR:利用VR开展新能源汽车触电安全演练,降低培训成本和风险

随着新能源汽车行业的快速发展,相关的安全培训也变得越来越重要。其中,触电急救培训对于保障驾驶员和乘客的安全具有重要意义。传统培训方式存在一些不足,而利用VR技术进行培训则具有很多优势。 利用VR技术开展新能源汽车触电安全演练可以在模…

ansible模块 (7-13)

模块 7、hostname模块: 远程主机名管理模块 ansible 192.168.10.202 -m hostname -a nameliu 8、copy模块: 用于复制指定的主机文件到远程主机的模块 常用参数: dest: 指出要复制的文件在哪,必须使用绝对路径。如果源目标是…

fastjson1.2.24 反序列化漏洞(CVE-2017-18349)分析

FastJson在< 1.2.24 版本中存在反序列化漏洞&#xff0c;主要原因FastJson支持的两个特性&#xff1a; fastjson反序列化时&#xff0c;JSON字符串中的type字段&#xff0c;用来表明指定反序列化的目标恶意对象类。fastjson反序列化时&#xff0c;字符串时会自动调用恶意对…

运维知识点-Kubernetes_K8s

Kubernetes RBAC配置不当攻击场景攻击过程 RBAC配置不当 Service Account本质是服务账号&#xff0c;是Pod连接K8s集群的凭证。 在默认情况下&#xff0c;系统会为创建的Pod提供一个默认的Service Account&#xff0c; 用户也可以自定义Service Account&#xff0c;与Service…

【软件安全实验】使用Find Security Bugs工具静态分析WebGoat

文章目录 实验要求实验步骤一、在IntelliJ上安装插件配置规则库二、下载WebGoat源代码三、Find Security Bugs工具静态分析WebGoat 实验要求 用Find Security Bugs(http://find-sec-bugs.github.io)工具静态分析WebGoat。WebGoat是OWASP组织研制出的用于进行Web漏洞实验的应用…

C语言—每日选择题—Day52

第一题 1. 执行c程序代码&#xff0c;a,b,c,d的值分别为&#xff08;&#xff09; int a 1; int b 0; int c 0; int d (a) * (c 1); A&#xff1a;2&#xff0c;0&#xff0c;1&#xff0c;2 B&#xff1a;1&#xff0c;0&#xff0c;1&#xff0c;1 C&#xff1a;2&…

C++第一讲之初入C++

注&#xff1a;本文是对于学完C语言再学C同学的讲解&#xff0c;主要补充C与C语言不同之处&#xff0c;如果你没学过C语言&#xff0c;不建议观看本文。 一.C简介 我们都知道C语言是过程性语言&#xff08;强调的是实现过程&#xff09;&#xff0c;即对计算机语言要处理的两…

Educational Codeforces Round 160 (Rated for Div. 2) A~C

目录 A. Rating Increase 题目分析&#xff1a; B. Swap and Delete 题目分析: C. Game with Multiset 题目分析: A. Rating Increase 题目分析&#xff1a; 因为首部不为零&#xff0c;故我们从第二个字符开始遍历&#xff0c;如果遇到第一个不为‘0’的字符&#xff0…

RPC(5):AJAX跨域请求处理

接上一篇RPC&#xff08;4&#xff09;&#xff1a;HttpClient实现RPC之POST请求进行修改。 1 修改客户端项目 1.1 修改maven文件 修改后配置文件如下&#xff1a; <dependencyManagement><dependencies><dependency><groupId>org.springframework.b…

Kafka 分级存储在腾讯云的实践与演进

导语 腾讯云消息队列 Kafka 内核负责人鲁仕林为大家带来了《Kafka 分级存储在腾讯云的实践与演进》的精彩分享&#xff0c;从 Kafka 架构遇到的问题与挑战、Kafka 弹性架构方案类比、Kafka 分级存储架构及原理以及腾讯云的落地与实践四个方面详细分享了 Kafka 分级存储在腾讯云…

Flash Attention(1):背景介绍,与传统Attention对比,前向反向算法解析

0 英文缩写 FA&#xff1a; Flash AttentionHBM&#xff1a;High Bandwidth Memory&#xff0c;高带宽显存 0 论文 [2205.14135] FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness 中文&#xff1a;FlashAttention&#xff1a;一种具有 IO 感知…

【jvm从入门到实战】(九) 垃圾回收(2)-垃圾回收器

垃圾回收器是垃圾回收算法的具体实现。 由于垃圾回收器分为年轻代和老年代&#xff0c;除了G1之外其他垃圾回收器必须成对组合进行使用 垃圾回收器的组合使用关系图如下。 常用的组合如下: Serial&#xff08;新生代&#xff09; Serial Old&#xff08;老年代&#xff09; Pa…

【每日一题】【12.19】1901.寻找峰值Ⅱ

&#x1f525;博客主页&#xff1a; A_SHOWY&#x1f3a5;系列专栏&#xff1a;力扣刷题总结录 数据结构 云计算 数字图像处理 力扣每日一题_ 1.题目链接 1901. 寻找峰值 IIhttps://leetcode.cn/problems/find-a-peak-element-ii/ 2.题目描述 看到这个时间复杂度就知道和昨…

关于折线回归

一、说明 今天的帖子主要是关于使用折线回归找到最佳值。即将某条曲线分解成包络线段&#xff0c;然后用分段回归方式优化。但它也涉及使用 SAS 和 R 的剂量反应研究和样条曲线。这不是第一篇关于这些主题的文章&#xff0c;但我确实想在其中添加折线。只是因为它还在使用。 二…

借助dayjs,把各种类型的日期转换成“YYYY-MM-DD“格式

记得先 npm install datajs <template><div class"home"></div> </template> <script lang"ts" setup> import { reactive, ref } from "vue";import dayjs from "dayjs"; import customParseFormat f…

助力智能人群检测计数,基于YOLOv7开发构建通用场景下人群检测计数识别系统

在一些人流量比较大的场合&#xff0c;或者是一些特殊时刻、时段、节假日等特殊时期下&#xff0c;密切关注当前系统所承载的人流量是十分必要的&#xff0c;对于超出系统负荷容量的情况做到及时预警对于管理团队来说是保障人员安全的重要手段&#xff0c;本文的主要目的是想要…

LED恒流调节器FP7126:引领LED照明和调光的新时代(调光电源、汽车大灯)

目录 一、FP7126概述 二、FP7126功能 三、应用领域 随着科技的进步&#xff0c;LED照明成为了当代照明产业的主力军。而在LED照明的核心技术中&#xff0c;恒流调节器是不可或缺的组成部分。今天&#xff0c;我将为大家介绍一款重要的恒流调节器FP7126&#xff0c;适用于LED…