Tuesday, February 15, 2011

FAQ --- Part 1

Event: An event is a message sent by an object to signal the occurance of an action. The action could be caused by the user interaction such as a mouse click or it could be triggered by some other program.

1. The object that raises the event is called the event sender.
2. The object that captures the event and responds to it is called the event receiver.

In event communication, the event sender class does not know which object or method will receive (handle) the events it raises. What is needed is an intermediary (or pointer-like mechanism) between the source and the receiver. The .NET Framework defines a special type (Delegate) that provides the functionality of a function pointer.

Delegates: A delegate is a class that can hold a reference to a method. Unlike other classes, a delegate class has a signature, and it can hold references only to methods that match its signature.

There are three steps in defining and using delegates:
Declaration
Instantiation
Invocation

A very basic example (SimpleDelegate1.cs):

using System;

namespace Akadia.BasicDelegate
{
// Declaration
public delegate void SimpleDelegate();

class TestDelegate
{
public static void MyFunc()
{
Console.WriteLine("I was called by delegate ...");
}

public static void Main()
{
// Instantiation
SimpleDelegate simpleDelegate = new SimpleDelegate(MyFunc);

// Invocation
simpleDelegate();
}
}
}

Compile an test:

# csc SimpleDelegate1.cs
# SimpleDelegate1.exe
I was called by delegate ...



Delegates in 1.1
///
/// Declaring a Class with Sum Method
///
public class clsDelegate
{
public int Sum(int a, int b)
{
return a + b;
}
}

// Delegate Declaration
public delegate int SumDelegate(int x,int y);

private void btnSubmit_Click(object sender, EventArgs e)
{
// Delegate Initialization
SumDelegate obj = new SumDelegate(new clsDelegate().Sum);

// Invoking Delegate
MessageBox.Show("Sum: " + obj(2 ,3).ToString());
}

Delegates in 2.0
public delegate int AddDelegate(int a, int y);
private void btnSubmit1_Click(object sender, EventArgs e)
{
AddDelegate obj= delegate(int x,int y) {return x + y;};
MessageBox.Show(obj(5,7).ToString());
}


Anonymous Method
Below is an exapmle of using an anonymous method.

public delegate int ChangeInt(int x);

ChangeInt myDelegate = new ChangeInt(
delegate(int x)
{
return x * 2;
}
);


Understainding Lambda Expression:
It is a simplest form for writing an anonymous method:
ChangeInt myDelegate = x => x * 2;

In case we have more than 1 parameter:
If you have a delegate that takes two arguments:

// Defines a delegate that takes two ints and returns an int
public delegate int MultiplyInts(int arg, int arg2);

You can declare and initialize a delegate:
MultiplyInts myDelegate = (a, b) => a * b;


In case delegate return type is void,but have a parameter then Lambda expression will be:
// Defines a delegate that takes a string and returns void
public delegate void OutputToConsole(string arg);

static void Main(string[] args)
{
OutputToConsole o = a => {
Console.WriteLine(a);
};
o("Hello, World");
}


In case delegate have returns void and takes no arguments, it results in interesting syntax:
// Defines a delegate that takes no arguments and returns void
public delegate void OutputHelloToConsole();

static void Main(string[] args)
{
OutputHelloToConsole o = () =>
{
Console.WriteLine("Hello, World");
};
o();
}



Extension Method
Another new concept that comes with .NET 3.5 is the Extension methods. Now we can include our own custom methods in already defined objects. We can create static classes and include custom methods to objects. Extension method behavior is similar to that of static methods. You can declare them only in static classes. To declare an extension method, you specify the keyword this as the first parameter of the method. Let us look at the following example:
public static class ExtensionMethods
{
public static int ToInt32Extension(this string s)
{
return Int32.Parse(s);
}
}

If we include the above class namespace to our application, any string variable will have ToInt32Extension method.

This function takes 0 arguments and passes the string to s. We can also pass parameters just like below:
public static class ExtensionMethods
{
public static int ToInt32ExtensionAddInteger(this string s,int value)
{
return Int32.Parse(s) + value;
}
}

Here integer value is also passed.
string s = "10";
s.ToInt32Extension(); it'll return int data as declared above in function.


Anonymous Type
Annonymous types introduced with .NET can create object without even declaring the classes. The members of the
anonymous types are implicitely defined during compilation

var x = new { Name ="AA", Age =30, ... };
This would create a new object of annonymous type.
when we check it like x. then it'll list proerties listed above in x.


Meaning of VAR
Var is a new keyword added in .NET 3.5. This is called Implicit Type Variable. During runtime it automatically
assigns its type of the variable based on the object if finds.

var x = 10 // implies the variable is of integer type
var x = new list(); // Means x holds list of employees

var is very useful when working with annonymous typed just introduced. It assigns the type of the variable based on
the type of the object passed in, so there is no difference of doing List() x = new List() and doing var x = new List() as in both the case the type of the variable x is always get to List.

Only restriction is we cannot define members of var type.

Sunday, January 9, 2011

Remoting & Webservice

Process:
1. It is an instance of the computer program that is being excuted.
2. It is used as a secuirty boundaries.
3. One process has its own virtual memory and does not overlap the other process virtual memory. due to this one process cannot crash the other process.
4. Any Problem or error in one process does not affect the other process.

Application Domain:
1. It is used as a security boundary in which .Net application executes.
2. In application domain multiple applications can run in same process without influencing each other.
3. Any problem or error in one application domain does not affect the other applicaiton domains.
4. One Process can have multiple applicaiton domains.

Note: To invoke method in a object running in different applicaiton domain .Net remoting is used.

What are two different types of remote object creation mode in .Net?
There are two different ways in which object can be created using Remoting.
1. SAO (Server activated objects) also called as Well-Known call mode.
2. CAO (Client activated objects)

1. SAO: It has two modes "Single Call" & "Singleton".
a. Single call: In it object is created with every method call thus making the object stateless.
b. Singleton: In it object is created only once and the object is shared with all clients.

2. CAO: These are stateful as compared to SAO. In it the creation request is sent from client side. Client holds a proxy to the server object created on server.

Monday, January 3, 2011

Constructors in C#

A constructor is a special method or function used to initialize & create the object of a class.

Types Of Constructory:
Constructor can be of two types
1. Class Constructor (Static Constructors)
2. Instance Constructor (Non Static Constructors)


1. Class Constructor (Static Constructor): A static constructor is used to initialize any static data, or to perform a particular action that needs performed once only. It is called automatically before the first instance is created or any static members are
referenced.

Static constructors have the following properties:
1. A static constructor does not take access modifiers or have parameters.
2. A static constructor is called automatically to initialize the class before the first instance is created or any static members are referenced.
3. A static constructor cannot be called directly.
4.The user has no control on when the static constructor is executed in the program.
5. A typical use of static constructors is when the class is using a log file and the constructor is used to write entries to this file.
6. Static constructors are also useful when creating wrapper classes for unmanaged code, when the constructor can call the LoadLibrary method.


2. Instance Constructor (Non-static constructor): These constructors are normally used to initialize the mermbers and to create the constructor of class.

1. Public
A class constructor is by default public.

2. Private
When we create a private constructor, we cannot create object of the class directly from a client. Also we cannot inherit this class to another class.So by this way we can add security to class that it cannot be instantiated. Also a common use for a private constructor is to implement the singleton pattern.

3. Protected
When we declare a constructor protected then only drive class can create instance of that class.


Copy Constructor:
A copy constructor is a special constructor used to create a new object as a copy of an existing object. This constructor takes a single argument: a reference to the object to be copied. Unlike some languages, C# does not provide a copy constructor. If you create a new object and want to copy the values from an existing object, you have to write the appropriate method yourself.


class Person
{
private string name;
private int age;

// Copy constructor.
public Person(Person previousPerson)
{
name = previousPerson.name;
age = previousPerson.age;
}

// Instance constructor.
public Person(string name, int age)
{
this.name = name;
this.age = age;
}

// Get accessor.
public string Details
{
get
{
return name + " is " + age.ToString();
}
}
}

class TestPerson
{
static void Main()
{
// Create a new person object.
Person person1 = new Person("George", 40);

// Create another new object, copying person1.
Person person2 = new Person(person1);
System.Console.WriteLine(person2.Details);
}
}


Shallow Copy Vs Deep Copy:
Shallow copy copies the structure of the object, deep copy copies structure as well as data.

Dataset.Clone()- Shallow Copy
Dataset.Copy() -- Deep Copy


Monday, December 20, 2010

Const vs ReadOnly Property

Const
1. It is defined at the compile time and cannot be changes at runtime.
2. Constant are declared as a field, using the const keyword and must be initialized as they are declared.
3. Const value cannot be changed in anywhere in the application else it'll cause a compiler error.
4. Const must be value type, an enumeration, a string literal or a refrence.
5 Since classes or structures are initialized at run time with the new keyword, and not at compile time, we can't set a constant to a class or structure.
6. Constants can be marked as public, private, protected, internal, or protected internal.
7. Constant can be accessed directly by class name like static variables.

public class MyClass
{
public const double xyz=2;
}


Static Read Only Property
1. Readonly member can be initialized at runtime, in a constructor as well being able to be initialized as they are declared.
2. Because a readonly field can be initialized either at the declaration or in a constructor, readonly fields can have different values depending on the constructor used.
3. Readonly members are not implicitly static, and therefore the static keyword can be applied to a readonly field explicitly if required.
4. A readonly member can hold a complex object by using the new keyword at initialization.

public class MyClass
{
public readonly double PI;
public MyClass()
{
PI = 3.14159;
}
}

Wednesday, October 20, 2010

FAQ

What is an Architecture?
Architecture can be defined as set of rules and patterns.
1. Partioning the problem to built into discrete pieces.
2. Techniques used to create interface between these pieces.
3. Techniques used to manage overall structure and flow.
4. Appropriate use of development and delivery approaches, techniques and tools.

It is important bcz
1. Control complexity.
2. Enable re-use

What is an Object Oriented Programming?
OOPs:- Its a programming technique based on Objects. It consits of class & their object. A class is a combination of
data members and member functions.
Class:- Its a real life entity. It is a combination of data member & member functions.

Objects:- It is an instance of class. for ex;- Hand is a class and left hand & right hand are its objects.
OR
OOP is a software programing concept that allow developer to split program in building block known as object to reduce the complexity, reusability.


OOPs Featuers:
1. Encapsulation: Wrapping up of data members and member functions under one name is Ecapsulation.
OR
IT is the process of combining real time object data, member and its different action on data within a single unit


2. Abstraction: Abstraction means to show only the necessary details of the object.
3. Polymorphism: It means methods with same name but with different arguments.

Access Modifiers

1. Public: Can be access within class n outside class.

2. Private: can be accessed only within class or method.

3. Protected: Can be accessed within class and in drived class.

4. Internal: Can be accessed within current assembly.

5. Protected Internal: Can be accessed within current assembly and drived class in other assembly.

Note: Elements defined in a namespace cannot be explicitly declared as private, protected, or protected internal.



Method Overriding / Virtual Methods
Virtual Method: A virtual property or method has an implementation in the base class, and can be overriden in the
derived classes. It cannot be private and needs to be public always.
public Virtual read()

Override Methods: Overriding is the action of modifying or replacing the implementation of the parent class with a new
one.
public Override read()

Note:
1. It is not necessary that a virtual method has override method, but a override method should always have a
virtual method declare in base class.

2. While overriding a virtual method , its access modifiers needs to be same as in base class.


Sealed Keyword
Sealed Class/Method: Method or class declared with sealed keyword cannot be overridden.


Abstract Class:
1. Abstract class cannot be instantiated
2. It contains both abstract/non abstract method.
3. It must be inherit in other class
4. Access Modifiers: public, private, protected, internal , protected internal.
5. Abstract method declared with abstract keyword.and needs to be always public.
6. All abstract method needs to be define in derived class when we inherit it.

Interface:
Interface separates the implementation and defines the structure
1. Must implement
2. contains only method declaration and no defination.
3. Modifiers: always public, no need to define.
4. pure abstract class
5. we can define properties, methods & events in it.
6. Interface increase security by hiding the implementation

Implicit conversion: Converstion that done internally, like assigning value of int to bigint
Explicit Conversion: When we convert a type to another using Convert class.

SOA: A service-oriented architecture is essentially a collection of services. These services communicate with each
other. The communication can involve either simple data passing or it could involve two or more services coordinating
some activity

Difference Between Interface & Abstract class
1. Interface has no implementation, but they have to be implemented.
Abstract class’s methods can have implementations and they have to be extended.
2. Interface can inherit more than one interfaces
Abstract class can implement more than one interfaces, but can inherit only one class

Convert.ToString vs .tostring():- “Convert” function handles NULLS while “.ToString()”
does not it will throw a NULL reference exception error

Garbage Collector: The garbage collector checks to see if there are any objects in the heap that are no longer being
used by the application. If such objects exist, then the memory used by these objects can be reclaimed. (If no more
memory is available for the heap, then the new operator throws an OutOfMemoryException.)

Value Types:
bool
byte
char
decimal
double
enum
float
int
long
sbyte
short
struct
uint
ulong
ushort

Refrence Types:
class
interface
delegate
object
string

Stack: Its a value type, store value types and pointers.
Heap: Its a refrence type

Structures:
1. Its simple userdefined type.
2. Struct are lightweight objects & alternative of class.
3. They are created on stack and its easy to create struc variables and destroy them.
4. As stored in stack, so fast in performance then class.
5. They supports access modifiers, constructors,indexers,methods, fields, nested types,operators & properties.
6. Protected and Protected internal access modifiers are not supported by struct.
7. structures do not support compile-time initialization of instance fields, they cannot derive from
anything other than System.ValueType and they cannot be the base of another class.

ie: In structure we cannot initialize a variable outside contructor, It doesnt have initializer field. If we want to assign a value to variable then we have

to do it in constructor.


8. They may implement an interface.
9. They can be instantiated without using a new operator. but we can use new too.
10. We cannot override default constructor of structure with no parameters.
-----------------------------------------------
protected void Page_Load(object sender, EventArgs e)
{
abc a = new abc(2 , 4);
lblSum.Text = a.sum1().ToString();
}
public struct abc
{
public int sum;
public abc(int a, int b)
{
sum = a + b;
}
public int sum1()
{
return sum;
}
}
}
------------------------------------------------
Structure with Interface
------------------------------------------------
public interface aa
{
// no access specifier is given in interface methods (by defualt they are public)

double Increment();
void DisplayValues();
}

public struct Student : aa
{
int id;
int zipcode;
double salary;

public Student(int id, int zipcode, double salary)
{
this.id = id;
this.zipcode = zipcode;
this.salary = salary;
}

public void DisplayValues()
{
Console.WriteLine("ID: " + this.id.ToString());
Console.WriteLine("Zipcode : " + this.zipcode.ToString());
Console.WriteLine("Salary : " + this.salary.ToString());
}

public double Increment()
{
return(this.salary += 1000.00);
}
}
-------------------------------------------------
New(As Keyword): To create instance of a class.
New (As Modifier): To hide the base class method;
public class MyBaseC
{
public int x;
public void Invoke() {}
}
public class MyDerivedC : MyBaseC
{
new public void Invoke() {}
}
------------------------------------------------
Base Class keyword:
Calling methods: Using the base keyword, you can access any of a base class public or protected class members.
public class Parent
{
public void print()
{
Console.WriteLine("I'm a Parent Class.");
}
}
public class child:parent
{
public new void print()
{
base.print();
}
}
--------
Calling Constructor:
public class Parent
{
public Parent(string myString)
{
parentString = myString;
Console.WriteLine(parentString);
}
}
public class Child : Parent
{
public Child() : base("From Derived")
{
Console.WriteLine("Child Constructor.");
}
}
-------------------------------------------------------------------------
Early Binding: Properties and method can be identified by compile time.
ex; overloading, methods can be identified at compile time.
Late Binding: Properties and method can be identified by Run time.
ex: Overriding, methods can be identified at run time.
------------------------------------------------------------------------
Static Class: A class can be declared static, indicating that it contains only static members. It is not possible to
create instances of a static class using the new keyword. Static classes are loaded automatically by the .NET
Framework common language runtime (CLR) when the program or namespace containing the class is loaded.
Use a static class to contain methods that are not associated with a particular object. For example, it is a common
requirement to create a set of methods that do not act on instance data and are not associated to a specific object in
your code. You could use a static class to hold those methods.
The main features of a static class are:
They only contain static members.
They cannot be instantiated.
They are sealed.
They cannot contain Instance Constructors (C# Programming Guide).
Static classes are sealed and therefore cannot be inherited. Static classes cannot contain a constructor, although it
is still possible to declare a static constructor to assign initial values or set up some static state. For more
information, see Static Constructors (C# Programming Guide).

Static Constructor: A static constructor is used to initialize any static data, or to perform a particular action that

needs performed once only. It is called automatically before the first instance is created or any static members are
referenced.

Static constructors have the following properties:

1. A static constructor does not take access modifiers or have parameters.
2. A static constructor is called automatically to initialize the class before the first instance is created or any
static members are referenced.
3. A static constructor cannot be called directly.
4.The user has no control on when the static constructor is executed in the program.
5. A typical use of static constructors is when the class is using a log file and the constructor is used to write
entries to this file.
6. Static constructors are also useful when creating wrapper classes for unmanaged code, when the constructor can call
the LoadLibrary method.
http://msdn.microsoft.com/en-us/library/79b3xss3(VS.80).aspx
---------------------------------------------------------------------------------------

Security:

Levels of Security:
1. Authentication: To check the user identity.
2. Autorization: Authorization is the process of determining the rights and restrictions assigned to an authenticated
user.
3. Confidentiality: While the user is working with the application, you have to ensure that
nobody else is able to view sensitive data processed by the user. Therefore, you have to encrypt
the channel between the client’s browser and the web server. Furthermore, you possibly have
to encrypt data stored on the backend (or in the form of cookies on the client) if even database
administrators or other staff of the company where the web application is hosted may not view
the data.
4. Integrity: Finally, you have to make sure data transmitted between the client and the server is
not changed by unauthorized actors. Digital signatures provide you with a way to mitigate this
type of threat.
----------------------------------------------------------------------------------------

Response.write / Response.Output.write

Response.Write("This is simple String");
1. Unformatted Output.
2. It writed the text stream.

Response.Output.Write("Rocky is {0} at {1:d},"cool",DateTime.Now")
1. Formatted Output.
2. It writes the HTTP Output stream.


Typed/Untyped Dataset

Typed Dataset
A typed DataSet is DataSet that applies the information stored in XSD to generate a typed class. Information from the schema that

contains the tables, columns, and rows is stored in a XSd file

Advantage:
1. Typed datsets in some way reduce the overhead and might boost the performance as they already have the table schema with them
2. They reduce the chances of errors.
3. You can add validation code for the desired field in case of Typed datasets
4. They provide type-safe operations.
5. Any type mismatch erros can be caught at compile time instead of run time.
6. You can refer to the tables and columns with their respective name.No need to refer as tables(0) or column(0).

Untyped Dataset
The normal DataSet is the one which we create programatically are the untyped datasets ,as the information is extracted during
runtime .

Advantage:
1. if your table structure change frequently then u should use untyped dataset because to acces typed dataset changes u again need
modify the XSD file





---------
MISC QUES

What is an assembly?

Asp.net 3.5 Life Cycle?

Singleton class?

String vs String Builder?

Array vs ArrayList?

response.output.write vs response.write?
What is GAC? How to add or remove assembly from GAC?

event fire during page postback?

Authentication vs autorization?

Type Vs Untype Dataset?

Clone vs copy?

static vs private constructor?

web config settings?

What is ISAPI?

What is diff between cookies?

Session Storage In Proc,Out Proc, State server?



SQL Server
2 Largest Salary?
Having & Groupby?
Duplicate rows in table?
Select all employee whole dont have phone No?
Select Employee name having more then 1 phone no?
diff between union n union all?
remove column in table?
Trigger
Char varchar, Nvarchar?
Function vs SP?
Max number of parameter in SP? 2100 parameter in sql 2008. 1024 in SQL 2005,256 input and 256 output in sql 2000
sql injetion and attack problem ?
249 nonclustorindex in a table