C#常见面试题

1. http和https的区别

1.HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。

2.使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。
3.HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。
4.http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。
5.HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。

2.访问修饰符有哪些

public:公有访问,不受任何限制。任何代码都可以访问声明为public的成员。

private:私有访问,只限于本类成员访问。其他类,包括子类和实例,都不能访问。
protected:保护访问,只限于本类和子类访问。实例不能访问。
internal:内部访问,只限于本项目内访问。其他项目不能访问。
protected internal:内部保护访问,只限于本项目或者子类访问。其他项目不能访问。

3.事物的特性

在C#中,事务的特性指的是一种编程模型,用于确保一组相关操作要么全部成功执行,要么全部失败回滚。事务的特性通常包括以下几个方面:

1.原子性(Atomicity):事务是原子性的,即要么所有操作都成功执行,要么所有操作都不执行,不会出现部分操作成功部分操作失败的情况。
2.一致性(Consistency):事务的执行必须保持系统的一致性,即事务执行前后系统状态应该是一致的。
3.隔离性(Isolation):事务的执行应该是相互隔离的,即一个事务的执行不应该受到其他事务的影响。
4.持久性(Durability):一旦事务提交,其结果应该是永久性的,即在系统发生故障或重启后,事务的结果仍然应该是可靠的。
在C#中,可以使用事务来确保数据库操作的一致性和可靠性。通常情况下,使用ADO.NET或者Entity Framework等数据库访问技术来进行事务的管理。这些技术通常提供了Transaction类或者TransactionScope类来实现事务的特性,包括原子性、一致性、隔离性和持久性。

4.XML和JSON的区别

在C#中,XML(可扩展标记语言)和JSON(JavaScript对象表示)都是用于数据交换和存储的格式,但它们有一些区别:

语法:XML使用标签和属性来表示数据,而JSON使用键值对和数组来表示数据。XML看起来更像是一种标记语言,而JSON更像是一种轻量级的数据交换格式。
可读性:JSON通常比XML更易读,因为它的语法更简洁,结构更清晰。XML的标签和属性可能会使数据看起来更加冗长。
数据类型:JSON支持的数据类型相对较少,包括字符串、数字、布尔值、数组、对象和null值。而XML可以使用各种数据类型,并且具有更丰富的语义。
解析和处理:在C#中,JSON通常比XML更容易解析和处理因为C#中有许多内置的库和方法可以直接处理JSON数据,例如Json.NET库。而XML的处理可能会涉及到使用System.Xml命名空间中的类和方法,相对来说稍显复杂。
总的来说,XML和JSON都有各自的优势和用途,选择使用哪种格式取决于具体的需求和场景。在C#中,通常情况下,JSON更适合用于Web服务和数据交换,而XML更适合用于文档存储和配置文件。

5.XML格式

在C#中,XML格式是一种标记语言,用于表示和存储数据。XML文档由一系列标签和文本内容组成,具有以下特点:

标签:XML使用尖括号包围的标签来表示数据的结构。标签可以包含属性和子元素,用于描述数据的层次结构和关系。

属性:标签可以包含属性,属性用于提供有关元素的附加信息。属性通常以键值对的形式出现在标签的开始标记中。

文本内容:XML文档中的文本内容可以包含在标签之间,用于表示数据的值或描述信息。

命名空间:XML支持命名空间,用于避免元素和属性名称的冲突,同时允许将XML文档与特定的XML模式(Schema)相关联。

一个简单的XML文档示例如下:

<bookstore>

  <book category="cooking">

    <title lang="en">Everyday Italian</title>

    <author>Giada De Laurentiis</author>

    <year>2005</year>

    <price>30.00</price>

  </book>

  <book category="children">

    <title lang="en">Harry Potter</title>

    <author>J.K. Rowling</author>

    <year>2005</year>

    <price>29.99</price>

  </book>

</bookstore>

6.JSON格式

在C#中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它具有以下特点:

键值对:JSON由键值对组成,键和值之间用冒号分隔,不同的键值对之间用逗号分隔。

对象:JSON中的对象由一对花括号{}包围,对象中包含零个或多个键值对。

数组:JSON中的数组由一对方括号[]包围,数组中包含零个或多个值,值之间用逗号分隔。

值类型:JSON支持字符串、数字、布尔值、null值、对象和数组这几种基本数据类型。

样式举例

{

  "name": "John",

  "age": 30,

  "isStudent": false,

  "courses": ["Math", "Science", "History"],

  "address": {

    "street": "123 Main St",

    "city": "Anytown"

  }

}

7.委托是什么,委托和事件的关系

  在C#中,委托(Delegate)是一种类型,它可以用来引用一个或多个方法,允许将方法作为参数传递给其他方法,或者在运行时动态调用方法。委托可以看作是一个类型安全的函数指针,它可以用于实现回调函数、事件处理和多播委托等功能。

事件是一种特殊类型的委托,它用于实现观察者模式,允许对象在特定的条件下通知其他对象发生了某个事件。事件通常用于在类中定义和触发事件,并允许其他类注册事件处理程序来响应事件的发生。

8.new关键字的几种用法

new 运算符:用于创建对象和调用构造函数。这种大家都比较熟悉,没什么好说的了。

new 修饰符:在用作修饰符时,new 关键字可以显式隐藏从基类继承的成员。
new 约束:用于在泛型声明中约束可能用作类型参数的参数的类型。

9.ref和out在修饰方法在参数传递时有什么区别

REF参数在内部也可以不使用,OUT在方法返回前必须赋值

Ref传递前必须进行初始化,而OUT传入前不用初始化
REF在传入方法中可以直接使用,OUT不能再内部使用

10.is和as有什么区别

IS来判断A是否是B一样的类型

AS,是将A强转成B的类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值