程序猿 C#常规面试题

2023-11-07

1、.NET框架是什么
.NET框架是Microsoft的软件开发框架。它提供了一个受控的编程环境,可以在基于Windows的操作系统上开发,安装和执行软件。

2、.NET和C#的区别
.NET是一种框架,CLR公共语言运行库是.NET FrameWork的基础,其他语言是在.NET框架上运行的。
C# 一种编程语言,一般可以通过.NET框架编译成IL中间语言,在电脑上执行程序。

3、面向对象是什么
面向对象是指将数据和基于数据的操作方法封装到一起作为一个相互依赖的整体,面向对象是把问题分解成多个对象,强调的是解决问题的行为表现。

4、面向对象的主要思想包括什么?
封装:用抽象的数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型内部。
继承:子类拥有父类的所有数据和操作
多态:一个程序中同名的不同方法共存的情况。有两种形式的多态-重载与重写。

5、C#中的接口和类有什么异同?
接口是负责功能的定义,而类是负责功能的具体实现。
一个类只可以继承一个父类,但可以继承多个接口。

6、抽象类和接口有什么区别?
抽象类是一个不完全的类,类里面有抽象的方法,属性,也可以有具体的方法和属性,需要进一步的专业化。
接口是一个行为规范,里面的所有东西都是抽象的。

7、值类型和引用类型的区别?
基于值类型的变量直接包含值,将一个值类型变量赋值给另一个值类型变量时,将复制包含的值。引用类型变量的赋值只复制对象的引用,而不复制对象本身。
值类型有:int、float、double、bool、枚举、结构体等
引用类型有:string、object、class、接口、数组、委托等

8、什么是装箱和拆箱?
装箱是把值类型到引用类型的转换
拆箱是把引用类型到值类型的转换

9、简述private、protected、internal、public修饰符的访问权限
private:私有成员,在类的内部才可以访问。
protected:保护成员,该类内部和继承类中可以访问。
internal:在同一程序集内可以访问。
public:公共成员,完全公开,没有访问限制。

10、C#中的委托是什么?
委托是一种方法容器,里面都可以装载若干个方法引用地址,调用委托,就相当于同时调用了该容器内的所有方法。

11、委托和事件的区别?
委托可以将方法作为参数传递给方法,委托主要调用方法的。
事件基于委托,事件的本质是委托字段的包装器,对委托字段的访问其限制作用,事件隐藏了委托实例的大部分功能,仅暴漏添加和移除事件处理器的功能。事件是对象,委托是类型。

12、Override与重载的区别?
Override是子类对父类的方法进行重写。
重载是方法的名称相同,参数或参数类型不同。

13、线程和进程的区别?
进程是资源的分配和调度的独立单元,而线程是CPU调度的基本单元。
同一个进程中可以包括多个线程,并且线程共享整个进程的资源(寄存器、堆栈、上下文),一个进程至少包括一个线程。

14、WCF是什么?
WCF(Windows Communication Foundation)是由微软开发的一系列支持数据通信的应用程序框架。

15、webService是什么?
WebService就是web服务,是微软主推的一种跨平台的分布式应用程序。他使用SOAP协议通讯,用XML封装数据。优点:1.可复用的Web应用程序组件。2.与平台无关,发布后可以被不同平台调用。3.使用XML格式的纯文本来描述自己如何使用。缺点:1.服务端接口方为WebService则客户端也必须使用WebService。2.因为WebService使用xml传输数据,因此性能上不能满足高并发。

16、.NET的错误处理机制是什么?
.net错误处理机制采用try->catch->finally结构,发生错误时,层层上抛,直到找到匹配的catch为止。

17、多线程的创建、启动?
多线程一般使用new thread()方法进行创建一个线程,使用start方法进行启动一个线程。

18、sleep和wait的区别?
sleep是thread提供的一个静态的方法,使当前线程暂时睡眠,指定休眠时间到了之后就会恢复运行。
wait是会释放对象锁,让其他线程可以访问,需要唤醒才能被执行。

19、请叙述const与readonly的区别。
readonly关键字和const关键字不同:const字段只能在该字段的声明中初始化。readonly字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly可能具有不同的值。

20、请描述一下ref和out在方法参数传递上的异同点?
ref传入的参数必须先被初始化,out则不需要,out必须在方法中对其完成初始化。
out更适合用在要返回多个返回值的地方,ref则要用在要被调出使用的方法修改调出使用者的引用的时候。

21、请指出.NET中所有类型的基类
所有类型的基类:object

22、请列出C#中几种循环的方法,并指出他们的不同
for:带有索引的集合,主要用于循环次数固定的循环。
foreach:用于列举出集合中所有的元素。
while:条件成立循环,通常用于不确定的循环次数。
do...while:与while类似,不同之处在于保证了循环至少执行一次。

23、C#中using和new这两个关键字有什么意义?
using引入一个命名空间,或在使用了一个对象后自动调用其IDespose,New实例化一个对象,或修饰一个方法,表示此方法显示隐藏父类的同名方法。

24、C#中,string str=null与string=""有什么区别?
string str=null是不分配内存空间,而string str=""给它分配了长度为空字符串的内存空间。

25、反射是什么?
程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集模块和类型的对象。可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。

26、序列化和反序列化是什么?
序列化是将对象转换为容易传输的格式的过程
反序列化是把接收的文件的格式转化成原来的对象

27、什么是XML,能用来做什么
xml一般指可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。

28、TCP和UDP的区别?
TCP使用前需要先建立连接,UDP不需要建立连接
TCP对系统资源的要求较多,UDP对系统资源的要求较少
TCP保证数据正确性,UDP可能会丢包
TCP保证数据顺序,UDP不保证

29、堆和栈的区别
堆是有程序员手动分配释放,栈是程序自动分配并释放。

30、虚函数和抽象函数
虚函数是由没有实现的函数,由其子类继承并重写的函数
抽象函数是必须由其非虚子类继承并重写的函数

31、==和equals的区别?
==是运算符,equals是Object类的方法
比较的类型不同:equals比较两个对象的内容是否相同。==用于比较引用和比较基本数据类型时具有不同的功能,比较引用类型时比较的是地址值,比较基础数据类型只能用"=="比较两个值是否相同。
运行的速度不同:equals没有==运行速度快,因为==只比较引用。

32、String和StringBuilder的区别?
string创建后分配在栈区,大小不可修改,每次使用string类中的方法时,都要在内存中再创建一个新的字符串对象,然后指向新的对象。这样就需要再分配新的空间。所以有可能产生很大的开销。
StringBuilder创建后分配在堆区,大小可自由修改。

33、C#中常见的数据结构及使用情景
一、数组(Array):需要处理的元素数量确定并且需要使用下标进行访问时可以考虑,不过建议使用List<T>。
二、动态数组(ArrayList):不推荐使用,建议使用泛型List<T>。
三、泛型List:需要处理的元素数量不确定时,通常建议使用。
四、双向链表(LinkedList):链表适合元素数量不固定,而且需要经常增减节点的情况,链表增减元素效率高。
五、堆栈(Stack):堆栈适合于先进后出的情况。
六、链表Queue:队列适合于先进先出的情况。
七、字典(Dictionary):字典适合于需要键值对操作的情况。

34、常用的设计模式有哪些?
单例模式:一个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例.
单例模式又包括饿汉模式和懒汉模式
饿汉模式:每次调用的时候都会直接加载
懒汉模式:使用的时候才加载
工厂模式:定义规范接口,由其子类进行功能的实现
建造者模式:将复杂的功能分割,重建后实现不同的功能.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

程序猿 C#常规面试题 的相关文章

随机推荐

  • element ui + vue项目,el-select选择器,选中值后无法及时回显到页面上

    出现原因 不详 解决方法 el select 标签上绑定chang事件 强制刷新 change forceUpdate
  • Jsoniter简单的使用介绍

    2017 7 1日更新 前几天在公司做一个模块的时候想使用Jsoniter解析一个json字符串 结果发现 当字符串长度大于一定值的时候 就会抛错 查了写资料 无果 最后换成了gson 成功解析 之前一直在使用google的gson以解析j
  • Qt的MOC机制

    Qt的MOC机制 Qt扩展了C 使得开发者拥有很多方便使用的工具 如何使用Qt提供的特性呢 比如信号与槽 那就需要开发者在类中声明Q OBJECT宏 这样程序员就能使用Qt提供的功能了 为什么这样可以呢 先从C 文件的编译过程开始讲 一般C
  • QT从入门到实战x篇_32_实战篇:翻金币(创建项目;场景切换;设置背景图片;按钮控件封装;跳跃特效;QTimer::singleShot();引入数据类;QMap<>;翻金币特效;插入音效;打包)

    本篇将会根据前面讲解的关于Qt的相关内容进行一个实战项目 项目链接 翻金币案例 关于此项目比较好的博客地址如下 QT 翻金币项目 翻金币项目总结 1 项目简介 2 项目基本配置 2 1 创建项目 2 2 添加资源 3 主场景 3 1 设置游
  • Webpack实用工具之webpack-server

    Webpack实用工具之Webpack server 一 webpack server的原理简单解读 使用webpack server时 webpack server会为我们的当前的项目开启一个服务器 将其中的文件放入到该服务器中供我们进行
  • 字符串旋转(C#)

    字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部 请定义一个函数实现字符串左旋转操作的功能 比如 输入字符串 abcdefg 和数字2 该函数将返回左旋转两位得到的结果 cdefgab 来源 力扣 LeetCode 链接 ht
  • 使用java输出一组6位的随即数组

    可以使用 Java 的 Random 类来生成一组 6 位的随机数组 下面是一个示例代码 import java util Random public class Main public static void main String ar
  • C#使用操作符~按位取反

    int x 12345678 int y x 是按位取反操作符 string xStr Convert ToString x 2 PadLeft 32 0 将int数值 转换成二进制字符串 string yStr Convert ToStr
  • Angular嵌套路由

    嵌套路由 1 在app routing module ts文件中配置路由 const routes Routes path home component HomeComponent children path tabbar componen
  • STM32学习笔记(6):PWM控制

    PWM控制 PWM方波 脉冲宽度调制 PWM 是英文 Pulse Width Modulation 的缩写 简称脉宽调制 是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术 广泛应用在从测量 通信到功率控制与变换的许多领域中
  • Gradle使用Maven仓库

    在build gradle文件中 修改repositories如下 repositories mavenLocal mavenCentral 这样的话 就会优先从maven的仓库中查找所需的jar包 我的maven配置本地仓库为D repo
  • github哪些协议能商用_版权->GitHub代码版权你关心过吗?

    作为一个无版权习惯的码农 终于遇到一个大坑 堵住了自己一条光明大路 那就是 版权 大部分程序员遵从的原则就是不重复造轮子 作为一个非著名相声演员 哦不 非大牛程序员 咳咳 把这句至理名言发挥的更是淋漓尽致 只要有需求 想好大致架构思路和逻辑
  • 数据组合利器:从入门到精通Python中的zip()函数应用

    介绍 zip 函数是Python内置的一个非常有用的函数 它可以将多个可迭代对象打包成一个元组构成的新的可迭代对象 本文将深入探讨zip 函数的用法 从入门到精通 目录 zip 函数的基本用法 使用zip 函数合并列表 使用zip 函数进行
  • Unity中的UGUI源码解析之事件系统(7)-输入模块(上)

    Unity中的UGUI源码解析之事件系统 7 输入模块 上 从今天开始 我们进入事件系统的的最后一部分 输入模块 InputModules 输入模块是事件系统的核心 是真正使用检测和调用回调的地方 输入模块主要有几个角色 分别为 BaseI
  • 深入了解jQuery的children方法

    jQuery是一种简化HTML文档遍历和操作 事件处理 动画和AJAX等常见任务的JavaScript库 而children 方法是其中之一 它是一个非常实用的方法 可以让我们在DOM树中轻松找到特定元素的子元素 并进行进一步操作 在本文中
  • Nginx配置参数解释

    目录 worker processes work cpu affinity worker rlimit nofile events模块 1 use method 2 worker connections 3 multi accept htt
  • grep正则表达式例子

    grep支持的正则表达式有很多 这里尽量全面地列出各种正则表达式及其说明 行首匹配 用于匹配字符串的开始 行尾匹配 用于匹配字符串的结束 匹配除换行符外的任意一个字符 匹配零个或多个前面的字符 匹配一个或多个前面的字符 匹配零个或一个前面的
  • 2020三校生英语计算机试卷,2020江西省“三校生”对口升学考试考试说明英语科目最新考试英语复习教材考前模拟试卷课本教材资料试题...

    三 题型示例 第 I 卷 选择题 共 125 分 单项选择题 共 25 小题 每小题 1 分 满分 25 分 从 A B C D 中 选出可以填入空白处的最佳选项 并在答题卡上将该项 填黑 1 Thank you very much Mr
  • Flink SQL CDC 的实时增量同步数据

    问题导读 1 怎样实现基于 Flink SQL CDC 的数据同步方案 2 CDC 是否需要保证顺序化消费 3 GROUP BY 结果如何写到 Kafka 传统的数据同步方案与 Flink SQL CDC 解决方案业务系统经常会遇到需要更新
  • 程序猿 C#常规面试题

    1 NET框架是什么 NET框架是Microsoft的软件开发框架 它提供了一个受控的编程环境 可以在基于Windows的操作系统上开发 安装和执行软件 2 NET和C 的区别 NET是一种框架 CLR公共语言运行库是 NET FrameW