Dot Net Interview Q & A 3
Dot Net Interview Q & A 3
Dot Net Interview Q & A 3
using System;
class main
try
return;
finally
}
}
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 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. 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) { … } Here’s an
example showing how string compares work:
7. using System;
8. public class StringTest
9. {
10. public static void Main(string[] args)
11. {
12. Object nullObj = null; Object realObj = new
StringTest();
13. int i = 10;
14. Console.WriteLine("Null Object is [" + nullObj +
"]n"
15. + "Real Object is [" + realObj + "]n"
16. + "i is [" + i + "]n");
17. // Show string equality operators
18. string str1 = "foo";
19. string str2 = "bar";
20. string str3 = "bar";
21. Console.WriteLine("{0} == {1} ? {2}", str1, str2,
str1 == str2 );
22. Console.WriteLine("{0} == {1} ? {2}", str2, str3,
str2 == str3 );
23. }
24. }
Output:
Null Object is []
Real Object is [StringTest]
i is [10]
foo == bar ? False
bar == bar ? True
25. 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:
26. using System;
27. [assembly : MyAttributeClass] class X {}
or
translates to
try {
CriticalSection.Enter(obj);
// code
}
finally
{
CriticalSection.Exit(obj);
}
31. How do you directly call a native function exported from a DLL? -
Here’s a quick example of the DllImport attribute in action:
32. using System.Runtime.InteropServices;
33. class C
34. {
35. [DllImport("user32.dll")]
36. public static extern int MessageBoxA(int h, string m,
string c, int type);
37. public static int Main()
38. {
39. return MessageBoxA(0, "Hello World!", "Caption",
0);
40. }
41. }
42. How do I simulate optional parameters to COM calls? - You must use
the Missing class and pass Missing.Value (in System.Reflection) for any values
that have optional parameters.
Good for preparation and general self-testing, but too specific for the actual job
interview. This was sent in by a job applicant getting ready to step into the .NET field
in India.
1. 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.
2. Why does DllImport not work for me? - All methods marked with the
DllImport attribute must be marked as public static extern.
3. Why does my Windows application pop up a console window every
time I run it? - Make sure that the target type set in the project properties
setting is set to Windows Application, and not Console Application. If you’re
using the command line, compile with /target:winexe, not /target:exe.
7. 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) {} }
11. What is the difference between a struct and a class in C#? - From
language spec: 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. The program below creates and initializes an array of 100 points.
With Point implemented as a class, 101 separate objects are instantiated-one
for the array and one each for the 100 elements.
To achieve the same effect in C#, the code must be modified as shown below
(notice how the control flows are explicit):
class Test
{
public static void Main() {
int x = 3;
switch(x)
{
case 0: // do something
goto case 1;
case 1: // do something in common with 0
goto default;
default: // do something in common with 0, 1, and
anything else
break;
}
}
}
39. 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:
40. using System;
41. class BreakExample
42. {
43. public static void Main(String[] args) {
44. for(int i=0; i<3; i++)
45. {
46. Console.WriteLine("Pass {0}: ", i);
47. for( int j=0 ; j<100 ; j++ )
48. {
49. if ( j == 10)
50. goto done;
51. Console.WriteLine("{0} ", j);
52. }
53. Console.WriteLine("This will not print");
54. }
55. done:
56. Console.WriteLine("Loops complete.");
57. }
58. }
1. System.Int16
2. System.Int32
3. System.Int64
4. System.Int128
2) Which of these string definitions will prevent escaping on backslashes in
C#?
1. int[,] myArray;
2. int[][] myArray;
3. int[2] myArray;
4. System.Array[2] myArray;
1. Classes that are both in the same assembly and derived from the declaring
class.
2. Only methods that are in the same class as the method in question.
3. Internal methods can be only be called using reflection.
4. Classes within the same assembly, and classes derived from the
declaring class.
5) What is boxing?
6) What compiler switch creates an xml file from the xml comments in the
files in an assembly?
1. /text
2. /doc
3. /xml
4. /help
8) What is a delegate?
1. The runtime checks to see that only one version of an assembly is on the
machine at any one time.
2. .NET allows assemblies to specify the name AND the version of any
assemblies they need to run.
3. The compiler offers compile time checking for backward compatibility.
4. It doesn’t.
public class A {
private A instance;
private A() {
public
static A Instance {
get
if ( A == null )
A = new A();
return instance;
1. Factory
2. Abstract Factory
3. Singleton
4. Builder
11) In the NUnit test framework, which attribute must adorn a test class in
order for it to be picked up by the NUnit GUI?
1. TestAttribute
2. TestClassAttribute
3. TestFixtureAttribute
4. NUnitTestClassAttribute
12) Which of the following operations can you NOT perform on an ADO.NET
DataSet?