C# Interview Questions &Answer

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 acc essible 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.

Transcript of C# Interview Questions &Answer

Page 1: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 1/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.

Page 2: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 2/35

 

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 wereoutside the try block anyway. If it’s 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, there’s 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?

Page 3: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 3/35

Page 4: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 4/35

 

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)?

Page 5: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 5/35

 

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?

  Here’s a quick example of the DllImport attribute in action: 

using System.Runtime.InteropServices; \ 

class C 

[DllImport(\"user32.dll\")]  

Page 6: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 6/35

 

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. What’s 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.What’s the difference between private and shared assembly?

 

Private assembly is used inside an application only and does not have to be identified by a strongname.

  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.

Page 7: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 7/35

 

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 ofa 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.Where’s 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 it’s 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.

Page 8: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 8/35

 

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 can’t

be placed in the toolbox and dragged –  dropped from it. They have their design and code behind. Thefile 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 methodbehavior. 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.

Page 9: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 9/35

 

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 givesfree 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?

Page 10: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 10/35

 

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 

Page 11: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 11/35

 

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, youmust 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

Inheritanceo 

Polymorphism

Dynamic Binding

Message passing

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 followingtransactions), 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).

Page 12: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 12/35

 

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 

Page 13: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 13/35

 

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

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

Page 14: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 14/35

Page 15: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 15/35

 

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;

Page 16: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 16/35

 

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 doesn’t 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

Page 17: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 17/35

 

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.

Page 18: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 18/35

 

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 runswithout 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)

Page 19: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 19/35

 

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 theC# 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 

Page 20: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 20/35

 

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.

Page 21: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 21/35

 

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 thatindexers 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?

Page 22: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 22/35

 

Source: cbtsam.com

  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. 

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.

Page 23: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 23/35

Page 24: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 24/35

 

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. Object’s 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.

Page 25: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 25/35

 

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 user’s desktop and has a user interf ace.

Page 26: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 26/35

 

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(); 

Page 27: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 27/35

 

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 

Page 28: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 28/35

 

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 doesn’t 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 ornamespace 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:

Page 29: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 29/35

 

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.

Page 30: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 30/35

 

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);

Page 31: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 31/35

 

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#?

Page 32: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 32/35

 

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#?

Page 33: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 33/35

 

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

131. What’s 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. What’s 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. What’s 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. What’s 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 anArray 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.

Page 34: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 34/35

 

Source: cbtsam.com

137. Can multiple catch blocks be executed?

  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.

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. What’s 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.

Page 35: C# Interview Questions &Answer

8/11/2019 C# Interview Questions &Answer

http://slidepdf.com/reader/full/c-interview-questions-answer 35/35

 

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. What’s 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. 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.

149. Why can’t you specify the accessibility modifier for methods inside the interface?

  They all must be public, and are therefore public by default.