Tuesday, July 7, 2009

Csharp Interveiw Questions

1. Why is it a bad idea to throw your own exceptions?
Answer :

Well, if at that point you know that an error has occurred, then why not write the proper code to handle that error instead of passing a new Exception object to the catch block? Throwing your own exceptions signifies some design flaws in the project.
2. Why can’t you specify the accessibility modifier for methods inside the interface?
Answer :

They all must be public. Therefore, to prevent you from getting the false impression that you have any freedom of choice, you are not allowed to specify any accessibility, it’s public by default.
3. What’s an interface class?
Answer :

It’s an abstract class with public abstract methods all of which must be implemented in the inherited classes.
4. Can you allow class to be inherited, but prevent the method from being over-ridden?
Answer :

Yes, just leave the class public and make the method sealed.
5. Can you prevent your class from being inherited and becoming a base class for some other classes?
Answer :

Yes, that’s what keyword sealed in the class definition is for. The developer trying to derive from your class will get a message: cannot inherit from Sealed class WhateverBaseClassName. It’s the same concept as final class in Java.
6. Can you override private virtual methods?
Answer :

No, moreover, you cannot access private methods in inherited classes, have to be protected in the base class to allow any sort of access.
7. Can you declare the override method static while the original method is non-static?
Answer :

No, you can’t, the signature of the virtual method must remain the same, only the keyword virtual is changed to keyword override.
8. How’s method overriding different from overloading?
Answer :
When overriding, you change the method behavior for a derived class. Overloading simply involves having a method with the same name within the class.
9. Does C# support multiple inheritance?
Answer :
No, use interfaces instead.
10. Is goto statement supported in C#? How about Java?
Answer :

Gotos are supported in C# to the fullest. In Java goto is a reserved keyword that provides absolutely no functionality.
11. What happens when you encounter a continue statement inside the for loop?
Answer :

The code for the rest of the loop is ignored, the control is transferred back to the beginning of the loop.
12. What’s the difference between const and readonly?
Answer :

You can initialize readonly variables to some runtime values. Let’s say your program uses current date and time as one of the values that won’t change. This way you declare
public readonly string DateT = new DateTime().ToString().
13. What’s different about namespace declaration when comparing that to package declaration in Java?
Answer :

No semicolon. Package declarations also have to be the first thing within the file, can’t be nested, and affect all classes within the file.
14. Can you declare a C++ type destructor in C# like ~MyClass()?
Answer :

Yes, but what’s the point, since it will call Finalize(), and Finalize() has no guarantees when the memory will be cleaned up, plus, it introduces additional load on the garbage collector. The only time the finalizer should be implemented, is when you’re dealing with unmanaged code.
15. What’s different about switch statements in C#?
Answer :

No fall-throughs allowed. Unlike the C++ switch statement, C# does not support an explicit fall through from one case label to another. If you want, you can use goto a switch-case, or goto default.
case 1:
cost += 25;
case 2:
cost += 25;
goto case 1;
16. What is the difference between Finalize and Dispose (Garbage collection)
Answer :

Class instances often encapsulate control over resources that are not managed by the runtime, such as window handles (HWND), database connections, and so on. Therefore, you should provide both an explicit and an implicit way to free those resources. Provide implicit control by implementing the protected Finalize Method on an object (destructor syntax in C# and the Managed Extensions for C++). The garbage collector calls this method at some point after there are no longer any valid references to the object.
In some cases, you might want to provide programmers using an object with the ability to explicitly release these external resources before the garbage collector frees the object. If an external resource is scarce or expensive, better performance can be achieved if the programmer explicitly releases resources when they are no longer being used. To provide explicit control, implement the Dispose method provided by the IDisposable Interface. The consumer of the object should call this method when it is done using the object. Dispose can be called even if other references to the object are alive.
Note that even when you provide explicit control by way of Dispose, you should provide implicit cleanup using the Finalize method. Finalize provides a backup to prevent resources from permanently leaking if the programmer fails to call Dispose.
17. Difference between type constructor and instance constructor? What is static constructor, when it will be fired? And what is its use?
Answer :

(Class constructor method is also known as type constructor or type initializer)
Instance constructor is executed when a new instance of type is created and the class constructor is executed after the type is loaded and before any one of the type members is accessed. (It will get executed only 1st time, when we call any static methods/fields in the same class.) Class constructors are used for static field initialization. Only one class constructor per type is permitted, and it cannot use the vararg (variable argument) calling convention.
A static constructor is used to initialize a class. It is called automatically to initialize the class before the first instance is created or any static members are referenced.
18. Write one code example for compile time binding and one for run time binding? What is early/late binding?
Answer :
An object is early bound when it is assigned to a variable declared to be of a specific object type. Early bound objects allow the compiler to allocate memory and perform other optimizations before an application executes.
‘ Create a variable to hold a new object.
Dim FS As FileStream
‘ Assign a new object to the variable.
FS = New FileStream(”C:\tmp.txt”, FileMode.Open)
By contrast, an object is late bound when it is assigned to a variable declared to be of type Object. Objects of this type can hold references to any object, but lack many of the advantages of early-bound objects.
Dim xlApp As Object
xlApp = CreateObject(”Excel.Application”)
19. What are Sealed Classes in C#?
Answer :
The sealed modifier is used to prevent derivation from a class. A compile-time error occurs if a sealed class is specified as the base class of another class. (A sealed class cannot also be an abstract class)
20. In which cases you use override and new base?
Answer :

Use the new modifier to explicitly hide a member inherited from a base class. To hide an inherited member, declare it in the derived class using the same name, and modify it with the new modifier.

No comments:

Post a Comment

Locations of visitors to this page