.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)的异同?

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

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

相关文章

AcWing 1250. 格子游戏(并查集)

题目链接 活动 - AcWing本课程系统讲解常用算法与数据结构的应用方式与技巧。https://www.acwing.com/problem/content/1252/ 题解 当两个点已经是在同一个连通块中,再连一条边,就围成一个封闭的圈。一般用x * n y的形式将(x, y&#xff0…

linux性能优化-上下文切换

如何理解上下文切换 Linux 是一个多任务操作系统,它支持远大于 CPU 数量的任务同时运行,这是通过频繁的上下文切换、将CPU轮流分配给不同任务从而实现的。 CPU 上下文切换,就是先把前一个任务的 CPU 上下文(CPU 寄存器和程序计数…

【网络安全技术】电子邮件安全PGP,SMIME

一、PGP(Pretty Good Privacy) PGP是一种邮件加密手段,他在发邮件一方加密,然后发给发送方邮件服务器,发送方邮件服务器再发送给接收方邮件服务器,然后接收方再从接收方邮件服务器pop出来,这整…

docker-compose单机容器编排

Dockerfile:先配置好文件,然后build,镜像-------->容器。 docker-conpose 既可以基于dockerfile,也可以基于镜像,一键式拉起镜像和容器。 docker-compose核心就是yml文件,可以定义容器的一切。通过yml配置,直接运行…

labelme标注json文件检查标注标签(修改imageWidth,imagePath,imageHeight)

# !/usr/bin/env python # -*- encoding: utf-8 -*- #---wzhimport os import json# 这里写你自己的存放照片和json文件的路径 json_dir =rC:\Users\Lenovo\Desktop\json3 json_files = os.listdir(json_dir

Python+Appium自动化测试之元素等待方法与重新封装元素定位方法

在appium自动化测试脚本运行的过程中,因为网络不稳定、测试机或模拟器卡顿等原因,有时候会出现页面元素加载超时元素定位失败的情况,但实际这又不是bug,只是元素加载较慢,这个时候我们就会使用元素等待的方法来避免这种…

flutter 代码混淆

Flutter 应用混淆: Flutter 应用的混淆非常简单,只需要在构建 release 版应用时结合使用 --obfuscate 和 --split-debug-info 这两个参数即可。 –obfuscate --split-debug-info 用来指定输出调试文件的位置,该命令会生成一个符号映射表。目前…

Idea执行bat使用maven打包springboot项目成docker镜像并push到Harbor

如果执行以下命令失败,先把mvn的-q参数去掉,让错误输出到控制台。 《idea配置优化、Maven配置镜像、并行构建加速打包、解决maven打包时偶尔几个文件没权限的问题》下面的使用company-repo私有仓库和阿里云镜像仓库同时使用的配置参考。 bat echo off …

超详细!大模型面经指南(附答案)

大模型应该算是目前当之无愧的最有影响力的AI技术。它正在革新各个行业,包括自然语言处理、机器翻译、内容创作和客户服务等,成为未来商业环境的重要组成部分。 截至目前大模型已超过100个,大模型纵横的时代,不仅大模型越来越卷&…

DS八大排序之冒泡排序和快速排序

前言 前两期我们已经对"插入排序"(直接插入排序和希尔排序) 和 "选择排序"(直接选择排序和堆排序)进行了详细的介绍~!这一期我们再来详细介绍一组排序 :"交换排序"即耳熟能…

等等Domino 14.0FP1

大家好,才是真的好。 节奏确实太快了,有时候我深感我也追不上。 以前Notes Domino是三年磨一剑,也就说每三年才发一个大版本,从2019年开始,进行了高频提速,居然一年一个大版本! 周末&#xf…

树莓派(Raspberry Pi)4B密码忘记了,怎么办?

树莓派长时间不用,导致密码忘记了,这可咋整? 第1步:取出SD卡 将树莓派关机,移除sd卡,使用读卡器,插入到你的电脑。 第2步:编辑 cmdline.txt 在PC上打开SD卡根目录,启动…

基于C/C++的rapidxml加载xml大文件 - 上部分翻译

RAPIDXML手册 版本 1.13 版权所有 (C) 2006, 2009 Marcin Kalicinski有关许可证信息,请参阅随附的文件许可证 .txt。 目录 1. 什么是 RapidXml? 1.1 依赖性和兼容性1.2 字符类型和编码1.3 错误处理1.4 内存分配1.5 …

C++相关闲碎记录(16)

1、正则表达式 &#xff08;1&#xff09;regex的匹配和查找接口 #include <regex> #include <iostream> using namespace std;void out (bool b) {cout << ( b ? "found" : "not found") << endl; }int main() {// find XML/H…

[笔记] wsl 下使用 qemu/grub 模拟系统启动(单分区)

背景 最近在学习操作系统&#xff0c;需要从零开始搭建系统&#xff0c;由于教程中给的虚拟机搭建的方式感觉还是过于重量级&#xff0c;因此研究了一下通过 qemu 模拟器&#xff0c;配合 grub 完成启动系统的搭建。 qemu 介绍 qemu 是一款十分优秀的系统模拟器&#xff0c;…

Qt之自定义QToolTip,去掉显示动画和隐藏延时

一.效果 先来看看Qt原生QToolTip的缺点: 1.当提示内容无变化时,弹窗无法移动。只能先传个空字符串强制弹窗隐藏,然后在新位置再传个字符串。 If the text is the same as the currently shown tooltip, the tip will not move. You can force moving by first hiding the t…

【Hadoop_06】MapReduce的概述与wc案例

1、MapReduce概述1.1 MapReduce定义1.2 MapReduce优点1.3 MapReduce缺点1.4 MapReduce核心思想1.5 MapReduce进程1.6 常用数据序列化类型1.7 源码与MapReduce编程规范 2、WordCount案例实操2.1 本地测试2.2 提交到集群测试 1、MapReduce概述 1.1 MapReduce定义 MapReduce是一…

HPM6750系列--第九篇 GPIO详解(基本操作)

一、目的 在之前的博文中我们主要介绍了不同系统不同开发编译调试环境的配置和操作&#xff08;命令行方式、Visual Studio Code、Segger Embedded Studio for RISC-V&#xff09;&#xff0c;以帮助大家准备好学习环境为目的&#xff0c;但是未涉及到芯片本身以及外设的讲解。…

苹果计划将全球1/4的IPhone产能转移至印度

KlipC报道&#xff1a;据相关人士报道&#xff0c;苹果希望在未来2到3年内每年在印度生产超过5000万部iphone&#xff0c;要是该计划得以实现&#xff0c;印度将占领全球iPhone产量的四分之一。 KlipC的分析师Alex Su表示&#xff1a;“此次iPhone15推出是苹果印度制造计划的一…

设计模式详解---策略模式

1. 策略模式简介 策略模式&#xff08;Strategy Pattern&#xff09;是一种行为型设计模式&#xff0c;用于在运行时根据不同的情境选择不同的算法或策略。该模式将算法封装成独立的类&#xff0c;使得它们可以相互替换&#xff0c;而且可以独立于客户端使用它们的方式。 1.1.…