C#通用常见面试题-精心整理

以下是优化后的版本,在原有内容基础上补充了应用场景,其他结构保持不变:


上位机面试题解答(技术详解+示例)


C#-IOC框架

1. 值类型和引用类型的本质区别

解释
  • 值类型:存储在栈中,直接保存数据值(如 int, struct)。
  • 引用类型:存储在堆中,变量保存对象地址(如 class, string)。
对比表格
特性值类型引用类型
存储位置栈(Stack)堆(Heap)
赋值行为复制数据本身复制对象地址
默认值0或false(根据类型)null
装箱/拆箱支持(值类型转为对象)不适用
应用场景
  • 值类型:适合存储轻量级数据(如传感器数值、坐标),避免频繁堆内存分配。
  • 引用类型:管理复杂对象(如设备连接、数据库上下文),支持多处共享引用。
示例
int temperature = 25; // 值类型(传感器数据)
Device device = new Device(); // 引用类型(设备对象)

2. 抽象类和接口的区别

解释
  • 抽象类:可包含方法实现、字段和构造函数,支持单继承。
  • 接口:仅定义方法签名,支持多继承,无实现。
对比表格
特性抽象类接口
方法实现可有具体实现或抽象方法仅定义方法签名(C# 8.0后支持默认实现)
继承规则单继承多继承
构造函数支持不支持
适用场景共同实现逻辑(如 Animal 基类)行为契约(如 IPlayable 接口)
应用场景
  • 抽象类:物联网设备驱动开发中,定义基础通信逻辑(如 AbstractModbusDevice)。
  • 接口:定义跨平台协议(如 ICommunicationProtocol),支持 Modbus, OPC UA 等多协议实现。
    可以包含抽象成员:
    抽象类可以包含抽象方法、抽象属性等,这些成员没有具体的实现,必须由派生类实现。
    可以包含非抽象成员:
    抽象类也可以包含普通的方法、属性、字段等,这些成员可以直接在抽象类中实现。
示例
// 抽象类
public abstract class BaseDevice {protected void Connect() { /* 共享连接逻辑 */ }public abstract void ReadData(); 
}// 接口
public interface IProtocol {void SendCommand(string cmd);
}

3. 委托和事件的区别

解释
  • 委托:封装方法引用,支持多播。
  • 事件:委托的封装,提供访问控制(仅发布者可触发)。
对比表格
特性委托事件
访问控制无限制(可被任何代码调用)通过 event 关键字保护
多播支持支持支持
适用场景一般方法调用事件驱动场景(如按钮点击)
应用场景
  • 委托:实现回调函数(如异步任务完成时的 TaskCompletionSource)。
  • 事件:设备状态变化通知(如 Device.OnDataReceived)。
示例
public event EventHandler<DataReceivedEventArgs> OnDataReceived;
// 触发事件
OnDataReceived?.Invoke(this, new DataReceivedEventArgs(buffer));

4. IOC依赖注入的注入方式

解释
  • 构造函数注入:通过构造函数传递依赖。
  • 属性/方法注入:通过属性或方法设置依赖(较少使用)。
对比表格
方式构造函数注入属性注入方法注入
推荐程度强烈推荐不推荐不推荐
可维护性高(显式声明依赖)低(隐藏依赖)
适用场景99%的场景避免使用避免使用
应用场景
  • 构造函数注入:云服务中注入数据库上下文(如 MyService(IService service))。
  • 属性注入:遗留代码中快速集成第三方库(需谨慎使用)。
示例
public class DeviceService {private readonly ICommunication _comm;public DeviceService(ICommunication comm) { // 显式依赖_comm = comm;}
}

5. C#集合简单介绍

解释
  • List:动态数组,适合随机访问和遍历。
  • Dictionary<TKey,TValue>:哈希表,快速查找键值对。
  • LinkedList:链表结构,插入删除高效。
对比表格
集合类型增删效率查找效率线程安全适用场景
List<T>低(O(n))高(O(1))频繁遍历,少量增删
Dictionary中(O(1))高(O(1))频繁按键查找(如设备ID映射)
LinkedList<T>高(O(1))低(O(n))频繁插入/删除(如队列)
应用场景
  • List:存储设备列表(如 List<Device>)。
  • Dictionary:设备ID到实例的映射(如 Dictionary<string, Device>)。
示例
var devices = new List<Device>(); // 设备列表
var deviceMap = new Dictionary<string, Device>(); // 快速查找

6. C#垃圾回收机制&#x

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

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

相关文章

K8S节点出现Evicted状态“被驱逐”

在Kubernetes集群中&#xff0c;Pod状态为“被驱逐&#xff08;evicted&#xff09;”表示Pod无法在当前节点上继续运行&#xff0c;已被集群从节点上移除。 问题分析&#xff1a; 节点磁盘空间不足 &#xff0c;使用df -h查看磁盘使用情况 可以看到根目录 / 已100%满&#x…

[密码学基础]国密算法深度解析:中国密码标准的自主化之路

国密算法深度解析&#xff1a;中国密码标准的自主化之路 国密算法&#xff08;SM系列算法&#xff09;是中国自主研发的密码技术标准体系&#xff0c;旨在打破国际密码技术垄断&#xff0c;保障国家信息安全。本文将从技术原理、应用场景和生态发展三个维度&#xff0c;全面解…

Linux 网络基础(三) TCP/IP协议

一、TCP 与 IP 的关系 IP 层的核心作用是定位主机&#xff0c;具有将数据从主机 A 发送到主机 B 的能力&#xff0c;但是能力并不能保证一定能够做到&#xff0c;所以这时就需要 TCP 起作用了&#xff0c;TCP 可以通过超时重传、拥塞控制等策略来保证数据能够发送到 B 主机。 所…

基于 Vue 的Tiptap 富文本编辑器使用指南

目录 &#x1f9f0; 技术栈 &#x1f4e6; 所需依赖 &#x1f4c1; 文件结构 &#x1f9f1; 编辑器组件实现&#xff08;components/Editor.vue&#xff09; ✨ 常用操作指令 &#x1f9e0; 小贴士 &#x1f9e9; Tiptap 扩展功能使用说明&#xff08;含快捷键与命令&am…

统计图表ECharts

统计某个时间段&#xff0c;观看人数 ①、数据表 ②、业务代码 RestController RequstMapping(value"/admin/vod/videoVisitor") CrossOrigin public class VideoVisitorController{Autowriedprivate VideoVisitorService videoVisitorService;//课程统计的接口…

ubuntu 安装 redis server

ubuntu 安装 redis server sudo apt update sudo apt install redis-server The following NEW packages will be installed:libhiredis0.14 libjemalloc2 liblua5.1-0 lua-bitop lua-cjson redis-server redis-toolssudo systemctl start redis-server sudo systemctl ena…

【白雪讲堂】[特殊字符]内容战略地图|GEO优化框架下的内容全景布局

&#x1f4cd;内容战略地图&#xff5c;GEO优化框架下的内容全景布局 1️⃣ 顶层目标&#xff1a;GEO优化战略 目标关键词&#xff1a; 被AI理解&#xff08;AEO&#xff09; 被AI优先推荐&#xff08;GEO&#xff09; 在关键场景中被AI复读引用 2️⃣ 三大引擎逻辑&#x…

NVIDIA 自动驾驶技术见解

前言 参与 NVIDIA自动驾驶开发者实验室 活动&#xff0c;以及解读了 NVIDIA 安全报告 自动驾驶 白皮书&#xff0c;本文是我的一些思考和见解。自动驾驶技术的目标是为了改善道理安全、减少交通堵塞&#xff0c;重塑更安全、高效、包容的交通生态。在这一领域&#xff0c;NVI…

OpenCV day6

函数内容接上文&#xff1a;OpenCV day4-CSDN博客 , OpenCV day5-CSDN博客 目录 平滑&#xff08;模糊&#xff09; 25.cv2.blur()&#xff1a; 26.cv2.boxFilter(): 27.cv2.GaussianBlur()&#xff1a; 28.cv2.medianBlur(): 29.cv2.bilateralFilter()&#xff1a; 锐…

Function calling, 模态上下文协议(MCP),多步能力协议(MCP) 和 A2A的区别

背景阐述 本文大部分内容都是基于openAI 的 chatGPT自动生成。作者进行了一些细微的调整。 LLM 带来了很多思维的活跃&#xff0c;基于LLM&#xff0c;产生了很多应用&#xff0c;很多应用也激活了LLM的新的功能。 Function calling&#xff0c;MCP&#xff08;Modal Contex…

火山RTC 5 转推CDN 布局合成规则

实时音视频房间&#xff0c;转推CDN&#xff0c;文档&#xff1a; 转推直播--实时音视频-火山引擎 一、转推CDN 0、前提 * 在调用该接口前&#xff0c;你需要在[控制台](https://console.volcengine.com/rtc/workplaceRTC)开启转推直播功能。<br> * 调…

力扣面试150题--插入区间和用最少数量的箭引爆气球

Day 28 题目描述 思路 初次思路&#xff1a;借鉴一下昨天题解的思路&#xff0c;将插入的区间与区间数组作比较&#xff0c;插入到升序的数组中&#xff0c;其他的和&#xff08;合并区间&#xff09;做法一样。 注意需要特殊处理一下情况&#xff0c;插入区间比数组中最后一…

【Java面试笔记:基础】4.强引用、软引用、弱引用、幻象引用有什么区别?

1. 引用类型及其特点 强引用(Strong Reference): 定义:最常见的引用类型,通过new关键字直接创建。回收条件:只要强引用存在,对象不会被GC回收。示例:Object obj = new Object(); // 强引用特点: 强引用是导致内存泄漏的常见原因(如未及时置为null)。手动断开引用:…

ycsb性能测试的优缺点

YCSB&#xff08;Yahoo Cloud Serving Benchmark&#xff09;是一个开源的性能测试框架&#xff0c;用于评估分布式系统的读写性能。它具有以下优点和缺点&#xff1a; 优点&#xff1a; 简单易用&#xff1a;YCSB提供了简单的API和配置文件&#xff0c;使得性能测试非常容易…

基于SpringBoot的校园赛事直播管理系统-项目分享

基于SpringBoot的校园赛事直播管理系统-项目分享 项目介绍项目摘要管理员功能图用户功能图项目预览首页总览个人中心礼物管理主播管理 最后 项目介绍 使用者&#xff1a;管理员、用户 开发技术&#xff1a;MySQLJavaSpringBootVue 项目摘要 随着互联网和移动技术的持续进步&…

Nginx​中间件的解析

目录 一、Nginx的核心架构解析 二、Nginx的典型应用场景 三、Nginx的配置优化实践 四、Nginx的常见缺陷与漏洞 一、Nginx的核心架构解析 ​​事件驱动与非阻塞IO模型​​ Nginx采用基于epoll/kq等系统调用的事件驱动机制&#xff0c;通过异步非阻塞方式处理请求&#xff0c;…

杭州小红书代运营公司-品融电商:全域增长策略的实践者

杭州小红书代运营公司-品融电商&#xff1a;全域增长策略的实践者 在品牌竞争日趋激烈的电商领域&#xff0c;杭州品融电商作为一家专注于品牌化全域运营的服务商&#xff0c;凭借其“效品合一”方法论与行业领先的小红书代运营能力&#xff0c;已成为众多品牌实现市场突围的重…

【映客直播-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

Android audio_policy_configuration.xml加载流程

目录 一、audio_policy_configuration.xml文件被加载流程 1、AudioPolicyService 创建阶段 2、createAudioPolicyManager 实现 3、AudioPolicyManager 构造 4、配置文件解析 loadConfig 5、核心解析逻辑 PolicySerializer::deserialize 二、AudioPolicyConfig类解析 1、…

使用 Docker 安装 Elastic Stack 并重置本地密码

Elastic Stack&#xff08;也被称为 ELK Stack&#xff09;是一个非常强大的工具套件&#xff0c;用于实时搜索、分析和可视化大量数据。Elastic Stack 包括 Elasticsearch、Logstash、Kibana 等组件。本文将展示如何使用 Docker 安装 Elasticsearch 并重置本地用户密码。 ###…