.NET / C# 面试问题及答案。

.NET / C# 面试问题及答案。自信地应对下一次 Csharp 面试或 .NET 面试。

讲师:Shivprasad Koirala

口袋资源独家Udemy付费课程独家中英文字幕配套资料齐全!

不到1/10的价格,即可享受同样的高品质课程,且可以完全拥有,随时随地都可以任意观看和分享。

您将学到什么

  • 了解 C# 和 .NET 面试中会问哪些基本问题以及如何明确这些问题。
  • 回答有关 .NET 核心、.NET 框架、.NET 5.0、IL 代码、JIT、CTS、CLS、CLR、托管、非托管代码和垃圾收集器的基本 C# 问题。
  • 如何自信地回答有关堆栈、堆、值类型、引用类型、装箱、拆箱、后进先出、先进先出、隐式转换和显式转换的问题。
  • 线程和集合是 C# 面试中最受欢迎的话题。完整的部分专门回答数组、数组列表、数组与数组列表和泛型等问题。
  • 如果没有关于委托和事件的问题,C# 面试就不算完整。有一整节专门讨论委托和事件以及如何回答它们之间的差异
  • 专门的 OOP 面试部分涵盖类、对象、多态性、继承、虚方法、重载、覆盖、抽象类与接口
  • 处理有关聚合、组合、关联、UML 图、阴影、密封类、嵌套类和部分类的棘手问题。
  • 如何回答有关 SOLID(SRP、OCP、LSP、ISP 和依赖反转)、DI(依赖注入)、IOC(控制反转)的问题。
  • 垃圾收集器问题涵盖托管、非托管、代、GC0、GC1、GC2、Finalize 与析构函数、Dispose 模式、使用关键字、弱引用和强引用
  • 专门部分涵盖设计模式的基础知识、结构、行为、创建、单例模式、原型、模板、适配器、存储库、CQRS

探索相关主题

  • C#(编程语言)
  • Web 开发
  • 发展

要求

  • 应该具备 C# 知识。请记住,这是一门面试准备复习课程,而不是 C# 轻松工作的捷径。

描述

如果您希望通过 C# 和 .NET 面试,那么您就找到了正确的方向。您可以成为项目/公司的英雄,您必须处理过复杂的场景。

但是在面试过程中无法回答简单的 .NET、C# 基础问题可能会对面试产生非常负面的影响。

本课程重点关注 C# 和 .NET 的基本问题…祝您求职顺利。

以下是本系列涵盖的 C# 面试问题列表。

第 1 部分 – 堆栈、堆、装箱、拆箱、数组、ArrayList、泛型、线程
问题 1:- 解释 .NET 和 C# 之间的区别?
问题 2:- .NET Framework 与 .NET Core 与 .NET 5.0
问题 3:- 什么是 IL(中间语言)代码?
问题 4:- JIT(即时编译器)有什么用?
问题 5:- 是否可以查看 IL 代码?
问题 6:- 编译为 IL 代码有什么好处?
问题 7:- .NET 是否支持多种编程语言?
问题 8:- 什么是 CLR(公共语言运行时)?
问题 9:- 什么是托管和非托管代码?
问题 10:- 解释垃圾收集器的重要性?
问题 11:- 垃圾收集器可以声明非托管对象吗?
问题 12:- CTS 的重要性是什么?
问题 13:解释 CLS?
问题 14:Stack 和 Heap 的区别?
问题 15:什么是值类型和引用类型?
问题 16:解释装箱和拆箱?
问题 17:装箱和拆箱的后果是什么?
问题 18:解释强制类型转换、隐式强制类型转换和显式强制类型转换
?问题 19:显式强制类型转换期间会发生什么?
问题 20:区分 Array 和 ArrayList?
问题 21:数组和 arraylist 哪个性能更好?
问题 22:什么是泛型集合?问题 23:
什么是线程(多线程)?问题 24:
线程与 TPL 有何不同?
问题 25:我们如何在 C#(try/catch)中处理异常?
问题 26:为什么需要 finally?
问题 27:为什么我们需要 out 关键字?
问题 28:- 为什么需要委托?
问题 29:- 什么是事件?
问题 30:- 抽象类和接口有什么区别?

第 2 部分 – 有关委托、事件和委托与事件的问题。
问题 31:- 什么是委托以及如何创建委托?
问题 32:- 您在哪里使用过委托?
问题 33:- 什么是多播委托?
问题 34:- 什么是事件?
问题 35:- 如何创建事件?
问题 36:- 委托与事件。

第 3 部分 – OOP、抽象、封装、继承、覆盖和重载。
问题 37:- 我们为什么需要 OOP?
问题 38:- OOP 的重要支柱是什么?
问题 39:- 什么是类和对象?
问题 40:- 抽象与封装?
问题 41:- 解释继承?
问题 42:- 解释虚拟关键字?
问题 43:- 什么是覆盖?
问题 44:- 解释重载?
问题 45:- 重载与覆盖?

第 4 部分 – 多态性、静态多态性与动态多态性以及运算符重载。
问题 46:- 什么是多态性?
问题 47:- 多态性可以在没有继承的情况下工作吗?
问题 48:- 解释静态多态性与动态多态性?
问题 49:- 解释运算符重载?

第 5 部分 – 关于抽象类和接口的棘手问题。
问题 50:- 为什么我们需要抽象类?
问题 51:- 抽象方法是虚拟的吗?
问题 52:- 我们可以创建抽象类的实例吗?
问题 53:- 是否必须实现抽象方法?
问题 54:- 为什么简单的基类取代了抽象类?
问题 55:- 解释接口以及我们为什么需要它?
问题 56:- 我们可以在接口中编写逻辑吗?
问题 57:- 我们可以在接口中将方法定义为私有吗?问题 58:-
如果我想更改接口,最佳做法是什么?
问题 59:- 解释接口中的多重继承?
问题 60:- 解释接口隔离原则?
问题 61:- 我们可以创建接口的实例吗?
问题 62:- 我们可以使用抽象类进行多重继承吗?

第 6 部分 – 回答最常被问到的问题“抽象类与接口”。
问题 63:抽象类与接口之间的区别?

第 7 部分 – 有关构造函数和父子构造函数的问题。
问题 64:- 为什么我们需要构造函数?
问题 65:- 在父子中哪个构造函数首先触发?
问题 66:- 初始化程序如何执行?
问题 67:- 父子中静态构造函数如何执行?
问题 68:- 静态构造函数何时触发?

第 8 部分 – 有关阴影、密封、嵌套类和部分类的问题。
问题 69:- 什么是阴影?
问题 70:- 解释方法隐藏?
问题 71:- 阴影与覆盖?
问题 72:- 我们什么时候需要阴影?
问题 73:- 解释密封类?
问题 74:- 我们可以创建密封类的实例吗?
问题 75:- 什么是嵌套类以及何时使用它们?
问题 76:- 嵌套类可以访问外部类变量吗?
问题 77:- 我们可以在嵌套类中使用公共、受保护的访问修饰符吗?
问题 78:- 解释部分类?
问题 79:- 我们在什么场景中使用部分类?

第 9 部分 – 有关 SOLID 原则、依赖注入 (DI) 和 IOC 的
问题 问题 80:- 什么是 SOLID?
问题 81:- SOLID 的全称是什么?问题 82
:- SOLID 的目标是什么?
问题 83:- 举例说明 SRP?问题 84:-
SRP 有什么好处?
问题 85:- 举例说明 OCP?
问题 86:- OCP 有什么好处?
问题 87:- 你能解释 LISKOV 原则及其违反吗?
问题 88:- 我们如何解决 LISKOV 问题?
问题 89:- 解释接口隔离原则?
问题 90:- LISKOV 和 ISP 之间有联系吗?
问题 91:- 定义依赖反转?
问题 92:- 什么是高级模块和低级模块?
问题 93:依赖反转有什么好处,举个例子说明?
问题 94:只有依赖反转才能解决解耦问题吗?
问题 95:为什么开发人员将对象创建移到高级模块之外?
问题 96:解释 IOC(控制反转)?
问题 97:举例说明依赖注入?
问题 98:SOLID、IOC 和 DI 是设计模式还是原则?
问题 99:只有 SOLID 才能提供良好的代码/架构吗?

第 10 部分 – 解释和区分 C# 中的组合、聚合和关联。
问题 100:- “使用/具有”关系有哪些不同类型?
问题 101:- 什么是组合关系?
问题 102:- 解释聚合?
问题 103:- 解释关联?
问题 104:- 区分组合、聚合和关联?
问题 105:- 组合、聚合和关联的 UML 符号

第 11 部分 – 破解有关堆栈、堆、装箱、拆箱、值和引用类型的问题
问题 106:解释堆栈和堆?
问题 107:堆栈和堆存储在哪里?
问题 108:什么放在堆栈上,什么放在堆上?
问题 109:堆栈内存地址是如何排列的?
问题 110:堆栈内存如何释放 LIFO 或 FIFO?
问题 111:原始和对象如何存储在内存中?
问题 112:原始数据类型可以存储在堆中吗?
问题 113:解释值类型和引用类型?
问题 114:解释 byval 和 byref?
问题 115:区分按值复制和按引用复制?
问题 116:什么是装箱和拆箱?
问题 117:装箱拆箱是好还是坏?
问题 118:我们能避免装箱和拆箱吗?
问题 119:装箱和拆箱对性能有什么影响?
问题 120:字符串是在堆栈还是堆上分配的?
问题 121:一个应用程序创建了多少个堆栈和堆?
问题 122:堆栈和堆内存是如何释放的?
问题 123:谁清除了堆内存?
问题 124:结构在哪里分配的?堆栈还是堆?
问题 125:结构是按值复制还是按引用复制?
问题 126:结构可以在堆上创建吗?

第 12 部分 – 什么是垃圾收集器、托管代码与非托管代码、Dispose 模式、内存泄漏、弱引用与强引用?

问题 127:- 解释垃圾收集器 (GC)?
问题 128:- 垃圾收集器如何知道何时清理对象?
问题 129:- 有没有办法让我们看到这个堆内存?
问题 130:- 垃圾收集器会清理原始类型吗?
问题 131:- 托管与非托管代码/对象/资源?
问题 132:- 垃圾收集器可以清理非托管代码吗?
问题 133:- 解释代数?
问题 134:- 什么是 GC0、GC1 和 GC2?
问题 135:- 我们为什么需要代数?
问题 136:- 清理非托管对象的最佳位置是哪里?
问题 137:- 当我们有析构函数时,GC 会如何表现?问题 138
:- 您如何看待空析构函数?
问题 139:- 解释 Dispose 模式?
问题 140:Finalize 与 Destructor?
问题 141:using 关键字有什么用?
问题 142:可以强制使用垃圾收集器吗?
问题 143:强制使用 GC 是一种好习惯吗?
问题 144:如何检测内存问题?
问题 145:如何知道内存问题的确切来源?
问题 146:什么是内存泄漏?
问题 147:.NET 应用程序是否会出现内存泄漏,就像我们有 GC 一样?
问题 148:如何检测 .NET 应用程序中的内存泄漏?
问题 149:解释弱引用和强引用?
问题 150:何时使用弱引用?

第 13 课:有关设计模式基础、类型、单例模式、原型、模板和适配器的问题。

问题 151:什么是设计模式?
问题 152:设计模式有哪些不同类型?
问题 153:解释结构、行为和创建设计模式?
问题 154:解释单例模式及其用法?
问题 155:如何实现单例模式?
问题 156:我们可以使用静态类而不是私有构造函数吗?
问题 157:静态模式与单例模式?
问题 158:如何在单例中实现线程安全?问题 159
:单例中的双重空检查是什么?问题
160:使用 Lazy 关键字可以简化单例模式代码吗?
问题 161:我们可以摆脱这个双重空检查代码吗?

第 14 课:存储库模式和工作单元设计模式面试问题。

问题 162:存储库模式有什么用?
问题 163:Dal(数据访问层)和存储库相同吗? 
问题 164:什么是通用存储库模式?
问题 165:抽象是存储库的唯一好处吗?
问题 166:如何在存储库中实现事务?
问题 167:什么是工作单元设计模式?
问题 168:我们是否需要存储库模式,因为 EF 几乎可以完成相同的工作?
问题 169:您是否使用存储库进行过单元测试?
问题 170:存储库模式如何使单元测试变得简单?
问题 171:我们如何使用存储库进行模拟测试?

第 15 课:最常见的工厂模式、DI 和 IOC 面试问题。

问题 172:什么是工厂模式,它有什么好处?
问题 173:集中对象创建如何有助于松散耦合?
问题 174:什么是 IOC 和 DI?
问题 175:DI 与 IOC?
问题 176:什么是服务定位器?问题
177:服务定位器与 DI ?
问题 178:使用服务定位器或 DI 哪个好?
问题 179:我们不能对 DI 使用一个简单的类而不是接口吗?
问题 180:DI 是工厂模式吗?
问题 181:那么如果你只是集中对象创建,它是工厂模式吗?
问题 182:静态 DI 和动态 DI?
问题 183:在哪些场景中使用静态 DI 而不是动态 DI?

第 16 课:真正的工厂和抽象工厂模式。

问题 184:真正的工厂模式?
问题 185:工厂方法与工厂模式?
问题 186:如何在 FP 中创建新行为?
问题 187:什么是抽象工厂模式?
问题 188:抽象工厂模式内部使用 FP 吗?
问题 189:解释简单工厂模式?
问题 190:简单工厂与工厂(工厂方法)与抽象工厂?
问题 191:如何从简单工厂中删除 IF 条件?

本课程适合哪些人:

  • 正在寻求工作转变和良好前景的 C# .NET 开发人员。
  • 想要在面试前做最后一刻复习的 C# .NET 开发人员。
请注意:
如果你有能力,请务必支持课程的原创作者,这是他们应得的报酬!
本站收取的费用,仅用来维持网站正常运行的必要支出,从本站下载任何内容,说明你已经知晓并同意此条款。