NET Interview Questions
NET Interview Questions
NET Interview Questions
^Back to Top
^Back to Top
Following are the questions from an interview I attended for in C#, ASP.NET, XML and Sql Server. I
will try to add some more as soon as I recollect. Hope these questions will be useful for people
attending interviews in this area.
^Back to Top
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).
20. I was trying to use an “out int” parameter in one of my functions. How should I
declare the variable that I am passing to it? - You should declare the variable as an int, but when
you pass it in you must specify it as ‘out’, like the following: int i; foo(out i); where foo is declared as
follows: [return-type] foo(out int o) { }
21. 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:
22.
23. using System;
24. public class StringTest
25. {
26. public static void Main(string[] args)
27. {
28. Object nullObj = null; Object realObj = new StringTest();
29. int i = 10;
30. Console.WriteLine(\"Null Object is [\" + nullObj + \"]\n\"
31. + \"Real Object is [\" + realObj + \"]\n\"
32. + \"i is [\" + i + \"]\n\");
33. // Show string equality operators
34. string str1 = \"foo\";
35. string str2 = \"bar\";
36. string str3 = \"bar\";
37. Console.WriteLine(\"{0} == {1} ? {2}\", str1, str2, str1 ==
str2 );
38. Console.WriteLine(\"{0} == {1} ? {2}\", str2, str3, str2 ==
str3 );
39. }
40. }
Output:
Null Object is []
Real Object is [StringTest]
i is [10]
foo == bar ? False
bar == bar ? True
41. 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:
42.
43. using System;
44. [assembly : MyAttributeClass] class X {}
Note that in an IDE-created project, by convention, these attributes are placed in AssemblyInfo.cs.
or
translates to
try {
CriticalSection.Enter(obj);
// code
}
finally
{
CriticalSection.Exit(obj);
}
48. How do you directly call a native function exported from a DLL? - Here’s a quick
example of the DllImport attribute in action:
49.
50. using System.Runtime.InteropServices; \
51. class C
52. {
53. [DllImport(\"user32.dll\")]
54. public static extern int MessageBoxA(int h, string m, string c, int
type);
55. public static int Main()
56. {
57. return MessageBoxA(0, \"Hello World!\", \"Caption\", 0);
58. }
59. }
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.
60. 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.
^Back to Top
A representative of a high-tech company in United Kingdom sent this in today noting that the list was
used for interviewing a C# .NET developer. Any corrections and suggestions would be forwarded to
the author. I won’t disclose the name of the company, since as far as I know they might still be using
this test for prospective employees. Correct answers are in green color.
1. System.Int16
2. System.Int32
3. System.Int64
4. System.Int128
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() {
}
public
static A Instance {
get
{
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?
1. What do you know about .NET assemblies? Assemblies are the smallest units of
versioning and deployment in the .NET application. Assemblies are also the building blocks for
programs such as Web services, Windows services, serviced components, and .NET remoting
applications.
2. 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 strong name. Shared assembly can
be used by multiple applications and has to have a strong name.
3. What’s a strong name? A strong name includes the name of the assembly, version number,
culture identity, and a public key token.
4. How can you tell the application to look for assemblies at the locations other than its
own install? Use the
directive in the XML .config file for a given application.
should do the trick. Or you can add additional search paths in the Properties box of the deployed
application.
5. How can you debug failed assembly binds? Use the Assembly Binding Log Viewer
(fuslogvw.exe) to find out the paths searched.
6. Where are shared assemblies stored? Global assembly cache.
7. How can you create a strong name for a .NET assembly? With the help of Strong Name
tool (sn.exe).
8. Where’s global assembly cache located on the system? Usually C:\winnt\assembly or
C:\windows\assembly.
9. 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.
10. So let’s say I have an application that uses MyApp.dll assembly, version 1.0.0.0.
There is a security bug in that assembly, and I publish the patch, issuing it under name
MyApp.dll 1.1.0.0. How do I tell the client applications that are already installed to start
using this new MyApp.dll? Use publisher policy. To configure a publisher policy, use the publisher
policy configuration file, which uses a format similar app .config file. But unlike the app .config file, a
publisher policy file needs to be compiled into an assembly and placed in the GAC.
11. What is delay signing? Delay signing allows you to place a shared assembly in the GAC by
signing the assembly with just the public key. This allows the assembly to be signed with the private
key at a later stage, when the development process is complete and the component or assembly is
ready to be deployed. This process enables developers to work with shared assemblies as if they were
strongly named, and it secures the private key of the signature from being accessed at different
stages of development.