C# Test 2015
oDesk • .Net
Technologies
1. Suppose there is a List of type Person with a
property of LastName(string) and PopulateList is a function which returns a
Generic List of type Person:
List<Person> people = PopulateList();
What does the statement below do?
people.Sort((x, y) => string.Compare(x.LastName,
y.LastName));
Answers:
• It will return a newly created sorted List.
• It will throw a compiler error.
• It will sort the string in place.
• It will throw InvalidOperationException at runtime.
2. Which of the following will correctly remove duplicates from a List<T>?
Answers:
• Int32 index = 0; while (index
< list.Count + 1) { if (list[index] == list[index + 1])
list.RemoveAt(index); else index--; }
• List<T> withDupes =
LoadSomeData(); List<T> noDupes = new List<T>(new
HashSet<T>(withDupes)); withDupes.AddRange(noDupes);
• List<T>
withDupes = LoadSomeData(); List<T> noDupes =
withDupes.Distinct().ToList();
• List<T> withDupes =
LoadSomeData(); var hs = new HashSet<T>(withDupes); withDupes.All( x
=> hs.Add(x) );
3. Is it possible to define custom Exception classes in C#?
Answers:
• Yes
• Yes, but they
have to be derived from System.Exception class
• Yes, but they have to be
derived from System.Object class
4. Which type of class members are associated with the class itself rather than the objects of the class?
Answers:
• Public
• Protected
• Private
• Static
5. What is the syntax required to load and use a normal unmanaged windows DLL (e.g. kernel32.DLL) in a managed .NET C# code?
Answers:
• Assembly.Load(''Kernel32.DLL'')
• LoadLibrary(''Kernel32.DLL'')
•
[DllImport(''kernel32'', SetLastError=true)]
• Unmanaged DLLs cannot be used
in a managed .NET application.
6. What is the output of the following code?
class Test
{
static void Main() {
string myString = “1 2 3 4 5”
myString = Regex.Replace(myString, @"\s+", " ");
System.Console.WriteLine(myString);
}
Answers:
• 12345
• 1 2 3 4 5
• 54321
• 5 4 3 2 1
7. Which of the following will block the current thread for a specified number of milliseconds?
Answers:
•
System.Threading.Thread.Sleep(50);
•
System.Threading.Thread.SpinWait(50);
•
System.Threading.Thread.Yield();
• None of these.
8. What is the problem with the following function, which is supposed to convert a Stream into byte array?
public static byte[] ReadFully(Stream input)
{
using (MemoryStream ms = new MemoryStream())
{
input.CopyTo(ms);
return ms.ToArray();
}
}
Answers:
• It will work
only in .NET Framework 4 or above, as the CopyTo function of the memory stream
is available only in .NET Framework 4 or later versions.
• It will work only in .NET
Framework 3.5 or below, as the CopyTo function of the memory stream is available
only in .NET Framework 3.5 or earlier versions.
• It will work in all versions of
the .NET framework.
• None of these.
9. Which of the following functions are used to wait for a thread to terminate?
Answers:
• Wait()
• Terminate()
• Join()
• Abort()
10. _____________ helped overcome the DLL conflict faced by the C# language versions prior to .NET.
Answers:
• CLR
• JIT
• CTS
• GAC
• Satellite Assemblies
• All of these
11. What is the benefit of using a finally{} block with a try-catch statement in C#?
Answers:
• The finally
block is always executed before the thread is aborted.
• The finally block is never
executed before the thread is aborted.
• The finally block is never
executed after the thread is aborted.
• The finally block is always
executed before the thread is started.
12. In which of the following namespaces is the Assembly class defined?
Answers:
• System.Assembly
•
System.Reflection
• System.Collections
• System.Object
13. Which of the following statements is true regarding predicate delegates in C#?
Answers:
• Predicate delegates are used
for filtering arrays.
• Predicate
delegates are references to functions that return true or false.
• Predicate delegates are only
used in System.Array and System.Collections.Generic.List classes.
• Predicate delegates are only
used in ConvertAll and ForEach methods.
14. Working with a list of Employees:
List<Employee> lstEmployees = new List<Employee>
{
new Employee{Name="Harry",Age=15},
new Employee{Name="Peter",Age=22},
new Employee{Name="John",Age=45},
new Employee{Name="Harry",Age=15},
new Employee{Name="Peter",Age=22},
new Employee{Name="John",Age=45},
};
It is required to filter out employees having distinct names.
Which one of the following options cannot be used?
Answers:
• public class Employee { public
int Age { get; set; } public string Name { get; set; } public override bool
Equals(object obj) { return this.Name.Equals(((Employee)obj).Name); } public
override int GetHashCode() { return this.Name.GetHashCode(); } }
List<Employee> distinctEmployeesByName =
lstEmployees.Distinct().ToList();
• public class Employee { public
int Age { get; set; } public string Name { get; set; } } public class
EmployeeEquityComparable : IEqualityComparer<Employee> { #region
IEqualityComparer<Employee> Members public bool Equals(Employee x,
Employee y) { return x.Name.Equals(y.Name); } public int GetHashCode(Employee
obj) { return obj.Name.GetHashCode(); } #endregion } List<Employee>
distinctEmployeesByName = lstEmployees.Distinct(new
EmployeeEquityComparable()).ToList();
• public class
Employee:IEqualityComparer<Employee> { public int Age { get; set; }
public string Name { get; set; } #region IEqualityComparer<Employee>
Members public bool Equals(Employee x, Employee y) { return
x.Name.Equals(y.Name); } public int GetHashCode(Employee obj) { return
obj.Name.GetHashCode(); } #endregion } List<Employee>
distinctEmployeesByName = lstEmployees.Distinct().ToList();
• public class Employee { public
int Age { get; set; } public string Name { get; set; } } List<Employee>
distinctEmployeesByName = (from emp in lstEmployees group emp by emp.Name into
gemp select gemp.First()).ToList();
15. What are the benefits of using the ExpandoObject class over a using dictionary?
Answers:
• It offers easier data binding
from XAML.
• It's interoperable with dynamic
languages, which will be expecting DLR properties rather than dictionary
entries.
• WPF data binding will
understand dynamic properties, so WPF controls can bind to an ExpandoObject
more readily than a dictionary.
• ExpandoObject
can help in creating complex hierarchical objects. ExpandoObject implements the
INotifyPropertyChanged interface, which gives more control over properties than
a dictionary.
16. What will be the output of the following Main program in a C# console application (Assume required namespaces are included):
static void Main(string[] args)
{
int @int = 15;
Console.WriteLine(@int);
Console.ReadLine();
}
Answers:
• 15
• It will throw a compilation
error.
• It will throw an error at
runtime.
• @15
17. What is the purpose of the catch block in the following code?
try {
// Code that might throw exceptions of different types
}
catch {
// Code goes here
}
Answers:
• Only errors of type
std::unexpected are caught here.
• Other code exceptions are
caught.
• This catch block must be the
first one in a series of catch blocks that may or may not be followed.
• This catch
block can be the last one in a series of catch blocks to handle any exception
which is not handled by the preceding catch blocks, each of which handles an
exception of a particular type.
• No errors are caught in this
try block (they are all passed to the next closest catch).
• None of these.
18. Which of the following is true about friend functions in C#?
Answers:
• Friend functions violate the
concept of OOPS.
• Friend functions should not be
used.
• Friend functions enhance the
concept of OOPS if used properly.
• Friend
functions are not available in C#.
19. Which of the following statements is true about the code below?
string[] lines = theText.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
Answers:
• It splits the string variable
on a system line break.
• It splits the string variable
on a ‘\r\n’ line break.
• It splits the
string variable on a system line break, while preserving the empty lines.
• It splits the string variable
on a system line break, while removing the empty lines.
20. Consider the following code:
string s1 = "Old Value";
string s2 = s1;
s1 = "New Value";
Console.WriteLine(s2);
What will be the output printed, and why?
Answers:
• "New Value", because
string is a reference type.
• "Old Value", because
string is a value type.
• "New Value", because
string is a value type.
• "Old Value", because
string is a reference type.
• "Old
Value", because string is a reference type which is treated as a special
case by the assignment operator.
21. What will be the output if in a WinForms application, the following code is executed in the Load event of a form? Assume this form has lblMessage as a Label Control.
private void Form1_Load(object sender, EventArgs e)
{
try
{
ThreadPool.QueueUserWorkItem(ShowMessage,null);
}
catch (Exception ex)
{
}
}
private void ShowMessage(object obj)
{
try
{
lblMessage.Text = "Hello from Thread Pool";
}
catch (Exception ex)
{
}
}
Answers:
• lblMessage.Text will be set to
"Hello from Thread Pool".
• An
InvalidOperationException will be thrown for the function ShowMessage as the UI
can be updated only from the UI thread.
• Behavior will vary depending on
the form loaded.
• None of these.
22. What are Satellite assemblies in C# .NET?
Answers:
• Additional assemblies that are
used only by the main C# application
• User control assemblies used by
the C# application
• Assemblies that
contain only resource information and no code
• Assemblies that contain only
code and no resource information
23. Where does a C# assembly store the information regarding the other external dependencies, such as satellite assemblies, global assemblies etc, and their versions so that they can be loaded correctly when the assembly is executed?
Answers:
• In the embedded resources of
the assembly
• In the manifest
of the assembly
• In the MSIL of the assembly
• In the Windows registry
database
• None of these
24. Which of the following will output the string below?
"\t\t\t\t\t"
Answers:
• private string Tabs(uint
numTabs) { IEnumerable<string> tabs = Enumerable.Repeat("\t",
numTabs); return (numTabs > 0) ? tabs.Aggregate((sum, next) => sum +
next) : ""; }
• private string Tabs(uint
numTabs) { StringBuilder sb = new StringBuilder(); for (uint i = 0; i <=
numTabs; i++) { sb.Append("\t"); } return sb.ToString(); }
• private string Tabs(uint
numTabs) { string output = ""; for (uint i = 0; i <= numTabs; i++)
{ output += '\t'; } return output; }
• private string
Tabs(uint numTabs) { String output = new String('\t', numTabs); return output;
}
25. Complete the following sentence:
In C#, exception handling should be used...
Answers:
• to handle the
occurrence of unusual or unanticipated program events
• to redirect the programs normal
flow of control
• in cases of potential logic or
user input errors
• in case of overflow of an array
boundary
26. The global assembly cache:
Answers:
• Can store two DLL files with
the same name
• Can store two
DLL files with the same name, but different versions
• Can store two DLL files with
the same name and same version
• Cannot store DLL files with the
same name
27. Which statements will give the path where the executing assembly is currently located?
Answers:
•
System.Reflection.Assembly.GetExecutingAssembly().CodeBase;
•
System.Reflection.Assembly.GetExecutingAssembly().Location;
•
AppDomain.CurrentDomain.BaseDirectory;
• None of these
28. In C#, can global functions that are not associated with a particular class be defined?
Answers:
• Yes
• Yes, but they have to be marked
with the keyword static.
• Yes, but they have to be marked
with the keyword internal.
• No
29. Which of the following code snippets will call a generic method when the type parameter is not known at compile time?
Answers:
• var name =
InvokeMemberName.Create; Impromptu.InvokeMemberAction(this,
name("GenericMethod", new[]{myType}));
• MethodInfo method =
typeof(Sample).GetMethod("GenericMethod"); MethodInfo generic =
method.MakeGenericMethod(myType); generic.Invoke(this, null);
• Action<> GenMethod =
GenericMethod< myType >; MethodInfo method =
this.GetType().GetMethod(GenMethod.Method.Name); MethodInfo generic = method.MakeGenericMethod(myType);
generic.Invoke(this, null);
• Action<>
GenMethod = GenericMethod< myType >; MethodInfo method =
this.GetType().GetMethod("GenericMethod"); MethodInfo generic =
method.MakeGenericMethod(myType); generic.Invoke(this, null);
30. Which of the following is true for CLR?
Answers:
• It is an interoperation between
managed code, COM objects, and pre-existing DLL's (unmanaged code and data).
• It is a software Output Unit of
Deployment and a unit of versioning that contains MSIL code.
• It is the primary building
block of a .NET Framework application and a collection of functionality that is
built, versioned, and deployed as a single implementation unit.
• All of these.
31. In the sample code given below, which of the data members are accessible from class Y?
class X {
private int i;
protected float f;
public char c;
}
class Y : X { }
Answers:
• c
• f
• i
• All of these
32. If i == 0, why is (i += i++) == 0 in C#?
Answers:
• //source code i += i++;
//abstract syntax tree += / \ i i (post) \ ++
• // source code
i += i++; //abstract syntax tree += / \ i ++ (post) \ i First, i++ returns 0.
Then i is incremented by 1. Lastly i is set to the initial value of i which is
0 plus the value i++ returned, which is zero too. 0 + 0 = 0.
• int i = 0; i = i + i; i + 1;
• int ++(ref int i) { int c = i;
i = i + i; return c;}
33. Performance-wise, which of the following is the most efficient way to calculate the sum of integers stored in an object array?
Answers:
• int FindSum(object[] values) {
int sum = 0; foreach (object o in values) { if (o is int) { int x = (int) o;
sum += x; } } return sum; }
• int FindSum (object[] values) {
int sum = 0; foreach (object o in values) { int? x = o as int?; if (x.HasValue)
{ sum += x.Value; } } return sum; }
• int FindSum
(object[] values) { int sum = values.OfType<int>().Sum(); return sum; }
• int FindSum (object[] values) {
int sum = 0; foreach (object o in values) { if (o is int) { int x =
Convert.ToInt32(o); sum += x; } } return sum; }
34. Consider the following code block:
public class Person
{
public string GetAge()
{
lock (this)
{
// Code to get Age of this person object.
}
}
}
Which of the following statements is true?
Answers:
• lock(this) actually modifies
the object passed as a parameter, and in some way makes it read-only or
inaccessible.
• lock(this) can
be problematic if the instance can be accessed publicly, because code beyond
one's control may lock on the object as well. This could create deadlock
situations where two or more threads wait for the release of the same object.
• lock(this) marks current object
as a critical section by obtaining the mutual-exclusion lock for a given
object, all private fields of the object become read-only.
• Implement locking using current
application instance or some private variable is absolutely the same and does
not produce any synchronization issue, either technique can be used
interchangeably.
35. The ___________ namespace is not defined in the .NET class library.
Answers:
• System
• System.CodeDom
• System.IO
• System.Thread
• System.Text
36. Which of the following is true about constructors and member functions?
Answers:
• A constructor can return
values, but a member function cannot.
• A member function can declare
and define values, but a constructor cannot.
• A member
function can return values, but a constructor cannot.
• All of these.
37. Which of the following language code is not 'managed' by default in .NET framework?
Answers:
• Visual Basic
• C#
• C++
• Jscript
38. There is a class that has a public int counter field that is accessed by multiple threads. This int is only incremented or decremented. To increment this field, three thread-safe approaches are mentioned below:
A) lock(this.locker) this.counter++;
B) Interlocked.Increment(ref this.counter);
C) Change the access modifier of counter to public volatile
Which statement is incorrect with regards to these approaches?
Answers:
• All 3 are equivalent and can be
used interchangeably.
• Though A is safe to do, it
prevents any other threads from executing any other code which is guarded by
locker.
• B is the best
approach as it effectively does the read, increment, and write in 'one hit'
which can't be interrupted.
• C on it's own isn't actually
safe at all. The point of volatile is that multiple threads running on multiple
CPU's can, and will, cache data and re-order instructions.
39. Which of the following define the rules for .NET Languages?
Answers:
• GAC
• CLS
• CLI
• CTS
• CLR
• JIT
40. What will happen if the following code is compiled in .NET 4 or above (Assume required namespaces are included)?
public class var { }
public class main
{
public static void main(string[] args)
{
var testVar = new var();
}
}
Answers:
• This code will not compile, as
var is a reserved keyword, so it can not be used as a class name.
• This code will
compile, as var is merely a contextual keyword and it is used to provide a
specific meaning in the code, so it will cause no problems.
• This code will not compile, as
a new object cannot be created like var testVar = new var();
• None of these.
41. Which object oriented term is related to protecting data from access by unauthorized functions?
Answers:
• Inheritance
• Data hiding
• Polymorphism
• Operator overloading
• Abstraction
42. One of the ternary operators provided in C# is:
Answers:
• *
• ::
• &
• ?:
• <<
43. What type of code is written to avail the services provided by Common Language Runtime?
Answers:
• MSIL
• Unmanaged code
• Managed Code
• C#/VB/JS
44. Asynchronous execution is supported in ADO.NET 2.0 for?
Answers:
• ExecuteReader
• ExecuteScalar
• ExecuteNonQuery
• All of these
45. The .NET Framework consists of:
Answers:
• The Common Language Runtime
• A set of class libraries
• The Common
Language Runtime and a set of class libraries
46. An enum is defined in a program as follows:
[Flags]
public enum Permissions
{
None = 0,
Read = 1,
Write = 2,
Delete = 4
}
What will be the output of the following Main program (which has access to the enum defined above) in this C# console application (Assume required namespaces are included) :
static void Main(string[] args)
{
var permissions = Permissions.Read | Permissions.Write;
if ((permissions & Permissions.Write) == Permissions.Write)
{
Console.WriteLine("Write");
}
if ((permissions & Permissions.Delete) == Permissions.Delete)
{
Console.WriteLine("Delete");
}
if ((permissions & Permissions.Read) == Permissions.Read)
{
Console.WriteLine("Read");
}
Console.ReadLine();
}
Answers:
• Write Delete Read
• Write Delete
• Delete
• Write Read
47. Which of the following keywords prevents a class from being overridden further?
Answers:
• abstract
• sealed
• final
• oot
• internal
48. Suppose a class is declared as a protected internal:
protected internal class A
{
}
Which statement is correct with regards to its accessibility?
Answers:
• This class can be accessed by
code in the same assembly, or by any derived class in another assembly.
• This class can only be accessed
by code which is in the same assembly.
• This class can
only be accessed by code which is in the derived class (i.e. classes derived
from Class A) and which are in the same assembly.
• This class can be accessed by
any code whether in the same assembly or not.
49. Which of the following is the correct way to randomize a generic list of 75 numbers using C#?
Answers:
• Random random =
new Random(); List<object> products= GetProducts();
products.OrderBy(product => random.Next(products.Count));
• Random random = new Random();
List<object> products= GetProducts(); products.Randomize(product =>
random.Next(products.Count));
• Random random = new Random();
List<object> products= GetProducts(); products.Randomize(products.Count);
• Random random = new Random();
List<object> products= GetProducts(); products.Reverse(product =>
random.Next(products.Count));
50. What will be the value of the result variable after these two statements?
int num1 = 10, num2 = 9;
int result = num1 & num2;
Answers:
• 1
• 8
• 9
• 10
• 11
• 109
51. What is the output of the following code:
class CCheck {
public static void Main() {
string str = @"E:\\RIL\\test.cs";
Console.WriteLine(str);
}
}
Answers:
• "E:\\RIL\\test.cs"
•
E:\\RIL\\test.cs
• "E:\RIL\test.cs"
• The compiler will generate an
error saying undefined symbol '@'.
52. What is the issue with the following function?
public string GetName(int iValue)
{
string sValue = "0";
switch (iValue)
{
case 1:
sValue = iValue.ToString();
case 2:
sValue = iValue.ToString();
break;
default:
sValue = "-1";
break;
}
return sValue;
}
Answers:
• The code will not compile as
there shouldn't be a break statement in the default case label.
• The code will compile but if
case 1 is passed as the input parameter to the function, the code for case 2
will also execute (after the code for case 1), and so the wrong value may be
returned.
• The code will compile and run without
any issues.
• The code will
not compile as there is no break statement in case 1.
53. What will be the output of the following Main program in a C# console application (Assume required namespaces are included):
static void Main(string[] args)
{
for (int i = 0; i < 1; i++)
{
Console.WriteLine("No Error");
}
int A = i;
Console.ReadLine();
}
Answers:
• No Error
• This program
will throw a compilation error, "The name 'i' does not exist in the
current context".
• The program will compile, but
throw an error at runtime.
• None of these.
54. What is the difference between int and System.Int32 CLR types?
Answers:
• int represents a 16-bit integer
while System.Int32 represents a 32-bit integer.
• int is just an
alias for System.Int32, there is no difference between them.
• int represents a 64-bit integer
while Int32 represents a 32-bit integer.
• None of these.
55. What will be the return value if the function fn is called with a value of 50 for the parameter var?
public int fn(int var)
{
int retvar = var - (var / 10 * 5);
return retvar;
}
Answers:
• 50
• 25
• 49
• Error message
• None of these
56. Which of the following code snippets converts an IEnumerable<string> into a string containing comma separated values?
Answers:
• public static string
ConvertToString(IEnumerable<T> source) { return new
List<T>(source).ToArray(); }
• public static
string ConvertToString(IEnumerable<T> source) { return
string.Join(",",source.ToArray()); }
• public static string
ConvertToString(IEnumerable<T> source) { return source.ToString(); }
• public static string
ConvertToString(IEnumerable<T> source) { return
string.Join(source.ToArray()); }
57. Which of the following is true regarding a null and an empty collection in C#?
Answers:
• An empty collection and a null
are both objects.
• An empty collection and a null
both have the same meaning.
• Both an empty collection and a
null do not refer to any object.
• An empty
collection is an object while the null keyword is a literal.
58. Which of the following exceptions cannot be thrown by the Delete() function of the FileInfo class (ie. FileInfo.Delete())?
Answers:
• IOException
• SecurityException
• UnauthorizedAccessException
•
InvalidOperationException
59. Which of the following statements are true regarding the ref and out parameters in C#?
Answers:
• A variable that is passed as an
out parameter needs to be initialized, but the method using the out parameter
does not need to set it to something.
• The out parameter can be used
to return the values in the same variable passed as a parameter of the method.
Any changes made to the parameter will be reflected in the variable.
• The ref keyword can only be
used on one method parameter.
• The ref
parameter is considered initially assigned by the callee. As such, the callee
is not required to assign to the ref parameter before use. Ref parameters are
passed both into and out of a method.
60. What is the difference between the String and StringBuilder class objects with respect to mutability?
Answers:
• String objects are mutable,
while StringBuilder objects are immutable.
• String objects
are immutable, while StringBuilder objects are mutable.
• There is no difference between
them in this context, as both are immutable.
• There is no difference between
them in this context, as both are mutable.
61. Which of the following code samples will create a comma separated list from IList<string> or IEnumerable<string>?
Answers:
• public static T[]
ToArray(IEnumerable<T> source) { return new
List<T>(source).ToArray(); } IEnumerable<string> strings = ...;
string[] array = Helpers.ToArray(strings); string joined =
string.Join(",", strings.ToArray()); string joined =
string.Join(",", new List<string>(strings).ToArray());
•
List<string> ls = new List<string>(); ls.Add("one");
ls.Add("two"); string type = string.Join(",",
ls.ToArray());
• string commaSeparatedList =
input.Aggregate((a, x) => a + ", " + x)
• public static string Join(this
IEnumerable<string> source, string separator) { return
string.Join(separator, source); }
62. What is the advantage of using IList<T> over List<T>?
Answers:
• IList<T> uses reflection,
which is the most efficient way to process an object inside memory.
• IList<T> implements
hashing to store objects in the collection; which produces optimum performance.
• Using
IList<T> rather than List<T> allows the code to be more flexible.
It can replace the implementation with any collection that implements
IList<T> without breaking any calling code.
• IList<T> only allows
immutable types to be stored inside the collection.
63. How can a single instance application be created in C#?
Answers:
• System.Threading.SingleInstance
can be used to ensure that only one instance of a program can run at a time.
•
System.Threading.Mutex can be used to ensure that only one instance of a
program can run at a time.
• Locks can be used to force a C#
application to launch a single instance at a time.
• C# applications cannot be
restricted to a single instance.
64. Which of the following code samples will execute a command-line program in C# and return its STD OUT results?
Answers:
• System.Diagnostics.Process
pProcess = new System.Diagnostics.Process(); pProcess.StartInfo.FileName =
strCommand; pProcess.StartInfo.Arguments = strCommandParameters;
pProcess.StartInfo.UseShellExecute = false;
pProcess.StartInfo.RedirectStandardOutput = true; pProcess.Start(); string
strOutput = pProcess.StandardOutput.ReadToEnd(); pProcess.WaitForExit();
• Process p = new Process();
p.StartInfo.UseShellExecute = true p.StartInfo.RedirectStandardOutput = false
p.StartInfo.FileName = "YOURBATCHFILE.bat"; p.Start(); string output
= p.StandardOutput.ReadToEnd(); p.WaitForExit();
•
System.Diagnostics.ProcessStartInfo psi = new
System.Diagnostics.ProcessStartInfo("program_to_call.exe");
psi.RedirectStandardOutput = true; psi.WindowStyle =
System.Diagnostics.ProcessWindowStyle.Hidden; psi.UseShellExecute = false;
System.Diagnostics.Process proc System.Diagnostics.Process.Start(psi);;
System.IO.StreamReader myOutput = proc.StandardOutput; proc.WaitForExit(2000);
if (proc.HasExited) { string output = myOutput.ReadToEnd(); }
• System.Diagnostics.Process
pProcess = new System.Diagnostics.Process(); pProcess.StartInfo.FileName =
strCommand; pProcess.StartInfo.Arguments = strCommandParameters;
pProcess.StartInfo.UseShellExecute = false;
pProcess.StartInfo.RedirectStandardOutput = true;
pProcess.StartInfo.WorkingDirectory = strWorkingDirectory; pProcess.Start();
string strOutput = pProcess.StandardOutput.ReadToEnd(); pProcess.WaitForExit();
65. What is an Action delegate?
Answers:
• An Action is a
delegate to a method, that takes zero, one or more input parameters, but does
not return anything.
• An Action is a delegate to a
method, that takes zero, one or more input parameters, but always returns a
boolean value.
• An Action is a delegate to a
method that takes one or more input parameters, but does not return anything.
• An Action is a delegate to a
method that takes one or more input parameters, but always returns a boolean
value.
66. What is the difference between Expression<Func<T>> and Func<T>?
Answers:
• There is no difference between
the two.
• Func<T>
denotes a delegate, while Expression<Func<T>> denotes a tree data
structure for a lambda expression.
• Func<T> denotes a
function with parameter of dynamic type, while Expression<Func<T>>
denotes a lambda expression.
• None of these.
67. Which of the following statements is true about IEnumerable<T>?
Answers:
• IEnumerable<T> supports a
Size property.
•
IEnumerable<T> supports a Count() extension.
• IEnumerable<T> cannot be
casted onto an ICollection<T>.
• IEnumerable<T> cannot be
casted onto an IList<T>.
68. Which of the following statements is true about the System.Environment.NewLine property?
Answers:
• It's a string containing
"\n" for non-Unix platforms.
• It's a string containing
"\n" for Unix platforms.
• It's a string
containing "\r\n" for non-Unix platforms.
• It's a string containing
"\r\n" for Unix platforms.
69. An Interface represents which kind of relationship?
Answers:
• IS A
• HAS A
• CAN DO
• None of these
70. Why is it a bad practice to use iteration variables in lambda expressions?
Answers:
• Iteration
variables can cause problems with accessing a modified closure.
• Iteration variables are passed
by value, which produces unexpected results.
• Iteration variables are passed
by reference, which produces unexpected results.
• It is perfectly valid to use
iteration variables in lambda expressions.
71. Which of the following code samples will check if a file is in use?
Answers:
• protected
virtual bool IsFileLocked(FileInfo file) { FileStream stream = null; try {
stream = file.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None); }
catch (IOException) { return true; } finally { if (stream != null)
stream.Close(); } return false; }
• try { using (Stream stream =
new FileStream("MyFilename.txt", FileMode.Open)) { } } catch { }
• internal static bool
FileOrDirectoryExists(string name) { return (Directory.Exists(name) ||
File.Exists(name)) }
• FileInfo file = new
FileInfo("file.txt"); if (file.Exists) { // TO DO }
72. Which of the following statements is true regarding the code samples below?
A:
try {
// code goes here
} catch (Exception e) {
throw e;
}
B:
try {
// code goes here
} catch (Exception e) {
throw;
}
Answers:
• A will lose the
call stack trace information. B will preserve the call stack trace information.
• A will preserve the call stack
trace information. B will lose the call stack trace information.
• Both A and B will preserve the
call stack trace information.
• Both A and B will lose the call
stack trace information.
73. Which of the following is the correct way to implement deep copying of an object in C#?
Answers:
• By using the
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter class.
• By using the
System.Reflection.DeepCopy class.
• By using the DeepCopy() method
of Object class.
• By using the MemberwiseClone()
method of Object class.
74. What will be the output of the following Main program in a C# console application (Assume required namespaces are included)?
static void Main(string[] args)
{
string Invalid = "$am$it$";
string sResult = Invalid.Trim(new char[]{'$'});
Console.WriteLine(sResult);
Console.ReadLine();
}
Answers:
• amit
• am@am$
• $am$it$
• am$it
75. Which of the following is the correct way to perform a LINQ query on a DataTable object?
Answers:
• var results = from myRow in
myDataTable where results.Field("RowNo") == 1 select results;
• var results = from myRow in
myDataTable.AsEnumerable() where myRow.Field("RowNo") == 1 select
myRow;
• var results = from myRow in
myDataTable.Rows where myRow.Field<int>("RowNo") == 1 select
myRow;
• var results =
from myRow in myDataTable.AsEnumerable() where
myRow.Field<int>("RowNo") == 1 select new { IID=
myRow.Field<int>("IID"), Date =
myRow.Field<DateTime>("Date"), };
76. What is the purpose of the vshost.exe file in Visual Studio?
Answers:
• It is used to
improve the performance of the Visual Studio debugger.
• It is used to improve the
performance of Visual Studio plugins.
• It is used to improve the
performance of the C# compiler.
• It is used to load Visual
Studio configuration data.
77. Which of the following code snippets for catch shows a better way of handling an exception?
1.
catch (Exception exc)
{
throw exc;
}
2.
catch (Exception exc)
{
throw;
}
Answers:
• 1 is better as it maintains the
call stack.
• 2 is better as
it maintains the call stack.
• Both are same.
• None of these.
{ 0 comments... read them below or add one }
Post a Comment