Sie sind auf Seite 1von 35

Source: cbtsam.

com
C# Interview Questions and Answers
1. What's C# ?
C# is an object-oriented programming language developed by Microsoft Corporation.
C# is intended to be a simple, modern, general-purpose, object-oriented programming language. Its
development team is led by Anders Hejlsberg. The most recent version is C# 5.0, which was released
on August 15, 2012.
C# source code as well as those of other .NET languages is compiled into an intermediate byte code
called Microsoft Intermediate Language. C# is primarily derived from the C, C++, and Java
programming languages with some features of Microsoft's Visual Basic in the mix.
C# is used to develop applications for the Microsoft .NET environment. .NET offers an alternative to
Java development. Microsoft's Visual Studio .NET development environment incorporates several
different languages including VB.NET, C#, C++, and J# (Microsoft Java for .NET), all of which
compile to the Common Language Runtime.
C# is designed for Common Language Infrastructure (CLI), which consists of the executable code
and runtime environment that allows use of various high-level languages to be used on different
computer platforms and architectures.
2. Features of C#:
C# is the programming language that most directly reflects the underlying Common Language
Infrastructure (CLI) Most of its intrinsic types correspond to value-types implemented by the CLI
framework.
However, the language specification does not state the code generation requirements of the compiler
that is, it does not state that a C# compiler must target a Common Language Runtime, or
generate Common Intermediate Language (CIL), or generate any other specific format.
Theoretically, a C# compiler could generate machine code like traditional compilers of C++
or FORTRAN. Some notable features of C# is below:
C# supports strongly typed implicit variable declarations with the keyword var.
Meta programming via C# attributes is part of the language.
C# has strongly typed and verbose function pointer support via the keyword delegate.
C# offers Java-like synchronized method calls, via the attribute.
The C# languages does not allow for global variables or functions.
A C# namespace provides the same level of code isolation as a Java package or a C++ namespace.
Implicitly typed local variables.
3. 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 behavior of that class.

4. What is the difference between public, static and void?
All these are access modifiers in C#. 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.
And Void is a type modifier that states that the method or variable does not return any value.


Source: cbtsam.com

5. If I return out of a try/finally in C#, does the code in the finally-clause run?
Yes. The code in the finally always runs. If you return out of the try block, or even if you do a goto
out of the try, the finally block always runs:

using System;
class main
{
public static void Main()
{
try
{
Console.WriteLine(\"In Try block\");
return;
}
finally
{
Console.WriteLine(\"In Finally block\");
}
}
}

Both In Try block and In Finally block will be displayed. Whether the return is in the try block or after
the try-finally block, performance is not affected either way. The compiler treats it as if the return were
outside the try block anyway. If its a return without an expression (as it is above), the IL emitted is
identical whether the return is inside or outside of the try. If the return has an expression, theres an
extra store/load of the value of the expression (since it has to be computed within the try block).


6.What are the types of comment in C# with examples?

Source: cbtsam.com
i. Single line

Eg:

//This is a Single line comment

ii. Multiple line (/* */)

Eg:

/*This is a multiple line comment
We are in line 2
Last line of comment*/

iii. XML Comments (///).

Eg:

/// <summary>
/// Set error message for multilingual language.
/// </summary>

7.How does one compare strings in C#?
In the past, you had to call .ToString() on the strings when using the == or != operators to compare
the strings values. That will still work, but the C# compiler now automatically compares the values
instead of the references when the == or != operators are used on string types. If you actually do
want to compare references, it can be done as follows: if ((object) str1 == (object) str2) { } Heres an
example showing how string compares work:


Source: cbtsam.com
using System;
public class StringTest
{
public static void Main(string[] args)
{
Object nullObj = null; Object realObj = new StringTest();
int i = 10;
Console.WriteLine(\"Null Object is [\" + nullObj + \"]\n\"
+ \"Real Object is [\" + realObj + \"]\n\"
+ \"i is [\" + i + \"]\n\");
// Show string equality operators
string str1 = \"foo\";
string str2 = \"bar\";
string str3 = \"bar\";
Console.WriteLine(\"{0} == {1} ? {2}\", str1, str2, str1 == str2 );
Console.WriteLine(\"{0} == {1} ? {2}\", str2, str3, str2 == str3 );
}
}

Output:
Null Object is []
Real Object is [StringTest]
i is [10]
foo == bar ? False
bar == bar ? True

8.How do you specify a custom attribute for the entire assembly (rather than for a class)?

Source: cbtsam.com
Global attributes must appear after any top-level using clauses and before the first type or
namespace declarations. An example of this is as follows:
using System;
[assembly : MyAttributeClass] class X {}
Note that in an IDE-created project, by convention, these attributes are placed in AssemblyInfo.cs.

9.How do you mark a method obsolete?
[Obsolete] public int Foo() {...}
or
[Obsolete(\"This is a message describing why this method is obsolete\")] public int Foo() {...}
Note: The O in Obsolete is always capitalized.

10.How do you implement thread synchronization (Object.Wait, Notify,and CriticalSection) in C#?
You want the lock statement, which is the same as Monitor Enter/Exit:
lock(obj) { // code }

try {
CriticalSection.Enter(obj);
// code
}
finally
{
CriticalSection.Exit(obj);
}
11.How do you directly call a native function exported from a DLL?
Heres a quick example of the DllImport attribute in action:

using System.Runtime.InteropServices; \
class C
{
[DllImport(\"user32.dll\")]

Source: cbtsam.com
public static extern int MessageBoxA(int h, string m, string c, int type);
public static int Main()
{
return MessageBoxA(0, \"Hello World!\", \"Caption\", 0);
}
}

This example shows the minimum requirements for declaring a C# method that is implemented in a
native DLL. The method C.MessageBoxA() is declared with the static and external modifiers, and
has the DllImport attribute, which tells the compiler that the implementation comes from the
user32.dll, using the default name of MessageBoxA.

12. 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.


13. Whats the difference between the System.Array.CopyTo() and System.Array.Clone() ?
Using Clone() method, we creates a new array object containing all the elements in the original array
and using CopyTo() method, all the elements of existing array copies into another existing array.
Both the methods perform a shallow copy.


14.Whats the difference between private and shared assembly?
Private assembly is used inside an application only and does not have to be identified by a strong
name.
Shared assembly can be used by multiple applications and has to have a strong name.

15. What is the difference between break and continue statement?
The break statement is used to terminate the current enclosing loop or conditional statements in
which it appears. We have already used the break statement to come out of switch statements.

Source: cbtsam.com
The continue statement is used to alter the sequence of execution. Instead of coming out of the loop
like the break statement did, the continue statement stops the current iteration and simply returns
control back to the top of the loop.

16. What does a break statement do in switch statements?
The break statement terminates the loop in which it exists. It also changes the flow of the execution of
a program.
In switch statements, the break statement is used at the end of a case statement. The break statement
is mandatory in C# and it avoids the fall through of one case statement to another.

17.How can you debug failed assembly binds?
Use the Assembly Binding Log Viewer (fuslogvw.exe) to find out the paths searched.

18.Where are shared assemblies stored?
Global assembly cache.

19.How can you create a strong name for a .NET assembly?
With the help of Strong Name tool (sn.exe).

20.Wheres global assembly cache located on the system?
Usually C:\winnt\assembly or C:\windows\assembly.
21.Can you have two files with the same file name in GAC?
Yes, remember that GAC is a very special folder, and while normally you would not be able to place
two files with the same name into a Windows folder, GAC differentiates by version number as well,
so its possible for MyApp.dll and MyApp.dll to co-exist in GAC if the first one is version 1.0.0.0 and
the second one is 1.1.0.0.

22. What are value types and reference types?
Value types are stored in the Stack whereas reference types stored on heap.
Value types:
int, enum , byte, decimal, double, float, long
Reference Types:
string , class, interface, object.


Source: cbtsam.com
23. What are Custom Control and User Control?
Custom Controls are controls generated as compiled code (Dlls), those are easier to use and can be
added to toolbox. Developers can drag and drop controls to their web forms. Attributes can be set at
design time. We can easily add custom controls to Multiple Applications (If Shared Dlls), If they are
private then we can copy to dll to bin directory of web application and then add reference and can
use them.
User Controls are very much similar to ASP include files, and are easy to create. User controls cant
be placed in the toolbox and dragged dropped from it. They have their design and code behind. The
file extension for user controls is ascx.

24. Is there an equivalent of exit() for quitting a C# .NET application?
Yes, you can use System.Environment.Exit(int exitCode) to exit the application or Application.Exit()
if it's a Windows Forms app.

25.Can you prevent your class from being inherited and becoming a base class for some other classes?
Yes, that is 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 is the
same concept as final class in Java.


26. 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
behavior. Method overloading is creating a method with the same name within the same class having
different signatures.

27.If a base class has a bunch of overloaded constructors, and an inherited class has another bunch of
overloaded constructors, can you enforce a call from an inherited constructor to an arbitrary base
constructor?
Yes, just place a colon, and then keyword base (parameter list to invoke the appropriate constructor)
in the overloaded constructor definition inside the inherited class.


28. What is the difference between Array and LinkedList?
Array is a simple sequence of numbers which are not concerned about each others positions. they are
independent of each others positions. adding,removing or modifying any array element is very easy.
Compared to arrays ,linked list is a comlicated sequence of numbers.

Source: cbtsam.com

29. What is the difference between private and public keyword?
Private : The private keyword is the default access level and most restrictive among all other access
levels. It gives least permission to a type or type member. A private member is accessible only within
the body of the class in which it is declared.
Public : The public keyword is most liberal among all access levels, with no restrictions to access
what so ever. A public member is accessible not only from within, but also from outside, and gives
free access to any member declared within the body or outside the body.
30. How do you use a structure?
A structure is a value type data type. When you want a single variable to hold related data of various
data types, you can create a structure.
To create a structure you use the struct keyword.


31.Is there regular expression (regex) support available to C# developers?
Yes. The .NET class libraries provide support for regular expressions. Look at the documentation for
the System.Text.RegularExpressions namespace.

32. Is there a way to force garbage collection?
Yes. Set all references to null and then call System.GC.Collect(). If you need to have some objects
destructed, and System.GC.Collect() doesn't seem to be doing it for you, you can force finalizers to be
run by setting all the references to the object to null and then calling System.GC.RunFinalizers().


33.What connections does Microsoft SQL Server support?
Windows Authentication (via Active Directory) and SQL Server authentication (via Microsoft SQL
Server username and passwords)

34.What is a satellite assembly?
When you write a multilingual or multi-cultural application in .NET, and want to distribute the core
application separately from the localized modules, the localized assemblies that modify the core
application are called satellite assemblies.

35.How is method overriding different from overloading?

Source: cbtsam.com
When overriding, you change the method behavior for a derived class. Overloading simply involves
having a method with the same name within the class.

36.When do you absolutely have to declare a class as abstract?
When at least one of the methods in the class is abstract. When the class itself is inherited from an
abstract class, but not all base abstract methods have been over-ridden.

37.Why would you use untrusted verification?
Web Services might use it, as well as non-Windows applications.

38.What is the implicit name of the parameter that gets passed into the class set method?
Value, and its datatype depends on whatever variable we are changing.

39.How do I register my code for use by classic COM clients?
Use the regasm.exe utility to generate a type library (if needed) and the necessary entries in the
Windows Registry to make a class available to classic COM clients. Once a class is registered in the
Windows Registry with regasm.exe, a COM client can use the class as though it were a COM class.

40.How do I do implement a trace and assert?
Use a conditional attribute on the method, as shown below:
class Debug
{
[conditional("TRACE")]
public void Trace(string s)
{
Console.WriteLine(s);
}
}
class MyClass

Source: cbtsam.com
{
public static void Main()
{
Debug.Trace("hello");
}
}

In this example, the call to Debug.Trace() is made only if the preprocessor symbol TRACE is defined
at the call site. You can define preprocessor symbols on the command line by using the /D switch.
The restriction on conditional methods is that they must have void return type.
41. How do I create a multi language, multi file assembly?
Unfortunately, this is currently not supported in the IDE. To do this from the command line, you
must compile your projects into netmodules (/target:module on the C# compiler), and then use the
command line tool al.exe (alink) to link these netmodules together.

42. What are the basic concepts of object oriented programming?
It is necessary to understand some of the concepts used extensively in object oriented
programming.These include
o Objects
o Classes
o Inheritance
o Polymorphism
o Dynamic Binding
o Message passing
o Data abstraction and encapsulation.

43. What is the equivalent to regsvr32 and regsvr32 /u a file in .NET development?
Try using RegAsm.exe. The general syntax would be: RegAsm. A good description of RegAsm and its
associated switches is located in the .NET SDK docs. Just search on "Assembly Registration
Tool".Explain ACID rule of thumb for transactions.
Transaction must be Atomic (it is one unit of work and does not dependent on previous and following
transactions), Consistent (data is either committed or roll back, no in-between case where something
has been updated and something hasnot), 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).




Source: cbtsam.com
44. What are the advantages of inheritance?
Once a behavior (method) or property is defined in a super class(base class),that behavior or
property is automatically inherited by all subclasses (derived class).
Code reusability increased through inheritance.
Inheritance provide a clear model structure which is easy to understand without much complexity
Using inheritance, classes become grouped together in a hierarchical tree structure Code are easy to
manage and divided into parent and child classes.

45. How do I create a multilanguage, single-file assembly?
This is currently not supported by Visual Studio .NET.

46.Why cannot you specify the accessibility modifier for methods inside the interface?
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 is public by default.

47. Is it possible to restrict the scope of a field/method of a class to the classes in the same namespace?
There is no way to restrict to a namespace. Namespaces are never units of protection. But if you're
using assemblies, you can use the 'internal' access modifier to restrict access to only within the
assembly.

48. Why do I get a syntax error when trying to declare a variable called checked?
The word checked is a keyword in C#.

49. Why are there five tracing levels in System.Diagnostics.TraceSwitcher?
The tracing dumps can be quite verbose and for some applications that are constantly running you
run the risk of overloading the machine and the hard drive there. Five levels range from None to
Verbose, allowing to fine-tune the tracing activities.

50.What is the syntax for calling an overloaded constructor within a constructor (this() and
constructorname() does not compile)?
The syntax for calling another constructor is as follows:
class B
{

Source: cbtsam.com
B(int i)
{ }
}
class C : B
{
C() : base(5) // call base constructor B(5)
{ }
C(int i) : this() // call C()
{ }
public static void Main() {}
}
51.Why do I get a "CS5001: does not have an entry point defined" error when compiling?
The most common problem is that you used a lowercase 'm' when defining the Main method. The
correct way to implement the entry point is as follows:
class test
{
static void Main(string[] args) {}
}

52. 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.


53. Why cant 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. Thats why they all are public.

54. How can I create a process that is running a supplied native executable (e.g., cmd.exe)?

Source: cbtsam.com
The following code should run the executable and wait for it to exit before
continuing:

using System;
using System.Diagnostics;
public class ProcessTest
{
public static void Main(string[] args)
{
string app;
app = Console.ReadLine();
Process p = Process.Start(app+".exe");
p.WaitForExit();
Console.WriteLine(app+".exe" + " exited.");
}
}
Remember to add a reference to System.Diagnostics.dll when you compile.

55. List down the commonly used types of exceptions in .Net?
ArgumentException, ArgumentNullException , ArgumentOutOfRangeException,
ArithmeticException, DivideByZeroException ,OverflowException ,
IndexOutOfRangeException ,InvalidCastException
,InvalidOperationException , IOEndOfStreamException ,
NullReferenceException , OutOfMemoryException , StackOverflowException etc.


56. How do I declare inout arguments in C#?
The equivalent of inout in C# is ref. , as shown in the following example:

public void MyMethod (ref String str1, out String str2)

Source: cbtsam.com
{
...
}
When calling the method, it would be called like this:

String s1;
String s2;
s1 = "Hello";
MyMethod(ref s1, out s2);
Console.WriteLine(s1);
Console.WriteLine(s2);
Notice that you need to specify ref when declaring the function and calling it.

57. Is there a way of specifying which block or loop to break out of when working with nested loops?
The easiest way is to use goto:

using System;
class BreakExample
{
public static void Main(String[] args)
{
for(int i=0; i<3; i++)
{
Console.WriteLine("Pass {0}: ", i);
for( int j=0 ; j<100 ; j++ )
{
if ( j == 10) goto done;

Source: cbtsam.com
Console.WriteLine("{0} ", j);
}
Console.WriteLine("This will not print");
}
done:
Console.WriteLine("Loops complete.");
}
}

58. What is the difference between const and static read-only?
The difference is that static read-only can be modified by the containing class, but const can never be
modified and must be initialized to a compile time constant. To expand on the static read-only case a
bit, the containing class can only modify it:
-- in the variable declaration (through a variable initializer).
-- in the static constructor (instance constructors if it's not static).

59. What does the parameter Initial Catalog define inside Connection String?
The database name to connect to.

60. 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 doesnt have a fixed size.
61. What is Authentication and Authorization?
Authentication is the process of identifying users. Authentication is identifying/validating the user
against the credentials (username and password).
Authorization performs after authentication. Authorization is the process of granting access to those
users based on identity. Authorization allowing access of specific resource to user.

62. Can you allow class to be inherited, but prevent the method from being over-ridden?
Yes, just leave the class public and make the method sealed


Source: cbtsam.com

63. What is BOXING and UNBOXING in C#?
BOXING in C# is the conversion of a VALUE type on stack to a OBJECT type on the heap. Vice-
versa the conversion from an OBJECT type back to a VALUE type is known as UNBOXING and it
requires type casting.

64. Are private class-level variables inherited?
Yes, but they are not accessible, so looking at it you can honestly say that they are not inherited. But
they are.

65.Can you inherit multiple interfaces?
Yes. .NET does support multiple interfaces.

66. From a versioning perspective, what are the drawbacks of extending an interface as opposed to extending
a class?
With regard to versioning, interfaces are less flexible than classes. With a class, you can ship version
1 and then, in version 2, decide to add another method. As long as the method is not abstract (i.e., as
long as you provide a default implementation of the method), any existing derived classes continue to
function with no changes. Because interfaces do not support implementation inheritance, this same
pattern does not hold for interfaces.
Adding a method to an interface is like adding an abstract method to a base class--any class that
implements the interface will break, because the class doesn't implement the new interface method.

67.Which one is trusted and which one is untrusted?
Windows Authentication is trusted because the username and password are checked with the Active
Directory, the SQL Server authentication is untrusted, since SQL Server is the only verifier
participating in the transaction

68. What namespaces are necessary to create a localized application?
System.Globalization, System.Resources.

69. Does Console.WriteLine() stop printing when it reaches a NULL character within a string?
Strings are not null terminated in the runtime, so embedded nulls are allowed. Console.WriteLine()
and all similar methods continue until the end of the string.

Source: cbtsam.com

70. What is the advantage of using System.Text.StringBuilder over System.String?
StringBuilder is more efficient in the cases, where a lot of manipulation is done to the text. Strings
are immutable, so each time it is being operated on, a new instance is created.
71. What are advantages and disadvantages of Microsoft-provided data provider classes in ADO.NET?
SQLServer.NET data provider is high-speed and robust, but requires SQL Server license purchased
from Microsoft. OLE-DB.NET is universal for accessing other sources, like Oracle, DB2, Microsoft
Access and Informix, but it is a .NET layer on top of OLE layer, so not the fastest thing in the world.
ODBC.NET is a deprecated layer provided for backward compatibility to ODBC engines.

72.Why do I get a security exception when I try to run my C# app?
Some security exceptions are thrown if you are working on a network share. There are some parts of
the frameworks that will not run if being run off a share (roaming profile, mapped drives, etc.). To
see if this is what's happening, just move the executable over to your local drive and see if it runs
without the exceptions. One of the common exceptions thrown under these conditions is
System.Security.SecurityException.

To get around this, you can change your security policy for the intranet zone, code group 1.2, (the
zone that running off shared folders falls into) by using the caspol.exe tool.

73.Is there any sample C# code for simple threading?
Some sample code follows:

using System;
using System.Threading;
class ThreadTest
{
public void runme()
{
Console.WriteLine("Runme Called");
}
public static void Main(String[] args)

Source: cbtsam.com
{
ThreadTest b = new ThreadTest();
Thread t = new Thread(new ThreadStart(b.runme));
t.Start();
}
}


74. Can I define a type that is an alias of another type (like typedef in C++)?
Not exactly. You can create an alias within a single file with the "using" directive: using System;
using Integer = System.Int32; // alias
But you can't create a true alias, one that extends beyond the file in which it is declared. Refer to the
C# spec for more info on the 'using' statement's scope.

75. Is it possible to have different access modifiers on the get/set methods of a property?
No. The access modifier on a property applies to both its get and set accessors. What you need to do
if you want them to be different is make the property read-only (by only providing a get accessor)
and create a private/internal set method that is separate from the property.


76. What is Jagged Arrays?
The array which has elements of type array is called jagged array.
The elements can be of different dimensions and sizes. We can also call jagged array as Array of
arrays.

77.Does C# support #define for defining global constants?
No. If you want to get something that works like the following C code:

#define A 1
use the following C# code: class MyConstants
{

Source: cbtsam.com
public const int A = 1;
}

Then you use MyConstants.A where you would otherwise use the A macro.
Using MyConstants.A has the same generated code as using the literal 1.

78 .Does C# support templates?
No. However, there are plans for C# to support a type of template known as a generic. These generic
types have similar syntax but are instantiated at run time as opposed to compile time. You can read
more about them here.

Source: cbtsam.com
79. Does C# support parameterized properties?
No. C# does, however, support the concept of an indexer from language spec. An indexer is a
member that enables an object to be indexed in the same way as an array. Whereas properties enable
field-like access, indexers enable array-like access. As an example, consider the Stack class presented
earlier. The designer of this class may want to expose array-like access so that it is possible to inspect
or alter the items on the stack without performing unnecessary Push and Pop operations. That is,
Stack is implemented as a linked list, but it also provides the convenience of array access.
Indexer declarations are similar to property declarations, with the main differences being that
indexers are nameless (the name used in the declaration is this, since this is being indexed) and that
indexers include indexing parameters. The indexing parameters are provided between square
brackets.

80. Write down the C# syntax to catch exception?
To catch an exception, we use try catch blocks. Catch block can have parameter of system.Exception
type.
Eg:

try
{
GetAllData();
}
catch(Exception ex)
{
}
81. Can you store multiple data types in System.Array?
No.

82. 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.

83. What are C# attributes and its significance?

Source: cbtsam.com
C# provides developers a way to define declarative tags on certain entities eg. Class, method etc. are
called attributes.
The attributes information can be retrieved at runtime using Reflection.

84. Does C# support multiple inheritance?
No, use interfaces instead.

85. Can multiple catch blocks be executed?
No, once the proper catch code fires off, the control is transferred to the finally block (if there are
any), and then whatever follows the finally block.

86. Can you override private virtual methods?
No, moreover, you cannot access private methods in inherited classes, have to be protected in the
base class to allow any sort of access.

Source: cbtsam.com

87. What is a pre-requisite for connection pooling?
Multiple processes must agree that they will share the same connection, where every parameter is the
same,

88. What are generics in C#.NET?
Generics are used to make reusable code classes to decrease the code redundancy, increase type
safety and performance.
Using generics, we can create collection classes. To create generic collection, System.Collections.
Generic namespace should be used instead of classes such as ArrayList in the System.Collections
namespace.
Generics promotes the usage of parameterized types.

89. How to implement singleton design pattern in C#?
In singleton pattern, a class can only have one instance and provides access point to it globally.
Eg:

Public sealed class Singleton
{
Private static readonly Singleton _instance = new Singleton();
}

90. What is the wildcard character in SQL?
Let us say you want to query database with LIKE for all employees whose name starts with La. The
wildcard character is %, the proper query with LIKE would involve La%.

Source: cbtsam.com
91. What is the role of the DataReader class in ADO.NET connections?
It returns a read-only dataset from the data source when the command is executed.

92. What does the This window show in the debugger?
It points to the object that is pointed to by this reference. Objects instance data is shown.

93. Describe the accessibility modifier protected internal?
It is available to derived classes and classes within the same Assembly (and naturally from the base
class it is declared in).

94. What is an interface class?
It is an abstract class with public abstract methods all of which must be implemented in the inherited
classes.

95. What is a multicast delegate?
It is a delegate that points to and eventually fires off several methods.

96. What is the difference between directcast and ctype?
DirectCast is used to convert the type of an 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.

97. Is C# code is managed or unmanaged code?
C# is managed code because Common language runtime can compile C# code to Intermediate
language.

98. What are the different types of Caching?
There are three types of Caching :
Output Caching: stores the responses from an asp.net page.
Fragment Caching: Only caches/stores the portion of page (User Control)
Data Caching: is Programmatic way to Cache objects for performance.

Source: cbtsam.com

99. What are the features of abstract class?
An abstract class cannot be instantiated, and it is an error to use the new operator on an abstract
class.
An abstract class is permitted (but not required) to contain abstract methods and accessors.
An abstract class cannot be scaled.

100. What is the difference between console and window application?
A console application, which is designed to run at the command line with no user interface.
A Windows application, which is designed to run on a users desktop and has a user interface.

Source: cbtsam.com
101. How do I get deterministic finalization in C#?
In a garbage collected environment, it's impossible to get true determinism. However, a design
pattern that we recommend is implementing IDisposable on any class that contains a critical
resource. Whenever this class is consumed, it may be placed in a using statement, as shown in the
following example:
using(FileStream myFile = File.Open(@"c:temptest.txt",
FileMode.Open))
{
int fileOffset = 0;
while(fileOffset < myFile.Length)
{
Console.Write((char)myFile.ReadByte());
fileOffset++;
}
}
When myFile leaves the lexical scope of the using, its dispose method will be called.

102.How can I get around scope problems in a try/catch?
If you try to instantiate the class inside the try, it'll be out of scope when you try to access it from the
catch block. A way to get around this is to do the following: Connection conn = null;
try
{
conn = new Connection();
conn.Open();
}
finally
{
if (conn != null) conn.Close();
}

Source: cbtsam.com

By setting it to null before the try block, you avoid getting the CS0165 error (Use of possibly
unassigned local variable 'conn').

103. What is difference between the throw and throw ex in .NET?
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.

104. How do I convert a string to an int in C#?
Here's an example:

using System;
class StringToInt
{
public static void Main()
{
String s = "105";
int x = Convert.ToInt32(s);
Console.WriteLine(x);
}
}

105.How do you directly call a native function exported from a DLL?
Here's a quick example of the Dll Import attribute in action:

using System.Runtime.InteropServices;
class C
{

Source: cbtsam.com
[DllImport("user32.dll")]
public static extern int MessageBoxA(int h, string m, string c, int type);
public static int Main()
{
return MessageBoxA(0, "Hello World!", "Caption", 0);
}
}
This example shows the minimum requirements for declaring a C# method that is implemented in a
native DLL. The method C.MessageBoxA() is declared with the static and external modifiers, and
has the DllImport attribute, which tells the compiler that the implementation comes from the
user32.dll, using the default name of MessageBoxA. For more information, look at the Platform
Invoke tutorial in the documentation.

106. 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 doesnt assure the garbage collection of
an object.

107. How do you specify a custom attribute for the entire assembly (rather than for a class)?
Global attributes must appear after any top-level using clauses and before the first type or
namespace declarations. An example of this is as follows:

using System;
[assembly : MyAttributeClass]
class X
{
}
Note that in an IDE-created project, by convention, these attributes are placed in AssemblyInfo.cs.

108. What is the difference between a struct and a class in C#?
From language spec:

Source: cbtsam.com
The list of similarities between classes and structs is as follows. Longstructs can implement interfaces
and can have the same kinds of members as classes. Structs differ from classes in several important
ways; however, structs are value types rather than reference types, and inheritance is not supported
for structs.
Struct values are stored on the stack or in-line. Careful programmers can sometimes enhance
performance through judicious use of structs. For example, the use of a struct rather than a class for
a Point can make a large difference in the number of memory allocations performed at runtime.


109. What is the difference between the Debug class and Trace class?
Documentation looks the same. Use Debug class for debug builds, use Trace class for both debug and
release builds.

Source: cbtsam.com
110. How can you overload a method?
Different parameter data types, different number of parameters, different order of parameters.
111. What debugging tools come with the .NET SDK?
CorDBG - command-line debugger, and DbgCLR - graphic debugger. Visual Studio .NET uses the
DbgCLR. To use CorDbg, you must compile the original C# file using the /debug switch.

112. What does Dispose method do with the connection object?
Deletes it from the memory.

113. What is an object pool in .NET?
An object pool is a container having objects ready to be used. It tracks the object that is currently in
use, total number of objects in the pool. This reduces the overhead of creating and re-creating
objects.

114.When you inherit a protected class-level variable, who is it available to?
Classes in the same namespace.

115. How can I get the ASCII code for a character in C#?
Casting the char to an int will give you the ASCII value: char c = 'f';
System.Console.WriteLine((int)c); or for a character in a string:
System.Console.WriteLine((int)s[3]); The base class libraries also offer ways to do this with the
Convert class or Encoding classes if you need a particular encoding.

117. How do I create a Delegate/MulticastDelegate?
C# requires only a single parameter for delegates: the method address. Unlike other languages,
where the programmer must specify an object reference and the method to invoke, C# can infer both
pieces of information by just specifying the method's name. For example,
let's use
System.Threading.ThreadStart:
Foo MyFoo = new Foo();
ThreadStart del = new ThreadStart(MyFoo.Baz);


Source: cbtsam.com
This means that delegates can invoke static class methods and instance methods with the exact same
syntax!

118. How do destructors and garbage collection work in C#?
C# has finalizers (similar to destructors except that the runtime doesn't guarantee they'll be called),
and they are specified as follows:

class C
{
~C()
{
// your code
}
public static void Main() {}
}

Currently, they override object.Finalize(), which is called during the GC process.

119. How can you sort the elements of the array in descending order?
By calling Sort() and then Reverse() methods.

120. How do you debug an ASP.NET Web application?
Attach the aspnet_wp.exe process to the DbgClr debugger.
121. What are Custom Exceptions?
Sometimes there are some errors that need to be handeled as per user requirements.
Custom exceptions are used for them and are used defined exceptions.


122. How do you inherit a class into other class in C#?

Source: cbtsam.com
Colon is used as inheritance operator in C#. Just place a colon and then the class name.

public class DerivedClass : BaseClass


123. What are the ways to deploy an assembly?
An MSI installer, a CAB archive, and XCOPY command.

124. 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 ISerialize Interface.
De-serialization is the reverse process of creating an object from a stream of bytes.

125. What is a delegate?
A delegate object encapsulates a reference to a method. In C++ they were referred to as function
pointers.

126. What is the difference between an interface and abstract class?
In the interface all methods must be abstract; in the abstract class some methods can be concrete. In
the interface no accessibility modifiers are allowed, which is ok in abstract classes.

127. What is an abstract class?
A class that cannot be instantiated. A concept in C++ known as pure virtual method. A class that
must be inherited and have the methods over-ridden. Essentially, it is a blueprint for a class without
any implementation.

128.Does C# support multiple-inheritance?
No.

129. What is the use of using statement in C#?

Source: cbtsam.com
The using block is used to obtain a resource and use it and then automatically dispose of when the
execution of block completed.


130. What is difference between constants and read-only?
Constant variables are declared and initialized at compile time. The value cant 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.
131. Whats the top .NET class that everything is derived from?
System.Object.

132. What does the term immutable mean?
The data value may not be changed. Note: The variable value may be changed, but the original
immutable data value was discarded and a new data value was created in memory.

133. Whats the difference between System.String and
System.Text.StringBuilder classes?
System.String is immutable. System.StringBuilder was designed with the purpose of having a
mutable string where a variety of operations can be performed.

134. Whats the advantage of using System.Text.StringBuilder over System.String?
StringBuilder is more efficient in cases where there is a large amount of string manipulation. Strings
are immutable, so each time a string is changed, a new instance in memory is created.

135. Whats the difference between the System.Array.CopyTo() and System.Array.Clone()?
The first one performs a deep copy of the array, the second one is shallow. A shallow copy of an
Array copies only the elements of the Array, whether they are reference types or value types, but it
does not copy the objects that the references refer to. The references in the new Array point to the
same objects that the references in the original Array point to. In contrast, a deep copy of an Array
copies the elements and everything directly or indirectly referenced by the elements.

136. How can you sort the elements of the array in descending order?
By calling Sort() and then Reverse() methods.

Source: cbtsam.com

137. Can multiple catch blocks be executed?
No, Multiple catch blocks cant 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.

138. What class is underneath the SortedList class?
A sorted HashTable.

139.Will the finally block get executed if an exception has not occurred?
Yes.

140. Whats the C# syntax to catch any possible exception?
A catch block that catches the exception of type System.Exception. You can also omit the parameter
data type in this case and just write catch {}.
141. Can multiple catch blocks be executed for a single try statement?
No. Once the proper catch block processed, control is transferred to the finally block (if there are
any).

142. Explain the three services model commonly know as a three-tier application.
Presentation (UI), Business (logic and underlying code) and Data (from storage or other sources).

143. What is the syntax to inherit from a class in C#?
Place a colon and then the name of the base class.
Example:
class MyNewClass : MyBaseClass

144. Can you prevent your class from being inherited by another class?
Yes. The keyword sealed will prevent the class from being inherited.


Source: cbtsam.com
145. Can you allow a class to be inherited, but prevent the method from being over-ridden?
Yes. Just leave the class public and make the method sealed.

146. Whats an abstract class?
A class that cannot be instantiated. An abstract class is a class that must be inherited and have the
methods overridden. An abstract class is essentially a blueprint for a class without any
implementation.

147. What is an interface class?
Interfaces, like classes, define a set of properties, methods, and events. But unlike classes, interfaces
do not provide implementation. They are implemented by classes, and defined as separate entities
from classes.

148. Whats 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.

149. Why cant you specify the accessibility modifier for methods inside the interface?
They all must be public, and are therefore public by default.

Das könnte Ihnen auch gefallen