You are on page 1of 91

CLR and C#

1. Types of Authentication IIS.


A. Authentication is the process which helps web server(IIS) to check and confirm
the identity of the client who request to access the website.
Types of Authentication:
a. Http Authentication: Basic Authentication, Digest Authentication
b. Integrated Windows Authentication: NTLM (Network Lan Manager), Kerberos
c. Client Certificates Access
d. Anonymous and Unauthenticated Access
e. Logon-Redirection based: Form Authentication (IIS 7.0)
2. Types of Authentication and Authorization in ASP.Net.
A. Types of Authentication: Windows Authentication, Forms Authentication
Types of Authorization:- File Authorization and URL Authorization
3. ASP.Net Life cycle.
A. In ASP.Net, the request starts with the client and processed through IIS. In IIS,
there are 2 utilities- INetInfo.exe and ASPNet_ISAPI.dll.
The InetInfo.exe hosts the worker process and checks for the syntax and semantics
of the request, while ASPNet_ISAPI.dll is used to filter the .aspx files(based on the
extension). After the URL request split into 2 partsVirtual directory name and Web Page name.
The worker process which is nothing but the application factory basically contains
all the virtual directories and checks for the current virtual directory. If this is first
request, then there will be no Virtual directory available. Now the worker process
(W3wp.exe) creates a memory area called as AppDomain to check for the current
page. As AppDomain is the Page Handler factory so it contains all the processes
pages. If this is the new page then it will not find here. The request further moves to
the HttpPipeline where the actual execution of the page happens by using the
ProcessRequest method and creates the events(init, load, render, unload) of the
page. After creation of event and execution of all the event, the HTML
page returned back to the user.
4. ASP.Net Page Life Cycle.
A. There are few events which gets generated during the page execution like:
Page_BeginRequest, Page_Init, Page_Load, Page_Prerender, Page_Render,
Page_Unload etc
For the details of the page life cycle, you can follow the previous question.
5. What are types: Value Type and Reference Type?
A. DataType specifies Type of the data as well as Size of the data. There are 2 type
of DataTypes in C#:
a. Value Type: Value type holds data directly, Value type stored in the stack
memory, we can get the direct value of the value types. Value type data type cant
be null.

b. Reference types: This type does not hold the data directly. They hold the address
on which the actual data present. They stored in heap memory, Can have default
values.
We can make and work with null reference type.
6. Boxing and Unboxing: Terminology, Advantages and Disadvantages.
A. Converting the Value type data into the Reference type is called as Boxing.
byte b= 45;
Object o = b.Tostring();

Converting the Reference type data and keep its value to stack is called as
the Unboxing.
Object o=10;
Int i= Convert.ToInt32(o.ToString());

The Advantage of boxing and unboxing is that we can convert one type of the object
to another type. The disadvantage is that it requires lot of memory and CPU cycles
to convert from one type to another type.
7. What is Type Safety?
A. TypeSafe is a way through which the application or framework that the memory
will not be leaked to outside environment. E.g. C# is the type safe language where
you must have to assign any object before using it. In VB.Net it will take the default
value. So C# is the type safe language while VB.Net is not.
8. What is Strong Name?
A. Strong Name (SN) is used to make the dll as the unique not by its name but by its
version as:
SN -k fileName.dll

Now it will have the unique name with respect to the version. This assembly when
placed in the GAC, it will treat as the unique with its version number and other
details. 2 assemblies with the same name can exist in the GAC but both will have
different version. The CLR takes the latest version assembly while running the
application.
9. What are Extensions, modules and handlers?
A. HttpModule and HttpHandler are the utilities which are used in the HttpPipeline
under the ASP.Net page life cycle. When the request received to Http Pipeline, the
HttpModule checks for the Authentication of the request and then it route the
request to the respective handler. After that HttpHandler takes that request and
process it. Once the request is processed through handler, again the HttpModule
takes the response and send it back to the worker process and finally to the user.
10. What is worker process?
A. Worker process (w3wp.exe) is an executable which is also called as the
Application Factory. This is used for the execution of the request and handling of the
request for the web pages.
11. CLR and DLR?
A. CLR (Common Language Runtime) is the utility in the .Net framework to run the

application. It is the runtime engine which actually executes the application with
many responsibilities like taking care of memory management, versioning, CasPol
etc.
DLR is new with .Net 4.0 which is the Dynamic Language Runtime and used to run
the application on the fly wherever required. CLR runs as statically while DLR runs
dynamically.
12. In case more than one dll versions of an installable is installed, which version is
invoked by default?
A. By default the CLR will take and invoke the latest version of the dll and execute it
accordingly. There could be the same name assemblies exists in the GAC but they
will have different versions altogether for their uniqueness.
So while running the application, CLR takes the latest version assembly and use in
the application.
13. What are Globalization and localization? How to implement them?
A. Globalization is the concept of developing the application in more than one
language while the Localization is used for a particular language. Like if we develop
the application in more than one language we need to create the resource files
(.resx) by using System. Globalization and when we open the application in a
particular language, then the localizations used to convert that application to the
selected language.
14. What is assembly, GAC? Where they are physically located?
A. Assembly is the collection of classes, namespaces, methods, properties which
may be developed in different language and packed as a dll. So we can say that dll
is also called as assembly.
There are 3 types of assemblies- Private Assembly, Shared Assembly, and Satellite Assembly.
GAC (Global Assembly Cache)- When the assembly is required by more than one
project or application, we need to make the assembly with strong name and keep it
in GAC or in Assembly folder by installing the assembly with the GACUtil command.
To make the assembly with strong name:
SN -k MyDll.dll

And to install it in GAC:


GacUtil -i MyDll.dll

GAC assemblies are physically stored in Assembly folder in the system.


15. How to configure HTTPS for a web application?
A. To configure the HTTPS (HTTP with Secure) for the web application, we need to
have a client certificate. The client certificates can be purchased from the trusted
providers and then we need to install that certificate for our site. By implementing
the HTTPS, all the data which is passing will be in encrypted format, while makes
the website more secure.
16. What are Inproc and Outproc in session? Where are session data stores in these
cases?

A. Inproc and Outproc is the types of Sessions where the session data can be stored
in the process memory of the application server(IIS) and in the separate state
server.
When the session data is stored in the process memory(AppDomain) of the
server(IIS), the session is called as the Inproc server. In this case when the server is
restarted, the session data will be lost. So In the Inproc session mode, the session
data stores in the memory object in AppDomain in Application Worker
Process(AspNet_wp.exe)
When the session data is stored in the separate server like in state server or in Sql
Server, the type of session is called as the Outproc session. In this case, if the
server where the application is running is restarted, the session will be still remain
in the separate servers.
So in the inproc session state, the session data is stored in the Process memory of
the Server where the application is running.
In the Outproc session state, the session data is stored in the separate server- may
be state server or in sql server.
17. When the View state is saved, and when is it loaded? How to enable/ disable
View states?
A. View State data is stored in the current page in base64 encoded format. It gets
loaded with the page and displays the values to the controls after the decoded.
Internally it actually saves the check-sum of all the control data where the view
state is enabled.so that when the page gets loaded due to any post back, it again
finds the check-sum and then decodes the Base64 encoded string and gets back the
same data to the controls. We can see the view state base64 encoded string in View
Source of the page. It will be
like _VIEWETATE="DSDSDF8DGDGDFGFD5FDGGDJFF23BNN457M9UJOG"this.
View state won't take the client or server memory to keep the view state data.
18. Difference between GET and POST. Which one is more secure?
A. GET and POST methods are used for the data transfer between the web pages.
GET mainly used for small data which is not secure because in case of GET method,
the data which we are passing will be visible in the url so we can't keep the secure
data which will be visible in the url. There is also limited data which can be passed
in case of GET method (max 255 character).
POST is used for transferring the huge data between the pages where we can keep
the secure data and can transfer it. In case of using the POST method, the data
which is transferring between the pages will not be visible so it is more secure than
the GET method. Also there is no limit for POST method to post the data to the next
page.
POST is more secure.
19. What are Razor engine? How is it different from ASPX Engines?
A. Razor engine is the new execution engine in the ASP.Net MVC 3 which is mainly
used to convert the razor syntax views to HTML page in the MVC applications. It

takes the cshtml pages as the input for the ASP.Net MVC application and then
render to the HTML as the output. The ASPX engine takes the aspx code and then
renders to the HTML.
20. Pros and cons of JavaScript and AJAX.
A. JavaScript is a scripting language and mainly used for client side validation. We
can validate the client side data before sending to the server. So by this we can
improve the performance of the application.
Ajax is Asynchronous JavaScript and XML which is used for the Asynchronous calls
to the server. It uses the JavaScript/JQuery for making the call and use XML for the
Data Transfer. It basically uses the XmlHttpRequest for the asynchronous calls to
the server and communicates with the XML data which is platform independent. So
Ajax can be used with any technology.
21. In how many different ways JavaScript code can be used/called in an
application?
A. JavaScript can be used for Client Side validation, can also be used for calling of
server side methods and functions, can be used for calling the web services, WCF
service, Web API's, Calling the Controller and Action methods in ASP.Net MVC etc.
22. What needs to be done to call a JavaScript function from code behind?
A. If we want to call the JavaScript function from the code behind, we need to
attach the JavaScript to the events in the page_load event as:
protected void btnSave_cliekc9object sender, EventArgs e)
{
btnSave.Attributes.Add("onclick,"JavaScript: retrun Validatedata();");
}

Here ValidateData is the JavaScript function which can be used to validate the page
data and if validation fails, it will return and will not execute the server side
btnSave_click event.
23. Difference between Server Controls and User controls?
A. User controls are used for the re-usability for the controls in the application. By
using the Web User Control template, we create the new user controls and then we
can use the same control in the various pages. User controls can be created by
combining more than one control to extend the functionality of the existing
controls. To use the user controls, first we need to register them in the web page
where we want to use that control. A separate copy is needed in each page where
we want to use the user control. User controls can't be included into the toolbox.
Web Server controls are those controls which can be found in the toolbox and can
be directly drag to the application like other controls textbox, button etc. For the
web server control, only 1 copy of the control is needed irrespective of the number
of web pages. If we want 10 text-boxes to be added in our web page, we need only
1 copy of the textbox in the toolbox and can be dragged 10 times.

24. Difference between Var, object and Dynamic types.


A. var is the keyword introduced with .Net 3.5 and used to store any kind of data
like data-set, data table, int, float, char etc. We can keep any kind of data into the
var variable.
var myVar = new String[] {"hello", "world!!"} ;

Here the myVar is the var type variable which is used to store the string array. Like
this we can store any type of data into the var.
Object is the type which is used to store the objects of any kind. These objects
need to be type cast when used.
Like object myObject = "Hello"
Here the myObject variable of object type is used to keep the string variable. Now
when we want this variable value, we need to typecast it like
string strvar= (string) myobject;

Var is the compile time where the type of the var variable gets defined at the
compilation of the program. Once we define the type during compilation, we cant
make the changes of the type during run time or at the later stages.
Let's say, if we define like
var myVar = new String[] {"hello", "world!!"} ;

so here myVar variable will be of string array. Now after this, I can;t make it like:
var myVar = 10 ;

If we do this, it will throw error.


Dynamic- Its a keyword introduces with the .Net 4.0 and used to keep the data
similar to the var keyword. The type of Dynamic type can be changed even at run
time.
So if we define like:
dynamic myVar = new String[] {"hello", "world!!"} ;

Then the myVar is of type string array. Now if we do like:


dynamic myVar = "Hello" ;

Now the myVar type will be used as string type. So we can change the type in case
of dynamic.
The difference between the var and dynamic is that the dynamic variable uses the
same memory location to store the object and not changes throughout the
application.
25. Difference between Functions and methods.
A. In.Net terminology, both function and method are same. In general, we use
method in server side code of .Net but in scripting language we use function like
JavaScript function.
Here the difference can be function always returns a value whereas method may or
may not. It depends upon the return type of the method.
26. Difference between Abstract classes and Interface. Explain with scenario where
to implement one?
A. Abstract Class: Collection of the Abstract (Incomplete) and Concrete (complete)
members is called as the Abstract class. If there is at least one abstract member in

a class, the class must be declared as abstract class.


When there is the similar behavior, we can use the abstract class.
e.g. We want to calculate the area of few shapes. As this is not generic to the
application. We have few shapes - like Circle, Ellipse, Parabola, Hyperbola, Triangle
etc.
So we can create an abstract class and implement it like below:
public abstract class MyAbstractClass
{
// some other concrete members
public abstract void Area();// abstract method
}

Now in the child class, lets say i have a circle class and want to calculate the area
of the circle:
public class Circle: MyAbstractClass
{
public override void Area()
{
// calculate the area of the circle
}
}

In the similar fashion, we can calculate the area of other shapes.


Interface: Collection of abstract members is called as the Interface. When the
behavior is not similar, we need to use the interface. All the members of the
interface
must be overridden in the child classes.
e.g. Print functionality of the application can have an interface method like:
interface Inf
{
void Print();
}

Now as this is the generic functionality and can be implemented in any of the class
so we have taken it as interface. We can implement this functionality into any page
like:
class MyClass: System.Web.UI.Page, Inf
{
public void Print()
{
// implement details about the Print method
}
// Here we can implement any kind of print-like print to excel, xml, word all depends on the
our decision.
}

27. Different forms of Polymorphism. Differences between Abstraction and


Polymorphism.
A. Polymorphism is to use the same function in many forms. The polymorphism is
of 2 types-

a. Classical polymorphism (Overloading)


b. AdHoc polymorphism (Overriding)
Polymorphism = Poly(many) + Morphism(Forms)
Overloading: When the runtime (CLR) find the behavior of class members at the
compilation of the program, it is called as the Classical polymorphism or
Overloading. In this, the method name is same but prototypes (method
+ parameters) are different and it is implemented in the same class.
e.g.
public class MyClass
{
public int Add(int a, int b)
{
return a+b;
}
public int Add(int a, int b, int c)
{
return a+b+c;
}
}

Overriding: When the runtime (CLR) find the behavior of class members at the
runtime of the program, it is called as the AdHoc polymorphism or Overriding. In
this, the method name as well as the prototype (method + parameters) is same but
they are implemented in the different class. We use virtual keyword in the base
class method to override in the child class using the override keyword.
e.g.
public class MyBaseClass
{
public virtual void Show(string message)
{
Console.WriteLine(Your message is : + message);
}
}
public class MyChildClass: MyBaseClass
{
public override void Show(string message)
{
Console.WriteLine(Your new message is : + message);
}
}

Abstraction is the behavior to get the required functionality. To implement the


abstraction, we use access specifiers where if we declare the members as private, it
means they will be available only to the current class and if we make them as
public, the other classes can also use them. So Abstraction is used to show only the
essential features It is also used to hide the unnecessary data which is not relevant
but present.

Abstract keyword is also used to get the abstraction behavior. We can use Abstract
Class and Interface to implement Abstraction.
28. What are Delegates and Events?
A. A Delegate is an object, which points to another method in the application.
Delegate holds- name of the method, arguments of the method (if any) and the
return type of the method.
See the below points regarding the Delegate:
delegate keyword is sealed type in System. Multicast namespace.

Delegate works like a function pointer in C language.

Delegate holds the address of the function.

Delegate hides the actual information which is written inside the method
definition.

A delegate can hold address of a single function as well as the address of


multiple functions.

There are 2 types of delegate- Single cast delegate (hold single function) and
- Multicast delegate(hold multiple functions).

Addition and subtraction are allowed for the delegates but NOT
multiplication and division. It means, we can add delegates, subtract delegates etc.
e.g. To create a single cast delegate, first we can create a class with a method as:
public class DelegateDemo
{
public void Show(string msg)
{
Console.WriteLine(msg);
}
}

Now we can call the method Show using the delegate as:
public delegate void MyDelegate(string message); //declare delegate

now we need to create the object of the delegate with the address of the method
as:
DelegateDemo obj = new DelegateDemo();//class object
MyDelegate md= new MyDelegate(obj.Show(Hello World!!));
md(); // call the delegate

We can create the events and event handler by using delegate with the below
syntax:
public delegate void textChangedEventHandler(Object sender, TextEventArgs e);
This event handler will be used to handle the textbox textchanged event.
More details about the delegate and events can be found at the below link:
http://msdn.microsoft.com/en-in/library/orm-9780596521066-01-17.aspx

29. Covariance and Contra-variance.


A. covariance and contravariance are the new features added with the .Net 4.0.
They are basically used for the implicit reference conversion for different .Net types
like array, delegate, and generic etc.

You can go to the below link for more details with the examples that how we can
use the covariance and contrvariance to implicate reference conversion:
http://blogs.msdn.com/b/csharpfaq/archive/2010/02/16/covariance-and-contravariancefaq.aspx

30. What are Extension methods?


A. Extension methods are special types of methods which are static methods but
called as the instance methods. The extension methods are added with the .Net
framework 3.5 and with the Visual Studio 2008.
These methods wont affect the existing class and the label. These methods are
used for the extra behavior which the calls can provide. There is no need to build
the class again if we add any extension method to the class.
There are various inbuilt methods added in .Net 3.5 with the introduction of LINQ.
We can see the extension methods like Order By when we use the Linq as:
e.g.
int[] numbers = { 10, 45, 15, 39, 21, 26 };
var orderedNumbers = numbers.OrderBy(a => a);

31. What are Anonymous methods and Lambda Expression?


A. Anonymous methods are those methods which does not have the name. As they
dont have the name, so there is no way to call these methods. These methods are
created by using the delegate as below:
button1.Click += delegate{listBox1.Items.Add(textBox1.Text)};
Lambda Expression: Its an easy way to create anonymous functions. It is also an
anonymous function which has the capability to contain expressions and
statements. We can create the delegate and expression tree types using the lambda
expression.
For more details regarding the anonymous method and lambda expression, we can
go through the below link:
http://www.codeproject.com/Articles/47887/C-Delegates-Anonymous-Methods-andLambda-Expression

32. Multithreading. How to implement Multithreading?


A. Executing more than one processes simultaneously is called as multithreading.
To implement the multithreading concept, we need to use the System. Threading
.dll assembly and the System. Threading namespace.
To write the thread program, we need to create a class with the method. Now we
can create the thread object and then pass the method by using the class object to
the method.
After that we need to create the ThreadStart delegate which will call the actual
method of the class.
You can go through below link for more explanation and other details regarding the
implementation and the code snippet:
http://www.codeproject.com/Articles/1083/Multithreaded-Programming-Using-C

33. Which interface is used to-

a. Convert Boolean values to Visibility values?


b. Compare two integer values?
c. Compare String values?
A. Check the below interfaces which are used in these scenarios:
a. Convert Boolean values to Visibility values?
b. Compare two integer values?- IComparable interface
c. Compare String values? IComparer interface
SQL Server
34. What is the difference between a View and a Cursor?
A. View: It is one of the database object which is also called as virtual table. We can
also say that it is a window through which we can see some part of database. View
is also called as stored query because we are going to fetch data using View.
View does not contain any data. Its just a virtual table which is used to get the
records from the base table for which the view is created. View is faster than ad hoc
queries because when we create the view and execute it once. Next time onwards it
will be available as the compiled format. So whenever the view is called, it will just
execute rather than compiling.
Cursor: Cursor is a database object which is also the buffer area and created as a
result of any sql statement to hold the intermediate values.
Cursor is used to format the rows individually. By using the cursor, we can process
the individual rows. There are 4 types of cursors in Sql Servera. Static Cursor
b. Dynamic Cursor
c. Key set cursor
d. Read-only cursor
35. How to execute multiple update on different conditions in a single query?
A. To execute multiple update using a single Sql update statement is the new
feature available with the SQL Server 2008. In this, we can update multiple rows
using a single update command.
36. Left outer joins and Right Outer joins
A. Joins are used to retrieve data from more than 1 tables using some conditions.
There are 3 types of outer joins in SQL Server databasea. Left Outer Join
b. Right Outer Join
c. Full Join
In order to extract the matched rows from both the tables and unmatched rows
from the first table, left Outer join is used. The syntax for left outer join condition
is:
T1.Col1* = T2.Col1

In order to extract the matched rows from both the tables and unmatched rows
from the second table, right Outer join is used. The syntax for right outer join

condition is:
T1.Col1 = *T2.Col1

In order to extract the matched rows from both the tables and unmatched rows
from the first table and then unmatched row from the second table, full join is used.
The syntax for full join condition is:
T1.Col1* = *T2.Col1

37. Exception handling.


A. Exception Handling is the way to handle the unexpected error at runtime of the
application. From the SQL Server 2005 version, trycatch block is also supported to
catch the exceptions in SQL Server database. There is various other ways to catch
the error like using Global temporary variables @@Error, inbuilt
method RaiseError etc.
38. What is Performance Tuning? How do you implement it.
A. Performance Tuning is the process through which we can optimize the SQL
Server objects like functions, triggers, stored procedure to achieve high response
time to the front end applications. In the performance tuning process we generally
check for the below point and optimize the objects processing:
a. Through Query Execution plan, check for the processing time of the query
execution.
b. Check the join conditions and break all the condition for executions of the queries
individually.
c. Check for the error prone process, conditions in the queries.
d. Check for the loops whether they are terminated if any error occurs.
e. Check for the processes which are taking more time in execution and how to
reduce the response time.
39. Difference between Having and Where clauses.
A. When the 'where' clause is not able to evaluate the condition which consists of
group functions, Having clause is used. Having clause is always followed by the
Group By clause.
'Where' clause is used to filter the records based on the conditions. If there is the
requirement to get the group data in the select statement and where clause is not
able to get it, we can use the Having clause.
e.g. Display DeptNo, No.of Employees in the department for all the departments
where more than 3 employees are working
SELECT DEPTNO, COUNT(*) AS TOTAL_EMPLOYEE
FROM EMP
GROUP BY DEPTNO HAVING COUNT(*) >3

40. Difference between Temp tables and Tables variables?


A. Temp Table in SQL Server:
a. Temp table are the special type of tables which are used to store the
intermediate data of the actual table.

b. Temp tables are only visible to the current sessions of the sql server instance.
When the session end, these table data automatically drops.
c. We cant join the temp tables as they dont allow the foreign key constraints.
d. Temp tables are created in TempDB database.
e. We can use the same temp table name for the different user sessions.
f. Mostly used in stored procedure to handle the intermediate data.
41. What does @ and @@ suffixed by property names specify?
A. @- This is used for the variable declaration
e.g. @name varchar2(50)
@@- This is used for the Global variable declaration
e.g. @@Error=0
42. Self-join queries.
A. Self-Join is a type of join which is used to join the same table by creating the
multiple instances of the same table. So we can join 2 instances of the same table
in case of self-join. This type of join is used when there is the requirement to get
the referenced data which is available in the same table.
e.g. A table contains EmpId, Ename and ManagerId
As the manager is also an employee. Now if we want that who is the manager of
which employee. In this situation, we need to create the instance of the same table
and get the required data as:
SELECT EMPID, ENAME, ENAME AS [MANAGER NAME]
FROM EMP E1, EMP E2
WHERE E1.EMPID= E2.MANAGERID

43. Types of Index.


A. Index is one of the database objects which is used to improve the performance
of the database queries. It reduces the table scan while retrieving the data from the
database and the search gets fastThere are 2 types of indexes used in the SQL server:
a. Clustered index
b. Non clustered index
There are 3 more types of index but those comes under the above twoa. Unique index
b. Composite Index
c. XML Index-added in SQL Server 2005
The index basically works on searching like binary tree where the root value is the
finding value and it will be compared with the partitioned value of the tree.
44. Difference between Primary key, Unique key and Candidate key?
A. Primary Key- It is a key to make the unique identification of the row in a table.
It doesn't allow null values in the primary key column. We can create the lookup
columns based on the primary key. One table allows maximum of 1 primary key
and in 1 table, we can create the primary key column by using 16 columns. Due to

one of the normalization rule, we have to create primary key for the table to make
the rows unique.
Unique Key:- (Primary Key + Not null) is called as unique key. Unique key is also
used to make the rows as unique in a table. The only difference between primary
key and unique key is that primary key does not allow null value while the unique
key allow. The limitation of the null in unique key is that it allows only one Null
value. So only in one row, we can make the key as null for the unique key.
Candidate key- The key other than primary key, to make the rows as unique is
called as candidate key. In candidate key, we take the columns which are not in the
primary key and make the key for uniqueness of the row.
45. What is the default value for Datetime. What are Min and Max values for Date in
2008.
A. The default value of Date is CURRENT_TIMESTAMP
Below are the new date and time values in Sql Server 2008:
In SQL Server 2008:
1. DateTime2
Min Value: 0001-01-01 00:00:00.0000000
Max Value: 9999-12-31 23:59:59.9999999
2. Date
Min Value: 0001-01-01
Max Value: 9999-12-31
You can go through the below link for couple of work around:
http://dhaneenja.blogspot.in/2008/06/minimum-year-value-in-sql-server.html

WCF
46. What is WCF also known as?
A. WCF (Windows Communication Foundation) is also know as Indigo by its code
name.
47. Difference between WCF and Web Services?
A. Below are the main differences between the WCF and Web Service:
Web Service:
a. Can be hosted in IIS only
b. Only two types of operations affects- One-Way, Request-Response
c. To serialize the data use System.Xml.Serialization
d. To encode the data use- XML 1.0, MTOM, DIME, Custom
e. Web Service can be accessed through HTTP channel.
WCF service:
a. Can be hosted in IIS, Self Hosting, WAS, Windows Services etc
b. Three types of operations affects- One-Way, Request-Response and Duplex
c. To serialize the data use System.Runtimel.Serialization
d. To encode the data use- XML 1.0, MTOM,Binary, Custom

e. WCF Service can be accessed through HTTP, TCP, Named pipes, MSMQ,P2P etc.
48. What are Endpoints?
A. The collection of Address, Binding and Contract is called as End Point. In Sort,
EndPoint = A+B+C
Address (Where)- It means where the service is hosted. URL of the service shows
the address.
Binding (How)- How to connect to the service, is defined by the Binding. It basically
has the definition of the communication channel to communicate to the WCF service
Contract (what)- It means what the service contains for the client. What all the
methods are implemented in the WCF service is implemented in the Contract.
49. What are Behavior and Bindings?
A. Binding mainly describes about the communication of the client and service. For
this, there are protocols corresponding to the binding behavior which will take care
of the communication channel. There are different protocols which we use for the
different types of bindings. E.g. HTTP, TCP, MSMQ, Named Pipes etc.
Behavior is used for the common configurations that could be for endpoints. When
we use the common behavior, they affect to all the end points. Adding the service
behavior affect the service related stuff while the endpoint related behavior affects
the end points. Also operations level behavior affects the operations.
50. What are different types of Contracts supported?
A. There are mainly 5 type of contracts used in WCF service:
a. Service Contract
b. Operation Contract
c. Data Contract
d. Message Contract
e. Fault Contract
51. What is the difference between Transport and Message Security mode?
A. WCF supports 2 types of security- Transport Level Security and Message Level
Security
Transport Level Security- In this type of security, we make the transport channel as
secure so that the data flows in that channel will be automatically secured. For
HTTP channel, we use the client certificate for the security of the web address. SSL
is used for the HTTP channel security. As we dont need to secure each of the
messages which are floating between the client and the service, the speed is faster
as direct message is going to the client from the service.
Message level security- This type of security in WCF is used where we don't have
the fixed transport medium and we need to secure each message which is floating
between the server and the client. In this type of security we use certain algorithms
for making the message as secure message. We use some extra bits and send with
the message. We also use some encryption techniques like SHA1 or MD5 which
make the proper security for our message. As each message needs to be secured,

this type of security makes some delay in the process of sending and receiving the
messages.
52. How to configure WCF security to support Windows authentication?
A. To support the WCF security in Windows Authentication, we need to add the
ClientCredetialType attribute to Windows under the security tab element:
transport clientCredentialType="Windows"
53. How to use Fault Contract?
A. Fault Contract is mainly used for viewing and displaying the errors which
occurred in the service. So it basically documents the error and the error message
can be shown to the user in the understandable way. We cant use here the
try.catch block for the error handling because the trycatch is the technology
specific (.Net Technology). If we use the try...catch block for handling the errors,
the error will not be reached to the client who is consuming the
service. Because this error will not be included in the message. So we use the Fault
contract for the error handling.
e.g. To use the Fault contract, we can simply write like the below:
public int Add(int number1,int number2)
{
// write some implementation
throw new FaultException (Error while adding data..);
}

Here the fault Exception method is the inbuilt method which will throw the
exception and display the message . We can use the custom class so that the
message can be customized and the customized message can be sent to the client.
So we can create a clss like:
public Class CustomException
{
public int ID {get;set;}
public string Message {get;set;}
public string Type{get;set;}
}

Now this custom type we can use with the Operation Contract as:
[ServiceContract]
public interface IMyInterface
{
[OperationContract]
[FaultContract(typeOf(CustomException))]
int Add(int num1,int num2);
}

Now while implementation of the Add method, we can assign the class properties.
WPF
54. Diff between XML and XAML.
A. XAML is the declarative XML based language which is used to define the objects

and properties. XAML document is loaded by XAML parser. So XAML Parser initiates
the objects and set those properties. XAML is mainly used in creating the objects in
WPF and Silverlight applications.
For more detailed explanation, you can go through the below link:
http://www.differencebetween.net/technology/software-technology/differencebetween-xml-and-xaml/
55. Stack Panel and Wrap Panel.
A. StackPanel is one of layout control in WPF. We can place the child controls inside
the stackpanel either horizontally or vertically. So it provides two types of
orientations- Horizontal Orientation and Vertical orientation.
You can go through the below link for more detailed explanation and the code
snippet:
http://wpftutorial.net/StackPanel.html

Wrap panel is another layout control which is similar to the StackPanel. Wrap panel
not only keep the control in horizontal and vertical orientation but also wrap
them into new line if there is no space. Here also the orientation can be set as
Horizontal or Vertical. Its main use is to arrange the tabs in the tab control, menu
control or in toolbar items.
You can go through the below link for more details:
http://wpftutorial.net/WrapPanel.html

56. Hierarchical Data Template.


A. Hierarchical Data Template is a type of data template which is used to bind the
controls which supports HeaderedItemsControl, like
TreeViewItem or MenuItem
We can bind those controls items using the Hierarchical Data Template. It displayed
the data into Hierarchical structure in the tree structure. It could be in the left to
right or top to bottom.
You can go through the below link for more details:
http://msdn.microsoft.com/en-us/library/system.windows.hierarchicaldatatemplate.aspx

57. Virtualization.
A. This is the feature in WPF which increases the efficiency of the programs when
there are the large data objects. If the WPF ItemsControl is bound with the large
collection data source object and we enabled the virtualization, then the controls
will show only the data which is in the visual container for those items which are
visible currently. This visual data is only the small part of the large data object. Now
when the user will scroll down or up, the rest of the data will be visible and previous
data will be hidden again. So this is increase the efficiency of the program from the
UI prospective.
58. Events and Routed Events.
A. Routed event is special type of event which can invoke and handle multiple

events from different objects rather than the event which is coming from one
object. So it generally handles the object from the element tree. So whatever the
elements inside the element tree and if they generate the event-may be multiple
events, the routed event is capable of handling those events.
The routed event can be invoked in both the directions but in general it comes from
the source element and then bubbled up in the element tree until the root element.
59. Bubbling and Tunneling.
A. Bubbling: When the events are raised form the innermost element in the visual
tree and comes up towards the root element, is called as bubbling.
Tunneling: It is the opposite process of Bubbling where the events fired by the root
element goes down towards the last child element control.
Please go through the below link for more details:
http://www.dotnetspider.com/forum/130497-event-bubbling-event-tunneling.aspx

60. Resource Dictionary, Static Resources and Dynamic Resources.


A. Static and Dynamic resources are used for binding the resources to the control
objects.
The main difference between StaticResource and DynamicResource is that how the
resource is retrieved elements. If the resource is StaticResource, it will be retrieved
only once by the element who is referencing it and it will be used for all the
resources. While the DynamicResource gets its value each time they reference to
the objects. So StaticResource is faster than the DynamicResource , because
StaticResource needs to get the value only once while the DynamicResource needs
each time.
61. What is Prism?
A. Prism is the framework or the set of guidelines which is used to develop the WPF
desktop application as well as the Silverlight Rich Internet applications. So its a
kind of Design pattern to Develop the XMAL based application. It also used to
develop the Windows 7 applications. Prism mainly helps to design the loosely
coupled components which can be easily integrated with the other components of
the overall application. Prism mainly used to build the composite applications which
need various other components to be integrated.
Prism mainly guides of creating the applications using the Model-View-ViewModel
(MVVM) model, Managed Extensibility Framework (MEF), and navigation in the
application.
To use the Prism framework, we need to use their library called as Prism Library. So
prism Library is the inbuilt set of components which can be used in developing the
WPF and Silverlight applications.
You can go through the below link for more details and the use of the components
of the Prism framework:
http://msdn.microsoft.com/en-us/library/ff648465.aspx

62. Dependency Injection, Event Aggregator.

A. For the details about the dependency injection, you can follow the below link:
http://wpftutorial.net/ReferenceArchitecture.html

EventAggregator : It is the utility service which contains the events and allows the
decouple the publisher and subscriber so that they can be buildup independently.
Decouple is primarily useful when a new module needs to be added or removed or
modified. The new module can be added as per the event fired and defined in the
shell.
For more details about the Event Aggregator, you can follow the below link:
http://msdn.microsoft.com/en-us/library/ff921122(v=pandp.20).aspx

63. Shell, Bootstrapper and Region Managers


A. Bootstrapper:- An utility in WPF engine which is mainly responsible for the
initialization of the application by using the composite application library. By using
the bootstrapper we can find out how the components of the application are wired
up in the composite application library. The bootstrapper responsibility to create the
Shell or main window. Composite application library has the default abstract class
UnityBootstrapper which actually handles the initialization.
You can go through the below link for more details about the bootstrapper:

http://msdn.microsoft.com/en-us/library/ff921139(v=pandp.20).aspx
Region and Region Managers: This is concept of Prism framework. We define the
region through XAML code and once a region is defined, automatically it will be
registered with the RegionManager. Actually the Bootstrapper registers a service
called the RegionManager at run time. RegionManager is a dictionary where the key
is name of the region. The value of the key is the reference of the IRegion interface.
RegionAdapter is used to create the instance reference of the IRegion interface.
You can go through the below link for more details about the Region and Region
Manager:
http://msdn.microsoft.com/en-us/magazine/cc785479.aspx#id0090091

64. What are MEF and Unity?


A. The MEF (Managed Extensibility Framework) is the new concept in .Net 4.0. It is
used to create the lightweight and extensible applications to create Managed
Extensibility Framework. It is not only allows the extension but also reused within
the application. Extension can be easily encapsulating the code using the MEF.
For more details, you can go through the below link:

http://msdn.microsoft.com/en-us/library/dd460648.aspx
65. How to navigate to another page?
A. There is a class NavigationService which can be used for navigation of the WPF
window:
this.NavigationService.GoForward();
//or
this.NavigationService.Navigate("MysecondPage.xaml")

Most Interesting Questions in C#, ASP.Net and SQL Server, WCF, ASP.Net MVC

Hello Guys,
In this article, we will see the most interesting questions in Microsoft Technologies like in
C#, ASP.Net, Sql Server, WCF services, ASP.Net MVC.
Q 1. I have logged in to the ASP.Net website using my credential for the login page. Now I
want that when my session is expired, it should logout the application and show the login
page. With that It should also logged out from the Windows and I should use the Windows
credentials again to reach to my application again. How do you think it can be done?
Ans. This question is related to the Sessions in ASP.Net where the session time out is
configured for the current user. And when the session gets expired, we need to set so that it
should automatically come back to login page and user need to enter the credentials again.

Session time can be set as:


Q 2. In .Net Framework, Garbage collector is used for the Automatic Memory
Management(to free-up the memory which is no longer used by the resources). There are
2 types of memory- the memory which is created using value types(Stack memory) and the
Memory created using Reference Types(Heap Memory). Which of these memory will be
disposed by the Garbage Collector?
Ans. Garbage Collector is used to free-up the memory of unreferenced objects, the objects
which are no longer used by the resources.
Garbage collector only disposes the memory created by using the Reference Types means
the objects which are in Heap Memory. The objects which are created using the Value Types
will get cleared when they are out of Stack. Stack is the type where the value types gets
push when they are created and get popped when they are used. So when the variable is
used by the program and gets out of the scope, it will get popped up from the stack.
The Garbage collector will no take care of the stack objects.
Q 3. Abstraction is used to display only essential and necessary features of the Object to the
outside world and hiding the unnecessary details. Abstract Classes and Interfaces can be
used to achieve abstraction.
Can I create the Constructor for an Abstract Class?
Can I write Static methods inside Abstract class??
Can I inherit an Abstract class to Another Abstract class? If so, then if we can have an
abstract method in the abstract base class the how the child abstract class will behave for
the overriding of this method? Can I override the base class abstract method to the abstract
child class? If so then do you think, Abstract class support override methods as we are
now trying to implement the overriding in the child class which is abstract.
Ans. Abstraction is the way to expose the objects to the outside world as per our
requirements. For example, using the public and private members of the class. If we don't
want to expose the variable or method which is inside the class,m make them private.
Abstraction is the compile time where the compiler gets behaviour of the members during
the compilation of the program.
Abstract classes and interfaces are also the ways to achieve abstraction as when we define
the Abstract members inside the abstract class or in Interface, we are exposing these
members to outside world to use them by their implementation.
Yes, Constructor can be created for the abstract classes. The abstract class works based on

the child class memory so when the object of the child class get created, it will call first the
abstract class constructor and then then it will call the child class constructor.
Yes, We can write the Static members(Methods and Properties) inside the abstract class
where
the static members can be called based on the class name. ClassName.MethodName(),
ClassName.PropertyName etc.
Yes, Inheritance between the abstract classes is possible where we have both base class and
inherited class both are abstract classes. So if we have an abstract method in the abstract
base class and then we are inheriting this base class to the abstract child class,
the abstract method can be overridden in the child abstract class but it is not mandatory to
implement it there. We can also implement the abstract base class method to the last child
class. So we can write the virtual, abstract as well as override methods inside the abstract
class.
Q.4 Can we write properties inside interfaces? If so then what is the syntax to write
a property in the Interface if the name of the property is ID and return type is integer?
Ans. Yes, We can define the public properties inside the Interface but as in interface all the
members are public so we don't need to define the property as public.
Syntax: int ID {get; set;}
Q. 5 By default all the members of the Interface are public abstract. Can we
write explicitly the 'Public' for the method? Do you think now my program will compile or will
give a warning message? If it will give the warning message, then what the text for the
warning message. If it will give the compilation error then what error you will get?
Ans. No, We can't write the explicitely 'Public' access specifier inside the interface. If we
write the 'public' access specifier inside the interface, it will throw error during the
compilation of the program that 'no access specifier are allowed inside the interface'.

ASP.Net MVC related questions


Hey Friends,
Now a days we can see lot of companies asking about the ASP.net MVC related questions in
their interviews. So i thought of to keep few questions which are related to the ASP.Net MVC
and they will be helpful for all of them who are going for the interviews or preparing for the
ASP.Net MVC.
Here I kept many questions which are related to all the versions of ASP.Net MVC to keep in
mind that interviewer can ask the questions from various aspects.
1.

What is MVC?

Ans. MVC (Model View Controller) is one of the Software Architectural pattern which is built
on 3 layers. So it is the pattern which basically talks about the separation of concern for a
project. Here the 3 parts are having their own roles like:
a. Model - It is used as the Data Container or it can also have the business rules, functions,
logic's etc.
b. View - It is mainly the UI (User Interface) part which is the main application built using
the Web technologies like ASP.Net etc. It consists of the User Interface
Design, representation of the information for the end users etc.

c. Controller - It is the mediator between the View and Model and used to control the
requests and responses floating through the views and Model. The command, Actions,
Events are the part of Controller in MVC. All the communication is done via Controller so we
can say that Controller is the heart of MVC.

2.

What is ASP.Net MVC?

Ans. ASP.Net MVC is the Microsoft product based on the core MVC pattern. The Microsoft has
taken the core concept of MVC and Designed the ASP.Net MVC structure for the Visual
Studio which helps the developers to get the automated structure and on it, they can built
the applications.
ASP.Net MVC provides the structure with the separation of concerns where each part
of ASP.Net MVC application is separate and has no link among them. Apart from the
separation of concerns, the Microsoft has provided the way to communicate between the
separate components by using the other additional logic and libraries. These libraries
supports in the connection, communication between the components, databases and other
external components as well with small effort.

3.

How ASP.Net MVC is different than MVC?

Ans. ASP.Net MVC is the inherited form of Core MVC where Microsoft has designed their MVC
patterns based on the original core MVC concept. The Microsoft also provided the new MVC
structure (ASP.Net MVC) which has the inbuilt capabilities of communication with
their components, connection with the database etc. The ASP.Net MVC has the good support
for creating mobile application. We can create the Mobile applications in ASP.Net MVC using
the predefined template.

4.

What are the new features of ASP.Net MVC 2?

Ans. There are few major changes happened in the version MVC2. The Microsoft has more
concentrated on the HTML Helpers, Validations support, Async controllers etc.Below are the
few point which distinguishes the ASP.Net MVC 2 different than the previous versions:
a. New HTML Helpers with Strongly Typed
b. Model based validations- This is very useful feature where the validation is done in the
Model and will be used throughout the application.
c. Automatic scaffolding feature also got introduces with this version.
d. Asynchronous controller support which enables the multiple tasks to run simultaneously.
e. Html.RenderAction introduced to render the section/part of the page.

5. Explain MVC Architecture?


Ans. MVC architecture comes with 3 major components-Model, View and Controller.

The main objective of the MVC design pattern is to separate the logic with the UI. So the
separation of Concerns is one of the biggest advantage of the MVC design pattern where the
UI is separate with business logic.
The user sends the request and the request is taken by the Controller which is heart of the
MVC model and takes care of all the actions and events happens in the View. The controller
checks whether the request required the Model intervention and if so then call the model to
serve the database operations and get the result back. Based on the Model data, the View
will be populated. So the Model and View are nothing but the mapping of each other. View is
always gets populated based on the Model and not rendered.

6.

What are the new features of ASP.Net MVC 3?

Ans. a. Scaffolding option for the speedup process


b. Razor engine with the new razor syntax for good readability of the View code.
c. HTML 5 support
d. Model based validations
e. Model Binders to bind the model with View
f. Action filters
g. Nuget enabled
h. Output caching for partial page

7.

What are the new features of ASP.Net MVC 4?

Ans. a. Mobile support by adding a new Mobile Project template


b. ASP.net Web API added for the HTTP requests
c. Task class support with Async methods
d. Bundling and Magnification
e. Login with the social networking websites
f. Support of Windows Azure SDK
g. Display modes for the webpage and mobile layout page

8.

What are the new features of ASP.Net MVC 5?

Ans. a. One ASP.Net for all type of Web templates


b. Bootstrap enabled for the ASP.net MVC 5
c. New Authentication Filter for Controller/Controllers
d. Attribute Routing
e. New Scaffolding option
f. Filter overrides feature

9.

Explain ASP.Net MVC application life cycle?

Ans. The application life cycle of ASP.net MVC includes the request, processing, filtering and
execution and then finally the response back to the requester. The request first goes to URL
routing module(HTTP Module) and there it gets decided that whether this is MVC request
and will be handled or not. Now if the request is for MVC application, the URL routing
module selects the first route which is satisfying the requested URL. As soon as the first
match found for the requested URL, the process for the execution begins with the Controller
and Model(if any) and the response sends back to the browser.

10. Advantages of MVC Framework?


Ans. Below are the advantages of MVC framework:
a. Separation of Concerns
b. Light weight
c. No round trip for the layers
d. Decoupling between the layers
e. No dependencies between the Model, View and Controller

11. What do you mean by Separation of Concerns?


Ans. Separation of concerns means all the three components (Model, View and Controller)
are not dependent to each other. We can have a single controller which can server the
request and can use any number of Views to populate.

12. Where do we see Separation of Concerns in MVC?


Ans. We can see the separation of concern when we add/remove a View, it will not impact
on rest of the application because its all depends on when you call, then only it will be used.
if there is no call for the View, the application can just keep the view or model with no
dependencies.

13. What is Razor View Engine in ASP.Net MVC 3?


Ans. Razor View engine is the new engine which the Microsoft has introduces with the
ASP.Net MVC 3. So from ASP.net MVC 3 onward, we can see the ASP.net MVC application will
support ASPX as well as Razor view engine. So when we use .aspx to develop our Views, it
will use the ASPX engine to execute and when we use the Razor Views(.cshtml or .vbhtml),
then it will use the Razor view engine to execute them.

14. Explain the advantages of using routing in ASP.NET MVC?


Ans. There are many advantages of using routing mechanism in ASP.Net MVC like:
a. To keep the URL clean- as in MVC, the default format for the URL is
"http://www.myweb.com/Customer/GetCustomer/10". This URL shows that GetCustomer
will give the customer details for the id as 10.
b. Discovering the URL by End User- The end user can easily discover the URL details like in
above URL, the end user can discover that this URL will give the Customer details for the
customer id 10.
c. Avoiding the database id's in URL- with this, we can avoid the id's which are defined in the
database.
15. What are the things that are required to specify a route ? Which is a better fit, Razor or
ASPX?
Ans. RouteConfig.cs is the class used to define the routes. This file is placed under the
App_Start folder. The file RouteConfig.cs contains one default route, however the
programmer can define other routes as per their requirements.

To Specify a route, we need Name and URL of the route. The default URL contains the
Controller Name, Action name and the id(if required). By this route, the actual URL gets
mapped and if it maps correctly, the view will get displayed, else it shows the 404 error (file
not found).
16. How can you do authentication and authorization in ASP.Net MVC?
Ans. Windows and Form Authentication are available for the Authentication & Autherization
in ASP.Net MVC.
17. How to implement Windows authentication for ASP.Net MVC?
Ans. To Implement the Windows Authentication, it is similar to other application where we
can define the authentication mechanism in the config file. In the same way, we can
implement the Windows Authentication & Authorization using the below snippet:

Now, we can retrict the particualr use to access the controller as below:

We can also restrict the action methods by using the same attribute.
18. How do you implement Forms authentication in ASP.Net MVC? Mention some of the
return types of a controller action method.

Ans. The Form Authentication implementation is similar to the ASP.Net form authentication
where we need to check the user credentials in each forms to validate the user and then
provie the access.
For this, we need to first define the Form Authentication Mode in Web.Config file as:

Now once we define the Form Authentication, we can check the user and set the cookies as:

We also need to include the "using System.Web.Security;" as namespace to get the


FormAuthentication class.
The above code is checking the user credentials and then setting it in AuthCookie. Now
onwards wherver we want to check for the Form Authentication, we just need to add the
[Autherize] attrivute to the action methods as:

19. Is ASP.Net MVC suitable for both Windows and web applications?
Ans. No, ASP.Net MVC is primarility made for the Web Applications development. For the
Windows Application, MVC is most suitable.
20. What are the benefits of using ASP.Net MVC?
Ans. The major benefits using ASP.Net MVC are:
a. Separation of concern- separate code behind file
b. Automated testing - testing of the logic with no UI

21. Is MVC different from a three layered architecture?


Ans. Yes, MVC is different than the 3 layered architecture in terms of UI layer(no code
behind or separate code behind in MVC), the communication between layers,
routing mechanisms etc.
In 3 Layered architecture:
UI <------> Business logic Layer <-------> Data Access Layer
In MVC:
Controller -----> Model
|
|
UI(View) <------22. What is the latest version of ASP.Net MVC?
Ans. The current verion of ASP.Net MVC is 6. This verison od ASP.Net MVC is also called as
ASP VNext which is the common framework to develop MVC, Web Pages, Web API, SignalR
applications. Also it can be self hosted and not depends on IIS for hosting.
23. What is the difference between each version of ASP.Net MVC?
Ans. Below are the features in each of the verison in ASP.Net MVC:
ASP.Net MVC 2
a. Async Controller
b. DefaultValueAttribute in Action Method
c. Area concept
d. Bind binary data with the Model binder
e. Model based validations
f. DataAnnotations support
g. Html.ValidationSummary helper method
ASP.Net MVC 3
a. Razor syntax and Razor engine
b. Support for HTML5
c. Automatic templates available for the Create, List, Edit, View via Scaffolding
ASP.Net MVC 4
a. Web API introduction under ASP.Net MVC
b. Mobile project templates
c. Bundling & Minification
d. Task support for Aynchonous controller
e. Azure SDK
f. Enable login using 3rd party sites like Facebook, Google, Twitter etc by OAuth & OpenId
ASP.Net MVC 5
a. Attribute based routing
b. One ASP.Net
c. Bootstrap in MVC Templates auto-enabled
d. Authentication Filters
e. Filter Overrides
ASP.Net MVC 6
a. Merging of ASP.Net MVC and Web API

b. Inbuilt DI(Dependency Injection)


c. JSON based project structure(Added JSON)
d. Nuget package based
e. Autobuild by save using Roslyn compiler.
f. Open Source(Runs on Mono, Linux & Mac)
24. What are HTML helpers in MVC?
Ans. To render HTML controls in View, HTML Helpers are used.
e.g. Html.TextBox("Address")
25. What is the difference between "HTML.TextBox" vs "HTML.TextBoxFor" in ASP.Net MVC?
Ans. Both the "HTML.TextBox" and "HTML.TextBoxFor" will produce the same output but
the "HTML.TextBoxFor" is strongly typed while "HTML.TextBox" is weakly typed.
e.g. Html.TextBox("Address") // weakly type
it will give the same output as
e.g. Html.TextBoxFor(x => x.Address) // strongly type

26. What is routing in MVC?


Ans. Routing in MVC is used to define the URL structure. It also map the URL to the
controller and Action method. Fore more details, go to the Q.15
27. Where is the route mapping code written?
Ans. RouteConfig.cs is the file where the route is configured. Fore more details, go to the
Q.15
28. Can we map multiple URLs to the same action?
Ans.Yes, we can map the multiple URL's to the same action method.
29. How can we navigate from one view to other view using a hyperlink?
Ans. Simply, We can use the ActionLink method and [provide the controller and action
method as the parameters. e.g.
Html.ActionLink("Home","Index")

30. How can we restrict MVC actions to be invoked only by GET or POST?
Ans. We can restrict the actions to be called by GET or POST by decorating the action
method by HttpGet or HttpPost as below:

31. How can we maintain sessions in MVC?


Ans. There are various ways to maintain Sessions likea. Use Session variables
b. Use Hidden Fields and Html Controls
c. ViewBag - uses Dynamic keyword internally. No need to do casting.
d. ViewData - used to pass data from Controller to View. Casting is required.
e. TempData - between controller to controller or Action to action. It uses Session internally.
32. What is the difference between tempdata, viewdata, and viewbag?
Ans. TempData maintains the data for complete request while ViewData can be used from
controller to View.See Q.31
33. What are partial views in ASP.Net MVC?
Ans. Partial View is like User Controls in ASP.Net so they can be used in other views. We can
embed as many Partial Views in Main View.
34. How do you create a partial view and consume it in ASP.Net MVC 4?
Ans. While creating a new view, we can see the option is given to make this view as partial.
We need to check the checkbox "Create a Partial View". Once we design and do all the stuff
related to filling the data in to the partial view, we can call it using the
Html.RenderPartial("MyPartialView") into our main view.
35. How can we do validations in ASP.Net MVC?
Ans. In ASP.Net MVC, there is no need to do validation in the page(view). We can do the
Model based validation which will be done in the Model using the Data Annotations.
To use the Data Annotation, we need to include
using System.ComponentModel.DataAnnotations; namespace in to our model.

36. Can we display all errors in one go? or Validation summery in ASP.Net MVC.
Ans. Html helper class contains a method with the name sas ValidationSummary which can
be used to show all the errors in one go.
e.g. Html.ValidationSummary()
37. How can we enable data annotation validation on the client side?
Ans. To enable the Data Annotations at the client side, first we need to include the JQuery
validation file and then call the Html.EnableClientValidation() method.
38. What is Razor in MVC?
Ans. Razor is the new engine to parse the MVC code. From ASP.Net MVC 3, Microsoft has
introduces this engine. So in ASP.Net MVC 3, there are 2 View Engines- Razor and ASPX
39. Why Razor when we already have ASPX?
Ans. The Razor view Engine is lightweight as compare to the ASPX view engine. Razor
engine has quite readable and simple syntaxes.
40. How to implement AJAX in MVC
Ans. There are 2 ways to implement AJAX in MVC:
a. By using JQuery
b. By using Ajax Libraries
41. What kind of events can be tracked in AJAX?
Ans.
42. What is the difference between ActionResult and ViewResult?
Ans.
43. What are the different types of results in MVC?
Ans.
44. What are ActionFilters in MVC?
Ans.
45. Can we create our own custom view engine using MVC?
Ans.
46. How to send result back in JSON format in MVC
Ans.
47. What is WebAPI?
Ans.
48. But WCF SOAP also does the same thing, so how does WebAPI differ? With WCF you can
implement REST, so why WebAPI?
Ans.
49. How can we detect that a MVC controller is called by POST or GET?
Ans.
50. What is Bundling and Minification in MVC?
Ans.

51. How does bundling increase performance?


Ans.
52. How do we implement bundling in MVC?
Ans.
53. How can you test bundling in debug mode?
Ans.
54. Explain minification and how to implement it. How do we implement Minification?
Ans.
55. Explain Areas in MVC?
Ans.
56. Explain the concept of View Model in MVC?
Ans.
57. What kind of logic view model class will have?
Ans.
58. How can we use two(multiple) models in a single view?
Ans.

Most Confusing Questions in C# and OOPS


Hi Friends,

This post is regarding the Most Confusing Questions in .Net, C#.Net, ASP.Net and Sql
Server. As I have seen that lot of people whether they are searching for jobs, already in the
job or they try to understand the things, gets lot of confusions and there are very rare sites
where they explain the things in more detailed and example way.
So I thought to write such post which will be helpful for all of us to try to understand the
things in better manner and it will be helpful whether we are in search of job or in actual
implementation in our projects:

1. Abstract classes provide a simple and easy way to version your components. By updating
the base class, all inheriting classes are automatically updated with the change. How?
Ans. Abstract class is the collection of abstract and concrete members. I am not calling here
method or function but members because members can be methods or properties or
indexers etc.
A concrete member means non-abstract or general members.
Versioning of a class means adding or removing the members from the class.
So as per question statement, in abstract class we can add or remove the members and it
will not impact your classes which are inherited by the abstract class. The only thing is if the
class doesn't contain non-abstract members. As the abstract class can contain both abstract
and concrete members so it hardly matters to add or remove any non-abstract members.
So we can make another version of the class by adding or removing members in the class.
So if we update the base class or the abstract class by adding or removing any non-abstract

member, the child class will have no impact, it will be automatically inheriting the new
members.
public abstract class MyClass
{
public abstract void Show();
public int Add(int a, int b)
{
return a+b;
}
}
This is the abstract class and we can inherit it to the child classes.
Lets say:
class ChildClass:MyClass
{
public override void Show()
{
// some implementation
}
}
Now we can create another version of abstract class by adding an extra method;
public abstract class MyClass
{
public abstract void Show();
public int Add(int a, int b)
{
return a+b;
}
public int Sub(int a, int b)
{
return a-b;
}
}
Now it hardly matters for the child class to modify anything.
2. If a new version of an interface is required, you must create a whole new interface.
Ans. For interface which is the collection of abstract members is less flexible. Because when
we need to create another version of interface, means adding or removing a member which
is abstract so we need to change all the child class either remove or adding override
members.
Let's see with the example:
interface MyInf
{
void Show();

void Print();
}
Now use this interface in our class:
class ChildClass: MyInf
{
public void Show()
{
// some implementation
}
public void Print()
{
// some implementation
}
}
Now if we add another member in the interface, we need to implement it to all our child
classes so it is preferable to create another interface and inherit that as below:
interface MyInf2
{
void Display();
}
Use this in the class:
class ChildClass: MyInf,MyInf2
{
public void Show()
{
// some implementation
}
public void Print()
{
// some implementation
}
public void Display()
{
// some implementation
}
}

3. What are the advantages of properties (get, set)? When we go for properties? What is the
difference with using properties and without using properties?
Ans: Properties are the way to carry the data from one class to another class, from one
application to another application etc.
When we want to send the data from one class to another class or event one application to
another application, we can set the value and get its value to another place.

We can do our tasks without using the properties and in that case we need to send our data
as the parameters and get it to another class as below:
class A
{
public int IsValid(int val1, int val2, string val3, string val4)
{
B objB = new B();
int result= objB.Validate(val1,val2,val3,val4);
}
}
Now in the class B, we will have the Validate method and will do the validation based on the
input values:
class B
{
public int Validate(int val1, int val2, string val3, string val4)
{
// some processing
}
return true;
}
here we can see that we have not used the properties for sending the data from class A to
class B. And it will work fine.

Now we will try the same task using the properties. We will create a class which will contain
all the properties as below:
public class MyProperties
{
public int Val1{get;set;}
public int Val2{get;set;}
public string Val3{get;set;}
public string Val4{get;set;}
}

Now we will try to set these value and pass this whole object to another class:
class A
{
public int IsValid(int val1, int val2, string val3, string val4)
{
var objMyProperties= new MyProperties()
{
Val1 = val1,
Val2 = val2,
Val3 = val3,
Val4 = val4,
};
B objB = new B();
int result= objB.Validate(objMyProperties);
}
}
And your B class will be:
class B
{
public int Validate(MyProperties objProperties)
{
var value1 = objProperties.Val1;
var value2 = objProperties.Val2;
var value3 = objProperties.Val3;
var value4 = objProperties.Val4;
// some processing
}
return true;
}

Here we can see that if we are adding additional properties or removing the existing
properties, our call will not affect in class A and then method signature will also be same in
class B.

But in the first case, if we remove one parameter or add additional parameter, we need to
make the changes in the Class A calling method as well as the method signature in the
Class B also.

4. Can we write goto statement in Finally block.


Ans: No. We cant write the goto statement in finally block. We can write the goto statement
in try or in catch block because finally block must execute all the statements inside whether
the exception raised or not. So the control can't move to outside from finally block.

If we try to do, it will show the compile time error saying "Control cannot leave the body of
finally clause".

5. Two class nested ,can we call upper class in inner class?


Ans: Yes, we can class the upper class inside the inner class.

6. Can get and set method have another access modifier ?


Ans: Yes. We can have protected or private with the access modifiers in getter and setter.

7. Can class declare protected?


Ans: No. The class can NOT be declared as private, protected or protected internal. Not only
the class, any elements inside the namespace can't be declared as private, protected or
protected internal. We can declare the class either internal or public.
If we create a class with the private or protected modifier, it will show the compile time
error:

8. Can abstract class have constructor?


Ans: Yes, abstract class can also have constructor where we can initialize the members.

9. Can a instance class have static constructor?


Ans: Yes, the instance class can have static constructor.

17 September 2014

Creating application using ASP.Net MVC 5 with Visual Studio


2013 (Code First Approach)
Hi Friends,

This article is related to ASP.Net MVC. Here we will see what all the new features available in
terms of ASP.Net MVC 5 under the Visual Studio 2013 IDE. I have tried to explain the
default template structure which gets created when we start a new project of ASP.Net MVC
5 in Visual Studio 2013.
In this article, I also tried to create a new small application by making use of existing
template and the application will have the functionality of CRUD operations for each of the
menu items.
In this article, i am using the Code First Approach to create the application so it will be
helpful for those who wants to know about the Code First Approach and creating the
database automatically by using the Model classes. We will see each of these things step by
step from the installation of Visual Studio 2013 express edition free and then we will go on
to create the new application. I also explained the new feature of Visual Studio 2013 in
terms of ASP.Net MVC so it will be helpful for all of those guys who are looking out for the
same.

Below is the link where you can see the step by step approach of creating the new
application in ASP.Net MVC 5 with Visual Studio 2013.
http://www.dotnetspider.com/resources/45899-Creating-application-using-ASPNet-MVC-5with-Visual-Studio-2013.aspx

Hope this article will be helpful to understand.

Windows Application using 3-tier architecture


Hi Friends,

Do you have fear of thinking the layered architecture?? How to create it? What kind of
project we need to include for creating layers?? How the layer communicates to each
other??
How we can create the architecture by our own. Is this the job of architect? What all the
things we should be consider while creating the layered applications. How the layers will talk
to each other etc.
All of these questions come to our mind when we think about the layers architecture. So
Today I am going to show all of these things in my article.
You will see the practical implementation of all including the coding with the standards so
that you can adapt the similar things when writing the actual code in the projects.
below is the link where you can find the detailed description with the snapshots for all the
steps of create in the windows application using 3 -tier architecture:
http://www.dotnetspider.com/resources/45768-Windows-Application-using-3-tierarchitecture.aspx

Hope it will be helpful to you.

2+ yrs .Net Interview Questions and Answers for Quick Reference


Hai Friends,
In the continuation of the series of the Interview Questions in the Microsoft Technologies, I
am posting few more questions which will be helpful for the Quick reference in learning the
concepts related to WCF, Assembly, SQL Server,Interface & Abstract Class etc.
1. What is the difference between Web Services and WCF.
Ans.
A. WCF Services = Web Services + Remoting + Security + Reliability + Messaging Queue

B. Not only that, hosting is also one of the powerful feature in WCF where the service can be
hosted in Self Hosting, Hosting in Windows Services, Hosting on another Service etc.
C. Supports DataContractSerializer which is fast and can serialize fields and properties.
D. Integrated Logging mechanism.

2. What are the different ways of hosting a WCF service.


Ans.
A. Hosting on Console application
B. Hosting on Windows application
C. Hosting on Windows services
D. Hosting on IIS
E. Hosting on WAS(Windows Activation Service)

3. Explain the different types of triggers in SQL Server.


Ans.
A. DDL Trigger- Trigger fires on DDL Commands
B. DML Trigger- Trigger fires on DML Commands
C. InsteadOf Trigger- Trigger fires on View updation

4. Difference between BasicHttpBinding and WSHttpBinding.


Ans.
A. BasicHttpBinding does not enable message level security while the WSHttpBinding
enables Message level as well as Transport level security.
B. BasicHttpBinding has the default windows authentication while the WSHttpBinding
support WS* authentication and security.
C. BasicHttpBinding only supports HTTP to access the service while WSHttpBinding suppors
HTTP and HTTPS(secure)
D. Data which travels through the BasicHttpBinding is in XML format and no encryption
allowed while the data travels through WSHttpBinding goes in Encrypted format.

5. What are the different types of assemblies available in .NET?


Ans.
A. Private Assembly
B. Shared Assembly

C. Satellite Assembly

6. What is a strong name and how do you give a strong name to an assembly?
Ans.
Unique identification of an assembly called as strong name. By strong name we can
differentiate the assemblies which are having the same name.
We can generate the Strong name using the command:
SN -K dllName
7. What is InsteadOf trigger.
Ans.
To update the Views, InsteadOf trigger is used. This is the only use of InsteadOf trigger.
There is no use except this.

8. Can we use Insert/Update statements in views in SQL SERVER?


Ans.
No, In general, View made to works only on the Query/Select command. So we can't have
DML commands inside the View. So no Insert/update operations are allowed.
But there is a provision where we can make the views as updatable by using the DML
statements inside the views but it is more complicated when there are views which are
created by using the joins in the queries.
So its not preferable to make the view as updatable.

9. What are abstract classes and Interface and what the difference between the two.
Ans.
When the class does not provides the full functionality, the class must be declared as the
abstract class.
There are 2 types of abstract classesA. Partial Abstract Class (Abstract Class)- Class which can support the abstract
members(methods, properties) as well as concrete members(methods, properties), the
class can be declared as the abstract class.
Abstract class works based on the child class memory. We can't create the object of the
abstract class, only the reference can be created for the abstract class.
All the abstract members must be overrides in the child class using the Override keywords.

B. Fully Abstract class (Interface) - The collection of abstract members (methods,


properties) is called as interface.

Interface contains all the abstract members.

When you have limited scope for the functionality, Abstract class is better but when there is
the requirement to implement the global functions, interface is best way to do.
e.g. When u have some feature which can be implemented in several classes and classes
are interrelated, use Abstract class but when the feature can be application level and used
by various independent classes, use Interface.

10. What are the advantages of Interface over abstract classes?


Ans.
When you have some feature which can be implemented in several classes and classes are
interrelated, use Abstract class but when the feature can be application level and used by
various independent classes, use Interface.
Interfaces are more rigid than Abstract classes.
e.g. let's say, i have a method called Show() to show the message in various classes, we
can have interface for this. Now let's say, I have implemented this interface in 100 classes
where I want to use the Show() method to show some message.
Tomorrow there is some requirement to have the new Print Functionality to let's say in 50
various classes. Now the one way is to add this Print() in the same interface so that we can
just implement it to those classes. But what about the rest 50, where we don't want this
print.. So this is drawback of Interface.
That is the reason the Single Responsibility principle and then the interface Segregation
Principle came where a class/interface should have only one responsibility. Like in the above
example, there are more responsibility and got the problem.
Abstract class is best when the scope is limited. Let's say I want to calculate the Area of few
shapes. So we can say that this is limited as few classes can use this so we can create the
abstract class with the abstract method called Area and then implement to those classes by
inheriting the abstract class.
The scope of the Abstract class is till the immediate child class. So you can't use it in grand
child or grandparent classes.

11. What is a sealed class?


Ans.
When the class provides full functionality, we can declare the class as Sealed Class. Full
functionality means, the class doesn't need anything from outside like loading the external
files etc. The sealed class cant be inherited and can't be extended. We can create the object
of sealed class so instantiation of the sealed class is possible.when the class is selfdependent, the class be made as sealed class.
Overall when we want the class prevented to be inherited, we can declare the class as
sealed class. Also If we want that our method should not be overridable, we can create the

methods as sealed method.


E.g.If you see the definitions of the datatypes, they all are sealed by default becasue they
cant be extended.
public sealed class String : IComparable, ICloneable, IConvertible, IComparable<string>,
IEnumerable<char>, IEnumerable, IEquatable<string>
{
// Summary:
//
Represents the empty string. This field is read-only.
public static readonly string Empty;
// Summary:
//
Initializes a new instance of the System.String class to the value indicated
//
by a specified pointer to an array of Unicode characters.
//
// Parameters:
// value:
//
A pointer to a null-terminated array of Unicode characters.
//
// Exceptions:
// System.ArgumentOutOfRangeException:
//
The current process does not have read access to all the addressed characters.
//
// System.ArgumentNullException:
//
value is null.
//
// System.ArgumentException:
//
value specifies an array that contains an invalid Unicode character, or value
//
specifies an address less than 64000.
[CLSCompliant(false)]
[SecurityCritical]
public String(char* value);
....
Here we can see that String class is of Sealed type.We can create the object of the sealed
class as:
String obj = new String();
bu we cant inherit these classes as they are not inheritable.

12. What kind of authentication mechanism you have used in your WCF project.
Ans.
There are various authentication modes which can be used for the WCF service likeA. No Authentication- When the service doesn't requires any authentication and its public to
access and use, this type of authentication mode is used.
B. Windows Authentication This type of service depends on the windows credential so if
the user is having the windows credentials, they can use and access the service.
C. Form Authentication This type of authentication requires certain and valid user name
and password to access the service.
D. Certificate Based There are the secure cervices where each request needs certain
authentication mechanism which can be the 3rd party like .X509 certificates to validate the
access requests.
E. Custom Authentication- This can be mixed with two or more authentication mechanism.
F. Token Based Authentication Depends on the token provided by the service provider. So
based on the token, the client can access the service.

13. How do you configure a WCF Service to use Network Authentication?


Ans.
We need to set the remote settings for this.
Below is the reference url:
http://technet.microsoft.com/en-us/library/cc742824.aspx
14. What is Garbage Collection? How is Garbage Collector invoked in .NET?
Ans.
When the heap memory is filled with the objects and there is no memory left to
accommodate the new object, Garbage collector gets called by the CLR. So it's an activity
which is initiated by the run time (CLR). When the garbage collector gets called, it tries to
find out each referenced objects which are in use by the applications. The objects which are
not reachable, it marks them to delete. Based on the reachable objects, the garbage
collector prepares the object graph, which has the reference of each reachable object. Now
based on the object graph which contain the object generations too, the Garbage collector
checks for the generation 0 objects and marks them for deletion and move rest of the
objects to generation 1. The heap memory gets compacted for the new object and new
object gets placed in the heap memory.
This is the uncertain and un-deterministic process as the Garbage collector doesn't know
when it will be called. Its all based on the capacity memory of the heap. When the heap
memory get filled and a new object is initiated, the runtime (CLR) calls the Garbage
collector.

15. Can you force Garbage Collector to be invoked from c# code?


Ans.
Yes, When we have something called the unmanaged objects(C++, VC++,VB 6.0), then we
need to explicitly release the memory. To do this, we can use the Dispose() method to freeup these object.
Sometimes, we need to force the garbage collector to be called to free-up the memory, so
we can use the GC.Collect() method to do so.

16. How is var keyword used in .NET.Difference between var and dynamic keywords.
Ans.
var keyword is newly introduces with the .net 3.5 and it is used to make the assignment for
any type of data. It can store any type of data irrespective of its datatype.
So when we don't know that what type of data, the certain process will return, we can use
the var keyword.
e.g.
var connection = new SqlConnection(connectionString);
Here the connection variable can store the SQLConnection type.
Dynamic keyword is newly introduces with the .net 4.0 version and is used to keep not only
the any type of data but also the reference will be constant.
For the var, the type is made at the compile time while in case of Dynamic; the type is
inferred in runtime.
e.g.
var customer = new Customer();
customer.GetCustomers();
Here the compiler will check for the GetCustomers()method. If the GetCustomers() method
doesn't exists, it will show error during the compilation.
But for the dynamic,
dynamic customer = new Customer();
customer.GetCustomers();
Here the compiler will not check for the GetCustomers() method during the compilation. But
at the run-time, if the method is not available, it will throw error.
So the main use of dynamic is when we don't want the compiler should check for certain
errors during compilation. It will skip the error if they are of dynamic type.

17. Difference between Stored Procedures and Functions.


Ans.

Stored Procedure and Functions are the database objects which are the pre-compiled names
SQL statements.
A. Stored procedure can take in as well as Out parameters while function can take only in
parameters'.
B. Stored Procedure may or may not return the value while the Function must return a
value. Returning a value in stored procedure depends on the input parameter. If the input
parameter is of type out, then it will return the value.
C. We can use the function inside the stored procedure but stored procedure can't be used
inside a function.

18. What are the different types of contracts available in WCF


Ans.
A. Service Contract- In Interface
B. Operation Contract - For Operations
C. Data Contract -Based on custom type
D. Message Contract - For Custom message
E. Fault Contract - For Error or Exception Handling

19. What is the static variable and what are the static variables in dot net.
Ans.
When the variable is shared by multiple class members (method, properties etc), we can
make that variable as Static (in VB.Net Shared). To access these variables, we don't need to
create the object of the class. We can directly call the static class members using the Class
name. These variables get loaded when the class gets loaded in to the memory.
20. If I have 2 interfaces with same method same parameter and same return type. Both
interface implemented from one Class. Then how can i call to these methods.
Ans.
Two interfaces with the same methods and same parameters can be implemented using the
external interface functionality, rather than internal interface.
By default, when we implement the interface, we need to implement all the method to the
implemented class.
But if the methods are same, then we can take the help of explicit interface as:
interface inf1
{
void Print();
void Show();
}
interface inf2
{
void Print();

void Show();
}
Now we will implement these interfaces in a single class:
class MyChildClass: inf1, inf2
{
public void inf1.Print() // explicit interface call
{
//implement Print() method details for the first interface
}
public void inf1.Show()
{
//implement Show() method details for the first interface
}
public void inf2.Print()
{
//implement Print() method details for the second interface
}
public void inf2.Show()
{
//implement Show() method details for the second interface
}
}
21. Can method overloading and overriding possible in simultaneously in program.
Ans.
Yes, both overloading and overriding concept can be implemented simultaneously between
the parent can child classes as:
Class MyBaseClass
{
public void Print()
{
// Print method implementation
}
public void Print(string fileName) // overloaded method
{
// Print method implementation with the file name
}
public virtual void Print()
{
// Print method implementation
}
}
Class ChildClass:MyBaseClass
{
public override void Print() // overriding implementation
{

// Print method implementation


}
}
22. What is "using" keyword?
Ans.
"using" keyword is used in 2 scenarios:
1. To write the namespace as:
using System.Data.SqlClient;
2. To clean up the memory automatically after the use of object as:
using(var f = new SqlCommand())
{
// some other iomplementation
}
The above code will delete the memory used by the 'f' object after the completion of the
transaction.
23. What is dispose and finalize method and how it works
Ans.
Finalize and Dispose methods comes under the System.GC namespace and used to free up
the memory occupied the objects. Garbage collector uses these objects to free up the
memory.
When there is no enough memory to allocate the new object in the Heap, Garbage collector
gets called automatically to free up the memory. It mainly creates the object graph and
finds the objects which are not used since longer time. Based on the generations, it removes
the objects.
Dispose method is called manually by programmer to remove the objects.
It uses IDisposable interface which has the Dispose method and this can be implemented in
the code.

26 January 2014

Scenario Based Questions in Microsoft Technologies - .Net with


Answers
Hai Friends,
As we know that getting more experience and then going for the interview requires more
knowledge and if we see, it requires more practical knowledge.
So in the continuation, I am trying to post few questions of OOPS which are scenario based
and will be helpful when you are going for the interviews with 3+ years experience. These
questions will definitely make you to think something more which you were thinking before

about the answer of a particular question. With the hope that these questions and answers
will be helpful to you, I am posting them and will try to update and include more in the
future.
These questions are scenario based questions in .Net technologies which will help to prepare
for the interviews. Few questions are related to OOPs concepts, and then few on Garbage
Collector and memory related. So you can prepare them accordingly. These questions will be
useful for those who are having the 3+ years experience and looking out for the
opportunities in good companies.
1.
How the Encapsulation is different from Abstraction? I think both are used to hide the
unnecessary details? Then how they are different?
Ans.
Yes, Both Encapsulation and Abstraction do the same thing but with few differences.
Encapsulation mainly encapsulates the object and so hides the details as well as it binds the
data.
So Encapsulation = Hiding + Binding the data
How it hides the data? Real-time Example?
Take the example of n-Tier application where we have an additional layer called Business
Objects. This layer
contains all the entities with their properties. Take an entity name: Employee. This
Employee will have the
class name "EmployeeBO.cs" and contains the public properties like EmpId, EmpName, Sal
ets
EmployeeBO.cs

So this is the presentation of one property in the Business object class. Now wherever we
want this attribute,
We just need to create the object of this class and set/get the value of EmpId as:
// set the EmpId
EmployeeBo objEmployeeBO = new EmployeeBO();
objEmployeeBO.EmpId = 101;

// get the EmpId

int empId = objEmployeeBO.EmpID;


Now the question is where its setting or getting the value?
EmpId is the public property in the EmployeeBO class and contain no value. Only _empId
contains the value
which is private and so it is not accessible.
So binding of the data happens to the EmpId through _empID and hiding happends through
_empId which is
private. The Data is accessed through the Public property while the actual data is in private
variable. So
binding + hiding using Encapsulation.
Abstraction is to ignore the unnecessary details and get the required details. So it also
hides the unnecessary details. How?
Abstract class is the special type of class which can contain the abstract and
concrete members. If we define
The member (Method/Property) as abstract, it must be overrides to the child class. We
are not bothering here About the non-abstract or concrete members. Which is an
unnecessary detail? If we ad an additional concrete Member in the abstract class, we need
not to do anything in the child class. But if we add the abstract members, we must have to
override it. So abstract doesn't care about the concrete members which are unnecessary for
it and so it hides those details.
2.
What do you mean by early binding and late binding in the object bindings? Which is
good? Please give me a scenario where you have used the early binding and late binding
concepts in your application?
Ans.In .Net, the early binding and last binding concepts comes under the polymorphism. As
we know that there are 2 types of polymorphism1. Compile Time polymorphism
2. Run time polymorphism
The Compile Time polymorphism also called as the Overloading where we have the same
method name with different behaviors. By implementing the multiple prototype of the same
method, we can achieve the behavior of the Overloading.
Also this behavior is valid only for a single class. It means we should have all the
overloaded methods in the same class.
e.g.

The Run time polymorphism also named as the Overriding. This concept works in between
classes or multiple classes or parent child classes where the child class has to get the
behavior of the base class by inheriting the base class.
In this concept we generally have an abstract or virtual method in the base class and we
override that method in the child class by using the override method.
e.g.

So now we know the Compile Time polymorphism and Run Time polymorphism. The
compile time polymorphism uses the concept of early binding and Run time polymorphism
uses it as the late binding.
In early binding, the runtime (CLR) gets the behavior in the compilation of the program.
It means that the method behavior will get compiled before in the early binding.
In Late binding, like Overriding, the behavior of the class and methods gets by the CLR
when creating the object means at runtime. So, in the late binding the behavior of the class
members identified by the CLR at runtime.
Now come to the next part of the question-which is good?
One cant say about the answer of this question, there are the scenarios where the early
binding is good. When you have lot of objects and in that case, the early binding behavior
performs well. While the late binding will be good when we have less objects. Lets say you

want the dropdown list to be loaded when you click on it and not while the loading of the
page. So in some scenario, it will be good if we have while load and it will not be good when
you click.
So its all depends on how you have implemented and the form structure.

3. In garbage collection, how the object generations come in the picture? How many
generations an object can have? Please tell me the process of disposing the objects based
on the generations? Can an object move from one generation to another? If yes then why?
Whats the need to have different generations as we are going to dispose the objects which
are marked by the Garbage collector?
Ans.
Lets start with what is Garbage collection first and then we will come to our main
question of the post. As we know that all the objects created using the new operator gets
fits in to the Heap memory. So whenever a new object gets created, it tries to fit in the heap
memory. Now lets say the heap memory is full and there is no place to keep another newly
created object.
In that case the Garbage collector installed, which is the background process, runs
through CLR and take the unused objects memory. It mainly cleanup the heap memory and
the new objects get placed in to it.
Now the question comes that for which objects it reclaims for the memory? How the
object generations come in the picture?
It depends on the objects generations. The CLR finds out the objects which are no longer
used by the application since longer time and then the Garbage collection reclaim their
memory.
How many generations an object can have? Please tell me the process of disposing the
objects based on the generations?
Actually there are 3 generations exists for the objects which are written under the .Net
framework library. When a new object gets created, by default it moves to the generation 0.
Can an object move from one generation to another?
Now when the generation 0 objects gets occupied with the memory and garbage collector
gets called by the run-time. It checks the objects which are no longer used by the
application and mark them for deletion. After deleting or reclaim the memory, the older
objects moved to next generation i.e. Generation 1. Now the next time the CLR will check
for the Generation 1 object too and if it finds that in generation 1 if the objects are not used
since longer time, it will mark them for release and move the remaining objects to
generation 2.
In generation the objects which are under the main method, exists as they gets removed
either at the end of the program or when both the generation 0 and generation 1 objects
are using.
Whats the need to have different generations as we are going to dispose the objects
which are marked by the Garbage collector?

With the different generation, it improves the performance of the application as the
Garbage collector need not to check for each of the objects in the memory. It first checks
for the generation 0 objects and reclaim the memory. If still needs then goes to the
generation 1 and then 2.

4.
What is object graph in garbage collector? Is this the graph physically exists? Or how
this graph gets created?
Ans. When the Garbage Collector gets called by the CLR to DE-allocate the memory in the
heap, the Garbage Collector start finding the references of all the reachable objects which
are currently in use. So it find the objects which are used by the processes and for rest of
objects which are un-reachable or the Garbage collector is not able to find the references for
them, it marks them for deletion.
Here the Garbage collector makes an Object graph which keeps track of all the objects
which are marked for deletion. After the deleting the references for those objects, the heap
memory gets compacted and a new root becomes available to use by the new created
object.
Is this the graph physically exists? Or how this graph gets created?
No, this object graph creates virtually by the Garbage Collector to keep all the objects
and to make them for deletion. This is the Garbage Collector responsibility to create this
object graph and gets the references of each reachable object which are used by the
application

5.
Can we suppress the Garbage collector? If yes, then why do we need to suppress it as
it is used to reclaim the unused memory and which improve s the performance of our
application?
Ans. Yes, We can suppress the Garbage Collector. There is the Static method in GC class
called as SupressFinalize.

GC.SuppressFinalize(objectName);
This Static method takes a parameter for the object. So we can pass it to suppress the
claiming memory for this object.
Now the question comes "why do we need to suppress it as it is used to reclaim the
unused memory",
So, whenever we are using dispose method for class object,which is capable of disposing
the object and in that case we don't need to use this method to again reclaim the memory.
e.g.
public class DemoClass : IDisposable

{
public void Dispose()

{
Dispose(true);

GC.SuppressFinalize(this);
}
}
As we have seen above,the DemoClass is inherited by IDisposable interface and which
have the Dispose method to implement.
Hence after implementation of Dispose() method, we need not to reclaim the memory
using the Garbage collector and so we can use the SuppressFinalize() for the current class
object.
6. We already have the Finalize method which reclaims the memory using the Garbage
collector. This is automatic process then why do we have the Dispose () method? Is this
method different from Finalize ()? What is the interface from which the Dispose () method
inherited?
Ans. Yes, We have the Finalize() method which is used to reclaim the memory for the
unused objects. The Finalize() method is sufficient to release the memory from heap for the
un-referenced object but it is only for the managed objects. So Finalize() method can
reclaim the managed objects memory from the heap which are not used since longer time.
Then what about the objects which are unmanaged? The objects which are out of .Net
CLR? The objects where the CLR can't be used to manage? Dispose() method is used for all
those objects which do not comes under CLR or under the Managed heap. Dispose() method
can be overrides and can be written to reclaim the object of those classes. Dispose()
method is implemented by using the IDisposable interface.
e.g.public class TestClass : IDisposable

{
public void Dispose()
{
Dispose(true);
}

}
7.
Can we call the Finalize() method to be executed explicitly when we want that
particular object memory to be reclaim by the Garbage Collector? If yes, then where do we
need to write the code? If no then why?
Ans. No, the Finalize() method can't be called as Explicitly. The Garbage collector calls it
when the Heap memory is having no space to allocate the new object in the heap.
Finalize() method is mainly used to perform the cleanup on the unmanaged resources
which are held by the current object.
Working Finalization: Until the Finalize method is overrides, the Garbage
collection doesn't mark the object to claim its memory.Internally the Finalization Queue
keep each of the objects which are marked for deletion by GC and then the Finalize()
method gets called.
The Object must be inaccessible(no reference found) to put or keep in the Finalization
Queue.
Limitations: There are the limitation for Finalization:
a. Un-Deterministic - it is hard to find that when the Finalize() method will be called.
b. There is no guarantee that which object will be disposed first.

The C# compiler doesn't allow the overriding of Finalize() method an due to that we need
to write the Destructor of the class.
As the GC is non-Deterministic so we can implement the Dispose() method explicitly to
claim the unused memory by the Garbage collection.
For More details on GC, check the link:
GC Internal

8.
Can we inherit child class from 2 base classes? If yes then how? If not then why? What
is this scenario called as in OOPs? How to implement this kind of scenario where we need to
inherit the methods from more than one base class?
Ans. No, We can't inherit more than one base class in to child class. This leads to the
Multiple Inheritance where the child class can inherit more than one base class and the
Multiple Inheritance doesn't support in .Net.
So this scenario is called as Multiple inheritance(a type of inheritance in OOPs).
If you do so, you will see the error 'Interface name expected.' as below:

To implement these kind of scenarios, we need the help of Interfaces, Where we can
convert the second base class to Interface and then we can inherit one base class and
second Interface.

9.
How the Virtual methods are different from General methods? Can we have a method
in the base class and then in the child class can we write the same method? If not? Why?
What is the error we will get if we write the same method in the child class with the same
name as the parent class method name?
Ans. Yes, Virtual methods are different from the general method. The Virtual
methods
are the special type of methods which can be overrides in the
child class and then the
child class method will be the output or the default
result.

And when creating the child class object, it will take the child class method
preference as below:

as the

Now, if we have the same method in the child class as base class then it
will hide the
base class method by default and what ever is implemented in the child class will get
executed.

So here we can see that the error will not come but it will show the warning
'new' operator instead to hide the base class method. This scenario is called
as Shadowing in the OOPs.

to use the

10. Why do we need abstract class or abstract members? Cant we simply write the general
methods and fulfill our requirements? Can we get any advantage by implantation of abstract
members? As per the abstract class scenario, lets say we have an abstract method called
Show () in the abstract base class. Now if I am inheriting this base class to a child class, we
need to override this abstract method to the child class. And then we will call this method by
creating instance of child class.Now if we only have the method in the child class and then
create the instance and call the same method? Then why abstract class method? Is that
method doing anything here?
Ans. Abstract class or abstract members(methods, properties) are those which
are not
complete. So when the class contains at-least one abstract
member,the
class must be defined with abstract class.
We can also say that 'When the class does not provides the full
functionality, we can declare the class as abstract'. the abstract class
works
based on the child class memory. Due to that we cant create the
object of Abstract class, instead we can create the reference of the
abstract
class.

11. How abstract class and interfaces are different? Cant we create an abstract class by
having all the members as abstract members and wherever required inherit and implement
its members? Then why interface? I think interface is also doing the same thing? Then how
they are different?

12. Can we have abstract properties in Interface? If yes, then how to write the syntax for
the abstract property which is having the return type string?

13. Can we write static methods inside a non-static class? Is it possible to call a non-static
method inside the static method? If yes then how?

14. Shadowing is the special type of overriding? How? Please explain?

15. When we inherit a class which is having the private members. Are the private members
also gets inherited? If yes? Why cant we get them by the class object? If no then why?

16. What is the Difference between Coupling and Cohesion? If the components are more
cohesive the software is good? Or vice versa?

17. See the below code snippet and think about the output.

18. What is the Difference between HTTP enabled WCF Service and Web Services? I think if
we restrict the WCF service just for the HTTP communication, both WCF and Web Service
will have the same behavior. Then why still people prefer to have the WCF service rather

than the Web Service. What all the things which can be achieved through HTTP enabled
WCF service and cant be just from Web Service.
19. What is the Difference between SOAP enabled Services and ReST Services? Which one
is preferred and why?

19 Brainstorming questions with answers in Microsoft Technologies->.Net, C#,


ASP.Net, SQL Server 2008, ASP.Net MVC 3
This article contains the questions related to the .Net Technologies. It covers the questions
related to OOPs concepts, C# and ASP.Net, MVC and SQL Server. The questions are having
answers so that they will be helpful for those who are preparing for the interviews. These
are the questions which are asked in various interviews in different companies. So in that
way also it will be useful as per the current industry trend and demands for 2+ years
experience guys in .Net Technologies.
1. Why we used Inheritance. What is the benefit of this.
Ans. Inheritance is a way to inherit the base class members to the child class so that we can save lot
of memory and reuse the inherited members.
Let's say, if you are already having some properties defined in the base class and then if you are
inheriting this base class to the child class, the extra memory need not to be wasted to declare the
base class members again. While implementing the inheritance, automatically they will be inherited.
e.g.

class Mybase
{
int i, j;
float z;
}
class MyChild: Mybase
{
// no need to declare again the above variables
// as they will be automatically inherited.
}
As we need not to declare the variables again in the child class, so we have saved here 4 + 4 + 8 =
16 bytes of memory for the child class.
Main usage of inheritance is 'Re-usability'. No need to declare variables, methods again.. If u want,
then use them from base class. It reduce your code from complexity.
2. Why C# does not support Multiple Inheritance.
Ans. Multiple Inheritance is the situation in which when there are 2 base class and a single child class
is trying to inherit the members from both of them then there is the confusion that which base class
member should be inherited?
e.g.

class MyClass1
{
public void Show()
{
// something
}
}
class MyClass2

{
public void Show()
{
// something else
}
}
class MyChildClass: MyClass1, MyClass2
{
// not possible
}
Due to this, the architecture of .Net framework doesn't support such situation and will throw the
compile time error.
In C++, it is possible because there both the base class methods will have in different memory
locations and the methods will be accessed through the memory location. But in Java or .Net the
method is accessed through the class members objects.
It is quite difficult to implement multiple inheritance in C#. But we can do this through Interfaces. In
the above scenario, if we can change the second class as interface and then implement them as
below:
interface MyInterface
{
void Show();
}
class MyChildClass: MyClass1, MyInterface
{
public void Show()
{
// do something
}
public void MyInterface.Show()
{
// do something else
}
}
3. Why we used virtual keyword.
Ans. If we want to override the members of the base class, we can make them as virtual. The virtual
members have the capability to override them in the child class. If they are not overridden, the base
class implementation will be executed.
It is not the mandatory to override the virtual members of the class.
e.g.

class MybaseClass
{
public virtual void Show()
{
Console.WriteLine("hey..I am in base class");
}
}
class MyChild: MyBaseClass
{
public override void Show()
{

Console.WriteLine("hey..I am in child class");


}
}
The preference will be given to child class always.

public static void Main(string[] args)


{
MyChild objChild = new MyChild();
objChild.Show(); // child class method will be called.
}
If a base class method needs to be overridden, it is defined using the keyword virtual (otherwise the
sealed keyword is used to prevent overriding).
4. If my base class does not have virtual keyword but both class have same method , parameter and
return type. then what will happen. base class method will be called or only child class method will
called.
Ans. By default the preference will be given to child class. The child class method will be called always.
If you want to call the base class method, then you need to use the base keyword
like base.MethodName()
5. What are events and actions in c#.
Ans. Events are the objects which are binded with the particular action. Whenever an action happens,
an event fires. Like button click event.The action is click and event is Button_Click which is attached
with the event handler to do the particular action and get the result.
6. What is user define function in SQL or What are the user define function available in SQL.
Ans. There are 2 types of functions in SQL Server1. Inline functions
2. Tabular functions
Inline functions gives the result as a single value while the tabular functions return the multiple values
like a table.
Both of these types of function can be created as user defined. Means we can create our own function
which can be inline or Tabular by using their syntax.

Create
return
as
Select
Create
return
as
Select

function
int[/Table]
FirstName+ LastName from Emp where EmpId = 101;
Function
Table
* from Emp;

7. If we have one Master Page , one aspx page and one ascx page then which one will called 1st while
page_load event and which one called 1st while page_Unload event.
Ans. If the content page contains the user controls then below will be the calling routeMaster Page Load event --> Content Page Load event --> User control page Load event
While unloading:
Content page Unload --> user control unload --> Master page unload event
8. What is Indexers and please give the description with example.

Ans. Indexer are the objects which doesn't need to be initialized and we can use them as it is for the
storing and retrieving the data in to pages.
Indexer is represented as []. So we can use them in Session, Application types of objects when
keeping the state management data.
e.g.

ViewState["UserName"] = txtUserName.Text;
Session["UserName"] = txtUserName.Text;
Application["UserName"] = txtUserName.Text;
To retrieve these data, we can simply type cast them as :

lblUserName.Text = ViewState["UserName"] as string;


lblUserName.Text = Session["UserName"] as string;
lblUserName.Text = Application["UserName"] as string;
Here you can see that there is no need to create object of the indexers. Directly we can retrieve the
data.
9. What are indexes in Database. How many types of Indexes in SQL Server
Ans. Indexing is used to increase the performance of a query, instead of performing the entire table
scan the query uses the index to execute the query.
There are five types of indexes in the SQL Server database:
1. Clustered Index
2. Non-Clustered Index
3. KeySet Index
4. Default Insex
5. XML Index
One thing here to remember that the Indexes retrieves the data by using the Binary tree formats.1.
Clustered Index:- Those indexes which can be maximum 1 per table and they will be the key to
retrieve the data. the clustered indexes retrieves the data in the B-Tree format and improve the
performance of the retrieval from the table.
e.g. There are 1000 records in the table and the user want to retrieve the 234th record. Without
index, the table scan will compare the record in whole table to get the matched record. So for the
1000 records, it will match for 999 times. If it found the records in the beginning, then also it will
search the whole table.
When using the index, the below process will occur for the searching of 234th record:
1. It will take the 234th record as the root and compare the table by partitioning it in to two parts.1500 and 501-1000
2. then it compares with the left and right and then it will found that 234 is less than 500 so leave the
right part.
3. Now comparing will happen for the 1-250 and then 250-500. For this, it will check that 234 will
come in the 1-250 range so leave the other part.
4. Now the comparison will be 1-125 and 126-250...and so on..
So if you calculate the total comparison it will be hardly 8-9. So we have reduces almost 990
comparison to improve the performance.
In Clustered index, the actual data exists at the leaf root of the B-tree and it search the data
directly.2. Non-Clustered Index:- it searches the data in B+ tree format where the leaf node contains
the memory location of the data. Once it gets the actual memory location, by using the reference it
retrieve the actual data.There can be more than one Non-Clustered indexes per table.
There can be 249 non-clustered index(in SQL Server 2005) and 999 non-clustered index (SQL Server
2008).3. KeySet Indexes:- Only keys are stored and not the actual data. the search will happens
based on the key. Once the key found, it searches the complete data for the key. So its faster than all
the indexes.4. Default Index:- When the primary is added to the table, by default the index gets
created called as Default Index.5. XML index:- When the index is created on the XML column, the
index is called as the XML index. This type of index gets introduces since SQL Server 2005 version.

XML type column is supported since SQL Server 2005.


10.Why we use Interface.
Ans.Interface is a way to use the global functionality throughout the application. If your application
require many unrelated object types to provide certain functionality then you go for interfaces.
It defines a contract between the application and the object.
Let's suppose we want to Show the data or Print the data in many pages of the application, we can
create a Interface which will contain the Abstract method and in the page where we want, we can
implement it as per our requirements.
e.g.

interface inf
{
void Print(); // abstract method
}
internal class MyClass: inf
{
public void Print()
{
// functionality to print to PDF document
}
}
internal class MyTest: inf
{
public void Print()
{
// functionality to print to tiff document
}
}
internal Class MyTest: inf
{
public void Print()
{
// functionality to print to .jpg format
}
}
We can see here we have separate classes and the implementation of the Print method is different
without making any changes in our interface.
So if we want to implement something global, we can use the Interface, for local or limited to class,
we can use the abstract class.
11.Why we use Method Overloading
Ans. To reduce the memory and the good readability, we use the Overloading. This is the concept
where we can have the same method name for similar work with different behavior.
Let's say we want to get the Database connection based on the provider name to connect with
different databases, we can use the overloaded methods like:

public string GetConnectionString()


{
// return default connection string
}
public string GetConnectionString(string provider)
{

// return connection string based on provider name


}
12. Why we use Method Overriding
Ans. Method overriding is the concept where we can use the same method in parent as well as in child
class to reduce the memory and use the similar behavior. If we don't want to change the behavior, we
need not to override it. So to make the changes in the behavior, we use the overriding.
13. What is the difference between Abstraction and Encapsulation.
Ans. Encapsulation is the biding and hiding of the data while Abstraction is to get the essential
information from the raw data.
e.g. Encapsulation

class Test
{
private string _name;
public string Name
{
set _name= value;
return _name;
}
}
Here the _name is the private which is not accessible so hiding the data. All the data will be binded to
the private variable as per the statement

set _name= value;


This property will be accessed by the public member called Name.
So Binding and hiding means encapsulation.
Abstraction is done by using the abstract class where we can have abstract and non abstract
members.
When ever we are having the abstract members, we need to implement it/override them in the child
class to use them.

class MyBaseClass
{
public abstract void Displaye();
}
class MyChildClass: MyBaseClass
{
public override void Display()
{
// do something
}
}
Here the essential things is the abstract method which must be overridden. If we add any number of
non-abstract method, the child class wont care. So Getting the essential information is Abstraction.
14. In which case we can use Abstract class in our project.
Ans. Abstract class is always used when we have the limited scope or the objects are of similar types.
e.g. Lets suppose we want to get the area of few objects. This is not the global where we need to do.
So we can create the abstract method to calculate the area and then according to shape, we can
override them. So here the scope is limited and will not be used throughout the application.

Hence we can use the abstract class.


15. What is the difference between Array List and Ilist.
Ans. IList is an interface for the implementing the List collection.
As the List is the generic so we can use it to restrict the type of the list e g.

List objList = new List();


It means, the List object is restricted to the int. We can't insert here any type of data in to list. Only
the int is permitted.
ArrayList is the collection where we can insert any type of data as:

ArrayList objArrayList = new ArrayList();


objArrayList.Add("Hello");
objArrayList.Add(1);
objArrayList.Add("Sure");
The ArrayList will not check the type in the compilation of the program.
16. What is difference between internal class and sealed class.
Ans. The internal class object can be used with-in the assembly and not outside of the assembly.
These classes can be inherited.
Sealed classes are those classes which doesn't need anything from outside. These are full classes.
These classes can't be extended.
17. Are these method are overloading methods?

public void show(int x , string y)


public void show(string x , int y)
Ans. Yes, these are the overloading methods because, their signatures are not same
Signature= Method Name + Argument types

Both signatures are different. So overloading methods.


Now create the object of the class A and check for the overloaded method:

As per method overloading, the method should differ in


- type of parameters
- Order of parameters
- number of parameters
18. What is the difference between Remoting and web service.
Ans. Remoting is the concept of calling the remote interfaces like communication with the
heterogeneous applications but both should be developed using the same .Net language.

For the client and server communication, we use the Remoting.


Remoting is the platform dependent so both the client and server must be built in .Net Technology and
both the systems should use the CLR.
Web-service is small logic which runs on the internet. It is used for the heterogeneous applications
and consume the service in any application. It is platform independent so no need to have the CLR
or .net framework to be installed on the machines. C++ web service can be consumes in .Net
application.
19. Can we use viewstate in MVC.
Ans. No, ViewState cannot be used in MVC. There is no concept of ViewState in the MVC as it is not
required. The MVC views are not having anything server side code so the view only be rendered and
not loaded.
To pass the data from one page to another, we can use the ViewBag.
The reason we use MVC is to separate business logic from your view or UI and the site should be
easily testable.
ViewState mixes your business logic with your UI, while MVC separates the Business Logic from the
UI.
Hope they will be useful to all of us.

15 September 2013

OOPs Concepts: When to use


Hai Friends,

This post is regarding the main OOPs concepts and what is there use and when its good to
use them.

Below are the concepts which are included in this post:

Encapsulation

Abstraction

Overloading

Method Overriding

Constructor

Interface

Inheritance

Abstract class

These OOPs concepts you can use while implementing the functionality of your projects
in accordance with the requirements and situations.
Hope it will be useful to learn and in the implementation of the projects.
1) In which situation encapsulation is used in your project?
Encapsulation is hiding and binding of the data.
Accessing the public properties by using private variables is one of the good examples of
Encapsulation in all the projects.
e.g.
private string _name;
public String Name
{
get{return _name}
set{_name= value;}
}
Here you are not able to access the private variable _name but its value can be accessible
by the public property Name. So a kind of Encapsulation here. Namespace is also an
example of Encapsulation which is encapsulating the classes, methods, properties etc.
This is the runtime behaviour of an entity.
2) In which situation abstraction is used in your project?
Hiding the behaviour and showing the necessary things regards an entity can be called as
Abstraction. Like for a Car, showing the method like Clutch, Gear etc but hiding its internal
functions can be an example of Abstraction. This is the compile time behaviour of the
entities.
When there are the specific requirements and that can be flown to their child, then we can
use abstraction. it means whatever is essential, we implement to its child classes, else will
be inherited automatically.
e.g.
class A
{
public abstract void Add(int a, int b);
protected int x;
public string Name{get; set;};
}
Class B: A
{
public override void Add(int a, int b)

{
Console.WriteLine("Sum of two numbers is:" + int. Parse(a + b).toString());
}
}
Here the essential method Add is implemented to the child class B. rest all the members will
be inherited accordance to their protection levels.

3) In which situation method overloading is used in your project?


The concept where we want the similar functionality but different behaviour, we use
overloading.
When we have same functionality to implement with different behaviour, we go with the
overloading of method.
e.g. If we have to get the sum of 2 numbers, 3 number and 4 numbers. So in that case we
can take only one method name Add with its varied parameters like:

public void Add(int a, int b)


{
Console.WriteLine("Sum of 2 numbers" + int. Parse(a + b).toString());
}

public void Add(int a, int b, int c)


{
Console.WriteLine("Sum of 3 numbers" + int. Parse(a + b +c).toString());
}

public void Add(int a, int b, int c, int d)


{
Console.WriteLine("Sum of 4 numbers" + int. Parse(a + b + c + d).toString());
}

Now according to our requirement, we can call the respective method with its arguments.
Here all the methods are doing sum of the numbers, but their behaviour are different- the
first method will give the sum of 2 number while the next one will give the sum of 3 number
and the final method will give the sum of 4 numbers.
4) In which situation method overriding is used in your project?

When we may(abstract) or may not(virtual) want to implement the particular method at


runtime to its child class according to the requirement, we go with overriding concept.
e.g.
Class X
{
public virtual void Print()
{
Console.WriteLine ("This is the print method. You can override according to
your definitions and implementation");
}
}
Class Y:X
{
public Override void Print()
{
Console.WriteLine("Implementation for Excel print methods");
}
}

5) In which situation constructor is used in your project?


Constructor is the way to initialize the class with the default values of the members.
Constructor is by default initialize with the class.
But if you want to initialize some members when the class in getting instantiate, you can
write the constructor and code for initialization inside that constructor.
e.g.
Class MyClass
{int a;
public MyClass()
{
a=10; //initialized with the class instantiation
}
}
Here the constructor code will get initialized with the class instantiation.
6) In which situation interface is used in your project?

Interface is the collection of abstract members.


So whenever we have the requirements such as it requires through the application at many
places, then we create an interface with that method so that we can implement it at our
own way according to the requirements.
e.g.
Interface Inf
{
void Print();
}

Class ExcelClass:Inf
{
public override void Print()
{
//Write code to print in excel
}
}

Class WordPrintClass: Inf


{
public override void Print()
{
//Write code to print in Word
}
}
Class PDFPrintClass: Inf
{
public override void Print()
{
//Write code to print in PDF
}
}
Also to implement the multiple inheritances, we use inheritance.

7) In which situation inheritance is used in your project?


When we want to have some common features for multiple classes then we go for
inheritance.
To inherit the properties of base class to their derived class.
8) In which situation abstract class is used in your project?
Abstract class is same as abstract. So go to the Q 2 for the details.

So you can go through the link to get the fair idea about its implementation:
http://www.dotnetspider.com/forum/ViewForum.aspx?ForumId=295763&

Interview Question for 3-6 Year experience in .Net Technologies-PART -II


Hai Friends,

With lot of encouragement and support, I am posting the Part II of the questions and
answers for 3-6 years experienced people. These questions will be helpful for those who are
preparing for the interview or attending the interviews. This will be helpful for the last
minute preparation in quickest way.
If anyone has better answer, please reply to this post and I will include them.
C# / ASP.net/ .Net framework / other .Net related questions:
1. What is the difference between IEnumerable and IQueryable?
Ans. IEnumerable and IQueryable are used to query data from collections and database.
The IEnumerable is basically inherited from IQueryable, so its having all the features of the
IQueryable in addition to its having additional own features.

S.No

IEnumerable

IQueryable

1.

Exists in System.Collections
Namespace

Exists in System.Linq Namespace

2.

Can move to forward only in the


collection.

Can move to forward, backward or in


between the items.

3.

Best for collection like List, Array or inmemory collection

Best for the collections which is out


memory like services, remote databases
etc

4.

Suitable for LINQ to Object and Linq to


XML queries.

Suitable for Linq to SQL queries

5.

It doesnt supports custom query, Lazy

It supports custom query using

6.

loading so its not good for paging


scenarios.

CreateQuery and Execute methods. Also


support lazy loading so good for the
paging scenarios.

The extension methods which supports


be IEnumerable, takes the functional
objects as the parameters.

The extension methods which supports


be IQueryable, takes the expression tree
as the parameters.

In the first example (By using the IEnumerable), the generated SQL is as below:

In the second example (By using the IQueryable), the generated SQL is as below:

We can see that by using the IQueryable, the performance will increase as it has the TOP
clause in the query.
2. What is cross site scripting? (XSS)
Ans. Cross-site scripting is the way to attacks and insert the vulnerabilities in Web page.
This attack is injected by client-side code. The script which is inject by the client can embed
itself in response data. The response data which send back to the malicious user. The
browser cant recognize the scripts as it is responded from the trusted source.
The cross-site scripting attacks also work on the HTTP and HTTPS.
There are 2 ways to prevent the cross site scripting attack:
Constrain input- Validate the input length, type, formatting, range etc

Encode output- Send the input data with encode e.g. Encode to HTML
To prevent the cross-site attack, we can set the below attributes in web.config file:

3. If I want to see my website similar in all the browsers then what I need to do for that?
Ans. If you want to see the website with the same look and feel then you need to write the
common css style which should be same for all browsers. Actually every browser will not
support every css elements so it is not possible to use the same css to support all the
browsers. You need to write the common css elements in the file and then apply it across
the website. Else you need to write the separate css file as per the browser.

4. If say 1 Lac users are using any particular website then what you will do to prevent
crashing of server? Which care you will take at the time of coding?
Ans. There are the ways like we can have multiple servers to handle the requests from the
users. In this, we can have the Web Gardening concept where we can have the multiple web
servers and then one main server to handle the number of requests and switch the requests
to other servers.
5. Why to use design patterns?
Ans. Design Pattern is the way to solve the recurring problems which occur during the
designing of the applications. As the requirements increases, the projects becomes complex
and due to the complexity, its difficult to maintain it.
With the help of design patterns, we can reduce the complexity and with the help of OOPs
paradigm, we can make our applications more efficient in all the ways.
According to the GoF (Gang of Four) company, the Design Patterns can be classified to 3
ways:Creational Design Pattern
Behavioral Design Pattern
Structural Design pattern
6. If I have a class C and two interfaces I1 and I2 and I have 'Add' method inside I1 and I2
then how to specify which one has to be called?
Ans. By using the explicit implement interface, we can implement the same method which is
defined in both the interfaces.
e.g.

The implementation will be as below:

7. Garbage collection uses which type of algorithm? How it will find which object is unused?
Ans. Mark-And-Release is the algorithm which the garbage collection uses to reclaim the
memory of the unreferenced objects which are no longer used.
The algorithm Mark-and-Release work in 2 steps:a. In the first steps, it marks all the accessible objects of the heap memory. This is called
as mark phase.
b. In the second step, scan the heap and reclaim all the unmarked objects by the Garbage
Collection algorithm. This step is called as sweep phase.
Below are the algorithm steps:

For the detailed description, follow the below link:


http://www.brpreiss.com/books/opus5/html/page424.html

8. What is the difference between out and ref?


Ans: Ref and Out are the parameters which are used in the methods [ref] and [out] both
allows the called method to modify a parameter. The difference between them is what
happens before you make a call.
[ref] means that the parameter has a value on it before going into the function. The called
function can read and or change the value any time. The parameter goes in, then comes out
[out] means that the parameter has no official value before going into the function. The
called function must initialize it. The parameter only goes out.
So the main difference between the ref and out parameter is that the out parameter doesn't
needs to be initialized while the ref parameter must be initialized before passing to the
function.
9. Is it possible to use more than one out parameter?
Ans. As we know that the method always returns a single value but by using the out
parameter, we can return multiple values from the method or function.
In C# we can write the small code snippet which will describe to return the multiple values
using the out parameters:
We can also use the struct which will contain the multiple values as the return:

There is another way to return multiple values like using Tuple class (newly introduced in
.Net 4.0). The tuple class can return the object which can contain multiple values in it.

10. Is it possible to use .js files used under script will be in body and not in header? Why?
Ans. The .js file is used in header because first the .js file should be loaded to the
application and then rest of the content should be load.
11. What is Expression Tree in C#? How to use Express Trees to create Dynamic LinQ
queries?

Ans. Expression Tree is used to create Dynamic Linq query. Sometimes, when the specific
criterias' can't be defined at compile time, Expression tree is useful to generate the Linq
query at the runtime.
For E.g. In an application, the filter criteria is based on some user actions and is generated
dynamically. In this case, we can use the Expression Tree which will generate the criteria at
runtime and then we can use that criteria to filter the records from the IQueryable
collection.
System.Linq.Expressions is the namespace required to work with the Expression Tree. Here
we need to create the predicates using expressions, which will be used in the query.

1 February 2013

MVC 3: MVC (Model View Controller) with Razor Engine


Hai Friends,
Now a days most of companies are asking the latest technology guys specially in
Microsoft Technologies as Microsoft Corporation is releasing many technologies day
over day. In all those MVC (Model View Controller) is one of them which is very hot
in the markets now a days.
So all the Microsoft Techies are looking forward to get in to this new technology as
it helps them to get new job, to improve there technical skills and be updated with
the current industry standards and requirements.
This is the small initiation in this regards in form of a technical posts.
This article will describe about the MVC with Razor Engine
(MVC 3), about how to create the Controller classes,

Model classes and generate the Views automatically through the Razor Engine.
The article is written with all the steps used to create the MVC3 application
with ASP.Net.
Hope this article will be useful for those who are looking forward to create
the applications in MVC3 (MVC with Razor) pattern.
Please go through the below link to get the details about creating the
MVC3 application in ASP.Net:
http://www.dotnetspider.com/resources/44324-MVC3-MODEL-VIEW-CONTROLLERA-NEW-MVC-FRAMEWORK-WITH-RAZOR-ENGINE-BY-MICROSOFT.aspx

5 January 2013

Update Config file settings Automatically using Windows


Application
Hi Friends,
Sometimes we need to search for the application or the code snippet which
will work as per our requirements- Like update the configuration file
automatically. Because this is the tedious task to update the config file
manually and we want there should be a simple application where I can
enter the server name, database name, user id and password and click on
update should update our configuration file automatically.
So now nothing to worry and this article is all about that. This article will
describe mainly about the updation of Configuration file
(App.Config or Web.Config) settings by using the Windows Application.
This windows application will take the inputs from the user like Database
server name, user name, password etc and will update the configuration
file settings automatically without opening the config file.
This article will describe each and every steps of creating the windows
application and then code snippet so that we can use as is or can also
modify as per our requirements.
For the details of the Windows application creation and the code snippet,
you can follow my article:
http://www.dotnetspider.com/resources/44327-Windows-Application-UpdateConfiguration-File-Settings.aspx

Convert Numbers to Spellings- A C# Windows Application


Hai Friends,
This article is the small windows application developed in C# to convert the
numbers to spellings. This article also explains about each and every steps to

create the application with source code and creating the setup so that it can be run
on any machine just by copying and pasting of the setup file. The end user canenter
any number in the given textbox and click on the Convert to Spelling button. The
converted spellings will be displayed in the label. The Program is written in such a
way that it can handle the negative numbers also.The validation part is also
included in the program so that it will allow the user to accept only the numbers.
You can go through the below link for the detailed explanation of the application
including the setup
file:
Convert Numbers to Spellings- C# Windows Application

18 most common validation scripts to validate the Controls in


ASP.Net
Hai Friends,
Many times, we search in the Google to get the correct validations expression to
validate our textboxes. And its true that we get various links where others have
given their own validations expressions and controls using some scripts, regular
expressions etc.
Then we implement those expressions and at the end, we found that its not
working and again we start our search for the next link. It becomes very
complicated whenever we have to fix the validation issue in a very small time and
then we didnt get the correct expression.
So dear folks, now nothing to worry as I have created a CommonScript.js file which
contains the validation expression and they all are tested and in my project.
Like you, I also did the same and finally got this file which contains all the general
use validation expressions to validate our controls. This CommonScript.js file can be
modified as per your requirements like changing the message, modifying the scripts
etc.
You can go through the below link for the detailed description:
http://www.dotnetspider.com/resources/43752-most-common-validation-scriptsvalidate.aspx

24 March 2012

How to write the connection string and place it on to web.config


file
Hai Friends,

Today I was thinking that many times, we are having doubt in writing the
connection string in the web.config file. Whether the connection string is correct or
not? Is it case sensitive? Is the User Id or userid is correct? Can we write pwd in
place of password or Password?
As we can't check it in compile time, so all the error we get at the run time and
then we try to replace the attributes of confile file by making the cap-locks to small
or vice versa.
So I though to write an article which will be useful for we all who are working in
Microsoft Technologies with the database.
As it will help to create all type of connection strings for their respective providers,
so we need not to worry that it is applicable only to SQL Server.
You can go through the below link for the details with the screenshots where i have
explained that how you can create and test your connection string before putting in
the configuration file.
http://www.dotnetspider.com/resources/43107-How-write-connection-stringplace.aspx
Hope it will help to all the members...
Cheers!!!

18 March 2012

Creating Code Snippet with the Shortcut in Visual Studio 2010


Hai friends,
Today i was thinking that lot many times we gets fed-up with writing lot of duplicate
code so can't we create such type of shortcut so that no need to write the whole
code and we can do it with a small shortcut. Then I created a Code snippet for the
header of the files which will write the below stuff for me by just writing a small
shortcut FHC and there are few place holders which we need to write it and its
done:
/==================================================
//
CTSInvoiceBO.cs
//
//
This file is the code for Business Objects of CTS invoice.
//-----------------------------------------------------------------------//
//
Modification Control Log
//

// Date
By Version Description
// 03/18/2012 PA 1.0
Business Objects of CTS invoice
//
//
//==================================================
Then i created a snippet file and added to my visual studio IDE and now i don't
need to write all this code manually. There are few place holders which we need to
update and rest all code and other format will be done automatically.
Guys you can follow the below link where you can get the detailed description of
how we can create this Code snippet and how can we attach it with our Visual
Studio IDE and also how to create the shortcut's for it.

http://www.dotnetspider.com/resources/43654-Creating-Code-snippet-file-withshortcut.aspx.

Hope it will be helpful for most of the programmer who work in the maintenance
projects where they need to define such kind of header for the file..
Cheers!!!

29 November 2011

Checkboxes in the GridView


Hi Friends,
Today i was thinking about some small JavaScript code regarding the check boxes checked
status inside the GridView and then i did some R&D and implemented the code for the
Select All/ Unselect All link buttons.
Hope this will be useful for us for our development environment.
Please follow the link below for the detailed description and the Code snippet which can be
very useful while implementing the code.
http://www.dotnetspider.com/resources/43376-Smallest-JavaScript-Code.aspx

Layer Over LINQ


Hai Friends,
This post contains the details about a new data-access component on top of entity
framework. So due to this reason, it can improve the performance of the application as well
as the productivity of the developer to develop the application.

It has mainly 5 features:


Eliminate Linq to Entity Limitations
Powerful dynamics query operators.
Decouple from the data.
Reusable query fragments.
Automatic Linq query compilation.
These are the good features it has.
For the more details, you can visit the below link:
https://www.layeroverlinq.com/

15 September 2011

3-Tier Architecture
Hai Friends,
This is the post which will define the small demo regarding the 3-tier architecture where i
have explained all the layers- Application layer, Business Logic Layer and Data Access Layer
and their interaction to perform the architecture of tried.
See the below link:
http://www.dotnetspider.com/forum/ViewForum.aspx?ForumId=295547&
Hai Friends,
As we know in ASP.Net, that there is no Built in control in which can display only the time
(We have datetime picker in windows application where we can choose the enum value as
time only to show the time).
So in this article we will take help of ASP.Net Dropdown list to show the time only to fulfill
our requirements.
See the below link:
http://www.dotnetspider.com/resources/43254-ASP-Net-Display-only-time-dropdownlist.aspx

Date-Time functions
Hai Friends,

This article will describe all the date time functions which are introduced in the

latest version of SQL Server (SQL Server 2008R2) including all the previous
functions.
This post is useful to all those who work in Sql server database domain.
See the link below:
http://www.dotnetspider.com/resources/43248-Date-Time-Functions-SQL-ServerR.aspx

9 September 2011

N-Tier Architecture
Hai Friends,

This is the post which is showing the n-tier architecture using the GridView implementation.

Here i am showing mainly 4 layers 1.


2.
3.
4.

Application layer/UI layer


Business Object layer
Business Logic Layer
Data Access layer

Here in this article I am showing how these layers interact with each other through code
implementation.
It will be useful for all those who are new learner of the architectures.

See the link below:


http://www.dotnetspider.com/forum/294982-Hoe-write-gridview-control-using-thretier.aspx

31 August 2011

Shortcuts in .Net 2010


Hai Friends,

This is article which is very useful in day-to-day coding implementation for those who are in
Microsoft .Net technology and using Visual studio for their development.

This article contains all the shortcuts which can be used while writing the code in .Net. It
includes all the shortcuts which can really increase the utilization of the resource and can
improve the performance.
Now you dont need to remember all the syntax which is required to write the loops,
properties, events, delegates, dependency properties etc.
So use this resource and improve the productivity.

See the link:


http://www.dotnetspider.com/resources/43223-Code-Shortcuts-Visual-Studio.aspx

3 small things in C# code


1. Null Coalescing Operator (??)
A new operator can be used which can be shortcut of ternary operator to check the null value:
Ternary operator (?:):
string empName = (value != null) ? value : string.Empty;
we can write it using null-coalescing operator (??):
string empName = value ?? string.Empty;
2. The As Cast
we might have seen the code something like:
if (customer is DeluxCustomer)
{
var dCust = (DeluxCustomer)customer
// ...
}
This is redundant because we are checking the type twice. Once in the is check and once in the cast.
We can use as operator in place. This will cast the type if the types are compatible, or return null if not:
var dCust = customer as DeluxCustomer;
// ... we can write if condition to check for null
}
we can avoid double-checking the type.
3. Auto-Properties
This is the new concept to define the properties in C#: we can define the auto-property without much code :
public class Employee
{
public int ID { get; set; }
public string name { get; set; }

What is an application server?


As defined in Wikipedia, an application server is a software engine that
delivers applications to client computers or devices. The application server runs your server
code. Some well known application servers are IIS (Microsoft), WebLogic Server (BEA),
JBoss (Red Hat), WebSphere (IBM).

Compare C# and VB.NET


A detailed comparison can be found over here.

What is a base class and derived class?


A class is a template for creating an object. The class from which other classes derive
fundamental functionality is called a base class. For e.g. If Class Y derives from Class X,
then Class X is a base class.

The class which derives functionality from a base class is called a derived class. If Class Y
derives from Class X, then Class Y is a derived class.

What is an extender class?


An extender class allows you to extend the functionality of an existing control. It is used in
Windows forms applications to add properties to controls.
A demonstration of extender classes can be found over here.

What is inheritance?
Inheritance represents the relationship between two classes where one type derives
functionality from a second type and then extends it by adding new methods, properties,
events, fields and constants.

C# support two types of inheritance:

Implementation inheritance

Interface inheritance

What is implementation and interface inheritance?


When a class (type) is derived from another class(type) such that it inherits all the members
of the base type it is Implementation Inheritance.
When a type (class or a struct) inherits only the signatures of the functions from another
type it is Interface Inheritance.
In general Classes can be derived from another class, hence support Implementation
inheritance. At the same time Classes can also be derived from one or more interfaces.
Hence they support Interface inheritance.
Source: Exforsys.

What is inheritance hierarchy?


The class which derives functionality from a base class is called a derived class. A derived
class can also act as a base class for another class. Thus it is possible to create a tree-like
structure that illustrates the relationship between all related classes. This structure is known
as the inheritance hierarchy.

How do you prevent a class from being inherited?

In VB.NET you use the NotInheritable modifier to prevent programmers from using the class
as a base class. In C#, use the sealed keyword.

When should you use inheritance?


Read this.

Define Overriding?
Overriding is a concept where a method in a derived class uses the same name, return type,
and arguments as a method in its base class. In other words, if the derived class contains
its own implementation of the method rather than using the method in the base class, the
process is called overriding.

Can you use multiple inheritance in .NET?


.NET supports only single inheritance. However the purpose is accomplished using multiple
interfaces.

Why dont we have multiple inheritance in .NET?


There are several reasons for this. In simple words, the efforts are more, benefits are less.
Different languages have different implementation requirements of multiple inheritance. So
in order to implement multiple inheritance, we need to study the implementation aspects of
all the languages that are CLR compliant and then implement a common methodology of
implementing it. This is too much of efforts. Moreover multiple interface inheritance very
much covers the benefits that multiple inheritance has.

What is an Interface?
An interface is a standard or contract that contains only the signatures of methods or
events. The implementation is done in the class that inherits from this interface. Interfaces
are primarily used to set a common standard or contract.

When should you use abstract class vs interface or What is the difference between
an abstract class and interface?
I would suggest you to read this. There is a good comparison given over here.

What are events and delegates?


An event is a message sent by a control to notify the occurrence of an action. However it is
not known which object receives the event. For this reason, .NET provides a special type
called Delegate which acts as an intermediary between the sender object and receiver
object.

What is business logic?


It is the functionality which handles the exchange of information between database and a
user interface.

What is a component?
Component is a group of logically related classes and methods. A component is a class that
implements the IComponent interface or uses a class that implements IComponent
interface.

What is a control?
A control is a component that provides user-interface (UI) capabilities.

What are the differences between a control and a component?


The differences can be studied over here.

What are design patterns?


Design patterns are common solutions to common design problems.

What is a connection pool?


A connection pool is a collection of connections which are shared between the clients
requesting one. Once the connection is closed, it returns back to the pool. This allows the
connections to be reused.

What is a flat file?


A flat file is the name given to text, which can be read or written only sequentially.

What are functional and non-functional requirements?


Functional requirements defines the behavior of a system whereas non-functional
requirements specify how the system should behave; in other words they specify the quality
requirements and judge the behavior of a system.
E.g.
Functional - Display a chart which shows the maximum number of products sold in a region.
Non-functional The data presented in the chart must be updated every 5 minutes.

What is the global assembly cache (GAC)?


GAC is a machine-wide cache of assemblies that allows .NET applications to share libraries.
GAC solves some of the problems associated with dlls (DLL Hell).

What is a stack? What is a heap? Give the differences between the two?
Stack is a place in the memory where value types are stored. Heap is a place in the memory
where the reference types are stored.

Check this link for the differences.

What is instrumentation?
It is the ability to monitor an application so that information about the applications
progress, performance and status can be captured and reported.

What is code review?


The process of examining the source code generally through a peer, to verify it against best
practices.

What is logging?
Logging is the process of persisting information about the status of an application.

What are mock-ups?


Mock-ups are a set of designs in the form of screens, diagrams, snapshots etc., that helps
verify the design and acquire feedback about the applications requirements and use cases,
at an early stage of the design process.

What is a Form?
A form is a representation of any window displayed in your application. Form can be used to
create standard, borderless, floating, modal windows.

What is a multiple-document interface(MDI)?


A user interface container that enables a user to work with more than one document at a
time. E.g. Microsoft Excel.

What is a single-document interface (SDI) ?


A user interface that is created to manage graphical user interfaces and controls into single
windows. E.g. Microsoft Word

What is BLOB ?
A BLOB (binary large object) is a large item such as an image or an exe represented in
binary form.

What is ClickOnce?
ClickOnce is a new deployment technology that allows you to create and publish selfupdating applications that can be installed and run with minimal user interaction.

What is object role modeling (ORM) ?


It is a logical model for designing and querying database models. There are various ORM
tools in the market like CaseTalk, Microsoft Visio for Enterprise Architects, Infagon etc.

What is a private assembly?


A private assembly is local to the installation directory of an application and is used only by
that application.

What is a shared assembly?


A shared assembly is kept in the global assembly cache (GAC) and can be used by one or
more applications on a machine.

What is the difference between user and custom controls?


User controls are easier to create whereas custom controls require extra effort.
User controls are used when the layout is static whereas custom controls are used in
dynamic layouts.

A user control cannot be added to the toolbox whereas a custom control can be.
A separate copy of a user control is required in every application that uses it whereas since
custom controls are stored in the GAC, only a single copy can be used by all applications.

Where do custom controls reside?


In the global assembly cache (GAC).

What is a third-party control ?


A third-party control is one that is not created by the owners of a project. They are usually
used to save time and resources and reuse the functionality developed by others (thirdparty).

What is a binary formatter?


Binary formatter is used to serialize and deserialize an object in binary format.

What is Boxing/Unboxing?
Boxing is used to convert value types to object.
E.g. int x = 1;
object obj = x ;
Unboxing is used to convert the object back to the value type.
E.g. int y = (int)obj;
Boxing/unboxing is quiet an expensive operation.

What is a COM Callable Wrapper (CCW)?


CCW is a wrapper created by the common language runtime(CLR) that enables COM
components to access .NET objects.

What is a Runtime Callable Wrapper (RCW)?


RCW is a wrapper created by the common language runtime(CLR) to enable .NET
components to call COM components.

What is a digital signature?


A digital signature is an electronic signature used to verify/gurantee the identity of the
individual who is sending the message.

What is garbage collection?


Garbage collection is the process of managing the allocation and release of memory in your
applications. Read this article for more information.

What is globalization?
Globalization is the process of customizing applications that support multiple cultures and
regions.

What is localization?
Localization is the process of customizing applications that support a given culture and
regions.

What is MIME?
The definition of MIME or Multipurpose Internet Mail Extensions as stated in MSDN is MIME
is a standard that can be used to include content of various types in a single message. MIME
extends the Simple Mail Transfer Protocol (SMTP) format of mail messages to include
multiple content, both textual and non-textual. Parts of the message may be images, audio,
or text in different character sets. The MIME standard derives from RFCs such as 2821 and
2822. Quoted from here.

You might also like