首页  >  文章  >  后端开发  >  C# OOP 面试问题

C# OOP 面试问题

WBOY
WBOY原创
2024-09-03 15:35:40698浏览

C# OOP 面试问题简介

C# 是一种面向对象、函数式、通用和面向组件的编程语言。它已被用来创建各种应用程序;它特别擅长构建 Windows 桌面应用程序和游戏。 Web 开发也可以使用 C# 高效完成,C# 在移动开发中越来越流行。因此,对于任何希望开发网页和游戏的程序员来说,它是一个绝佳的选择。静态类型语言在编写的源代码成为应用程序之前会对其进行彻底检查。这是一种学习起来很复杂的语言,掌握它可能需要大量的时间。开发者可以使用各种跨平台工具用 C# 创建可在移动和桌面平台上使用的应用程序。

如果您正在寻找与 C# OOP 相关的工作,您必须准备 2023 年 C# OOP 面试问题。虽然每次面试的情况不同,工作范围也不同,但我们可以帮助您解答最热门的 C# OOP 面试问题并附上答案,这将帮助您实现飞跃并在面试中获得成功。

第 1 部分 – C# OOP 面试问题(基础)

第一部分涵盖基本的 C# OOP 面试问题和答案

1.接口和抽象类有什么区别?

答案:

一些差异如下:

  • 抽象类可以有非抽象方法(具体方法),而在接口情况下,所有形式都必须是抽象的。
  • 抽象类可以声明或使用变量,而接口则不能。
  • 在抽象类中,所有数据成员或函数默认都是私有的,而在接口中,所有数据成员或函数都是公共的;我们无法手动更改它们。
  • 抽象类使用构造函数,而接口中没有任何构造函数。
  • 一个类可以实现任意数量的接口,但子类最多只能使用一个抽象类。

2.什么是代表及其用途?

答案:

委托对象是一个引用类型变量,它保存对方法的引用。连接可以在运行时更改,该连接由委托的对象拥有。一个委托对象可以有很多函数引用,也称为调用列表,它们引用顺序 FIFO 中的任务;我们可以在运行时通过 += 运算符在此列表中添加新函数 ref 并通过 -= 运算符删除。

让我们继续讨论以下 C# OOP 面试问题。

3.后期绑定和早期绑定有什么区别?

答案:

在编译时多态或早期绑定中,我们会使用多个同名但参数类型不同或多个参数的方法。正因为如此,我们可以在同一个类中使用相同的方法名执行不同的任务,也称为方法重载。

public class TestData
{
public int Add(int a, int b, int c)
{
return a + b + c;
}
public int Add(int a, int b)
{
return a + b;
}
}
class Program
{
static void Main(string[] args)
{
TestData dataClass = new TestData();
int add2 = dataClass.Add(45, 34, 67);
int add1 = dataClass.Add(23, 34);
}
}

动态或运行时多态性的另一个名称是后期绑定。这里,方法名称和方法签名(参数数量和参数类型必须相同,并且可能有不同的实现)。方法重写是动态多态性的一个例子。

public class Drawing
{
public virtual double Area()
{
return 0;
}
}
public class Square : Drawing
{
public double Length { get; set; }
public Square()
{
Length = 6;
}
public override double Area()
{
return Math.Pow(Length, 2);
}
}
public class Rectangle : Drawing
{
public double Height { get; set; }
public double Width { get; set; }
public Rectangle()
{
Height = 5.3;
Width = 3.4;
}
public override double Area()
{
return Height * Width;
}
}
class Program
{
static void Main(string[] args)
{
Drawing square = new Square();
Console.WriteLine("Area :" + square.Area());
Drawing rectangle = new Rectangle();
Console.WriteLine("Area :" + rectangle.Area());
}
}

4.如果继承的接口的方法名称冲突会发生什么?

答案:

这些是一些典型的 C# OOP 面试问题。想象一下同一个类包含有冲突的方法。在这种情况下,由于相同的名称和相同的签名,我们无法在同一个类中独立实现它们的主体,因此我们必须在方法名称之前使用接口名称来消除这种方法混乱。

interface testInterface1 {<br> void Show();<br> }<br> interface testInterface2 {<br> void Show();<br> }<br> class Abc: testInterface1,<br> testInterface2 {<br> void testInterface1.Show() {<br> Console.WriteLine("For testInterface1 !!");<br> }<br> void testInterface2.Show() {<br> Console.WriteLine("For testInterface2 !!");<br> }<br> }<br>

第 2 部分 – C# OOP 面试问题(高级)

第一部分涵盖高级 C# OOP 面试问题和答案

6.什么是可访问性修饰符,C# 中有多少种?

答案:

访问修饰符是用于指定成员或类型声明的可访问性的关键字。在C#中,访问修饰符有5种类型。

公共 – 访问公共成员没有限制。

私有——类定义内的有限访问;如果未指定,则这是默认值。

受保护 - 访问仅限于类定义内以及从课程继承的任何类。

内部 - 访问仅限于当前项目定义的类。

7. What is a virtual method in C#?

Answer:

Developers use a virtual method to define a method that can be redefined in derived classes. We make a virtual method in the base class using the virtual keyword, and that method is overridden in the derived class using the override keyword.

Let us move on to the following C# OOP Interview Questions.

8. How to avoid NULL in C#?

Answer:

Null is not an object. We can have a class, but a variable with a NULL value is not pointing to any object. We might come across a piece of code that contains many conditional statements that check if the value of a variable is NULL. Let’s review a static method:

public static string DisplayUpperString( string s ){
string upper = string.Empty;
If( s == null ) {
upper = null;
}
else {
upper = s.ToUpper();
}
return upper;
}

This code is fine and converts to the upper case of a given string.
But from an OO perspective, consider constructing an object that represents nothing rather than evaluating it for NULL.

public static String DisplayUpperString ( PossibleString s ){
string upper = s.ToPossibleUpper();
return upper;
}

Now the function is less cluttered, more readable, and no longer uses the check for a NULL value.

9. What is the extension method in C#, and how to use them?

Answer:

Interviewers frequently ask about extension methods in C# OOP interviews. This method enables you to add methods to existing types without creating a new derived type, recompiling, or otherwise modifying the original type. Extension methods are only in scope when explicitly importing the namespace into your source code using a directive.

10. Can “this” keyword be used within a static method?

Answer:

Since “this” keyword returns a reference to the current instance of a class, we cannot use this inside a static method. And static members exist without any instance of the class and call with the name of the class, not by instance. The “this” keyword is implicitly defined in every constructor and non-static method as a particular kind of reference variable as the first argument of the class type in which it is defined.

以上是C# OOP 面试问题的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn