A series of typical C# based interview questions that I have been asked, and also occasionally ask during interviews. These have been built up over a period of years and are regularly updated with newer technologies and techniques.
What is C#?
C# is an object oriented type safe and managed language that is compiled by .Net framework to generate Microsoft Intermediate Language.
What are the types of comment in C#?
Single line, Multi Line and XML Comments.
// This is a single line comment - it starts with a double slash /* This is a multiple line comment it begins with a slash-star and ends with a star-slash */ /// This is an XML comment /// it can be used to document code /// and provide intellisense help
Can multiple catch blocks be executed?
No, Multiple catch blocks cannot be executed. Once an individual catch section is executed, control is transferred to the finally block and then the code that follows the finally block gets executed.
What is the difference between public, static and void?
- Public declared variables or methods are accessible anywhere in the application.
- Static declared variables or methods are globally accessible without creating an instance of the class. The compiler stores the address of the method as the entry point and uses this information to begin execution before any objects are created.
- Void is a type modifier that states that the method or variable does not return any value.
What is an Object?
An object is an instance of a class through which we access the methods of that class. “New” keyword is used to create an object. A class that creates an object in memory will contain the information about the methods, variables and behaviour of that class.
And the answer goes hereA 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.
What are Jagged Arrays?
An array which has elements of type array is called jagged array. The elements can be of different dimensions and sizes. We can also call a jagged array an Array of arrays.
- What is the difference between ref & out parameters?
A ref parameter is two-ways, out is out only. For ref parameters, its necessary to initialize them before passing(compile time error, if not done). But out parameters need not to be initialized
What is the purpose of a using statement in C#?
The using block is used to obtain a resource and use it and then automatically dispose of when the execution of block completes. Note: Using objects must implement IDisposable. Good for types that access unmanaged resourced such as File and Font. This is the preferred method of using anything that implements IDisposable.
What is serialization?
When we want to transport an object through network then we have to convert the object into a stream of bytes. The process of converting an object into a stream of bytes is called Serialization. For an object to be serializable, it should inherit ISerializable Interface.
De-serialization is the reverse process of creating an object from a stream of bytes.
Can “this” be used within a static method?
We can’t use ‘This’ in a static method because we can only use static variables/methods in a static method.
What is difference between constants and read-only?
Constant variables are declared and initialized at compile time. The value can’t be changed after wards. Read-only variables will be initialized only from the Static constructor of the class. Read only is used only when we want to assign the value at run time.
What is an interface class?
An Interface is a class which has only public methods and the methods only have the declaration and not the definition. These methods must be implemented in the inherited classes.
What are value types and reference types?
Value types are stored in the Stack whereas reference types are
stored on heap. Value types are therefore quicker.
Value types: int, enum, byte, decimal, double, float, long
Reference Types: string, class, interface, object
What are sealed classes?
We create sealed classes when we want to restrict the class to be inherited. Sealed modifier used to prevent derivation from a class. If we forcefully specify a sealed class as base class then a compile-time error occurs.
What is method overloading?
Method overloading is creating multiple methods with the same name with unique signatures in the same class. When we compile, the compiler uses overload resolution to determine the specific method to be invoke.
What is the difference between Array and Arraylist?
In an array, we can have items of the same type only. The size of the array is fixed. An arraylist is similar to an array but it doesn’t have a fixed size.
Can a private virtual method be overridden?
No, because they are not accessible outside the class.
Describe the accessibility modifier “protected internal”
Protected Internal variables/methods are accessible within the same assembly and also from the classes that are derived from this parent class.
What are the differences between System.String and System.Text.StringBuilder classes?
System.String is immutable. When we modify the value of a string variable then a new memory is allocated to the new value and the previous memory allocation released. System.StringBuilder was designed to have concept of a mutable string where a variety of operations can be performed without allocation separate memory location for the modified string.
What’s the difference between the System.Array.CopyTo() and System.Array.Clone()?
Using the Clone() method, we create a new array object containing all the elements in the original array and using CopyTo() method, copies of all the elements of existing array are copied into another existing array. Both the methods perform a shallow copy.
How can we sort the elements of the array in descending order?
Using Sort() methods followed by Reverse() method, alternatively we can use Linq with an OrderByDescending() clause
What’s the difference between an interface and abstract class?
Interfaces have all the methods having only declaration but no definition. In an abstract class, we can have some concrete methods. In an interface class, all the methods are public. An abstract class may have private methods.
What is the difference between Finalize() and Dispose() methods?
Dispose() is called when we want for an object to release any unmanaged resources with them. On the other hand Finalize() is used for the same purpose but it doesn’t assure the garbage collection of an object.
What are circular references?
Circular reference is situation in which two or more resources are interdependent on each other causes a lock condition and making the resources unusable.
What are generics
Generics are used to make reusable code classes, to decrease code duplication, reduce redundancy, increase type safety and performance. Generics use parameterized types, rather than fixed types.
What are the commonly used types of exceptions in .Net?
ArgumentException, ArgumentNullException, ArgumentOutOfRangeException, ArithmeticException, DivideByZeroException, OverflowException, IndexOutOfRangeException, InvalidCastException, InvalidOperationException, IOEndOfStreamException, NullReferenceException, OutOfMemoryException, StackOverflowException etc.
What are Custom Exceptions?
Sometimes there are some errors that need to be handled as per specific requirements. Custom exceptions are used for them and are used defined exceptions.
What are delegates?
Delegates are same are function pointers in C++ but the only difference is that they are type safe unlike function pointers. Delegates are required because they can be used to write much more generic type safe functions.
How do you inherit a class into other class in C#?
Colon is used as inheritance operator in C#. Just place a colon and then the class name.
What is the base class in .net from which all the classes are derived from?
What is the difference between method overriding and method overloading?
In method overriding, we change the method definition in the derived class that changes the method behaviour. Method overloading is creating a method with the same name within the same class having different signatures.
What are the different ways a method can be overloaded?
Methods can be overloaded using different data types for parameter, different order of parameters, and different number of parameters.
Why can’t you specify the accessibility modifier for methods inside the interface
In an interface, we have virtual methods that do not have method definition. All the methods are there to be overridden in the derived class. That’s why they all are public.
How can we set class to be inherited, but prevent the method from being over-ridden
Declare the class as public and make the method sealed to prevent it from being overridden.
What happens if the inherited interfaces have conflicting method names?
Implement is up to you as the method is inside your own
class. There might be problem when the methods from different interfaces expect
different data, but as far as compiler cares you’re okay.
What is the difference between a Struct and a Class
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
How do you use nullable types in .Net
Value types can take either their normal values or a null value. Such types are called nullable types and are represented with a question mark after the type e.g. int? or bool?.
How we can create an array with non-default values?
We can create an array with non-default values using Enumerable.Repeat, or we can populate it with an initializer.
What is difference between is and as operators in c#
“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 object to a type or a class.
What are C# attributes and their use
C# provides developers a way to define declarative tags on certain entities eg. Class, method etc. are called attributes. The attribute’s information can be retrieved at runtime using Reflection
Is C# code is managed or unmanaged code
C# is managed code because the Common language runtime (CLR) compiles C# code to Intermediate language
What are namespaces, and how they are used?
Namespaces are used to organize classes within the .NET Framework. They dictate the logical structure of the code. The .NET Framework has namespaces defined for its many classes, such as System.Xml–these are utilized via the using statement. Namespaces are assigned to classes via the namespace keyword.
What is a constructor?
A constructor is a class member executed when an instance of the class is created. The constructor has the same name as the class, and it can be overloaded via different signatures. Constructors are used for initialization tasks.
Why are strings in C# immutable?
Immutable means string values cannot be changed once they have been created. Any modification to a string value results in a completely new string instance, thus an inefficient use of memory and extraneous garbage collection. The mutable System.Text.StringBuilder class should be used when string values will change. Immutable types are inherently thread-safe, since no thread can modify it, the risk of a thread modifying it in a way that interferes with another is removed.
What is the execution entry point for a C# console application
The Main method.
How do you initialise a string without escaping each backslash
You put an @ sign in front of the double-quoted string
What is boxing
Boxing is the process of explicitly converting a value type into a corresponding reference type. Basically,this involves creating a new object on the heap and placing the value there. Reversing the process is just as easy with unboxing, which converts the value in an object reference on the heap into a corresponding value type on the stack. The unboxing process begins by verifying that the recipient value type is equivalent to the boxed type. If the operation is permitted, the value is copied to the stack.
What is the .NET datatype that allows the retrieval of data by a unique key
Explain ACID rule of thumb for transactions.
The transaction must be:
Atomic (it is one unit of work and does not
depend on previous and following transactions),
Consistent (the data is either committed or roll
back, no “in-between” case where something has been updated and something
Isolated (no transaction sees the intermediate
results of the current transaction),
Durable (the values persist if the data had been
committed even if the system crashes right after).
When would you use a StringBuilder as opposed to concatenating separate strings
When the concatenation occurs in a loop and you don’t know in advance how many times the loop will execute. Or when you know the concatenation will occur more than 5 or 6 times. Below this, the additional overhead of creating a StringBuilder class outweight the gains used through using immutable strings.
Please note, this entry will be regularly updated and added so pleale chack back for latest changes.