C#面试题目含参考答案(二)

前言

        面试是应聘一个工作岗位的环节,来考察一个人的工作能力与综合素质。在应聘C#程序员或与C#相关岗位时,我们都会被问到一些与.NET、C#、数据库、业务知识或编程思想等问题。

题目

31、值类型和引用类型的区别

参考答案:

1、值类型的数据存储在内存的栈中,引用类型的数据存储在内存的堆中,而内存单元中只存放堆中对象的;

2、值类型的变量直接存放实际的数据,而引用类型的变量存放的则是内存堆中数据的地址,即对象的引用;

3、值类型继承自System.ValueType,引用类型继承自System.Object;

4、栈的内存分配是自动释放,而堆在.NET中会有GC来释放;

5、值类型存取速度快,引用类型存取速度慢;

6、值变量赋值时,会在栈中保存两个完全相同的值,改变值独立;引用变量赋值时,会拷贝对相同对象的同一个引用,改变变量值实际是改变堆地址对象中的值,会影响另一个引用变量值。

32、string name=null与string name="" 有什么区别

参考答案:string str=null 把这个引用指向了一个null,没有地址没有值的地方,即没分配内存空间;string str="" 把这个引用指向了一个地址,地址里面存的是空的字符,即占用了内存空间。

33、什么是链式委托

参考答案:链式委托也称多播委托是一种委托的使用方式,它将多个委托对象连接成一个链表。当链表上的一个委托被回调时,所有链表上该委托的后续委托将会被顺序执行。

// 定义声明
private delegate void PrintingMethod(object contents);
// 实例化委托 使用其他类的方法
PrintingMethod printingMethod = new PrintingMethod(Log.Printing);
// 添加
printingMethod += Log.End;
// 调用委托实例 一次执行二个方法            
printingMethod("委托调用执行Printing与End方法");
// 删除
printingMethod -= Log.End;

34、序列化有何作用

参考答案:序列化是将对象转换为字节流以将其保存在内存、数据库或文件中的过程。1、保存内存中的各种对象的状态,并且可以把保存的对象状态在读出来;2、可以实现数据的持久化;3、对象数据的远程通信;4、保证对象的完整性和可传递性。

35、委托回调静态方法和实例方法有何区别

参考答案:委托可以回调静态方法或实例方法。委托回调静态方法时,它不需要实例对象。而委托回调实例方法时,需要提供目标对象,方法将在该目标对象上调用,它需要实例对象。

36、StringBuilder有什么作用

参考答案:StringBuilder用于构建可变字符串,并提供了高效地进行字符串拼接和修改的方法。以及常用来和非托管代码交互。

37、描述一下C#中索引器的实现过程,是否只能根据数字进行索引?

参考答案:首先,需要定义一个包含索引器的类或结构体。可以通过在类或结构体内部添加this关键字来创建索引器。然后,指定索引器的返回值类型和参数列表。这些信息将告诉编译器如何调用索引器并获取所需的值。其次,根据自己的需求实现索引器的逻辑。可以使用任意合法的语句、条件判断等来处理索引操作。最后,提供相应的getter(获取特定索引位置上的值)和setter(设置位置上的值)方法。

下面是一个索引器的示例:

public class WeekDays
{string[] days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];// 定义具有表达式体的只有get访问器的索引器public int this[string day] => FindDayIndex(day);//private int FindDayIndex(string day){for (int j = 0; j < days.Length; j++){if (days[j] == day){return j;}}}
}
//使用示例
var week = new DayCollection();
Console.WriteLine(week["Friday"]);

38、ADO.NET 访问数据库的基本步骤是什么?

参考答案:访问数据库的基本步骤是1、创建数据库连接对象;2、打开连接;3、创建命令对象;4、执行SQ语句;5、关闭连接。

示例:

// 声明连接字符串变量
string connectionString = "Persist Security Info=False;Integrated Security=true;Initial Catalog=msdb;server=(local)";
// 创建数据库连接对象
SqlConnection sqlConnection =new SqlConnection(connectionString);
try      
{// 打开数据库连接sqlConnection.Open();// 创建命令对象SqlCommand command = sqlConnection.CreateCommand();command.CommandType = CommandType.Text;// 编写待执行SQL语句command.CommandText = @"select * from sysjobs";//待执行SQL语句SqlDataReader reader = command.ExecuteReader();
}
catch (Exception exception)
{throw new Exception(exception.Message)
}
finally
{// 关闭数据库连接sqlConnection.Close();
}

39、ADO.NET 访问数据库常用的对象有哪些

参考答案:DataConnection=数据库连接对象;Command=执行SQL命令和存储过程;DataReader=向前只读的数据流;DataAdapte=适配器,支持增删查询;DataSet=独立数据集合的数据存储器。

40、ADO.NET中DataSet与DataReader的区别是什么

参考答案:1、获取数据的方式不同:DataReader 为在线操作数据,DataSet 为离线操作数据。2、获取数据的机制不同:DataReader通过ExecuteReader来读取数据;DataSet通过DbDataAdapter.Fill来填充数据。

41、DataSet与DataTable的区别

参考答案:DataSet是数据集,DataTable是数据表,DataSet存储多个DataTable。DataSet和DataTable像是专门存储数据的一个容器,可以将查询数据库得到的结果存储在里面。

42、简单介绍下ADO.NET和ADO主要有什么改进

参考答案:ADO以Recordset存储,而ADO.NET则以DataSet表示,ADO.NET提供了数据集和数据适配器,有利于实现分布式处理,降低了对数据库服务器资源的消耗。

43、列举ADO.NET中的共享类和数据库特定类

参考答案:共享类:DataSet,DataTable,DataRow,DataColumn,DataRealtion,Constraint,DataColumnMapping,DataTableMapping。特定类:根据数据提供程序X=[Sql、Mysql等] (X)Connection,(X)Command,(X)CommandBuilder,(X)DataAdapter,(X)DataReader,(X)Parameter,(X)Transaction。

44、类和对象的区别和关系是什么

参考答案:类是对象的抽象,它属于该类的全部对象提供了统一的抽象描述。类是对象的模板。对象是类的实例。

45、静态字段与非静态字段有什么区别

参考答案:加static修饰字段时,则该字段为静态字段,静态字段不属于某个实例对象,只与类相关联,因此,对静态字段的访问只与类关联,访问时使用类名.字段,实例字段的访问与实例对象关联,访问时使用对象名.字段

46、&和&&的区别

参考答案:&是位运算符表示按位与运算,&&是逻辑运算符表示逻辑与。

示例:

// 定义一个布尔变量 x
bool x = true;
// 定义一个布尔变量 y
bool y = false;
// 两个变量进行逻辑与运算
bool result = (x && y);  //结果为false// 20的二进制为 0001 0100
int i = 20;
// 12的二进制为 0000 1100
int j = 12;
// 整型类型二进制与运算符
int result = i & j;  // 结果为4

47、readonly与const的区别

参考答案:const为编译时常量,只有内置类型可声明为const且声明时初始化,只能内置类型可;readonly 为运行时常量,在声明时可以不初始化,可以在类的构造函数中进行设置,在运行时第一次赋值后将不可以改变。

48、简述C#中using的几种用法

参考答案:1、引用命名空间;2、定义对象的使用范围,即时释放对象;3、引用命名空间使用别名。

示例:

// 引用命名空间
using System;
// 引用命名空间使用别名
using RedefinPrint= System.Drawing.Printing;
// 定义对象的使用范围,即时释放对象
using (PrintDocument printDocument = new PrintDocument())
{printDocument.Print();
}

49、NET的错误处理机制是什么

参考答案:采用try->catch->finally结构,发生错误时,层层上抛,直到找到匹配的Catch为止。

示例:

try      
{// 执行代码
}
catch (Exception exception)
{// 捕获和处理异常throw new Exception(exception.Message)
}
finally
{// 代码始终都会执行,确保资源的释放和清理
}

50、简述ref 、out和in在用作函数参数修饰符时的区别

参考答案:1、ref参数可用于输入或输出,变量使用前必须初始化。2、out 参数只用于输出,使用前无需初始化。3、in参数只用于输入,按引用传递,它能确保在使用过程中不被修改,变量使用前必须初始化。

51、.NET中所有类的基类是

参考答案:.NET中所有类的基类是object。

52、.Net中所有可序列化的类都被标记为什么

参考答案:都被标记为[serializable]

示例:

[Serializable]
public class Person
{/// <summary>////// </summary>public Person(){}/// <summary>////// </summary>public int Age { get; set; }/// <summary>////// </summary>public decimal Weight { get; set; }
}

53、列举C#中集合类型

参考答案:数组集合类型、ArrayList 和List 集合类型、Hashtable 和 Dictionary 、SortedList 和SortedDictionary 集合类型、队列Queue集合类型、堆栈Stack集合类型、HashSet 集合类型、LINQ Set 运算。

54、在.NET的C#语言中,Appplication.Exit与Form.Close有什么不同

参考答案:Appplication.Exit是退出整个应用程序,Form.Close是关闭其中一个窗体。

55、如何Array复制到ArrayList中

参考答案:1、使用foreach循环,将array数组中的数据逐步放入ArrayList的对象中;2、直接使用构造方法传入;3、使用ArrayList的adpater的方法 ,将整个Array对象封装到ArrayList对象中。

示例:


string[] dayArray =new string[] { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };
// 定义
ArrayList arrayList = new ArrayList();
//方法一
foreach (string day in dayArray)
{arrayList.Add(day);
}
// 方法二 直接使用构造方法传入,因为Array实现了ICollection
ArrayList copyArrayList = new ArrayList(dayArray);
//方法三
ArrayList dayArrayList = new ArrayList();
dayArrayList = ArrayList.Adapter(dayArray);

56、Func<T> 与Action<T> 的区别

参考答案:Func<T>有返回类型;Action<T>只有参数类型,不能传返回类型。所以Action<T>的委托函数都是没有返回值的。

57、什么是泛型约束

参考答案:泛型约束是一种在泛型类型参数上定义约束条件的机制,它可以帮助我们限制泛型类型参数的取值范围。约束是使用 where 上下文关键字指定的。

示例:


//构造函数约束:要求泛型参数必须有构造函数
public class Person<T> where T : new()
{}

58、C#中的接口和类有什么异同

参考答案:接口是可以多继承,类只有单继承。接口强调了你必须实现,而没有具本实现的方法和虚类有点相似。

接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员。接口可以包含事件、索引器、方法和属性。

59、new关键字用法

参考答案:1、当运算符时用于创建对象和调用构造函数。2、当修饰符时用于向基类成员隐藏继承成员。3、当约束时用于在泛型声明中约束可能用作类型参数的参数的类型。

60、下面这段代码有错误吗?如有是什么错误

public static const int i=1;

参考答案:存在错吴,const关键字不能用static修饰。

小结

        以上是30个C#面试题目,后续继续列举一些问题及提供参考答案,敬请关注后续内容。

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

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

相关文章

JavaScript+B/S版云LIS系统源码ASP.NET CORE 3.1 MVC云LIS系统如何实现样本追踪的预警功能?医院云LIS检验系统源码

JavaScriptB/S版云LIS系统源码ASP.NET CORE 3.1 MVC云LIS系统如何实现样本追踪的预警功能&#xff1f;医院云LIS检验系统源码 实验室信息管理系统&#xff08;Trasen Laboratory Information Management System&#xff09;是一套专业的医疗实验室信息管理软件&#xff0c;包含…

【C++庖丁解牛】C++11---新的类的功能 | 可变参数模板

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 1.新的类功能1.1 默认成员…

pyqt标签常用qss格式设置

pyqt标签常用qss格式设置 QSS介绍标签常用的QSS设置效果代码 QSS介绍 Qt Style Sheets (QSS) 是 Qt 框架中用于定制应用程序界面样式的一种语言。它类似于网页开发中的 CSS&#xff08;Cascading Style Sheets&#xff09;&#xff0c;但专门为 Qt 应用程序设计。使用 QSS&…

24.4.28(板刷dp,拓扑判环,区间dp+容斥算回文串总数)

星期一&#xff1a; 昨晚cf又掉分&#xff0c;小掉不算掉 补ABC350 D atc传送门 思路&#xff1a;对每个连通块&#xff0c;使其成为一个完全图&#xff0c;完全图的边数为 n*(n-1)/2 , 答案加上每个连通块成为完全图后的…

第十五届蓝桥杯Java软件开发大学B组自我经验小结

自我介绍 23届大一 双非 计院科班 软件工程 江苏人在吉林上大学 Java蒟蒻 在学校的宣传下 有幸参加了第十五届蓝桥杯Java大学b组省赛 蓝桥杯说明 就是一个算法比赛吧 考试时间9.00到1.00 四小时 带准考证和身份证和笔 草稿纸会发 赛制是IOC就是不会给任何反馈 就是你…

富唯智能案例|双3D相机引导衔架抓取铝型材

随着制造业的快速发展和自动化水平的不断提升&#xff0c;铝型材的自动化抓取和加工成为行业内的一大技术难题。铝型材因其轻便、耐腐蚀、易加工等特点&#xff0c;广泛应用于建筑、汽车、电子等领域。然而&#xff0c;铝型材的形状多样、尺寸不一&#xff0c;以及生产线上的高…

MTK Android.mk 预置应用out下生成,但桌面不加载显示

预置第三方APK&#xff1a; prebuilts xxx.apk android.mk lib文件 # android.mk具体配置如下&#xff1a; include $(CLEAR_VARS) //必须先定义LOCAL_PATH 变量&#xff0c;此变量表示源文件的位置。编译系统提供的宏函数 my-dir 将返回当前目录&#xff08;Android.mk…

Ruby递归目录文件的又一种方法

经常派得上用场&#xff0c;记录一下。 递归文件做一些操作 #encoding:utf-8require pathnamedef recursive_enum_files(from_path)from_path Pathname.new(from_path)raise ArgumentError,must start at a directory. unless from_path.directory?from_path.enum_for(:fin…

【算法系列】哈希表

目录 哈希表总结 leetcode题目 一、两数之和 二、判定是否互为字符重排 三、存在重复元素 四、存在重复元素 II 五、字母异位词分组 六、在长度2N的数组中找出重复N次的元素 七、两个数组的交集 八、两个数组的交集 II 九、两句话中的不常见单词 哈希表总结 1.存储数…

C语言/数据结构——每日一题(链表的中间节点)

一.前言 今天我在LeetCode刷到了一道单链表题&#xff0c;想着和大家分享一下这道题&#xff1a;https://leetcode.cn/problems/middle-of-the-linked-list。废话不多说让我们开始今天的知识分享吧。 二.正文 1.1题目描述 1.2题目分析 这道题有一个非常简便的方法——快慢指…

Kafka如何将消息发送到指定分区

背景 面试一个时&#xff0c;面试官问了一个问题&#xff0c;Kafka如何做到顺序消息。我回答只给Kafka的Topic创建一个分区&#xff0c;发送到该Topic的消息在Kafka中就是有序的。 面试官又问&#xff0c;如果Topic有多个分区呢&#xff1f;我回答消息发送者在发送消息的时候…

袁庭新ES系列17节|Spring Data Elasticsearch基础

前言 为了简化对Elasticsearch的操作Spring Data提供了Spring Data Elasticsearch。Spring Data Elasticsearch是Spring Data技术对Elasticsearch原生API封装之后的产物&#xff0c;它通过对原生API的封装&#xff0c;使得程序员可以简单的对Elasticsearch进行各种操作。接下来…

信融算网,创启未来 | 移动云一体化算网调度平台发布

4月29日上午&#xff0c;中国移动算力网络大会“自主可控算力网络应用”分论坛在苏州召开&#xff0c;中国移动云能力中心副总经理吴世俊、中国移动信息技术中心副总经理陈国出席论坛并发表致辞。论坛发布全国首个实现通算、智算、超算、量子计算&#xff0c;以及网络、安全一站…

全栈开发之路——前端篇(2)文件、组件与setup引入

全栈开发一条龙——前端篇 第一篇&#xff1a;框架确定、ide设置与项目创建 本文系该系列第二篇&#xff0c;主要将介绍各个文件的意义、组件结构与导入以及setup的引入。 目录 一、src外文件介绍.gitignore为git忽略文件env.d.ts用于识别其他文件index.htmljson文件vite.confi…

【JAVASE】带你了解的方法魅力

✅作者简介&#xff1a;大家好&#xff0c;我是橘橙黄又青&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;橘橙黄又青-CSDN博客 目标&#xff1a; 1. 掌握方法的定义以及使用 2. 掌握方法传参 3. 掌握方法重载 …

java 基础面试-- hashCode 方法重要性及使用

引言 在Java编程的世界里&#xff0c;hashCode方法扮演着至关重要的角色&#xff0c;尤其在涉及到集合类&#xff08;如HashMap、HashSet&#xff09;和对象比较的场景中。本文将深入探讨hashCode方法的工作原理、重要性以及如何正确地重写它&#xff0c;以确保你的程序在性能…

[C++][算法基础]四种基本背包问题(动态规划)

1. 01背包问题 有 &#x1d441; 件物品和一个容量是 &#x1d449; 的背包。每件物品只能使用一次。 第 &#x1d456; 件物品的体积是 &#x1d463;&#x1d456;&#xff0c;价值是 &#x1d464;&#x1d456;。 求解将哪些物品装入背包&#xff0c;可使这些物品的总体…

10.JAVAEE之网络编程

1.网络编程 通过网络,让两个主机之间能够进行通信 >基于这样的通信来完成一定的功能进行网络编程的时候,需要操作系统给咱们提供一组 AP1, 通过这些 API才能完成编程&#xff08;API 可以认为是 应用层 和 传输层 之间交互的路径&#xff09;&#xff08;API:Socket API相当…

RK3399平台Android7系统编译及问题解决

目录 【Android系统编译】 平台&#xff1a; Android编译&#xff1a; 烧写固件路径&#xff1a; 【android版本号查看】 【RK3399开发环境搭建】 4.1 JDK 安装 4.2 Linux 服务器开发环境搭建 4.2.1 发布包使用 Linux 服务器系统版本 4.2.2 网络环境搭建 4.2.3 软件…

【树——数据结构】

文章目录 1.基本概念2.基本术语1.结点之间的关系描述2.结点&#xff0c;树的属性描述3.有序树&#xff0c;无序树4.森林 3.树的性质考点1考点2考点3考点4 4.树的存储结构5.树和森林的遍历 1.基本概念 结点&#xff0c;根节点&#xff0c;分支结点&#xff0c;叶子结点&#xf…