C# is a programming language that has grown rapidly and is also used widely. C# interview questions help you in preparing interview. C# is in high demand, versatile and supports cross-platform as well. Here are some frequently asked interview questions for freshers as well as experienced C# developers’ candidates to get the right job.
Table of Contents
Below is the list of selected C# interview questions.
C# is an object-oriented, type-safe, and managed language that is compiled by .Net framework to generate Microsoft Intermediate Language.
A Class is an encapsulation of properties and methods that are used to represent a real-time entity. It is a data structure that brings all the instances together in a single unit.
An Object in an instance of a Class. Technically, it is just a block of memory allocated that can be stored in the form of Variables, Array or a Collection.
The four fundamental concepts of Object-Oriented Programming are:
Managed code is a code which is executed by CLR (Common Language Runtime) i.e all application code based on .Net Platform. It is considered as managed because of the .Net framework which internally uses the garbage collector to clear up the unused memory.
Unmanaged code is any code that is executed by application runtime of any other framework apart from .Net. The application runtime will take care of memory, security and other performance operations.
Ans: An Interface is a class with no implementation. The only thing that it contains is the declaration of methods, properties, and events.
The different types of class in C# are:
There are four steps in the code compilation which include:
Given below are the differences between a Class and a Struct:
Class | Struct |
Supports Inheritance | Does not support Inheritance |
Class is Pass by reference (reference type) | Struct is Pass by Copy (Value type) |
Members are private by default | Members are public by default |
Good for larger complex objects | Good for Small isolated models |
Can use a waste collector for memory management | Cannot use a Garbage collector and hence no Memory management |
A Virtual method must always have a default implementation. However, it can be overridden in the derived class, though not mandatory. It can be overridden using override keyword.
An Abstract method does not have an implementation. It resides in the abstract class. It is mandatory that the derived class implements the abstract method. An override keyword is not necessary here though it can be used.
They are used to organize large code projects. “System” is the most widely used namespace in C#. We can create our own namespace and use one namespace in another, which are called Nested Namespaces.
They are denoted by the keyword “namespace”.
“Using” Keyword denotes that the particular namespace is being used by the program.
For Example, using System. Here System is a namespace. The class Console is defined under System. So we can use the console.writeline (“….”) or readline in our program.
Abstraction is one of the OOP concepts. It is used to display only the essential features of the class and hides the unnecessary information.
Let us take an Example of a Car:
A driver of the car should know the details about the Car such as color, name, mirror, steering, gear, brake, etc. What he doesn’t have to know is an Internal engine, Exhaust system.
So, Abstraction helps in knowing what is necessary and hiding the internal details from the outside world. Hiding of the internal information can be achieved by declaring such parameters as Private using the private keyword.
Programmatically, Polymorphism means same method but different implementations.
It is of 2 types, Compile-time and Runtime.
Compile-time polymorphism is achieved by operator overloading.
Runtime polymorphism is achieved by overriding. Inheritance and Virtual functions are used during Runtime Polymorphism.
For Example, If a class has a method Void Add(), polymorphism is achieved by Overloading the method, that is, void Add(int a, int b), void Add(int add) are all overloaded methods.
Exception handling is done using four keywords in C#:
C# has System.IO namespace, consisting of classes that are used to perform various operations on files like creating, deleting, opening, closing etc.
Some commonly used I/O classes are:
Converting a value type to reference type is called Boxing.
For Example:
int Value1 -= 10;
//————Boxing——————//
object boxedValue = Value1;
Explicit conversion of same reference type (created by boxing) back to value type is called Unboxing.
For Example:
//————UnBoxing——————//
int UnBoxing = int (boxedValue);
Break statement breaks the loop. It makes the control of the program to exit the loop. Continue statement makes the control of the program to exit only the current iteration. It does not break the loop.
finally block is called after the execution of try and catch block. It is used for exception handling. Regardless of whether an exception is caught or not, this block of code will be executed. Usually, this block will have clean-up code.
finalize method is called just before garbage collection. It is used to perform clean-up operations of Unmanaged code. It is automatically called when a given instance is not subsequently called.
An Array is used to store multiple variables of the same type. It is a collection of variables stored in a contiguous memory location.
For Example:
double numbers = new double[10];
int[] score = new int[4] {25,24,23,25};
A Single dimensional array is a linear array where the variables are stored in a single row. Above example is a Single dimensional array.
Arrays can have more than one dimension. Multidimensional arrays are also called rectangular arrays.
For Example, int[,] numbers = new int[3,2] { {1,2} ,{2,3},{3,4} };
A Jagged array is an array whose elements are arrays. It is also called as the array of arrays. It can be either single or multiple dimensions.
int[] jaggedArray = new int[4][];
Properties of an Array include:
An Array class is the base class for all arrays. It provides many properties and methods. It is present in the namespace System.
A String is a collection of char objects. We can also declare string variables in c#.
string name = “C# Questions”;
A string class in C# represents a string.
The properties of String class are Chars and Length.
Chars get the Char object in the current String.
Length gets the number of objects in the current String.
An Escape sequence is denoted by a backslash (\). The backslash indicates that the character that follows it should be interpreted literally or it is a special character. An escape sequence is considered as a single character.
String escape sequences are as follows:
\n – Newline character
\b – Backspace
\\ –
Backslash
\’ – Single quote
\’’ – Double Quote
Some of the basic string operations are:
Parsing is converting a string into another data type.
For Example:
string text = “500”;
int num = int.Parse(text);
500 is an integer. So, Parse method converts the string 500 into its own base type, i.e int.
Follow the same method to convert a DateTime
string.
string dateTime = “Jan 5, 2020”;
DateTime parsedValue = DateTime.Parse(dateTime);
Events are user actions that generate notifications to the application to which it must respond. The user actions can be mouse movements, keypress and so on.
Programmatically, a class that raises an event is called a publisher and a class which responds/receives the event is called a subscriber. An Event should have at least one subscriber else that event is never raised.
Delegates are used to raise events and handle them. Always a delegate needs to be declared first and then the Events are declared.
A Delegate that points to more than one method is called a Multicast Delegate. Multicasting is achieved by using + and += operator.
Synchronization is a way to create a thread-safe code where only one thread can access the resource at any given time.
Asynchronous call waits for the method to complete before continuing with the program flow. Synchronous programming badly affects the UI operations, when the user tries to perform time-consuming operations since only one thread will be used.
In Asynchronous operation, the method call will immediately return so that the program can perform other operations while the called method completes its work in certain situations.
Reflection is the ability of a code to access the metadata of the assembly during runtime. A program reflects upon itself and uses the metadata to inform the user or modify its behavior. Metadata refers to information about objects, methods.
Generics or Generic class is used to create classes or objects which do not have any specific data type. The data type can be assigned during runtime, i.e when it is used in the program.
Get and Set are called Accessors. These are made use by Properties. A property provides a mechanism to read, write the value of a private field. For accessing that private field, these accessors are used.
Get Property is used to return the value of a
property
Set Property accessor is used to set the value.
Few Properties of thread class are:
Different states of a thread are:
A Deadlock is a situation where a process is not able to complete its execution because two or more processes are waiting for each other to finish. This usually occurs in multi-threading.
Here a Shared resource is being held by a process and another process is waiting for the first process to release it and the thread holding the locked item is waiting for another process to complete.
Lock keyword ensures that only one thread can enter a particular section of the code at any given time. In the above Example, lock(ObjA) means the lock is placed on ObjA until this process releases it, no other thread can access ObjA.
A Mutex is also like a lock but it can work across multiple processes at a time. WaitOne() is used to lock and ReleaseMutex() is used to release the lock. But Mutex is slower than lock as it takes time to acquire and release it.
Monitor.Enter and Monitor.Exit implements lock internally. a lock is a shortcut for Monitors. lock(objA) internally calls.
A Race condition occurs when two threads access the same resource and are trying to change it at the same time. The thread which will be able to access the resource first cannot be predicted.
If we have two threads, T1 and T2, and they are trying to access a shared resource called X. And if both the threads try to write a value to X, the last value written to X will be saved.
A Thread pool is a collection of threads. These threads can be used to perform tasks without disturbing the primary thread. Once the thread completes the task, the thread returns to the pool.
System.Threading.ThreadPool namespace has classes which manage the threads in the pool and its operations.
Serialization is a process of converting a code to its binary format. Once it is converted to bytes, it can be easily stored and written to a disk or any such storage devices. Serializations are mainly useful when we do not want to lose the original form of the code and it can be retrieved anytime in the future.
Any class which is marked with the attribute [Serializable] will be converted to its binary form.
The reverse process of getting the c# code back from the binary form is called Deserialization.
To Serialize an object we need the object to be serialized, a stream which can contain the serialized object and namespace System.Runtime.Serialization can contain classes for serialization.
The different types of Serialization are: XML serialization, SOAP, and Binary.
An XSD file stands for XML Schema Definition. It gives a structure for the XML file. It means it decides the elements that the XML should have and in what order and what properties should be present. Without an XSD file associated with XML, the XML can have any tags, any attributes, and any elements.
Xsd.exe tool converts the files to XSD format. During Serialization of C# code, the classes are converted to XSD compliant format by xsd.exe.
No, Multiple catch blocks can’t be executed. Once the proper catch code executed, the control is transferred to the finally block, and then the code that follows the finally block gets executed.
A constructor is a member function in a class that has the same name as its class. The constructor is automatically invoked whenever an object class is created. It constructs the values of data members while initializing the class.
The ‘using’ block is used to obtain a resource and process it and then automatically dispose of when the execution of the block completed.
A console application is an application that can be run in the command prompt in Windows. For any beginner on .Net, building a console application is ideally the first step, to begin with.
C# is managed code because Common language runtime can compile C# code to Intermediate language.
DirectCast is used to convert the type of object that requires the run-time type to be the same as the specified type in DirectCast.
Ctype is used for conversion where the conversion is defined between the expression and the type.
“Throw” statement preserves original error stack whereas “throw ex” have the stack trace from their throw point. It is always advised to use “throw” because it provides more accurate error information.
C# provides developers a way to define declarative tags on certain entities, e.g. Class, method, etc. are called attributes. The attribute’s information can be retrieved at runtime using Reflection.
A delegate having multiple handlers assigned to it is called multicast delegate. Each handler is assigned to a method.
“is” operator is used to check the compatibility of an object with a given type, and it returns the result as Boolean.
“as” operator is used for casting of an object to a type or a class.
We can create an array with non-default values using Enumerable. Repeat.
Structs are value-type variables, and classes are reference types. Structs stored on the Stack causes additional overhead but faster retrieval. Structs cannot be inherited.
Declare the class as public and make the method sealed to prevent it from being overridden.
Implement is up to you as the method is inside your own class. There might be a problem when the methods from different interfaces expect different data, but as far as compiler cares you’re okay.
If you are interested in getting backlink or placing paid ads, you may contact at itsaareez1@gmail.com
Sponsored by WebSoft IT Development Solutions (Private) Limited
NGINX Server Nginx, a popular open-source web server, excels at handling high traffic websites efficiently.… Read More
In the realm of web hosting, choosing the right web server is paramount. It acts… Read More
Are indispensable for ensuring smooth, precise linear motion in many industrial applications. Whether in robotics,… Read More
Cyber attacks are becoming more frequent, complex, and damaging. They can disrupt critical operations and… Read More
With the rise of new threats and the increasing complexity of IT environments, organizations need… Read More
1. Introduction In software design, managing complex systems can be challenging. The Facade Design Pattern… Read More