Sunteți pe pagina 1din 7

A clustered index is like the contents of a phone book.

You can open the book at 'Hilditch,


David' and find all the information for all of the 'Hilditch's right next to each other. Here the
keys for the clustered index are (lastname, firstname).

This makes clustered indexes great for retrieving lots of data based on range based queries
since all the data is located next to each other.

Since the clustered index is actually related to how the data is stored, there is only one of
them possible per table (although you can cheat to simulate multiple clustered indexes).

A non-clustered index is different in that you can have many of them and they then point at
the data in the clustered index. You could have e.g. a non-clustered index at the back of a
phone book which is keyed on (town, address)

Imagine if you had to search through the phone book for all the people who live in 'London' -
with only the clustered index you would have to search every single item in the phone book
since the key on the clustered index is on (lastname, firstname) and as a result the people
living in London are scattered randomly throughout the index.

If you have a non-clustered index on (town) then these queries can be performed much more
quickly.

An index is used to speed up the performance of queries. It does this by reducing the number
of database data pages that have to be visited/scanned.

In SQL Server, a clustered index determines the physical order of data in a table. There can
be only one clustered index per table (the clustered index IS the table). All other indexes on a
table are termed non-clustered.

CREATE INDEX index_name


ON table_name (column1, column2, ...);

CREATE UNIQUE INDEX index_name


ON table_name (column1, column2, ...);

CREATE INDEX idx_lastname


ON Persons (LastName);

CREATE INDEX idx_pname


ON Persons (LastName, FirstName);

DROP INDEX table_name.index_name;

CREATE TABLE Persons (


ID int IDENTITY(1,1) PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
In SQL, a view is a virtual table based on the result-set of an SQL statement.

CREATE OR REPLACE VIEW [Current Product List] AS


SELECT ProductID, ProductName, Category
FROM Products
WHERE Discontinued = No;

DROP VIEW view_name;

SQL injection is a code injection technique that might destroy your database.

SQL injection is one of the most common web hacking techniques.

SQL injection is the placement of malicious code in SQL statements, via web page input.

The C-Sharp(C#) is the most powerful and famous programming language for application
development. This language is now widely used in different enterprise level application
development. This article describes some advance questions and answers in C#. These C#
questions will be very helpful for experience persons or experience developers. Hope it will
help you to build successful carrier.

What is attribute in C#?


An attributes is a declarative tag that is used to convey information about the behaviors of
various elements (classes, methods, assemblies, structures, enumerators, etc). it is access at
compile time or run-time. Attributes are declare with a square brackets [] which is places above
the elements.

[Obsolete(“Don’t use Old method, please use New method”, true)]

For example consider the bellow class. If we call the old method it will through error
message.

public class myClass


{
[Obsolete("Don't use Old method, please use New method", true)]
public string Old() { return "Old"; }
public string New() { return "New"; }
}

myClass omyClass = new myClass();


omyClass.Old();

Why attributes are used?


In a program the attributes are used for adding metadata, like compiler instruction or other
information (comments, description, etc).
What are the types of attributes?
The Microsoft .Net Framework provides two types of attributes: the pre-defined attributes and
custom built attributes. Pre-define attributes are three types:

 AttributeUsage
 Conditional
 Obsolete
This marks a program that some entity should not be used.

What is custom attributes?


The Microsoft .Net Framework allows creating custom attributes that can be used to store
declarative information and can be retrieved at run-time.

What is Reflection?
Reflection is a process by which a computer program can monitor and modify its own structure
and behavior. It is a way to explore the structure of assemblies at run time (classes, resources,
methods). Reflection is the capability to find out the information about objects, metadata, and
application details (assemblies) at run-time. We need to include System.Reflection namespace
to perform reflections in C#. For example consider the following C# codes, which will returns
some meta information’s.

public class MyClass


{
public virtual int Add(int numb1, int numb2)
{
return numb1 + numb2;
}
public virtual int Subtract(int numb1, int numb2)
{
return numb1 - numb2;
}
}

static void Main(string[] args)


{
MyClass oMyClass = new MyClass();
//Type information.
Type oMyType = oMyClass.GetType();
//Method information.
MethodInfo oMyMethodInfo = oMyType.GetMethod("Subtract");

Console.WriteLine("\nType information:" + oMyType.FullName);


Console.WriteLine("\nMethod info:" + oMyMethodInfo.Name);
Console.Read();
}

Why we need reflection in c#


Reflections needed when we want to determine / inspect contents of an assembly. For example:
at Visual Studio editor intelligence, when we type “.” (dot) before any object, it gives us all the
members of the object. This is possible for Reflection. Beside this we need reflection for the
following purposes:

 To view attribute information at run time


 To view the structure of assemblies at run time (classes, resources, methods)
 It allows dynamic/late binding to methods and properties
 In serialization, it is used to serialize and de-serialize objects
 In web service, it is used to create and consume SOAP messages and also to generate
WSDL
 Debugging tools can use reflection to examine the state of an object

What is dynamic keyword?


The dynamic is a keyword which was introduced in .NET 4.0. Computer programming
languages are two types: strongly typed and dynamically typed. In strongly types all types
checks are happened at compile time, in dynamic types all types of checks are happened at run
time.
For example consider the following code

dynamic x = "c#";
x++;

It will not provide error at compile time but will provide error at run time.

When to use dynamic?


The biggest practical use of the dynamic keyword is when we operate on MS Office.

What is the difference between reflection and dynamic?


Both Reflection and dynamic are used to operate on an object during run time. But they have
some differences:

 Dynamic uses reflection internally


 Reflection can invoke both public and private members of an object. But dynamic can
only invoke public members of an object

What is serialization?
When we want to transport an object through network then we need to convert the object into
a stream of bytes. Serialization is a process to convert a complex objects into stream of bytes
for storage (database, file, cache, etc) or transfer. Its main purpose is to save the state of an
object.
De-serialization is the reverse process of creating an object from a stream of bytes to their
original form.

What are the types of serialization?


The types of Serializations are given bellow:

 Binary Serialization
In this process all the public, private, read only members are serialized and convert into
stream of bytes. This is used when we want a complete conversion of our objects.
 SOAP Serialization
In this process only public members are converted into SOAP format. This is used in
web services.
 XML Serialization
In this process only public members are converted into XML. This is a custom
serialization. Required namespaces: System.Xml, System.Xml.Serialization.
Why serialization and de-serialization?
For example consider, we have a very complex object and we need XML format to show it on
HTML page. Then we can create a XML file in the disk, writes all the necessary data on the
XML file, and use it for the HTML page. But this is not good approach for large number of
users. Extra space is required; anyone can see the XML file which creates security issue. We
can overcome it by using XML serialization.

When to use serialization?


Serialization is used in the following purposes:

 To pass an object from on application to another


 In SOAP based web services
 To transfer data through cross platforms, cross devices

Give examples where serialization is used?


Serialization is used to save session state in ASP.NET applications, to copy objects to the
clipboard in Windows Forms. It is also used to pass objects from one application domain to
another. Web services uses serialization.

What is Generics?
Generics are the most powerful features introduced in C# 2.0. It is a type-safe data structure
that allows us to write codes that works for any data types.

What is a generic class?


A generic class is a special kind of class that can handle any types of data. We specify the data
types during the object creations of that class. It is declared with the bracket <>. For example
consider the following Comparer class, which has a method that compare two value and returns
as Boolean output.

public class Comparer<Unknown>


{
public bool Compare(Unknown t1, Unknown t2)
{
if (t1.Equals(t2))
{
return true;
}
else
{
return false;
}
}
}
Comparer<int> oComparerInt = new Comparer<int>();
Console.WriteLine(oComparerInt.Compare(10, 10));

Comparer<string> oComparerStr = new Comparer<string>();


Console.WriteLine(oComparerStr.Compare("jdhsjhds", "10"));

Why we should use generics?


Generic provides lot of advantages during programming. We should use generics for the
following reasons:
 It allows creating class, methods which are type-safe
 It is faster. Because it reduce boxing/un-boxing
 It increase the code performance
 It helps to maximize code reuse, and type safety

What is Collections in C#?


Sometimes we need to work with related objects for data storage and retrieval. There are two
ways to work with related objects. One is array and another one is collections. Arrays are most
useful for creating and working with a fixed number of strongly-typed objects. Collections are
enhancement of array which provides a more flexible way to work with groups of objects.

The Microsoft .NET framework provides specialized classes for data storage and retrieval.
Collections are one of them. Collection is a data structure that holds data in different ways.
Collections are two types. One is standard collections, which is found under
System.Collections namespace and another one is generic collections, which is found under
System.Collections.Generic namespace.The generic collections are more flexible and
preferable to work with data.
Some commonly used collections under System.Collections namespace are given bellow:

 ArrayList
 SortedList
 Hashtable
 Stack
 Queue
 BitArray

What is unsafe code?


In order to maintain security and type safety, C# does not support pointer generally. But by
using unsafe keyword we can define an unsafe context in which pointer can be used. The unsafe
code or unmanaged code is a code block that uses a pointer variable.

In the CLR, unsafe code is referred to as unverifiable code. In C#, the unsafe code is not
necessarily dangerous. The CLR does not verify its safety. The CLR will only execute the
unsafe code if it is within a fully trusted assembly. If we use unsafe code, it is our own
responsibility to ensure that the code does not introduce security risks or pointer errors.

What are the properties of unsafe code?


Some properties of unsafe codes are given bellow:

 We can define Methods, types, and code blocks as unsafe


 In some cases, unsafe code may increase the application’s performance by removing
array bounds checks
 Unsafe code is required in order to call native functions that require pointers
 Using unsafe code brings security and stability risks
 In order to compile unsafe code, the application must be compiled with /unsafe

Can unsafe code be executed in un-trusted environment?


Unsafe code cannot be executed in an un-trusted environment. For example, we cannot run
unsafe code directly from the Internet.
How to compile unsafe code?
For compiling unsafe code, we have to specify the /unsafe command-line switch with
command-line compiler. For example, to compile a program named “myClass.cs” containing
unsafe code the command line command is:

csc /unsafe myClass.cs

In Visual Studio IDE at first we need to enable use of unsafe code in the project properties.
The steps are given bellow:

 Open project properties


 Click on the Build tab
 Select the option “Allow unsafe code”

What is Pointer?
Pointer is a variable that stores the memory address of another variable. Pointers in C# have
the same capabilities as in C or C++. Some examples are given bellow:

int *i // pointer of an integer


float *f // pointer to a float
double *d // pointer to a double
char *ch // pointer to a character

Should I use unsafe code in C#?


In C#, pointer is really used and Microsoft disengaged to use it. But there are some situations
that require pointer. We can use pointer if required at our own risk. Some sonorous are given
bellow:

 To deal with existing structures on disk


 Some advanced COM or Platform Invoke scenarios that involve pointer
 To performance critical codes

S-ar putea să vă placă și