This post is for programmers gearing up for their first C# OOPs interview. C# is the most popular object-oriented programming language used by millions of developers. So every interviewer rates your C# programming skills based on how well-versed you are in OOP concepts.
Hence, we picked 25 key OOP questions for C# programmers. It is a quick way to brush up on programming skills and knowledge of C# OOPs concepts. We’ve clubbed both the theoretical and coding questions together so that you can focus on coding as well as theory.
If you also like to explore additional C# topics for interview prep, then do visit the C# interview section to check hundreds of programming questions and answers.
However, before you proceed, please have a look at the questions/areas that you must also prepare for securing a C# programming job.
Some of the Essential C# Programming Questions
- What are types in C# – Value & Reference types?
- What are access modifiers in C#?
- What are the basic OOP concepts in C#?
a. class (Abstract, partial, sealed, static, etc.)
b. enum
c. struct
d. interface - What do you know about Partial types and Partial methods?
- What is the use of the ‘
typeof
’ keyword in C#? - How do you call the multiple constructors of a class with single object creation?
- How to debug a running C# program?
- How do you implement an interface and call its methods?
- What is the use of “REF” & “OUT” keywords in C#?
- How will you use “params” & “dynamic” in method parameters?
So we leave you here to ponder the answers and drill the areas mentioned above.
Now, it’s time that you put your C# programming skills to the test as the 25 C# questions are waiting for you next.
C# OOPs Interview: The Best 25 Questions for You
Q-1. Which of the following represents the process of defining two or more methods within the same class having the same name but different parameters list?
a) Method overloading
b) Method overriding
c) Encapsulation
d) None of the mentioned
Show Answer
Option – a)
Q-2. Which of the following are applicable for overloading?
a) Constructors
b) Methods
c) Both a & b
d) None of the mentioned
Show Answer
Option – c)
Q-3. What will be the output of the following code snippet?
using System; class Program { static void Main(string[] args) { int i = 5; int j = 6; calc(ref i); calc(6); Console.WriteLine(i); Console.ReadLine(); } static void calc(ref int x) { x = x * x; } static void calc(int x) { Console.WriteLine(x * x * x); } }
a) Compile time error
b) 25
6
c) 216
5
d) 216
25
Show Answer
Option – d)
Q-4. Which of the following unary operators support overloading?
- true
- false
- +
- new
- is
a) 1, 2, 3
b) 3, 4, 5
c) 3 only
d) 5 only
Show Answer
Option – a)
Q-5. Which of the following statements is correct?
a) On using the new keyword as a modifier, it explicitly hides a member inherited from a base class.
b) Operator overloading works differently for structures and classes.
c) It is not necessary that all operator overloads are static methods of the class.
d) The cast operator can be successfully overloaded.
Show Answer
Option – a)
Q-6. Which of the following keywords can be used to overload user-defined types by defining static member functions?
a) op
b) opoverload
c) operator
d) operatoroverload
e) udoperator
Show Answer
Option – c)
Q-7. Which of the following statements is correct?
a) You cannot overload the conditional logical operators.
b) If you overload the binary operator then the corresponding assignment operator, if any, must be explicitly overloaded.
c) We can use the default equality operator in its “overload” implementation.
d) A public or “nested public”, reference type does not overload the equality operator.
e) The array indexing operator can be overloaded.
Show Answer
Option – a)
Q-8. Which of the following modifiers applies when a virtual method is redefined by a derived class?
a) overloads
b) override
c) overridable
d) virtual
e) base
Show Answer
Option – b)
Q-9. Which of the following keywords should be prefixed to a member of the base class to allow overriding in the derived class?
a) overload
b) override
c) new
d) virtual
e) base
Show Answer
Option – d)
Q-10. Which of the following members of the class allow declaring them as virtual?
a) Methods
b) Properties
c) Events
d) Fields
e) Static fields
Show Answer
Option – a) b) c)
Q-11. What will be the output of the following code snippet?
using System; class sample { public int x; public double y; public int sum(int a, int b) { x = a + b; return x; } public int sum(double c, double d) { y = c + d; return (int)y; } public sample() { this.x = 0; this.y = 0; } } class Program { static void Main(string[] args) { sample s = new sample(); int a = 4; double b = 3.5; s.sum(a, a); s.sum(b, b); Console.WriteLine(s.x + " " + s.y); Console.ReadLine(); } }
a) 4, 3.5
b) 8, 0
c) 7.5, 8
d) 8, 7
Show Answer
Option – d)
Q-12. What will be the output of the following code snippet?
using System; class sample { public static void func1() { Console.WriteLine("Printing func1"); } public void func2() { func1(); Console.WriteLine("Printing func2"); } public void func2(int k) { Console.WriteLine(k); } } class Program { static void Main(string[] args) { sample s = new sample(); sample.func1(); s.func2(20); Console.ReadLine(); } }
a) Printing func1
20
b) Printing func1
Printing func2
20
c) Printing func1
20
Printing func2
d) Compile time error
Show Answer
Option – a)
Q-13. What will be the output of the following code snippet?
using System; class sample { public int func(int k, int y) { return k + y; } public int func1(int t, float z) { return (t+(int)z); } } class Program { static void Main(string[] args) { sample s = new sample(); int i; int b = 90; int c = 100; int d = 12; float m = 14.78f; i = s.func(b, c); Console.WriteLine(i); int j = (s.func1(d, m)); Console.WriteLine(j); Console.ReadLine(); } }
a) 190, 26.78f
b) 0, 26.78f
c) 190, 26
d) 190, 0
Show Answer
Option – c)
Q-14. What will be the output of the following code snippet?
using System; class sample { public int func(int num1) { return(num1 > 0 ? num1 :num1 * -1); } public long func(long num2) { return(num2 > 0 ? num2 :num2 * -1); } public double func( double num3) { return(num3 > 0 ? num3 :num3 * -1); } } class Program { static void Main(string[] args) { sample s = new sample(); int i = -25; int j ; long l = -100000l ; long m; double d = -12.34; double e; j = s.func(i); m = s.func(l); e = s.func(d); Console.WriteLine(j + " " + m + " " + e); Console.ReadLine(); } }
a) 1 1 1
b) 0 0 0
c) 25 100000 12.34
d) -25 -100000 -12.34
Show Answer
Option – c)
Q-15. Which of the following represents the process where a method in a subclass has the same name & type signature as a method in its superclass?
a) Method overloading
b) Method overriding
c) Method hiding
d) None of the mentioned
Show Answer
Option – b)
Q-16. Which of the following modifiers can be used to prevent Method overriding?
a) Static
b) Constant
c) Sealed
d) final
Show Answer
Option – c)
Q-17. What will be the output of the following code snippet?
using System; class BaseClass { public int i; public void Print() { Console.WriteLine(i); } } class DeriverdClass: BaseClass { public int j; public void Print() { Console.WriteLine(j); } } class Program { static void Main(string[] args) { DeriverdClass d = new DeriverdClass(); d.i = 1; d.j = 2; d.Print(); Console.ReadLine(); } }
a) 0
b) 2
c) 1
d) Compile time error
Show Answer
Option – b)
Q-18. Which of the following keywords is to be assigned to a base class method so as to override that method in the subclass?
a) virtual
b) abstract
c) Static
d) Override
Show Answer
Option – a) b) d)
Q-19. What will be the output of the following code snippet?
using System; class BaseClass { public void Print() { System.Console.WriteLine("BaseClass"); } } class DerivedClass : BaseClass { new public void Print() { System.Console.WriteLine("DerivedClass"); } } class Program { public static void Main() { BaseClass b; b = new BaseClass(); b.Print(); b = new DerivedClass(); b.Print(); } }
a) Compile Time Error
b) BaseClass
DerivedClass
c) BaseClass
BaseClass
d) DerivedClass
BaseClass
Show Answer
Option – c)
Q-20. What will be the output of the following code snippet?
using System; class BaseClass { public virtual void Print() { System.Console.WriteLine("BaseClass"); } } class DerivedClass : BaseClass { public override void Print() { System.Console.WriteLine("DerivedClass"); } } class Program { public static void Main() { BaseClass b; b = new BaseClass(); b.Print(); b = new DerivedClass(); b.Print(); } }
a) Compile Time Error
b) BaseClass
DerivedClass
c) BaseClass
BaseClass
d) DerivedClass
BaseClass
Show Answer
Option – b)
Q-21. What will be the output of the following code snippet?
using System; class BaseClass { public virtual void Print() { System.Console.WriteLine("BaseClass"); } } class DerivedClass : BaseClass { public override void Print() { System.Console.WriteLine("DerivedClass"); } } class Derived2Class : DerivedClass { } class Program { public static void Main() { BaseClass b; b = new Derived2Class(); b.Print(); } }
a) Compile time Error
b) Runtime Error
c) BaseClass
d) DerivedClass
Show Answer
Option – d)
Q-22. What will be the output of the following code snippet?
using System; class BaseClass { public virtual void Print() { System.Console.WriteLine("BaseClass"); } } class DerivedClass : BaseClass { public override void Print() { System.Console.WriteLine("DerivedClass"); } } class Derived2Class : DerivedClass { public new void Display() { System.Console.WriteLine("Derived2Class"); } } class Program { public static void Main() { BaseClass b; b = new Derived2Class(); b.Print(); } }
a) Compile time Error
b) Derived2Class
c) BaseClass
d) DerivedClass
Show Answer
Option – d)
Q-23. What will be the output of the following code snippet?
using System; class BaseClass { public virtual void Print() { System.Console.WriteLine("BaseClass"); } } class DerivedClass : BaseClass { public override void Print() { System.Console.WriteLine("DerivedClass"); } } class Derived2Class : BaseClass { public void Print() { System.Console.WriteLine("Derived2Class"); } } class Program { public static void Main() { BaseClass b; b = new DerivedClass(); b.Print(); BaseClass c= new Derived2Class(); c.Print(); } }
a) Compile time Error
b) DerivedClass
Derived2Class
c) DerivedClass
DerivedClass
d) DerivedClass
BaseClass
Show Answer
Option – d)
Q-24. Which of the following are correct for methods of a class that becomes applicable to method overloading?
a) The type of arguments may differ
b) Return type of methods need not be the same
c) The number of arguments may vary
d) Names of methods to be different
e) Variation in the order of arguments.
Show Answer
Option – a) c) e)
Q-25. What will be the output of the following code snippet?
using System; abstract class BaseClass { public abstract string Print(); } class DerivedClass : BaseClass { public override string Print() { return "Method Overriding"; } } class Program { static void Main(string[] args) { DerivedClass d = new DerivedClass(); string text = d.Print(); Console.WriteLine(text); Console.Read(); } }
a) Compile time error
b) Runtime error
c) Method Overriding
d) The program runs successfully and nothing is printed
Show Answer
Option – c)
Summary – C# OOPs Interview Questions and Answers
We hope the above questions will help during your C# OOPs interview. And we’ll keep coming up with more posts to improve your programming and logical skills.
If you like to share any feedback or your experience, then use the comment box to reach out to us. Check out more CSharp Q&A on various programming topics:
1. 50 CSharp Coding Interview Questions
2. 15 CSharp Programming Interview Questions
3. 15 CSharp Interview Questions Every Programmer
4. 15 CSharp Questions on For, While, and If Else
5. 15 CSharp Programming Questions on Classes
6. 20 CSharp OOPS Interview Questions Set-1
7. 20 CSharp OOPS Interview Questions Set-2
8. 25 CSharp OOPs Interview Questions Set-3
9. 35 CSharp Exception Handling Questions
Finally, to keep our site free, we need your support. If you found this tutorial helpful, please share it on LinkedIn or YouTube.
Keep Learning,
TechBeamers