Net Interview Questions
Net Interview Questions
com for more downloads This PDF has sample questions which i
s extracted from my two books .NET Interview questions and SQL Server interview
questions. This PDF is only a small glimpse of the two books its much more that
what you see in this PDF. I have ensured that both the books are really at a ver
y cheap cost so that every one will be benefited. Any of my book do not exceed 2
00 INR. For more details mail at bpb@bol.net.in Second the books also have CD’ w
ith them which you will not CD’s get with this sample PDF PDF....But still if yo
u want to enjoy free who stops you.....Happy Job Hunting. How to buy the book
BPB has done a great job of making this book reach to places where i can hardly
imagine. But just incase its not near to your place mail bpb@bol.net.in. If you
are from India you can contact one of the shops below:MUMBAI-22078296/97/022-220
70989 KOLKATA-22826518/19 HYDERABAD-24756967,24756400 BANGALORE-25587923,2558464
1 1 AHMEDABAD-26421611 BHATINA(PUNJAB)-2237387, CHENNAI-28410796,28550491 DELHI/
NEW DELHI-23254990/91,23325760,26415092,24691288 Pakistan M/s. Vanguard Books P
Ltd, 45 The Mall, Lahore, Pakistan (Tel: 0092-42-7235767, 7243783 and 7243779 an
d Fax: 7245097) E-mail: vbl@brain.net.pk If you are not from india or pakistan :
Ray McLennan, director,Motilal (UK) Books of India,367 High Street. London Colne
y, St.Albans, Hertfordshire,AL2 1EA, U.K. Tel. +44 (0)1727 761 677,Fax.+44 (0)17
27 761 357,info@mlbduk.com,www.mlbduk.com
www.questpond.com
Want to buy from online :.NET Interview Questions From Prakash books http://www.
prakashbooks.com/details.php3?id=17875&c=Computer Books .prakashbooks.com/detail
s.php3?id=17875&c=Computer If you want to buy from Amazon http://www.amazon.co.u
k/exec/obidos/ASIN/8183330770/qid%3D1139594062/026-8105897.amazon.co.uk/exec/obi
dos/ASIN/8183330770/qid%3D1 7667603 SQL Server Interview Questions From Prakash
books http://www.prakashbooks.com/details.php3?id=19008&c=Computer Books .prakas
hbooks.com/details.php3?id=19008&c=Computer If you want to buy from Amazon http:
//www.amazon.co.uk/exec/obidos/ASIN/8183331033/qid%3D1136610981/026-1344994http:
//www.amazon.co.uk/exec/obidos/ASIN/8183331033/qid%3D1 .amazon.co.uk/exec/obidos
/ASIN/8183331033/qid%3D1 2263615#product-details If you want to purchase the boo
k directly through BPB Publication s delhi , India :bpb@bol.net or bpb@vsnl.com
Books written by Shivprasad Koirala -- .NET Interview questions -- SQL Server In
terview questions -- Java Interview questions -- How to prepare software quotati
on?.( This book is on estimation www.questpond.com as free download) you can get
it from www -- C# Projects -- Software testing Interview questions -- Understan
ding Hackers Mind You can order any of my books from bpb@bol.net.in
.NET Interview Questions Sample book
(Including SQL Server,UML,Architecture,Pr Server,UML,Architecture,Project ASP Ma
nagement , ASP.NET 2.0 , Sample pr project ,XML and General Interview Questions
) By:- Shivprasad koirala Mail:- shiv_koirala@yahoo.com
Happy job hunting.......................................
Do not forget that database is also important. Buy my SQL Server Interview quest
ions to crack any database related questions.
From the Author
First thing thanks to all those who have sent me complaints and also appreciatio
n for what ever titles i have written till today. But interview question series
is very near to my heart as i can understand the pain of searching a job. Thanks
to my publishers (BPB) , readers and reviewers to always excuse all my stupid t
hings which i always do. So why is this PDF free ?. W i always wanted to distrib
ute things for free specially when its a Well interview question book which can
fetch a job for a developer. But i am also bounded with publishers rules and reg
ulations. And why not they have a whole team of editor printing guys, designers,
editor, distributors, shopkeepers and including me. But again the other aspect,
readers should know of what they are buying , the quality and is it really usef
ul to buy this book. So here are sample free questions which i am giving out fre
e to the readers to see the worth of the book. I can be contacted at shiv_koiral
a@yahoo.com its bit difficult to answer all answers but as i get time i do it. W
e have recently started a career counselling drive absolutely free for new comer
s and experienced guys. So i have enlisted the following guys on the panel. Than
ks to all these guys to accept the panel job of consulting. Feel free to shoot t
hem questions just put a title in the mail saying “Question about Career”. I hav
e always turned up to them when i had some serious career decision to take. Shiv
prasad Koirala :- Not a great guy but as i have done the complete book i have to
take up one of the positions. Y can contact me at shiv_koirala@yahoo.com for te
chnical career aspect. You Tapan Das :- If you think you are aiming at becoming
a project manager he is the right person to consult. He can answer all your ques
tions regarding how to groom your career as a project manager tapand@vsnl.com. K
apil Siddharth :- If you are thinking to grow as architect in a company then he
is a guy. When it comes to role model as architect i rate this guy at the top. Y
can contact him at You kapilsiddharth@hotmail.com Second if you think you can h
elp the developers mail me at shiv_koirala@yahoo.com and if i find you fitting i
n the panel i will display your mail address. Please note there are no financial
rewards as such but i am sure you will be proud of the work you are doing and w
hos knows what can come up. Lets make Software Industry a better place to work .
.... Happy Job Hunting and Best of Luck
www.questpond.com Career Path Institute
Author runs the “Software Career Path Institute” personally in mumbai. If you ar
e interested you can contact him regarding admissions at shiv_koirala@yahoo.com.
Please note i do not have curfor rently any huge setup. So if you are looking f
or some cozy institute forget it. But yes you will definitely get the in-depth k
nowledge which you will not get anywhere. So want to join my small institute the
n call me at 9892966515. Please note currently its only from mumbai people.
ww w. qu est po nd .co m
Contents
How to buy the book ............................................................
....... 67 ow y ...................................................... .........
.............................. From the Author .................................
............ ...................................................................
...... 70 rom ............................................................ Caree
r Path Institute ..................................................... .........
......................................................... 71 ...................
... areer th ...................................... Introduction................
................................................................. 85 n..........
........................... ntroduction.........................................
........................... ion.................................................
....
Software Company hierarchy .....................................................
................................... oftware any y ..............................
...............................................................................
89 ......................................... ...................................
.............................. esume ation on ..................................
........................... ....................................................
................................ Resume Preparation Guidelines .................
.................... ...........................................................
.............................................. 91 Salary Negotiation ...........
................................................................................
.............. .................................................................
alary ion .....................................................................
......................................................... 93 n .................
................................................................. ..............
............................................ Points to remember ................
................................................................. ..............
................................................................................
............................... 95 .............................................
..................... oints ber ................................................
......... er ...................................................................
.....................................
1. Basic .NET Framework ........................................................
.. 98 . ET T ............................................. .....................
......... ...................... ..............
What is a IL? ..................................................................
.................................................................... 98 hat ....
................................................................................
............................. ..................................................
...................................... .........................................
................... ............................................................
..... Twist :- What is MSIL or CIL , What is JIT? ............................ w
ist ................................................................ ...........
.............................. .................................................
.................................... 98 What is a CLR? .........................
................................................................................
......................... 98 ...................................................
.............. What is a CTS? ..................................................
................................................................................
. 98 ................................................................. What is a
CLS(Common Language Specification)?............................................
............................... 99 What is a Managed Code? .....................
................................................................................
............. 99 What is a Assembly? ...........................................
...............................................................................
99 What are the different types of Assembly? ...................................
................................................... 100 What is NameSpace? .....
................................................................................
.................................. 100 What is Difference between NameSpace and
Assembly? ............................................................... 100 If
you want to view a Assembly how do you go about it ? ..........................
.................................... 100 Twist : What is ILDASM ? ..............
................................................................................
.................. 100 What is Manifest? .......................................
................................................................................
..... 102 Where is version information stored of an assembly ?..................
................................................... 103 Is versioning applicable
to private assemblies? ........................................................
....................... 103 What is GAC ? ......................................
................................................................................
........... 103 Twist :- What are situations when you register .NET assembly in
GAC ? ....................................... 103 What is the concept of strong
names ? ........................................................................
.................... 103 Twist :- How do we generate strong names or what is the
process of generating strong names, What is use the of SN.EXE , How do we apply
strong names to assembly, How do you sign an assembly? ........................
................................................................................
..................................... 103 How to add and remove an assembly from
GAC? ..........................................................................
. 107 What is Delay signing ? ..................................................
................................................................. 108 What is ga
rbage collection? ..............................................................
................................................ 109 Can we force garbage collec
tor to run ? ...................................................................
....................... 109 What is reflection? ................................
................................................................................
............ 109 What are different types of JIT ? .............................
........................................................................ 110 Wha
t are Value types and Reference types ? ........................................
........................................... 111 What is concept of Boxing and Un
boxing ? .......................................................................
............. 111 What is the difference between VB.NET and C# ? ...............
.......................................................... 112 What is the diffe
rence between System exceptions and Application exceptions? ....................
....... 113 What is CODE Access security? ......................................
................................................................ 113 What is a s
atellite assembly? .............................................................
............................................... 114
How to prevent my .NET DLL to be decompiled?....................................
....................................... 114 What is the difference between Conve
rt.toString and .toString() method ? ................................... 114 Wha
t is Native Image Generator (Ngen.exe)? ........................................
............ ..................................................... .............
.................................................................... 115 .......
............................................ ...................................
.......... make We have two version of the same assembly in GAC? I want my clien
t to mak choice of which .......................................................
............................................................ 116 ...............
............................................................... ................
..................................................................... ..........
............................................................................. ..
................................................................................
.... assembly to choose? .......................................................
........................ .......................................................
.................................................................... 124 .......
...............................................................................
hat ............................................................................
................. ..............................................................
................................. What is CodeDom? .............................
..........................................................
2..NET Interoperability ........................................... ..NET ......
...................................... .........................................
................... 128 ................................. ......................
.................... ......................................
How can we use COM Components in .NET? .........................................
........ .................................................. ....................
.......................................................... 128 .................
................ ......................................... .....................
........................... .......................................... Twist : W
hat is RCW ? ...................................................................
....................... wist ...................................................
................................................................... 128 ........
.................................................................. .............
.................................................................... ...........
............................................................................. ..
................................................................................
in Once I have developed the COM wrapper do I have to still register the COM i
registry? ........... 129 tC ...................................................
............................... 129 How can we use .NET components in COM? .....
................................................ ow ............................
.......................... ............................................. .......
............................................. ..................................
............ taken Twist :- What is CCW (COM callable wrapper) ?, What caution n
eeds to be ta wist tak in order that .NET ......................................
................................................ 129 components is compatible wi
th COM ? ......................................................... .............
............................................. ..................................
............... ........................................................ .......
........................................... ....................................
......................................... 132 How can we make Windows API calls
in .NET? ................................................. ow ..................
...................... ............................................... .........
.............................. 134 When we use windows API in .NET is it managed
or unmanaged code ? .......... hen ........... .. ......... ...................
................................................................................
.............................. 134 What is COM ? ...............................
...................................................................... hat .....
................................................................................
....... ........................................................................
........................... ....................................................
........................................ 134 What is Reference counting in COM ?
............................................................... ...............
................................................. ..............................
......................... ......................................................
........ ou ....................................................................
...... 134 ............................................. ........ Can you descri
be IUKNOWN interface in short ? .............................................. .
.................................... ...........................................
. ..............................................................................
...................... 135 .....................................................
.................. ................................. Can you explain what is DCO
M ? ........................................................................ an
u ............................................................... ..............
........................................................ .......................
................................................................ 136 o .........
................................................. ..................... How do w
e create DCOM object in VB6? ...................................................
...... .................................................. ......................
............................................................................. 13
6 ...................................................................... How to
implement DTC in .NET ? ................................ .......................
....................................... ........................................
............................. ?.................................................
....... 138 any ?........................... How many types of Transactions are
there in COM + . .NET ?.......................... ?................... .........
................................................................................
139 o ............................................................ How do you d
o object pooling in .NET ? ....................... .............................
....................... ........................................................
................................. 140 re What are types of compatibility in VB6?
....................... .................................................... ..
.............................................................................. 1
41 s What is equivalent for regsvr32 exe in .NET ? .............. ..............
.............................
3. Threading ........................................................ hreading .
................................... reading ....................................
.......................................... 142 .................................
.................
What is Multi-tasking ? ........................................................
....................... s ......................................................
.............................................................. 142 .............
...................................................................... .........
.............................................................. .................
................................. What is Multi-threading ? ....................
........................................................ s .....................
........................................................... ....................
............................................... ................................
............... ................................................................
................................................. 142 ..........................
................................................................................
.................. 142 What is a Thread ? ......................................
................................................. s ............................
............................................................... ................
.............................................................. .................
........................................ .......................................
........................................................... 142 Did VB6 support
multi-threading ? .............................................................
B6 6 ................................................................. .........
............................................ ............................... ...
..................................................................... 142 Can we
have multiple threads in one App domain ? .......................... e ..... ..
..................................... ................................... ......
................................................................................
.............. 142 Which namespace has threading ? .............................
......................... .................................. ...................
................................................ ...............................
........................... 142 Can you explain in brief how can we implement th
reading ? ......................... .NET ? ..................... 143 How can we
change priority and what the levels of priority are provided by . What does Addr
essOf operator do in background ? ..............................................
........................... 144 How can you reference current thread of the meth
od ? .................................................................... 144 Wh
at s Thread.Sleep() in threading ? .............................................
................................................. 144 How can we make a thread s
leep for infinite period ? .....................................................
................ 144 What is Suspend and Resume in Threading ? .................
................................................................ 144 What the wa
y to stop a long running thread ? ..............................................
.................................... 145 How do I debug thread ? ...............
................................................................................
.................. 145 What is Thread.Join() in threading ? ....................
............................................................................ 146
What are Daemon threads and how can a thread be created as Daemon? ............
........................... 146 When working with shared data in threading how d
o you implement synchronization ? .............. 146 Can we use events with thre
ading ? ........................................................................
......................... 147 How can we know a state of a thread? .............
................................................................................
147
What is a monitor object? ......................................................
.......................................................... 147 What are wait han
dles ? .........................................................................
.......................................... 148 ndles ...........................
................. Twist :- What is a mutex object ? ............................
.......................... hat .................................................
..................................................... 148 ......................
......... What is ManualResetEvent and AutoResetEvent ? ........................
............................................... 148 anualResetEvent ............
........... esetEvent eaderWriter ..............................................
........... What is ReaderWriter Locks ? .......................................
.................................................................. 148 riter ...
............................... How can you avoid deadlock in threading? .......
............................. ..................................................
.................................. 149 id ............. What is the difference b
etween thread and process? ....................... .............................
.......................................... 149 he ence
4. Remoting and Webservices .................... oting .........................
......................... 150
What is an application domain? .................................................
...................................................... 150 t n .................
................................................................. ..............
........................................ What is .NET Remoting ? ...............
................................................. at NET .......................
..................................................................... ..........
................................................................................
...................... 150 Which class does the remote object has to inherit ? .
....................................................................... 151 ich
ass ........................ ...................................................
What are two different types of remote object creati mode in .N ? .............
...... erent at creation .NET ........................................ 151 Descr
ibe in detail Basic of SAO architecture of Remoting? ........... l Rem .........
.................................................. 151 cribe ...................
.................... What are the situations you will use singleton architecture
in remoting ? ..................................... 156 ations archit at rem ..
.............. What is fundamental of published or precreated objects in Remotin
g ? ......................................... 156 ................ ntal obje at
undamental Remoti .................... What are the ways in which client can cre
ate object on server in CAO model ? ............................ 156 ... s at ..
..... ..........................................................................
................................. 157 Are CAO stateful in nature ? .............
..................................................................... ..........
........................... ....................................................
.................................. In CAO model when we want client objects to b
e created by “NEW” keyword is there any precauhen cr AO th tions to be taken ? .
................................................................................
............. en ...............................................................
........................................................ 157 ...................
.............................. ions ............................................
...................................................... Is it a good design pract
ice to distribute the implementation to Remoting Client ? ......................
. 158 n impleme t .. What are LeaseTime, SponsorshipTime, RenewonCallTime and Le
aseManagerP LeaseManagerPollTime? .......... 158 ime, RenewonC at LeaseManagerPo
ll ........................................................... 159 Which config
file has all the supported channels/protocol ? .................................
. channels/pro ich ....................................... How can you specify r
emoting parameters using Config files ? ............................ ...........
.......................................... 160 ................................
Can Non-Default constructors be used with Single Call SAO? .....................
........ ...................................................... 162 ............
...................... Twist :- What are the limitation of constructors for Sing
le call SAO ? .................. ........................................... 162
wist t ....................... How can we call methods in remoting Asynchronous
ly ? ......................................... .................................
............................. 163 ..................................... What is
Asynchronous One-Way Calls ? ...................................................
...................................... 163 .....................................
........................... at .................................................
................... What is marshalling and what are different kinds of marshall
ing ? ................................................ 163 .....................
.. at ............................ What is ObjRef object in remoting ? .........
................................................................................
...... 164 .....................................................................
. at ..........................................................................
What is a Web Service ? ........................................................
.......................................................... 164 .................
........................................................................ What is
UDDI ? ........................................................................
....................................................... 165 ....................
................................................................................
.. What is DISCO ? .............................................................
................................................................ 165 ...........
................................................................................
......... What is WSDL? ........................................................
.............................................. .................................
................................................................................
.............. 165 What the different phase/steps of acquiring a proxy object in
Webservice ? .................................. 165 Following are the different
steps needed to get a proxy object of a webservice at the client side :- 165 Wh
at is file extension of Webservices ? ..........................................
................................................ 166 Which attribute is used in
order that the method can be used as WebService ? ..............................
. 167 What are the steps to create a webservice and consume it ? ...............
............................................ 167 Do webservice have state ?.....
................................................................................
......................... 176
5. Caching Concepts ............................................................
..... 178
What is an application object ? ................................................
....................................................... 178 What’s the differenc
e between Cache object and application object ? ................................
............ 178 How can get access to cache object ? ..........................
..................................................................... 178 What a
re dependencies in cache and types of dependencies ? ...........................
.............................. 178 Can you show a simple code showing file depen
dency in cache ? .................................................. 179 What is
Cache Callback in Cache ? ......................................................
........................................... 179
What is scavenging ? ...........................................................
............................................................ 180 What are differ
ent types of caching using cache object of ASP.NET? ............................
................ 180 How can you cache different version of same page using ASP.
NET cache object ? ...................... 180 ob o How will implement Page Fragm
ent Caching ? .................................................... .............
................................................................. 181 ..........
..................................... ..........................................
.. What are ASP.NET session and compare ASP.NET session with classic ASP s AS A
session variables? 181 .........................................................
............. 181 ................................. Which various modes of stori
ng ASP.NET session ? ............................................ ..............
......................... .................................... .................
................................................. 182 ..........................
... ...................... Is Session_End event supported in all session modes ?
........................................ ................................... ..
.............................. Mod work pro w What are the precautions you will
take in order that StateServer Mode wor properly ? .............. 182 work p M W
hat are the precautions you will take in order that SQLSERVER Mode w wo properly
? .......... 182 ..............................................................
.. 183 ........................... .................... Where do you specify ses
sion state mode in ASP.NET ? .............................. ....................
............. ...................................... ...........................
................................................ 183 ...........................
........... ................................ What are the other ways you can mai
ntain state ? ................................................. ................
............................ ......................................... .........
.................................................... 183 .......................
. .................. What are benefits and Limitation of using Hidden fields ? .
.......................... .............................. ......................
............. ..................................................................
....................................................... 184 ....................
................................................................ ...............
.............................................................. What is ViewState
? .............................................................................
.................. .............................................................
............................. ..................................................
..................................... .........................................
184 .... Does the performance for viewstate vary according to User controls ? ..
.............. .......... ....... manageme manag What are benefits and Limitatio
n of using Viewstate for state management . management? ........................
........ 184 ...... .......................................... .................
................................................. 185 ..........................
... ....................... How can you use Hidden frames to cache client data ?
......................................... ................................... .
............................... ................................................
............ 185 ..................................... ....................... .
................ What are benefits and limitations of using Hidden frames? .....
..................... ............................. ............................
....... ...................................................................... 1
86 .............................................. ..............................
... ........................... What are benefits and limitations of using Cooki
es? .................................... .......................................
............................................ Strings? String ..................
. 186 What is Query String and What are benefits and limitations of using Query
Strin S
6. OOPS ...................................................................... .
....................................................................... .......
................................................... ............................
......................................................... 200 ..................
................................................ ...............................
..................................
What is Object Oriented Programming ? ..........................................
............ ...................................................................
..................... 200 ......................................................
... ................................................................ ...........
................................. ..............................................
................ What’s a Class ? ..............................................
........................................................ .......................
................................................................................
. ..............................................................................
...... .........................................................................
...................................................... 200 .....................
........................................................................... ....
................................................................................
......... ......................................................................
..................................................... 200 What’s an Object ? ...
................................................................................
......... ......................................................................
............................. ..................................................
............................. What is the relation between Classes and Objects ?
........................................................................ 200 ..
........................... ............................................ 200 Wha
t are different properties provided by Object-oriented systems ? . Twist :- Can
you explain different properties of Object Oriented Systems? ...................
................. 200 wist Syste Note:- Difference between abstraction and encap
sulation is one of th favorite interview question the ote:you and quiet confusin
g as both the terminology look alike. Best is if y can brainstorm with your frie
nds or do a little reading. ....................................................
.................................................. 200 Twist :- What is differen
ce between Association, Aggregation and Inheritance relationships? ...... 201 Ho
w can we acheive inheritance in VB.NET ? .......................................
........................................ 202 What are abstract classes ? .......
................................................................................
....................... 203 What is a Interface ? ..............................
................................................................................
.......... 205 What is difference between abstract classes and interfaces? .....
...................................................... 207 What is a delegate ?
................................................................................
......................................... 207 What are events ? ................
................................................................................
............................. 208 Do events have return type ? .................
................................................................................
.......... 210 Can event’s have access modifiers ? .............................
.................................................................. 210 Can we ha
ve shared events ? .............................................................
.............................................. 210 What is shadowing ? .........
................................................................................
............................... 210 What is the difference between Shadowing and
Overriding ? ....................................................... 211 What i
s the difference between delegate and events? ..................................
................................... 211 If we inherit a class do the private var
iables also get inherited ? ....................................................
212 What are the different accessibility levels defined in .NET ? .............
............................................ 212 Can you prevent a class from ov
erriding ? .....................................................................
................. 212 What is the use of “MustInherit” keyword in VB.NET ? .....
........................................................... 212 Do interface hav
e accessibility modifier? ......................................................
................................. 213
What are similarities between Class and structure ? ............................
........................................... 213 What is the difference between C
lass and structure’s ?..........................................................
......... 213 t ?....................................... What does virtual keywo
rd mean ? .....................................................................
at s ................................................................. .........
............................................. ..................................
............................. ..................................................
....... ........................................................................
......................... 213 t What are shared (VB.NET)/Static(C#) variables? .
...................................................... at ......................
.................................................... 213 .......................
................... ............................... ............................
............ .................................. t ..............................
................ What is Dispose method in .NET ? ..............................
................................................ at ispose .....................
............................................ ...................................
.................. .............................................................
.. ........................................................ ....................
............................................................................. 21
5 t ..................................................................... ......
............................................... 215 What is the use of “OverRide
s” and “Overridable” keywords ? ......................... ......................
............ at e ..................... .......... ................... .........
.... t .........................................................................
... 215 Where are all .NET Collection classes located ? ........................
................................. ere ..........................................
.. ................................. ..........................................
.................................... re ........................................
........ .......................................................................
................................................... 216 ........................
............................................................... What is ArrayLis
t ? ............................................................................
.................. at rrayList .................................................
...................................................... .........................
................................................................. ..............
................................................................ ...............
......................................................................... ......
........................................................................... t ..
................................................................................
.................................... 216 What’s a HashTable ? ..................
........................................................................ at’s ..
................................................................................
................. ..............................................................
........................ .......................................................
.................... ...........................................................
......................... ......................................................
........................ t’s .................... ..............................
......................... 216 Twist :- What’s difference between HashTable and A
rrayList ? ........................... wist t hat’s ....................... ....
........ ..................... ............... .................................
... ............................................................................
.............................. 216 .............................................
.......................... What are queues and stacks ? ........................
............................................................... at .............
............................................................. ..................
............................................ ...................................
..................................... ..........................................
....................... t ......................................................
........................ .......................................................
...................................................................... 216 What
is ENUM ? ......................................................................
........................... at NUM .............................................
..................................... ..........................................
................................................... ............................
............................................................... ................
..................................................................... ..........
................................................................................
................ t .............................................................
..................................................... 216 ......................
......................................................... What is nested Classes
? .............................................................................
.................. at ested ....................................................
.............................. .................................................
..................... ..........................................................
...................... .........................................................
................ t .............................................................
......................... ......................................................
.................................... 217 What is Operator Overloading in .NET? .
................................................. hat t perator ................
........................................ .......................................
................................ ...............................................
........... ............................................... In below sample code
if we create a object of class2 which constructor wil fire first ? ............
.... 217 elow construct will ...................................................
.................. 217 What is the significance of Finalize method in .NET? ....
......................... hat t e ................................... ..........
........................................ ..................................... .
......................... ......................................................
.................. 218 ..................................... ...................
.................................. Why is it preferred to not use finalize for c
lean up? ................................ referred .............................
......... ........................................ .............................
............................................................ 219 ...............
....................................... How can we suppress a finalize method? .
..................................................................... ..........
............................................... e ..............................
............................................................... 219 ............
............................................... What is the use of DISPOSE metho
d? .......................................................... ..................
........................................................ t .....................
........................................ e c to ca How do I force the Dispose me
thod to be called automatically, as clients can forget t call Dispose ..........
................................................................................
...... .........................................................................
.......................... method? .............................................
...................................................................... ethod? ..
................................................................................
.................................................... 220 .......................
...............................................................................
....................................................... 220 ces ................
.... ..................... In what instances you will declare a constructor to b
e private? .................................... hat ....................... ....
................................ 221 ifferent Can we have different access modif
iers on get/set methods of a property ? . ................. .... oto fina If we
write a goto or a return statement in try and catch block will the finally block
execute ? .... 221 What is Indexer ? ..........................................
................................................................................
.... 221 er ....................................................................
...................... Can we have static indexer in C# ? ......................
........................................ e .....................................
............................... ................................................
.................................................. 221 tatic In a program there
are multiple catch blocks so can it happen that two catch bl ogram here catc blo
cks are executed ? 221 1 What is the difference between System.String and System
.StringBuilder c classes? class ........................ 221 ifference
7. ASP.NET .....................................................................
........... 222 SP.NET .........................................................
..... ET ..........................................................
What’ is the sequence in which ASP.NET events are processed ? ......... ’ equenc
e quence ............... .................................................. 222
..................... In which event are the controls fully loaded ? ...........
........................................ ich t .................................
................................................ 222 ...........................
............. ............................................. How can we identify
that the Page is PostBack ? ............................................. ......
..................................................................... 222 entify
................................. How does ASP.NET maintain state in between su
bsequent request ? .... ............................................. 222 .NET W
hat is event bubbling ? ........................................................
......................................................... 222 ..................
...................................................... How do we assign page spe
cific attributes ? .............................................................
...................... 223 Administrator wants to make a security check that no
one has tampered with ViewState, how can he ensure this ? ......................
................................................................................
.......................... 223 What is the use of @ Register directives ? ......
................................................................................
223 What’s the use of SmartNavigation property ? ..............................
.................................................. 223 What is AppSetting Sectio
n in “Web.Config” file ? .......................................................
................. 223 Where is ViewState information stored ? ..................
...................................................................... 223 What
is the use of @ OutputCache directive in ASP.NET? ..............................
............................. 224 How can we create custom controls in ASP.NET ?
......................................................................... 224 H
ow many types of validation controls are provided by ASP.NET ?..................
............................ 224 Can you explain what is “AutoPostBack” feature
in ASP.NET ? ................................................... 225 How can you
enable automatic paging in DataGrid ? .........................................
............................ 225
What’s the use of “GLOBAL.ASAX” file ? .........................................
........................................... 225 What is the difference between “
Web.config” and “Machine.Config” ? ........................................ 225
What is a SESSION and APPLICATION object ? ............................... .....
..................................................................... 226 ......
........................................ What is the difference between Server.T
ransfer and response.Redirec ? ........... response.Redirect ...................
.................... 226 What is the difference between Authentication and autho
rization? ...... ..................... .........................................
........ 226 ...................................................................
........................... 227 ................................................
............ What is impersonation in ASP.NET ? ................................
................... ............................................................
...... ................................... 227 . Can you explain in brief how th
e ASP.NET authentication process w works? ....... ..............................
............ 228 .......... ........ What are the various ways of authentication
techniques in ASP.NET? .............. .........................................
........................................... 230 ................................
................... .................................................. How does
authorization work in ASP.NET? ......................................... .......
................................................ .......................... ....
...................................................... 231 .....................
... What’s difference between Datagrid, Datalist and repeater ? ...............
.............................. .................................................
...................... 232 ..................................... ...............
....................... .................................... From performance po
int of view how do they rate ? ........................... .....................
..................... ..........................................................
....... 232 ............................... ................................ ...
........................... What is the method to customize columns in DataGrid?
..................... .................................... ....................
................................................................... 232 ........
............................................. ..................................
.................... .................................................... How ca
n we format data inside DataGrid? ........................................... ..
........................................................ repeater ? ............
........ 232 datalist re How to decide on the design consideration to take a Dat
agrid, datali or r .............................................................
............................ 232 ...............................................
......... ......................................................... ............
........................................... Difference between ASP and ASP.NET?
.............................................. .................................
.......................................... 234 .................................
............... .......................................... .....................
...................... ......................................... What are major
events in GLOBAL.ASAX file ? ................................ ..................
................................................................................
..... 235 ......................................................................
...... ...................................................................... ..
..................................................................... ..........
........................................................... What order they are
triggered ? ............................................................ .......
................................................................................
.......................... 236 .................................................
..................................... ..........................................
...................................... .........................................
........................................ Do session use cookies ? ..............
........................................................ .......................
................................................ 236 ...........................
................. ...................................... .......................
................ How can we force all the validation control to run ? ..........
.................. ............................................ 236 ............
..... ........... ............ How can we check if all the validation control ar
e valid and proper ? . side If client side validation is enabled in your Web pag
e, does that mean server sid code is not run? 236 side Which JavaScript file is
referenced for validating the validators at the client sid ?....................
... 236 ........................................................................
........ 237 ..................................................... .............
.................................. .............................................
... How to disable client side script in validators? ...........................
.......... client How can I show the entire validation error message in a messag
e box on the cli side? ............. 237 any You find that one of your validatio
n is very complicated and does not fit in a of the validators, .................
................................................................................
..................... 237 ......................................................
..................................... ..........................................
........................................... what will you do ? .................
..................................................................... ..........
................................................................................
............... 238 ............................................................
.................. .............................................................
........... What is Tracing in ASP.NET ? .......................................
.................................. .............................................
............................................................... 238 ............
..................................................................... ..........
................................................................. How do we enab
le tracing ? ...................................................................
......... ............................................ 238 ................. ...
........ What exactly happens when ASPX page is requested from Browser? ........
.... ...........................................................................
........................... 242 ................................................
........................... How can we kill a user session ? ...................
.................................................. .............................
............................................................. 243 ..............
................................................. How do you upload a file in AS
P.NET ? ........................................................ ...............
............................................................... 243 How do I sen
d email message from ASP.NET ? .................................................
.. .............................................................................
............... 243 What are different IIS isolation levels? ...................
.............................................. ASP used STA threading model, wha
t is the threading model used for ASP.NET ? ........................ 245 What is
the use of <%@ page aspcompat=true %> attribute ? .............................
......................... 245 Explain the differences between Server-side and Cl
ient-side code? ................................................ 246 Can you exp
lain Forms authentication in detail ? ..........................................
.................................. 246 How do I sign out in forms authentication
? .............................................................................
....... 248 If cookies are not enabled at browser end does form Authentication w
ork? ................................... 248 How to use a checkbox in a datagrid
? ..............................................................................
................ 248 What are the steps to create a windows service in VB.NET ?
......................................................... 249 What is the differ
ence between “Web farms” and “Web garden”? .....................................
............ 250 How do we configure “WebGarden”? ..............................
............................................................... 253 What is the
main difference between Gridlayout and FlowLayout ? ............................
................... 256
8..NET Architecture ............................................................
...... 257
What are design patterns ? .....................................................
.......................................................... 257 What is the diffe
rence between Factory and Abstract Factory Patterns? ...........................
.............. 258
What is MVC pattern? ...........................................................
........................................................... 261 Twist: - How can
you implement MVC pattern in ASP.NET ............................... an ASP.NET
? ........................................................... 261 How can we imp
lement singleton pattern in .NET? .............................................
......................................................................... 263 an
mplement ........... How do you implement prototype pattern in .NET? ..........
........................................................................ 264 o
plement ............................................ Twist: - How to implement c
loning in .NET ? What is shallow copy and deep copy ? .................... 264 o
shal co What are the situations you will use a Web Service and Remoting in proj
ects? .. .............................. 264 re ituations Re Can you give a pract
ical implementation of FAÇADE patterns? ......................... ..............
....................................... 264 u patt How can we implement observer
pattern in .NET? .......... ...................................................
..................... 266 an ............................................ What i
s three tier architecture? ........................................... .........
................................................................................
................ 266 s .........................................................
.................... Have you ever worked with Microsoft Application Blocks if y
es then which? .. .............................. 267 ou r Blocks, What is Servic
e Oriented architecture? .............................. ........................
.................................................................... 267 s e ...
............................................................. What are different
ways you can pass data between tiers? .................................. ......
........................................................ 270 re rent What is Win
dows DNA architecture? .........................................................
...................................... 270 s ...................................
................................ What is aspect oriented programming? ..........
......................................................... ......................
...................................................................... 272
9. ADO.NET ................................................................ ....
.......................................................................... 281
What is the namespace in which .NET has the data functionality classes ? .......
.... ................................... 281 Can you give a overview of ADO.NET
architecture ? ............................................ ....................
................................................ 281 ...........................
......................................... 283 What are the two fundamental objec
ts in ADO.NET ? ............................................ ...................
.................................................... 283 What is difference betw
een dataset and datareader ? .............................................. ....
............................................. 283 What are major difference betw
een classic ADO and ADO.NET ? ......................... e ......................
....................................................................... 283 What
is the use of connection object ? .............................................
........... ....................................................................
. e command object ? What is the use of command objects and what are the methods
provided b the co by 284 What is the use of dataadapter ? .....................
............................................. ..................................
..................................................................... 284 e What
are basic methods of Dataadapter ? ............................................
............................................ 284 What is Dataset object? .......
................................................................................
............................. 285 What are the various objects in Dataset ? ....
................................................................................
..... 285 How can we connect to Microsoft Access , Foxpro , Oracle etc ? .......
........................................... 285 ....................... How do w
e connect to SQL SERVER, which namespace do we use ? ...........................
................ 286 ................ How do we use stored procedure in ADO.NET
and how do we provide parameters to the stored para parame procedures? .........
................................................................................
........................................ 291 dures? ............................
..................................................................... ocedures?
................................................................................
...................... How can we force the connection object to close after my
datareader is closed ? ......................... 292 close I want to force the d
atareader to return only schema of the datastore rather than data ? ............
.... 292 t t How can we fine tune the command object when we are expecting a sin
gle row or a single value ? r 292 2 Which is the best place to store connections
tring in .NET projects ? ............................................. 292 What
are the steps involved to fill a dataset ? .....................................
........................................... 293 Twist :- How can we use dataadap
ter to fill a dataset ? ........................................................
.......... 293 What are the various methods provided by the dataset object to ge
nerate XML? ........................... 294 How can we save all data from datase
t ? ............................................................................
............. 294 How can we check that some changes have been made to dataset s
ince it was loaded ? ............... 295 Twist :- How can we cancel all changes
done in dataset ? How do we get values which are changed in a dataset ? ........
................................................................................
...................................... 295 How can we add/remove row’s in “DataT
able” object of “DataSet” ? ........................................... 295 What
is basic use of “DataView” ? ..................................................
................................................ 296 What is the difference betw
een “DataSet” and “DataReader” ? ...............................................
...... 297 Twist :- Why is DataSet slower than DataReader ? ....................
..................................................... 297
How can we load multiple tables in a DataSet ? .................................
............................................ 297 How can we add relation’s betwe
en table in a DataSet ? ........................................................
........ 298 What is the use of CommandBuilder ? ...............................
............................................................. 298 What’s differe
nce between “Optimistic” and “Pessimistic” locking ? ..................... .....
....................................... 298 How many ways are there to implement
locking in ADO.NET ? ............................ .............................
...................... 299 .................. ..................................
.................................................. 299 How can we perform transa
ctions in .NET? .............................................................. .
................................................... ............................
.......................... 300 What is difference between Dataset. clone and Dat
aset. copy ? ................................ ...................... ifference A
DO. Recordset? ............... 300 Reco Can you explain the difference between a
n ADO.NET Dataset and an ADO Recor .............................................
................................................................................
............................. 300 ..............................................
................................................................................
... .............................................. .............................
................................................................................
...................... .........................................................
................................................................ ...............
....................... ........................................................
....... 301 Explain in detail the fundamental of connection p pooling? .........
................................ ............................... ...............
....................................... 302 ol ............................. Wha
t is Maximum Pool Size in ADO.NET Conne Connection String? .....................
.......... ..................... ...............................................
............................... 302 sable ......................................
............... How to enable and disable connection pooling? .... .............
................................. ..............................................
..........
10. SQL SERVER ........................................................ VER ....
.............................................. .................................
.................................... 303 .......................................
............ ...................................................... ............
.........
What is normalization? What are different types o normalization? ...............
......... n? of ............................................... 303 ............
.... ...................... .............. What is denormalization ? ...........
.............................................................................. i
on .............................................................................
.. .............................................................................
................................... 305 ........................................
......................................... ......................................
................................................. ..............................
....... ........................................................................
......................................... 306 What is a candidate key ? ........
................................................................................
... ey .........................................................................
........ .......................................................................
............ ....................................... ...........................
.... 306 What are the different types of joins? What is the difference between t
hem ? ......... t . What are indexes? What is the difference between clustered a
nd nonclustered inde hat nonclustere indexes? ............... 307 ..............
........................................................................ 307 How
can you increase SQL performance ? ............................................
................... e ....................................................... ..
................................................... ............ ...............
................................................................................
................ 308 What is the use of OLAP ? .................................
....................................................... AP .....................
......................................................... ......................
.......................................................... .....................
................ ?..............................................................
............................................. 308 What is a measure in OLAP ?...
............................. ?.................................................
........................... ?...................................................
....................... ?.......................................................
............................. ..................................................
.................................................... 308 What are dimensions in
OLAP ? ............................ ............................................
............................ ...................................................
................... ............................................................
.................... ...........................................................
............................................ 309 What are levels in dimensions ?
...............................................................................
.. ......................................................................... ...
.................................................................... ...........
.......................................................... 309 What are fact tab
les and dimension tables in OLAP ? .............................................
. ....................................... .....................................
..................................................................... 309 Twist
:- Can you explain the star schema for OLAP ? ..................................
............. ....................................... DTS?......................
................................................................................
.............................. 309 What is DTS?.................................
............................................................................. DT
S?..............................................................................
........................ .......................................................
..................................................................... 309 What i
s fillfactor ? .................................................................
............................. Twist :- When does page split occurs ? ...........
....................... ........................................................
.................................... 309 What is RAID and how does it work ? ...
................................................................................
.......... 310 s ................................... What is the difference betw
een DELETE TABLE and TRUNCATE TABLE commands? ............. 311 s TRU What are t
he problems that can occur if you do not implement locking properly in SQL SERVE
R ? re impleme 311 What are different transaction levels in SQL SERVER? ........
.......................................................... 312 Twist :- What are
different types of locks in SQL SERVER ? ......................................
..................... 312 What are the different locks in SQL SERVER ? .........
..................................................................... 313 Can we
suggest locking hints to SQL SERVER ? .........................................
................................... 315 What is LOCK escalation? ...............
................................................................................
................ 315 What are the different ways of moving data/databases betwee
n servers and databases in SQL Server? 315 What are advantages of SQL 2000 over
SQl 7.0 ? ......................................................................
..... 316 What is the difference between a HAVING CLAUSE and a WHERE CLAUSE? ...
....................... 317 What is the difference between UNION and UNION ALL S
QL syntax ? ...................................... 317 How can you raise custom
errors from stored procedure ? .................................................
............. 317 What is ACID fundamental? What are transactions in SQL SERVER
? ......................................... 319 What is DBCC? ..................
................................................................................
............................. 320 What is the purpose of Replication ? .........
................................................................................
...... 322 What are the different types of replication supported by SQL SERVER ?
..................................... 323
What is BCP utility in SQL SERVER ? ............................................
............................................... 323 What are the different types
of triggers in SQl SERVER 2000 ? ..............................................
....... 325 If we have multiple AFTER Triggers on table how can we define the se
quence of the triggers ? .. 326 f What is SQl injection ? ......................
................................................................................
............... 326 hat Ql .....................................................
.............................................. .................................
............................................... hat e F (U What is the differenc
e between Stored Procedure (SP) and User Defined Function (UDF)? .......... 327
11. UML ............................................................... 1. L ...
........................................................................ .......
.............................................................................. 3
42
What is UML? ...................................................................
.......................... ML? .................................................
.............................................................. .................
................................................................................
................................ 342 ...........................................
................................................................. How many types
of diagrams are there in UML ?.................................... any y ?.....
.................................. ?............................................
............. ?.................................................................
.......... 342 ?...................................................... .........
....................................................... 342 Twist :- Explain in
short all types of diagrams in UML ? ...........................................
... wist - xplain ......................... ............................ .......
.................................... ...........................................
................................................... 344 ........................
.............................. What are advantages of using UML? ...............
......................................................... ......................
................................... ............................................
................................ ...............................................
....................................... 344 Twist: - What is Modeling and why UM
L ? ............................................... wist: hat ..................
................................ ...............................................
..................... ..........................................................
....... ........................................................................
344 What is the sequence of UML diagrams in project? ..........................
....... hat s e ...................................................... .........
.......................................... ....................................
................................................................... 344 Twist: -
How did you implement UML in your project? ............................ wist: o
w ................................................. ............................
... ............................................. ..............................
....................... 345 Just a small Twist: - Do I need all UML diagrams in
a project? ............. ust ll ................................... ............
................... ................ ...........................................
... 349 Give a small brief explanation of all Elements in activity diagrams? ...
.... ive all ............................ ......................... .......... .
............................................................... 351 Explain Diff
erent elements of a collaboration diagram ? ........................... ifferent
.............................................. ................................
.......... .....................................................................
.................................. 352 Explain Component diagrams ? ............
......................................................................... ......
........................................................................... ....
................................................................................
354 Explain all parts of a deployment diagram? ................................
.................................. .............................................
................. ..............................................................
. 356 Describe the various components in sequence diagrams? ....................
......................... ......................................... ............
.................................................................. 358 What are
the element in State Chart diagrams ? ..........................................
.............. ............................................................ ....
............................................................... 360 Describe dif
ferent elements in Static Chart diagrams ? .....................................
........ .......................................................................
......... 362 Explain the different elements of a Use Case ? ...................
........................................ this Twist: - What is the difference be
tween Activity and sequence diagrams?(I leave thi to the readers) 364
12. Project Management .............................................. ..........
................................................ 365
What is project management?.....................................................
................................ management?....................................
...................................................................... 365 .....
.................................... Is spending in IT projects constant through
out the proj stant project?....................................................
....... 365 project?...................................... .....................
................................................................................
................ 366 Who is a stakeholder ? ....................................
........................................................... ....................
...................... Can you explain project life cycle ? ....................
...................................................... ycle ....................
............................................................................ 366
............................... ...............................................
................ 366 Twist :- How many phases are there in software project ? ..
....................................... ........................................
.............................................. 368 Are risk constant through out
the project ? ..................... ...........................................
...................... .........................................................
369 Can you explain different software development life cy ware cycles ? ......
............................. Spiral Model .....................................
................................................................................
................ 371 ......................................... What is triple co
nstraint triangle in project management ? ......................................
....................... 372 What is a project baselines ? ......................
................................................................................
...... 373 What is effort variance? ............................................
........................................................................ 373 How
is normally a project management plan document organized ? ....................
........................... 373 How do you estimate a project? .................
................................................................................
...... 373 What is CAR (Causal Analysis and Resolution)? .......................
..................................................... 374 What is DAR (Decision
Analysis and Resolution) ? .....................................................
.................. 374 What is a fish bone diagram ? ...........................
.............................................................................. 3
74 Twist:- What is Ishikawa diagram ? ..........................................
....................................................... 374 What is pareto princ
iple ? .........................................................................
....................................... 375 Twist :- What is 80/20 principle ? .
................................................................................
................... 376 How do you handle change request? ......................
.......................................................................... 376 W
hat is internal change request? ................................................
...................................................... 376
What is difference between SITP and UTP in testing ?............................
........................................ 376 What is the software you have used
for project management? ........................................................
376 What are the metrics followed in project management? ......................
............................................ 377 Twist: - What metrics will you
look at in order to see the project is moving successfully? ............. 377 Yo
u have people in your team who do not meet there deadlines or do not per perform
what are the actions you will take ? ..........................................
..................................... ..........................................
...................................................................... 380 sort
Twist :- Two of your resources have conflicts between them how would you s it ou
t ? ............... 380 What is black box testing and White box testing? .......
.............................. .................................................
.................... 380 ............................... Regression What’s the d
ifference between Unit testing, Assembly testing and Regressio testing? ........
........ 381 ...................................................................
.......................................... 383 .................................
.................................................. What is V model in testing? .
........................................................................... ....
................................................................................
.......................... 386 .................................................
................................... How do you start a project? ................
............................................................. allocations?......
................................................................................
........ 386 allocations?.......................................................
............. How did you do resource allocations?..............................
............................... ................................................
.................................................... 386 .......................
................................................... How will you do code reviews
? ................................................................... .........
................................................................................
....................................... 386 ....................................
.................................................................. What is CMMI?
...............................................................................
................. ..............................................................
................................... 386 ........................................
.......................... .....................................................
.................. What are the five levels in CMMI? ...........................
...................................... .........................................
...................................... 390 .....................................
........... ..................................................... What is contin
uous and staged representation? ...............................................
................................................................................
.................. 394 .........................................................
.......... .....................................................................
... Can you explain the process areas? .........................................
........................ .......................................................
................................................................... 412 ........
................................................................................
........ What is SIX sigma? ....................................................
...................................... .........................................
............................................................. 413 ..............
.............................................................. What is DMAIC and
DMADV ? ......................................................................
implementation?............................................................... 4
14 implementation?..................................... What are the various rol
es in Six Sigma implementation?............................... .................
................................................................................
................ 415 ...........................................................
.................... ...........................................................
............................ What are function points? .........................
....................................................... ........................
............................................................ 415 ...............
........................................... Twist: - Define Elementary process i
n FPA? ................................................... .....................
....................................... 415 .................................. W
hat are the different types of elementary process in FPA? ......................
...... ...................................................................... 41
5 ............................................ What are the different elements i
n Functions points? ...................................... .....................
............................................... 421 ............................
.............. Can you explain in GSC and VAF in function points? ..............
..................... ....................................................... 42
3 What are unadjusted function points and how is it calculated? ................
............. ..................................................................
...................... 424 Can you explain steps in function points? ...........
................................................... ............................
............................................... 424 What is the FP per day in yo
ur current company? ................................................. Twist :- W
hat is your company’s productivity factor ? ....................................
................................. 424 Do you know Use Case points? .............
................................................................................
........... 424 o ..............................................................
.................... What is COCOMO I, COCOMOII and COCOMOIII? .................
............................ hat ...............................................
..................... 424 What is SMC approach of estimation? ..................
.......................................................................... 424 .
..................................................................... How do you
estimate maintenance project and change requests? .............................
.................................................... 425 ow
13. XML ........................................................................
3. ............................................................................
......... 426
What is XML? ...................................................................
............................................................... 426 What is the
version information in XML? ....................................................
................................... 426 What is ROOT element in XML? ...........
................................................................................
.......... 426 If XML does not have closing tag will it work? ..................
............................................................. 426 Is XML case se
nsitive? .......................................................................
.............................................. 427 What is the difference betwee
n XML and HTML? ................................................................
.......... 427 Is XML meant to replace HTML? ...................................
................................................................. 427 Can you ex
plain why your project needed XML?..............................................
.............................. 427 What is DTD (Document Type definition)? .....
................................................................................
427 What is well formed XML? ..................................................
............................................................ 427 What is a valid
XML? ..........................................................................
............................................ 428 What is CDATA section in XML? .
................................................................................
................... 428
What is CSS? ...................................................................
................................................................. 428 What is XS
L?..............................................................................
...................................................... 428 SL?..................
........................................................................... What
is element and attributes in XML? .............................................
............................................. 428 lement .......................
............................ Which are the namespaces in .NET used for XML? ....
................................................... ............................
............................................ 428 ...............................
.. What are the standard ways of parsing XML document? .........................
...................... .........................................................
....... 428 ......................... ..... ....................................
................ 433 In What scenarios will you use a DOM parser and SAX parser?
............. ................................... cenarios ndled ..............
.................................................................... 433 How was
XML handled during COM times? ................................... .............
.................................................... ...........................
................ ....................... 433 ifference What is the main differen
ce between MSML and .NET Framework XML classes? ...... detail y What are the cor
e functionalities in XML .NET framework? Can you explain in detai those ........
................................................................................
................................... 433 ........................................
.................................... functionalities? ..........................
................................................................................
...............................................................................
.................................................. 434 .........................
..................................................... What is XSLT? ............
................................................................................
.................... ...........................................................
..................................................................... 435 ......
........................................................................ Define
XPATH? .........................................................................
...................................... e .......................................
......................................................... 435 ..................
.................................... t .........................................
........ What is the concept of XPOINTER? ......................................
......................................... ......................................
.................................................................. 436 n .......
........................................................ eader .................
........................................ What is an XMLReader Class? ...........
............................................................................ MLT
extReader? .....................................................................
........................................... 436 eader? .........................
.............................................. .................................
................................ What is XMLTextReader? ........................
....................................................................... ........
.................................................................. 437 e .......
.......................... ........................... How do we access attribut
es using “XmlReader”? .........................................................
................................................................................
437 .................................... imple alk ............................
..... Explain simple Walk through of XmlReader ? ...............................
....... ............................................................... ........
............................................................................. 44
0 ......................................... s ..................................
.......... lidatingReader ...................................... What does XmlVa
lidatingReader class do? .......................................................
.............
14. Localization/Globalization ........................................ calizati
on/Globalization ................................................. 441 tion/Glob
alization ....................... ...................... ....................
What is Unicode and why was it introduced? ................................... n
icode nd ...................................... ................................
......... ......................................................................
............ 441 ...............................................................
.. Does .NET support UNICODE and how do you know it supports? ....... T .... ...
............................ ................................................ 44
2 ....................................................... 442 What’s the differe
nce between localization and globalization? .............. e ........... .......
............................... hat so software’s? ..... 443 What architecture d
ecisions you should consider while planning for int itecture i international sof
t ...................... 445 ow . How do we get the current culture of the envir
onment in windows and ASP.NET? ..... e ................................ 448 hich
e Which are the important namespaces during localization and globalization? ...
........ globaliza ............... .............................................
........ 449 hat ................................ What are resource files and ho
w do we generate resource files? .................................... ..........
.. ............................................. 450 an ........................
Can resource file be in any other format other than resx extensions? .... urce
............................ ...................................................
............................. 450 w ............................................
............... How is resource files actually used in project? ................
....................... source .................................................
.............. .................................................................
....................... 450 w ..................................................
................. How can we use Culture Auto in project? ......................
................................................. ..............................
............................................................................ 453
hat ...........................................................................
.......... What are satellite assemblies? ......................................
................................................... ............................
........................................................... 453 w ..............
.................................................... How do we generate Satellit
e assemblies? ..................................................................
.... ...........................................................................
.................. 453 hat .....................................................
................... What is AL.EXE and RESGEN.EXE? .............................
............................................... What’s the use of resource manag
er class? ................................................................. ....
................................................................................
.. 455 hat’s What precautions do we need to take while deploying satellite assem
blies? ............. .................................. 455 hat Can we get a str
ongly typed resource class rather than using resource manager? .................
.......... 456 Can you explain the fundamentals of “GetGlobalResourceObject” and
“GetLocalResourceObject” functions? ...........................................
................................................................................
........ 459 Can we sign a satellite assembly? .................................
................................................................... 459 Can you
explain collation sequence in sql server? ......................................
..................................... 459 How do we define collation sequence fo
r database and tables? ....................................................... 4
60 Can we change the order in a select query with a specified collation sequence
? ............................ 461 What are the best practices to be followed wh
ile implementing globalization and localization?.... 461 Why is the culture set
to the current thread? .........................................................
........................... 463
15. Sample Projects.............................................................
...... 464
Approach to complete the projects ..............................................
..................................................... 464 Address book .........
................................................................................
........................................... 466
Mini-job site ..................................................................
................................................................... 467 Chat app
lication .......................................................................
.... n .........................................................................
....................................................... 473 Reminder Application
.................................................................. lication ...
................................................................................
.................................... 474 Complete implementation of address book
application .............. ....................................................
............... 476 ementation Use Case Document for address book application ..
........................................ .......................................
.................................... 477 ment ...................... ...........
................................................................................
.............................................. 478 Estimation ..................
................................................................................
...... .........................................................................
..... ..........................................................................
.............................................. 481 .............................
...................................................... Assumption Sections .....
.............................................................. ctions ..........
.............................................................................. .
................................................................................
............................ 481 ...............................................
........................ Technical Design Document .............................
............................................... ew .............................
....................................................................... ........
................................................................................
.................................................. 481 .........................
................................................ Overview ......................
................................................................................
... ecture ..................................................... ...............
................................................................................
....................... 481 ....................................................
............................. Architecture approach ............................
.......................................................... .....................
................................................................................
................................. 482 agram ....................................
.................................................................. .............
................................................................................
.... ER Diagram ................................................................
..... ..........................................................................
....................................................... 482 se .................
............................................... ................................
............................................................ Database Layer ....
................................................................................
............. Layer.............................................................
..................................................................... 490 ss Lay
er..............................................................................
............... Layer...........................................................
...... Business Layer...........................................................
....................................... ........................................
................................................................................
.... 494 tation ........................................................... ....
................................................................................
... Presentation Layer .........................................................
................................... ............................................
................................................................................
.............. 499 ans .........................................................
............................................ ...................................
...................................... Test plans ..............................
............................................................................ ...
................................................................................
................................................... 501 ........................
............................................. ..................................
............................................................... Source code ....
................................................................................
..................
16. Test Yourself ..................................................... est ....
.................................................................... 505 .......
.......................................... ............................... .....
...................................................................... 516 17. F
ree exams .................................. ree ...............................
..................... ....................................................... ..
.................................................................. 517 18. Pendi
ng Topics ................................................. ....................
.........................
“Cheers to the true fighting spirit of IT professionals”
Introduction
Dedication This book is dedicated to my kids Sanjana and Simran, whose dad’s pla
y time has been stolen and given to this book. I am thankful to my wife for cons
tantly encouraging me and also to BPB Publication to give new comer a platform t
o perform. Finally on top of all thanks to the two old eyes my mom and dad for a
lways blessing me. I am blessed to have Raju as my brother who always keeps my m
omentum moving on. I am grateful to Bhavnesh Asar who initially conceptualized t
he idea I believe concept thinking is more important than execution. Tons of tha
nks to my reviewers whose feedback provided an essential tool to improve my writ
ing capabilities. Just wanted to point out Miss Kadambari . S. Kadam took all th
e pain to review for the left outs with out which this book would have never see
n the quality light. About the author Author works in a big multinational compan
y and has over 8 years of experience in software industry. He is working present
ly as project lead and in past has led projects in banking, travel and financial
sectors. But on top of all, I am a simple developer like you all guys there doi
ng an 8 hour job. Writing is something I do extra and I love doing it. No one is
perfect and same holds true for me .So anything you want to comment, suggest, a
nd point typo / grammar mistakes or technical mistakes regarding the book you ca
n mail me at shiv_koirala@yahoo.com. Believe me guys your harsh words would be r
eceived with love and treated to the top most priority. Without all you guys I a
m not an author. Writing an interview question book is really a great deal of re
sponsibility. I have tried to cover maximum questions for the topic because I al
ways think probably leaving one silly question will cost someone’s job there. Bu
t huge natural variations in an interview are something difficult to cover in th
is small book. So if you have come across such questions during interview which
is not addressed in this book do mail at shiv_koirala@yahoo.com .Who knows proba
bly that question can save some other guys job. Features of the book √ Around 40
0 plus interview questions from live .NET interviews.
85
√ √ √ √
Section wise .NET interview question coverage according to multinational compani
es. Short and to the point answers ( no hitting around the bush). Every question
is classified in to Basic,Intermediate and advanced category, thus providing mo
re focus to readers on specific category. During interviews other than main tech
nology (.NET, JAVA etc.) companies expect other areas to be strong for example U
ML, Architecture, Database etc. Other sections is the most strong point of the b
ook, which makes reader prepared for the unexpected questions. Full range of int
erview questions right from junior .NET developers to senior architects or proje
ct manager. CD has sample resume, sample dummy project and sample code to unders
tand fundamentals.. Book covers important points like salary negotiations, resum
e making and general points to be remembered during interview. Recommended for .
NET interviewers who are looking for what questions to be asked to get better an
d decent .NET professionals Recommended for Fresher and students who want to hav
e a feel of what .NET questions are asked in multinational companies. Developers
who are looking for Quick reference and FAQ.
√ √ √ √ √ √
I am sure after reading this book readers will have extra confidence and a bette
r approach for .NET interviews. Introduction When we look back at times of COBOL
, PASCAL features provided by these languages where minimal. More emphasis was o
n completing projects than on quality of code. As features provided by languages
where less, programmer had to code everything from scratch. For example to writ
e a simple sorting logic you have to write your own sorting algorithm. As langua
ges grew and started becoming mature, these logic where in-built
86
feature of language. As feature list of languages started growing programmer’s b
ecame feature specialist rather than specialist of whole language. If a develope
r who is working for past two to three years on remoting is a remoting specialis
t, but probably in ADO.NET he has minimal knowledge. Now after working day & nig
ht and becoming specialist he is looking for a job. But the bad part of IT indus
try today is that they do not look for specialist rather they look for developer
s who have fair knowledge of over all feature of the language. This remoting spe
cialist stumbles with simple ADO.NET and SQL questions during interview. But guy
s that’s ok when you are working and concentrating on one particular aspect it’s
but obvious that you will forget these fundamentals. Software clients no more l
ook source code as the only one deliverable, but even other documents like SRS (
System Requirement documents), SDD (System Design Documents), Test Plans (SITP a
nd UTP) etc. as a integral part of project. IT multinationals are now looking fr
om both technical and process aspect of the project. So going with pure .NET tec
hnical fundamentals will only take you to a programmer position, but know how of
documenting project, UML understanding, SDLC cycle etc will take you to a bette
r position (Project Manager, Program Manager, Senior architect etc). This book c
overs the other aspect of .NET interview’s by providing chapter like Architectur
e, UML, SQL SERVER, Project Management, General Interview questions etc. I hope
this book takes you to a better height and gives you extra confidence boost duri
ng int erview’s.Best of Luck and Happy Job-Hunting............. How to read this
book If you can read English, you can read this book....kidding. There are some
legends which will make your reading more effective. Every question has simple
tags which mark the rating of the questions. These rating are given by Author an
d can vary according to companies and individuals. (B) Basic Questions Basic Gra
de means according to the interviewer it’s a fundamental question and should be
answered. Example What is a CLR ? Guy’s stumbling on this question will rarely p
ass interviews.
87
(I) Intermediate Questions These are Mid-level questions and will be expected to
be answered if you are looking for a decent position in the company. (A) Advanc
ed Questions These are advanced level question which are expected when they are
looking for specialist in the field. (P) Psyche Questions These level of questio
ns do not judge anything for a candidate but see it as a attitude problem of the
interviewer. * Marked Questions These are general questions asked in IT world.
Example “What’s your expectation ?” You will see these question’s as you keep re
ading. There are no direct answers to these question but they do affect a lot du
ring job search. Be ready with some decent answers. Note While reading you can c
ome across section marked as “Note”, which highlight special points of that sect
ion.
88
Software Company hierarchy
Figure :- 0.1 IT Company hierarchy
Its very important during interview to be clear about what position you are targ
eting. Depending on what positions you are targeting the interviewer shoots you
questions. Example if you are looking for a project manager position you will be
asked around 20% technical questions and 80% management.
89
Note:- In small scale software house and mid scale software companies there are
chances where they expect a PM to be very much technical. But in big software ho
uses the situations are very much different, interview are conducted according t
o positions.... Unless the interviewer changes the rule. Above is a figure of a
general hierarchy across most IT companies. Note:- There are many small and medi
um software companies which do not follow this hierarchy and they have there own
adhoc way of defining positions in the company. So why is the need of hierarchy
in a interview. “Interview is a contract between the employer and candidate to
achieve specific goals.” So employer is looking for a suitable candidate and can
didate looks for a better career. Normally in interviews the employer is very cl
ear about what type of candidate he is looking for.But 90% times the candidate i
s not clear about the positions he is looking for. How many times it has happene
d with you that you have given a whole interview and when you mentioned the posi
tion you are looking for...pat comes the answer, “ we do not have any requiremen
ts for this position”. So be clarified about the position right from when you st
art the interview. Following are the number of years of experience according to
position. √ √ √ √ Junior engineers are specially fresher and work under software
engineers. Software engineers have around 1 to 2 years of experience. Interview
er expects software engineers to be technically at a medium level. Senior Softwa
re Engineers have around 2 to 4 years of experience. Interviewer expects them to
technically be very strong. Project leads should handle majority technical aspe
ct of project and should have around 4 to 8 years of experience. They are also i
ndirect architect of the project. Interviewer expects them to be technically str
ong and in terms of architecture to be decent. Interviewer also expects them to
have people management skills. Project Manager are expected to be around 40% tec
hnically strong and should have experience above 10 years plus. But they are mor
e interviewed from aspect of project management, client interaction, people mana
gement, proposal preparation etc.
√
90
So now judge where you stand, and where you want to go.......... Resume Preparat
ion Guidelines First impression the last impression Note :- A sample resume is p
rovided in “SampleResume” folder. Before even the interviewer meets you he will
first meet your resume. Interviewer looking at your resume is almost a 20% inter
view happening with out you knowing it. I was always a bad guy when it comes to
resume preparation. But when I looked at my friends resume they where gorgeous.
Now that I am writing series of book on interviews I thought this will be a good
point to put in. You can happily skip it if you are confident about your resume
. There is no hard and fast rule that you have to follow the same pattern but ju
st see if these all check list are attended. √ Use plain text when you are sendi
ng resumes through email. For instance you sent your resume using Microsoft word
and what if the interviewer is using Linux he will never be able to read your r
esume. You can not be sure both wise, you sent your resume in Word 2000 and the
guy has Word 97…uuhhh. Attach a covering letter it really impresses and makes yo
u look traditionally formal. Yes, even if you are sending your CV through email
send a covering letter. Start with an objective or summary, for instance, “Worki
ng as a Senior Database administrator for more than 4 years. Implemented quality
web based application. Follow the industry’s best practices and adhered and imp
lemented processes, which enhanced the quality of technical delivery. Pledge to
deliver the best technical solutions to the industry.” Specify your Core strengt
hs at the start of the resume by which the interviewer can make a quick decision
are you eligible for the position. For example :• Looked after data mining and
data warehousing department independently. Played a major role in query optimiza
tion. • Worked extensively in database design and ER diagram implementation. • W
ell versed with CMMI process and followed it extensively in projects. • Looking
forward to work on project manager or senior manager position.
91
√
Check list of content you should have in your resume :√
√
This is also a good position to specify your objective or position which makes i
t clear to the interviewer that should he call you for an interview. For instanc
e, if you are looking for senior position specify it explicitly ‘looking for thi
s job profile’. Any kind of certification like MCP, MCSD etc you can make it vis
ible in this section. √ Once you have specified briefly your goals and what you
have done its time to specify what type of technology you have worked with. For
instance RDBMS, TOOLS, Languages, Web servers, process (Six sigma, CMMI). After
that you can make a run through of your experience company wise that is what com
pany you have worked with, year / month joining and year / month left. This will
give an overview to the interviewer what type of companies you have associated
your self.
√
Now its time to mention all your projects you have worked till now. Best is to s
tart in descending order that is from your current project and go backwards. For
every project try to put these things :√ √ √ √ √ Project Name / Client name (It
’s sometimes unethical to mention clients name; I leave it to the readers). Numb
er of team members. Time span of the project. Tools, language, RDBMS and technol
ogy used to complete the project. Brief summary of the project.
Senior people who have huge experience will tend to increase there CV with putti
ng in summary for all project. Best for them is to just put description of the f
irst three projects in descending manner and rest they can say verbally during i
nterview. I have seen CV above 15 pages… I doubt who can read it. √ √ √ √ Finall
y comes your education and personal details. Trying for onsite, do not forget to
mention your passport number. Some guys tend to make there CV large and huge. I
think an optimal size should be not more than 4 to 5 pages. Do not mention your
salary in CV. You can talk about it during interview with HR or the interviewer
.
92
√
When you are writing your summary for project make it effective by using verbs l
ike managed a team of 5 members, architected the project from start to finish et
c. It brings huge weight. This is essential very essential take 4 to 5 Xerox cop
ies of your resume you will need it now and then. Just in case take at least 2 p
assport photos with you. You can escape it but many times you will need it. Carr
y all your current office documents specially your salary slips and joining lett
er.
√ √ √
Salary Negotiation Ok that’s what we all do it for money… not everyone is right.
This is probably the weakest area for techno savvy guys. They are not good nego
tiators. I have seen so many guys at the first instance they will smile and say
“NEGOTIABLE SIR”. So here are some points:√ Do a study of what is the salary tre
nd? For instance have some kind of baseline. For example what is the salary tren
d on number of year of experience? Discuss this with your friends out. Do not me
ntion your expected salary on the resume? Let the employer first make the salary
offer. Try to delay the salary discussion till the end. If they say what you ex
pect ?, come with a figure with a little higher end and say negotiable. Remember
never say negotiable on something which you have aimed, HR guys will always bri
ng it down. So negotiate on AIMED SALARY + some thing extra. The normal trend is
that they look at your current salary and add a little it so that they can pull
you in. Do your home work my salary is this much and I expect this much so what
ever it is now I will not come below this. Do not be harsh during salary negotia
tions. It’s good to aim high. For instance I want 1 billion dollars / month but
at the same time be realistic. Some companies have those hidden cost attached in
salary clarify that rather to be surprised at the first salary package.
93
√ √ √
√
√ √ √
√
Many of the companies add extra performance compensation in your basic which can
be surprising at times. So have a detail break down. Best is to discuss on hand
salary rather than NET. Talk with the employer in what frequency does the hike
happen. Take everything in writing, go back to your house and have a look once w
ith a cool head is the offer worth it of what your current employer is giving. D
o not forget once you have job in hand you can come back to your current employe
r for negotiation so keep that thing in mind.
√ √ √ √
Remember the worst part is cribbing after joining the company that your colleagu
e is getting more. So be careful while interview negotiations or be sportive to
be a good negotiator in the next interview. √ One very important thing is that t
he best negotiation ground is not the new company where you are going but the ol
d company which you are leaving. So once you have offer on hand get back to your
old employee and show them the offer and then make your next move. It’s my expe
rience that negotiating with the old employer is easy than with the new one….Fra
nkly if approached properly rarely any one will say no. Just do not be aggressiv
e or egoistic that you have an offer on hand.
Top of all some time some things are worth above money :- JOB SATISFACTION. So w
hatever you negotiate if you think you can get JOB SATISFACTION aspect on higher
grounds go for it. I think its worth more than money.
Figure :- 0.2 Salary Card for India
94
Figure :- 0.3 US Salary Card
Note: - The above US Salary card is based on my experience and some talk which I
had with my friends who are staying on longer term basis outside. In case you a
re finding discrepancies please do mail me at shiv_koirala@yahoo.com probably we
can standardize it better for the community. The score card shown above is comp
letely derived from author’s experience and interaction he had in his circle. It
is not an approved score card by any authorized body as such and should be take
n only has bench mark to measure your success. Also note that these rates are ap
plicable for medium and large software companies. Small company rate cards are v
ery irregular and governed by a single owner of the company. So the above rate c
ard is not applicable for small company. Many people do get mind blowing salarie
s even with small experience which again the score card does not reflect. Points
to remember √ √ √ √ One of the first questions asked during interview is “Can y
ou say something about yourself ”? Can you describe about your self and what you
have achieved till now? Why do you want to leave the current company? Where do
you see yourself after three years?
95
√ √ √ √ √ √ √ √ √ √
What are your positive and negative points? How much do you rate yourself in .NE
T and SQL Server in one out of ten? Are you looking for onsite opportunities? (B
e careful do not show your desperation of abroad journeys) Why have you changed
so many jobs? (Prepare a decent answer do not blame companies and individuals fo
r your frequent change). Never talk for more than 1 minute straight during inter
view. Have you worked with previous version of SQL Server? Would you be interest
ed in a full time Database administrator job? Do not mention client names in res
ume. If asked say that it’s confidential which brings ahead qualities like hones
ty When you make your resume keep your recent projects at the top. Find out what
the employer is looking for by asking him questions at the start of interview a
nd best is before going to interview. Example if a company has projects on serve
r products employer will be looking for BizTalk, CS CMS experts. Can you give br
ief about your family background? As you are fresher do you think you can really
do this job? Have you heard about our company ? Say five points about our compa
ny? Just read at least once what company you are going for? Can you describe you
r best project you have worked with? Do you work on Saturday and Sunday? Which i
s the biggest team size you have worked with? Can you describe your current proj
ect you have worked with? How much time will you need to join our organization?
What’s notice period for your current company? What certifications have you clea
red? Do you have pass port size photos, last year mark sheet, previous companies
employment letter, last months salary slip, pass port and other necessary docum
ents.
√ √ √ √ √ √ √ √ √ √
96
√ √ √ √ √ √ √ √ √ √ √ √
What is the most important thing that motivates you? Why you want to leave the p
revious organization? Which type of job gives you greatest satisfaction? What is
the type of environment you are looking for? Do you have experience in project
management? Do you like to work as a team or as individual? Describe your best p
roject manager you have worked with? Why should I hire you? Have you been ever f
ired or forced to resign? Can you explain some important points that you have le
arnt from your past project experiences? Have you gone through some unsuccessful
projects, if yes can you explain why did the project fail? Will you be comforta
ble with location shift? If you have personal problems say no right at the first
stage.... or else within two months you have to read my book again.
√ Do you work late nights? Best answer if there is project deadline yes. Do not
show that it’s your culture to work during nights. √ √ Any special achievements
in your life till now...tell your best project which you have done best in your
career. Any plans of opening your own software company...Beware do not start pou
ring your bill gate’s dream to him.....can create a wrong impression.
97
1. Basic .NET Framework
(B)What is a IL? Twist :- What is MSIL or CIL , What is JIT?
(IL)Intermediate Language is also known as MSIL (Microsoft Intermediate Language
) or CIL (Common Intermediate Language). All .NET source code is compiled to IL.
This IL is then converted to machine code at the point where the software is in
stalled, or at run-time by a Just-InTime (JIT) compiler.
(B)What is a CLR?
Full form of CLR is Common Language Runtime and it forms the heart of the .NET f
ramework. All Languages have runtime and its the responsibility of the runtime t
o take care of the code execution of the program. For example VC++ has MSCRT40.D
LL,VB6 has MSVBVM60.DLL, Java has Java Virtual Machine etc. Similarly .NET has C
LR. Following are the responsibilities of CLR √ Garbage Collection :- CLR automa
tically manages memory thus eliminating memory leaks. When objects are not refer
red GC automatically releases those memories thus providing efficient memory man
agement. Code Access Security :- CAS grants rights to program depending on the s
ecurity configuration of the machine. Example the program has rights to edit or
create a new file but the security configuration of machine does not allow the p
rogram to delete a file. CAS will take care that the code runs under the environ
ment of machines security configuration. Code Verification :- This ensures prope
r code execution and type safety while the code runs. It prevents the source cod
e to perform illegal operation such as accessing invalid memory locations etc. I
L( Intermediate language )-to-native translators and optimizer’s :- CLR uses JIT
and compiles the IL code to machine code and then executes. CLR also determines
depending on platform what is optimized way of running the IL code.
√
√
√
(B)What is a CTS?
In order that two language communicate smoothly CLR has CTS (Common Type System)
.Example in VB you have “Integer” and in C++ you have “long” these datatypes are
not compatible so the interfacing between them is very complicated. In order to
able that two different languages can
98
communicate Microsoft introduced Common Type System. So “Integer” datatype in VB
6 and “int” datatype in C++ will convert it to System.int32 which is datatype of
CTS. CLS which is covered in the coming question is subset of CTS.
Note: If you have undergone COM programming period interfacing VB6 application w
ith VC++ application was a real pain as the datatype of both languages did not h
ave a common ground where they can come and interface, by having CTS interfacing
is smooth. (B)What is a CLS(Common Language Specification)?
This is a subset of the CTS which all .NET languages are expected to support. It
was always a dream of Microsoft to unite all different languages in to one umbr
ella and CLS is one step towards that. Microsoft has defined CLS which are nothi
ng but guidelines that language to follow so that it can communicate with other
.NET languages in a seamless manner.
(B)What is a Managed Code?
Managed code runs inside the environment of CLR i.e. .NET runtime. In short all
IL are managed code. But if you are using some third party software example VB6
or VC++ component they are unmanaged code as .NET runtime (CLR) does not have co
ntrol over the source code execution of the language.
(B)What is a Assembly?
√ √ Assembly is unit of deployment like EXE or a DLL. An assembly consists of on
e or more files (dlls, exe’s, html files etc.), and represents a group of resour
ces, type definitions, and implementations of those types. An assembly may also
contain references to other assemblies. These resources, types and references ar
e described in a block of data called a manifest. The manifest is part of the as
sembly, thus making the assembly self-describing. An assembly is completely self
-describing.An assembly contains metadata information, which is used by the CLR
for everything from type checking and security to actually invoking the componen
ts methods. As all information is in the assembly itself, it is independent of r
egistry. This is the basic advantage as compared to COM where the version was st
ored in registry. Multiple versions can be deployed side by side in different fo
lders. These different versions can execute at the same time without interfering
with each other. Assemblies can be private or shared. For private assembly depl
oyment, the assembly is copied to the same directory as the client program that
references it. No registration is needed, and no fancy installation program is r
equired.
99
√
√
When the component is removed, no registry cleanup is needed, and no uninstall p
rogram is required. Just delete it from the hard drive. √ In shared assembly dep
loyment, an assembly is installed in the Global Assembly Cache (or GAC). The GAC
contains shared assemblies that are globally accessible to all .NET application
s on the machine.
(A) What are the different types of Assembly?
There are two types of assembly Private and Public assembly. A private assembly
is normally used by a single application, and is stored in the application s dir
ectory, or a sub-directory beneath. A shared assembly is normally stored in the
global assembly cache, which is a repository of assemblies maintained by the .NE
T runtime. Shared assemblies are usually libraries of code which many applicatio
ns will find useful, e.g. Crystal report classes which will be used by all appli
cation for Reports.
(B) What is NameSpace?
Namespace has two basic functionality :√ √ NameSpace Logically group types, exam
ple System.Web.UI logically groups our UI related features. In Object Oriented w
orld many times its possible that programmers will use the same class name.By qu
alifying NameSpace with classname this collision is able to be removed.
(B) What is Difference between NameSpace and Assembly?
Following are the differences between namespace and assembly : √ √ Assembly is p
hysical grouping of logical units. Namespace logically groups classes. Namespace
can span multiple assembly.
(A)If you want to view a Assembly how do you go about it ? Twist : What is ILDAS
M ?
When it comes to understanding of internals nothing can beat ILDASM. ILDASM basi
cally converts the whole exe or dll in to IL code. To run ILDASM you have to go
to "C:\Program Files\Microsoft
100
Visual Studio .NET 2003\SDK\v1.1\Bin". Note that i had v1.1 you have to probably
change it depending on the type of framework version you have. If you run IDASM
.EXE from the path you will be popped with the IDASM exe program as shown in fig
ure ILDASM. Click on file and browse to the respective directory for the DLL who
se assembly you want to view. After you select the DLL you will be popped with a
tree view details of the DLL as shown in figure ILDASM. On double clicking on m
anifest you will be able to view details of assembly, internal IL code etc as sh
own in Figure Manifest View.
Note : The version number are in the manifest itself which is defined with the D
LL or EXE thus making deployment much easier as compared to COM where the inform
ation was stored in registry. Note the version information in Figure Manifest vi
ew.
You can expand the tree for detail information regarding the DLL like methods et
c.
Figure:- 1.1 ILDASM
101
Figure :- 1.2 Manifest View
(A) What is Manifest?
Assembly metadata is stored in Manifest. Manifest contains all the metadata need
ed to do the following things (See Figure Manifest View for more details): √ √ √
√ √ Version of assembly Security identity Scope of the assembly Resolve referen
ces to resources and classes. The assembly manifest can be stored in either a PE
file (an .exe or .dll) with Microsoft intermediate language (MSIL) code or in a
stand-alone PE file that contains only assembly manifest information.
102
(B)Where is version information stored of an assembly ?
Version information is stored in assembly in manifest.
(I)Is versioning applicable to private assemblies?
Versioning concept is only applicable to global assembly cache (GAC) as private
assembly lie in their individual folders.
(B) What is GAC ? Twist :- What are situations when you register .NET assembly i
n GAC ?
GAC (Global Assembly Cache) is used where shared .NET assembly reside. GAC is us
ed in the following situations :√ √ If the application has to be shared among se
veral application. If the assembly has some special security requirements like o
nly administrators can remove the assembly. If the assembly is private then a si
mple delete of assembly the assembly file will remove the assembly.
Note :- Registering .NET assembly in GAC can lead to the old problem of DLL hell
, where COM version was stored in central registry. So GAC should be used when a
bsolutely necessary. (I) What is the concept of strong names ? Twist :- How do w
e generate strong names or what is the process of generating strong names, What
is use the of SN.EXE , How do we apply strong names to assembly, How do you sign
an assembly?
Strong name is similar to GUID(It is supposed to be unique in space and time) in
COM components.Strong Name is only needed when we need to deploy assembly in GA
C. Strong Names helps GAC to differentiate between two versions. Strong names us
e public key cryptography (PKC) to ensure that no one can spoof it.PKC use publi
c key and private key concept. Following are the step to generate a strong name
and sign a assembly :-
103
√
Go to “Visual Studio Command Prompt”. See below figure “Visual studio Command Pr
ompt”. Note the samples are compiled in 2005 but 2003 users do not have to worry
about it. Same type of command prompt will be seen in 2003 also.
Figure :- 1.3 Visual Studio Command Prompt
√
After you are in command prompt type sn.exe -k “c:\test.snk”.
Figure :- 1.4 Running SN.EXE
Figure :- 1.5 Successful output of SN.EXE
104
Figure :- 1.6 Sample view of test.snk file
√ √
After generation of the file you can view the SNK file in a simple notepad. Afte
r the SNK file is generated its time to sign the project with this SNK file.
105
Figure:- 1.7 Click on project and then click on “classlibrary1 properties” menu
to sign the assembly
√
Click on project -- properties and the browse the SNK file to the respective fol
der and compile the project.
106
Figure :- 1.8 Click on Use a key file to sign the assembly with strong name
(I)How to add and remove an assembly from GAC?
There are two ways to install .NET assembly in GAC:√ √ Using Microsoft Installer
Package. You can get download of installer from http://www.microsoft.com. Using
Gacutil. Goto “Visual Studio Command Prompt” and type “gacutil –i (assembly_nam
e)”, where (assembly_name) is the DLL name of the project.
107
(B) What is Delay signing ?
During development process you will need strong name keys to be exposed to devel
oper which is not a good practice from security aspect point of view.In such sit
uations you can assign the key later on and during development you an use delay
signing Following is process to delay sign an assembly: √ √ First obtain your st
ring name keys using SN.EXE. Annotate the source code for the assembly with two
custom attributes from System.Reflection: AssemblyKeyFileAttribute, which passes
the name of the file containing the public key as a parameter to its constructo
r. AssemblyDelaySignAttribute, which indicates that delay signing, is being used
by passing true as a parameter to its constructor. For example as shown below:
[Visual Basic] <Assembly:AssemblyKeyFileAttribute("myKey.snk")> <Assembly:Assemb
lyDelaySignAttribute(true)> [C#] [assembly:AssemblyKeyFileAttribute("myKey.snk")
] [assembly:AssemblyDelaySignAttribute(true)]
The compiler inserts the public key into the assembly manifest and reserves spac
e in the PE file for the full strong name signature. The real public key must be
stored while the assembly is built so that other assemblies that reference this
assembly can obtain the key to store in their own assembly reference. √ Because
the assembly does not have a valid strong name signature, the verification of t
hat signature must be turned off. You can do this by using the –Vr option with t
he Strong Name tool.The following example turns off verification for an assembly
called myAssembly.dll.
Sn –Vr myAssembly.dll
108
√ The using
Just before shipping, you submit the assembly to your organization s signing aut
hority for the actual strong name signing using the –R option with the Strong Na
me tool. following example signs an assembly called myAssembly.dll with a strong
name the sgKey.snk key pair.
Sn -R myAssembly.dll sgKey.snk (B)What is garbage collection?
Garbage collection is a CLR feature which automatically manages memory. Programm
ers forget to release the objects while coding ..... Laziness (Remember in VB6 w
here one of the good practices is to set object to nothing). CLR automatically r
eleases objects when they are no longer in use and refernced. CLR runs on non-de
terministic to see the unused objects and cleans them. One side effect of this n
on-deterministic feature is that we cannot assume an object is destroyed when it
goes out of the scope of a function. Therefore, we should not put code into a c
lass destructor to release resources.
(I) Can we force garbage collector to run ?
System.GC.Collect() forces garbage collector to run. This is not recommended but
can be used if situations arises.
(B)What is reflection?
All .NET assemblies have metadata information stored about the types defined in
modules. This metadata information can be accessed by mechanism called as “Refle
ction”.System. Reflection can be used to browse through the metadata information
. Using reflection you can also dynamically invoke methods using System.Type.Inv
okemember. Below is sample source code if needed you can also get this code from
CD provided, go to “Source code” folder in “Reflection Sample” folder.
Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles MyBase.Load Dim Pobjtype As Type Dim PobjObject As
Object Dim PobjButtons As New Windows.Forms.Button() Pobjtype = PobjButtons.Get
Type() For Each PobjObject In Pobjtype.GetMembers LstDisplay.Items.Add(PobjObjec
t.ToString()) Next End Sub End Class 109
Note :- Sample source code are compiled using VB.NET 2005.
Figure:- 1.9 Sample reflection display
Sample source code uses reflection to browse through “Button” class of “Windows.
Forms”. If you compile and run the program following is output as shown in “Samp
le Reflection Display”. Using reflection you can also dynamically invoke a metho
d using “System.Type.InvokeMember”.
Note :- System.Type.InvokeMember is left as homework for readers. Believe me you
will enjoy doing it yourself and the concept of reflection will be clearer. (P)
What are different types of JIT ? Note :- This question can only be asked when t
he interviewer does not know what he wants. It was asked to me in one of intervi
ew and for 15 minutes he was roaming around the same question in order to get an
swer from me (requirement was for a simple database project). Beware of such com
panies and interviewers you can land up no where.
JIT compiler is a part of the runtime execution environment. In Microsoft .NET t
here are three types of JIT compilers:
110
√ √ √
Pre-JIT :- Pre-JIT compiles complete source code into native code in a single co
mpilation cycle. This is done at the time of deployment of the application. Econ
o-JIT :- Econo-JIT compiles only those methods that are called at runtime. Howev
er, these compiled methods are removed when they are not required. Normal-JIT :-
Normal-JIT compiles only those methods that are called at runtime. These method
s are compiled the first time they are called, and then they are stored in cache
. When the same methods are called again, the compiled code from cache is used f
or execution.
(B) What are Value types and Reference types ?
Value types directly contain their data which are either allocated on the stack
or allocated in-line in a structure. Reference types store a reference to the va
lue s memory address, and are allocated on the heap. Reference types can be self
-describing types, pointer types, or interface types. Variables that are value t
ypes each have their own copy of the data, and therefore operations on one varia
ble do not affect other variables. Variables that are reference types can refer
to the same object; therefore, operations on one variable can affect the same ob
ject referred to by another variable. All types derive from the System.Object ba
se type.
(B) What is concept of Boxing and Unboxing ?
Boxing permits any value type to be implicitly converted to type object or to an
y interface type implemented by value type. Boxing is a process in which object
instances are created and copy values in to that instance. Unboxing is vice vers
a of boxing operation where the value is copied from the instance in to appropri
ate storage location. Below is sample code of boxing and unboxing where integer
data type is converted in to object and then vice versa.
Dim x As Integer Dim y As Object x = 10 ‘ boxing process y=x
111
‘ unboxing process x=y (B) What is the difference between VB.NET and C# ?
Well this is the most debatable issue in .NET community and people treat there l
anguages like religion. Its a subjective matter which language is best. Some lik
e VB.NET’s natural style and some like professional and terse C# syntaxes. Both
use the same framework and speed is also very much equivalents. But still let’s
list down some major differences between them :Advantages VB.NET :√ √ √ √ Has su
pport for optional parameters which makes COM interoperability much easy. With O
ption Strict off late binding is supported.Legacy VB functionalities can be used
by using Microsoft.VisualBasic namespace. Has the WITH construct which is not i
n C#. The VB.NET part of Visual Studio .NET compiles your code in the background
. While this is considered an advantage for small projects, people creating very
large projects have found that the IDE slows down considerably as the project g
ets larger.
Advantages of C# √ √ √ √ XML documentation is generated from source code but thi
s is now been incorporated in Whidbey. Operator overloading which is not in curr
ent VB.NET but is been introduced in Whidbey. Use of this statement makes unmana
ged resource disposal simple. Access to Unsafe code. This allows pointer arithme
tic etc, and can improve performance in some situations. However, it is not to b
e used lightly, as a lot of the normal safety of C# is lost (as the name implies
).This is the major difference that you can access unmanaged code in C# and not
in VB.NET.
* How much ever this book tries it can not match the huge variations of question
s that have been asked in.NET interviews.But note there will be variations and t
hey will map to some question of this book.
112
(I)What is the difference between System exceptions and Application exceptions?
All exception derives from Exception Base class. Exceptions can be generated pro
grammatically or can be generated by system. Application Exception serves as the
base class for all applicationspecific exception classes. It derives from Excep
tion but does not provide any extended functionality. You should derive your cus
tom application exceptions from Application Exception. Application exception is
used when we want to define user defined exception, while system exception is al
l which is defined by .NET.
Figure :- 1.10 Exception Hierarchy
Note:- Frankly I have always relied on using Microsoft exception application blo
cks. As such I have never used application exception; I think most of the work i
s done using System exception classes. (I)What is CODE Access security?
113
CAS is part of .NET security model that determines whether or not a piece of cod
e is allowed to run and what resources it can use while running. Example CAS wil
l allow an application to read but not to write and delete a file or a resource
from a folder..
(I)What is a satellite assembly?
Refer Localization chapter for more details
(A)How to prevent my .NET DLL to be decompiled?
By design .NET embeds rich Meta data inside the executable code using MSIL. Any
one can easily decompile your DLL back using tools like ILDASM (owned by Microso
ft) or Reflector for .NET which is a third party. Secondly there are many third
party tools which make this decompiling process a click away. So any one can eas
ily look in to your assemblies and reverse engineer them back in to actual sourc
e code and understand some real good logic which can make it easy to crack your
application. The process by which you can stop this reverse engineering is using
“obfuscation”. It’s a technique which will foil the decompilers. There are many
third parties (XenoCode, Demeanor for .NET) which provide .NET obfuscation solu
tion. Microsoft includes one that is Dotfuscator Community Edition with Visual S
tudio.NET.
Note: - I leave this as homework to reader’s compile, a DLL obfuscate it using “
Dotfuscator Community Edition” which comes with Visual Studio.NET and try viewin
g the same using ILDASM. (I) What is the difference between Convert.toString and
.toString() method ?
Just to give an understanding of what the above question means seethe below code
.
int i =0; MessageBox.Show(i.ToString()); MessageBox.Show(Convert.ToString(i));
We can convert the integer “i” using “i.ToString()” or “Convert.ToString” so wha
t’s the difference. The basic difference between them is “Convert” function hand
les NULLS while “i.ToString()” does not it will throw a NULL reference exception
error. So as good coding practice using “convert” is always safe.
114
(A) What is Native Image Generator (Ngen.exe)?
The Native Image Generator utility (Ngen.exe) allows you to run the JIT compiler
on your assembly s MSIL and generate native machine code which is cached to dis
k. After the image is created .NET runtime will use the image to run the code ra
ther than from the hard disk. Running Ngen.exe on an assembly potentially allows
the assembly to load and execute faster, because it restores code and data stru
ctures from the native image cache rather than generating them dynamically. Belo
w are some points to be remembered for Native Image Generator:√ √ Native images
load faster than MSIL because JIT compilation and type-safety verification is el
iminated. If you are sharing code between process Ngen.exe improves the performa
nce significantly. As Native image generated Windows PE file so a single DLL fil
e can be shared across applications. By contrast JIT produced code are private t
o an assembly and can not be shared. Native images enable code sharing between p
rocesses. Native images require more storage space and more time to generate. St
artup time performance improves lot. We can get considerable gains when applicat
ions share component assemblies because after the first application has been sta
rted the shared components are already loaded for subsequent applications. If as
semblies in an application must be loaded from the hard disk, does not benefit a
s much from native images because the hard disk access time shadows everything.
Assemblies in GAC do not benefit from Native image generator as the loader perfo
rms extra validation on the strong named assemblies thus shadowing the benefits
of Native Image Generator. If any of the assemblies change then Native image sho
uld also be updated. You should have administrative privilege for running Ngen.e
xe. While this can fasten your application startup times as the code is statical
ly compiled but it can be somewhat slower than the code generated dynamically by
the JIT compiler. So you need to compare how the whole application performance
with Ngen.exe and with out it.
√ √ √
√
√ √ √
To run Ngen.exe, use the following command line.
ngen.exe install <assemblyname>
115
This will synchronously precompile the specified assembly and all of its depende
ncies. The generated native images are stored in the native image cache. In .NET
Framework 2.0 there is a service (.NET Runtime Optimization Service) which can
precompile managed assemblies in the background. You can schedule your assemblie
s to be precompiled asynchronously by queueing them up with the NGEN Service. Us
e the following command line.
ngen.exe install <assemblyname> /queue:<priority>
Assemblies which are critical to your application s start up time should either
be precompiled synchronously or asynchronously with priority 1. Priority 1 and 2
assemblies are precompiled aggressively while Priority 3 assemblies are only pr
ecompiled during machine idle-time. Synchronously precompiling your critical ass
emblies guarantees that the native images will be available prior to the first t
ime your end user launches the application but increases the time taken to run y
our application s set up program. You can uninstall an assembly and its dependen
cies (if no other assemblies are dependent on them) from the native image cache
by running the following command.
ngen.exe uninstall <assemblyname>
Native images created using Ngen.exe cannot be deployed; instead they need to be
created on the end user s machine. These commands therefore need to be issued a
s part of the application s setup program. Visual Studio .NET can be used to imp
lement this behavior by defining custom actions in a Microsoft Installer (MSI) p
ackage.
Note: - One of the things the interviewer will expect to be answered is what sce
nario will use a Native Image generator. Best is to say that we first need to te
st the application performance with Native Image and with out it and then make a
decision. (A) We have two version of the same assembly in GAC? I want my client
to make choice of which assembly to choose? Note: - I really want to explain th
is in depth for two reasons. First I have seen this question been frequently ask
ed and second it’s of real practical importance. I have faced this in every of m
y .NET projects...So let’s try to get this fundamental not in our brain but in o
ur heart.
OK first let’s try to understand what the interviewer is talking about. Let’s sa
y you have made an application and its using a DLL which is present in GAC. Now
for some reason you make second version of the same DLL and put it in GAC. Now w
hich DLL does the application refer? Ok by default it always refers the latest o
ne. But you want that it should actually use the older version.
116
So first we answer in short. You need to specify “bindingRedirect” in your confi
g file. For instance in the below case “ClassLibraryVersion” has two versions “1
.1.1830.10493” and “1.0.1830.10461” from which “1.1.1830.10493” is the recent ve
rsion. But using the bindingRedirect we can specify saying “1.0.1830.10461” is t
he new version. So the client will not use “1.1.1830.10493”.
<configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.
v1"> <dependentAssembly> <assemblyIdentity name="ClassLibraryVersion" publicKeyT
oken="b035c4774706cc72" culture="neutral"/> <bindingRedirect oldVersion= "1.1.18
30.10493" newVersion= "1.0.1830.10461"/> </dependentAssembly> </assemblyBinding>
</runtime> </configuration>
Ok now I will try to answer it in long way by doing a small sample project. Agai
n this project will be done using C#. So in CD you can find the “Versioning” pro
ject. Below is the solution display, it has two projects one the windows client
project ( “WindowsVersioningCSharp” ) and second the class library project ( “Cl
assLibraryVersion” ) which will be installed in GAC with two versions.
117
Figure 1.11: - Solution files for the versioning project.
Our first primary goal is to put two different versions of the same DLL in GAC.
So let’s make a walk through of “ClassLibraryVersion” project. It’s a very simpl
e class which has “Version” function which just sends a string “This is old Vers
ion”. Second we will also just ensure that the assembly version is “1.0” in the
“AssemblyInfo.cs”.
118
Figure 1.12 : - Assembly Version 1.0
Second in order that we can put a DLL in GAC we need to create generate strong n
ames and assign the same to the class. For instance, in below figure I have gene
rated the strong name in “mykey.snk” and assigned the same to the DLL.
119
Figure 1.13 : - Strong naming your DLL
Finally we need to install the same in GAC using “gacutil” tool. Below is the fi
gure which shows the same. This installs one version of “ClassLibraryVersion.dll
” in GAC.
Figure 1.14 : - Install the same in GAC
Now it is time to create a second version of the DLL. So here is what we will do
first we will just return a different string value for this new version DLL. Yo
u can see in the below figure I have changed the string to return “This is New V
ersion”. Secondly we also need to change the AssemblyVersion to “1.1.*” in the “
AssemblyInfo.cs” file. After that again compile the DLL and run the “gacutil” to
register this second version of the “ClasLibraryVersion.dll”.
120
Figure 1.15 : - Rename to Assembly Version 1.1
Now when we view the GAC we can see two version of “ClassLibraryVersion” i.e. “1
.1.1832.2619” and “1.0.1832.2172” (see figure below).
Figure 1.16 : - Two version of “ClassLibraryVersion” dll.
121
Now that we have created the environment of two version of the same DLL in GAC i
ts time to look at how client can make a choice between those versions. We need
to generate “publicKeyToken” in order to move ahead. Below is a sample print scr
een which shows how we can use “sn.exe” to generated the public key token. Note
the “-T” parameter.
Figure 1.17 : - Get the PublicKeyToken
Now let’s look at the client which will consume this DLL. I have just added wind
ows form and a button to the same. In the button click we will try to call the v
ersion function and display the data. So below is the code in the first step we
create the object of “ClassLibraryVersion.Class1” and in the second step we call
the “Version” function to display the data.
Figure 1.18 : - Client code calling the GAC class.
Now comes the most important part of the whole thing the “app.config” file which
will decide which version should be used. So add a new “app.config” file in the
project and add the “AssemblyBinding” section as show below. So you need to spe
cify the following things:-
√ √ √
Assembly name in the “name” attribute of “assemblyIdentity” section. Specify the
“publicKeyToken” value in the “assemblyIndentity” section which was generated u
sing “sn.exe –T ‘dllname.dll’ “. Specify the “oldVersion” and “newVersion” value
s in the “bindingRedirect” element. So what ever version we want the client to u
se should be specified in the “newVersion” attribute.
122
You can see from the figure below I have specified that client should use “1.0.*
” version. So the client will display “This is old Version”.
Figure 1.19 : - App.config file using the BindingRedirect
If you run the source code with changing version numbers you can see the below t
wo message boxes on different version numbers. That is “This is old version” wil
l be displayed when “newVersion” value is “1.0.1832.5411” and “This is new Versi
on” will be displayed when “newVersion” value is “1.1.1832.5427”.
123
Figure 1.20 : - Different Display depending on version numbers
Note: - Source code is provided in “versioning” folder. But as you compile the D
LL’s different publicToken numbers are created so you need to run the sn.exe in
your machine and change the token number accordingly in the “App.config” file. (
A)What is CodeDom?
“CodeDom” is an object model which represents actually a source code. It is desi
gned to be language independent - once you create a “CodeDom” hierarchy for a pr
ogram we can then generate the source code in any .NET compliant language. So le
t’s try to do something real practical and simple to just get a feel of how powe
rful “CodeDom” is.
Note :- You can get the source code in CD in “CodeDom” folder.
We will try to generate the following code below. The below code which will be g
enerated does not do anything special buy just displays a hello message and wait
s for the key to be pressed.
namespace InterviewQuestions { using System; public class EntryPoint { public st
atic void Main() { System.Console.WriteLine(“Hello from Interview Question serie
s”); System.Console.ReadLine();
124
} } }
The “Codedom” folder in the CD has one “GenerateCode” method which returns “Code
CompileUnit” object. “CodeDom” is nothing but a full DOM model where every objec
t in the structure represents a code unit. I have put comments the code so that
the code is self understandable. I have commented the code below so that readers
can follow what is exactly happening. When you click the button it generates th
e “MyCode.cs” and also compiles the “Mycode.exe” in the “bin” folder.
private CodeCompileUnit GenerateCode() { // Definition of the Main method which
will be entry point CodeEntryPointMethod objMainMethod = new CodeEntryPointMetho
d(); objMainMethod.Name = “Main”; // generate this expression: Console CodeTypeR
eferenceExpression consoleType = new CodeTypeReferenceExpression(); consoleType.
Type = new CodeTypeReference(typeof(Console)); // Set up the argument list to pa
ss to Console.WriteLine() CodeExpression[] writeLineArgs = new CodeExpression[1]
; CodePrimitiveExpression arg0 = new CodePrimitiveExpression(“Hello from Intervi
ew Question series”); writeLineArgs[0] = arg0; // generate this statement: Conso
le.WriteLine(message) CodeMethodReferenceExpression writeLineRef = new CodeMetho
dReferenceExpression(consoleType, “WriteLine”);
125
CodeMethodInvokeExpression writeLine = new CodeMethodInvokeExpression(writeLineR
ef, writeLineArgs); // generate this statement: Console.ReadLine() CodeMethodRef
erenceExpression readLineRef = new CodeMethodReferenceExpression(consoleType, “R
eadLine”); CodeMethodInvokeExpression readLine = new CodeMethodInvokeExpression(
readLineRef); // Add Main() method to a class CodeTypeDeclaration theClass = new
CodeTypeDeclaration(); theClass.Members.Add(objMainMethod); theClass.Name = “En
tryPoint”; // Add both the code of WriteLine and Readline objMainMethod.Statemen
ts.Add(writeLine); objMainMethod.Statements.Add(readLine); // Add namespace and
add class CodeNamespace ns = new CodeNamespace(“InterviewQuestions”); ns.Imports
.Add(new CodeNamespaceImport(“System”)); ns.Types.Add(theClass); // Generate the
Compile Unit CodeCompileUnit unit = new CodeCompileUnit(); unit.Namespaces.Add(
ns);
126
Sample provided is very basic but in actual project using codedom can be very co
mplicated. Projects where you need auto code generation codedom can be a right c
hoice. Beware of high bulky architecture created due to codedom.
127
2..NET Interoperability
(I) How can we use COM Components in .NET? Twist : What is RCW ?
.NET components communicate with COM using RCW (Runtime Callable Wrapper). Follo
wing are the ways with which you can generate RCW :√ Adding reference in Visual
Studio.net. See figure below (Adding reference using VS.NET 2005). Wrapper class
is generated and placed in the “BIN” directory.
Figure :- 2.1 Adding Reference using VS.NET 2005
128
√ √
Using Type library import tool. Tlbimp.exe yourname.dll. Using interopservices.S
ystem.runtime.Interopservices namespace contains class TypeLib Converter which p
rovides methods to convert COM classes and interface in to assembly metadata. Ma
ke your custom wrappe rs.If your COM component does not have type library then t
he only way to communicate is writing custom wrappers. That means communicating
directly with COM components.
√
(I) Once I have developed the COM wrapper do I have to still register the COM in
registry?
Yes.
(A)How can we use .NET components in COM? Twist :- What is CCW (COM callable wra
pper) ?, What caution needs to be taken in order that .NET components is compati
ble with COM ?
.NET components can not be used in straight forward way with COM. You will need
to create CCW in order that COM components communicate with .NET assemblies. Fol
lowing are the different approaches to implement it :√ Explicitly declare interf
aces..
Public Interface ICustomer Property CustomerName() As String Property CustomerCo
de() As String Sub AddCustomer() End Interface Public Class Customer Implements
ICustomer Private PstrCustomerName As String Private PstrCustomerCode As String
Public Sub AddCustomer() Implements ICustomer.AddCustomer Try ‘ addin of databas
e code can go here Catch ex As Exception Throw ex End Try
129
End Sub Public Property CustomerCode() As String Implements ICustomer.CustomerCo
de Get Return PstrCustomerCode End Get Set(ByVal value As String) PstrCustomerCo
de = value End Set End Property Public Property CustomerName() As String Impleme
nts ICustomer.CustomerName Get Return PstrCustomerName End Get Set(ByVal value A
s String) PstrCustomerName = value End Set End Property Public Sub New() End Sub
End Class
Note :- Source code of this is provided in CD in SOURCECODE folder in COMCALLABL
EWRAPPER
The above customer class is going to be used by COM components so all the proper
ties and methods are declared in interface and implemented in the customer class
. Customer Name.Customer Code and AddCustomer are first declared in ICustomer an
d then implemented in Customer Class. Also note that the class must have a defau
lt constructor.
Note :- All source code in this book is provided in VB.NET that does not mean th
at author of the book does not like C#. In fact the main programming language of
author is C#. In order to keep things small I have only used one language. But
the conversion is so seamless that it is of least matter.
130
√ are
The second way to create CCW is by using InteropServices attributes. Here interf
aces created automatically.
Following are different type of class attributes : None:-No class interface is g
enerated for the class. This is default setting when you do not specify anything
. AutoDispatch :- Interface that supports IDispatch is created for the class. Ho
wever, no type information is produced. AutoDual :- A dual interface is created
for the class. Type information is produced and made available in the type libra
ry. Below in the source code we have used the third attribute.
Imports System.Runtime.InteropServices <ClassInterfaceAttribute(ClassInterfaceTy
pe.AutoDual)> _ Public Class ClsCompliant End Class
Other than class attributes defined up there are other attributes with which you
can govern other part of assembly.Example “GuidAttribute” allows you to specify
the GUID, “ComVisibleAttribute” can be used to hide .NET types from COM etc. Al
l attributes are not in scope of the book as this is a interview questions book
refer MSDN for more details. √ Once .NET assembly is created using either interf
ace or using interopservices method we need to create a COM type library using T
ype library export tool.
Tlbexp (AssemblyName)
√ The final thing is registering the CCW in registry using regasm tool.
regasm AssemblyName [Options]
√ Finally refer the TLB in your COM IDE Below is figure showing VB6 IDE referenc
ing the DLL
Note :- DLL and TLB should be in same directory where the application is execute
d.
131
Figure :- 2.2 VB6 IDE referencing the CCW
(A)How can we make Windows API calls in .NET?
Windows API call are not COM based and they are invoked through Platform Invoke
Services.
Declare StringConversionType (Function | Sub) MethodName Lib "DllName" ([Args])
As Type
√ strings √ √ √
132
StringConversionType is for what type of conversion should take place. Either we
can specify Unicode to convert all strings to Unicode values, or Auto to conver
t according to the .NET runtime rules. MethodName is the name of the API to call
. DllName is the name of the DLL. Args are any arguments to the API call.
√
Type is the return type of the API call.
Below is a sample code for VB.NET which uses Sleep windows API for delaying.
Public Class Form1 Declare Auto Sub Sleep Lib “kernel32.dll” (ByVal dwMillisecon
ds As Long) Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As Sys
tem.EventArgs) Handles MyBase.Load MessageBox.Show(“ start sleeping for 5000 Mil
li seconds.....”) Sleep(5000) MessageBox.Show(“ end of sleeping.....”) End Sub E
nd Class
Note:- Source code is provided in CD in “APICALL” folder
In VB.NET we use declare keyword but in C# it goes little bit different, we use
DLLIMPORT here.
Note :- We have interopservices in this and EXTERN keyword.
#region Using directives using System; using System.Collections.Generic; using S
ystem.ComponentModel; using System.Data; using System.Drawing; using System.Wind
ows.Forms; using System.Runtime.InteropServices; #endregion namespace CSharpCode
{ partial class Form1 : Form { [DllImport(“Kernel32.dll”)] static extern int Sl
eep(long dwMilliseconds); public Form1() { InitializeComponent(); } private void
Form1_Load(object sender, EventArgs e) 133
{ MessageBox.Show(“Starting of 5000 ms...”); Sleep(5000); MessageBox.Show(“End o
f 5000 ms...”); } } }
(B)When we use windows API in .NET is it managed or unmanaged code ?
Windows API in .NET is unmanaged code.
Note:- Even though VB6 and V C++ has gone off still many people do ask these old
questions again and again. Still there are decent old application which are wor
king with COM very much fine. So interviewer still asks you these questions so t
hat those application’s can be ported to .NET. So let’s play some old music... B
y the way my favourite music is Kishore, what’s yours??? (I)What is COM ?
Microsoft’s COM is a technology for component software development. It is a bina
ry standard which is language independent. DCOM is a distributed extension of CO
M.
(A) What is Reference counting in COM ?
Reference counting is a memory management technique used to count how many times
an object has a pointer referring to it. The first time it is created, the refe
rence count is set to one. When the last reference to the object is nulled, the
reference count is set to zero and the object is deleted. Care must be exercised
to prevent a context switch from changing the reference count at the time of de
letion. In the methods that follow, the syntax is shortened to keep the scope of
the discussion brief and manageable.
(A) Can you describe IUKNOWN interface in short ?
Every COM object supports at least one interface, the IUnknown interface. All in
terfaces are classes derived from the base class IUnknown. Each interface suppor
ts methods access data and perform operations transparently to the programmer. F
or example, IUnknown supports three methods, AddRef, Release(), and QueryInterfa
ce(). Suppose that pinterf is a pointer to an IUnknown. pinterf->AddRef() increm
ents the reference count. pinterf->Release() decrements the reference count, del
eting the object when the reference count reaches zero. pinterf->QueryInterface(
IDesired,
134
pDesired) checks to see if the current interface (IUnknown) supports another int
erface, IDesired, creates an instance (via a call to CoCreateInstance()) of the
object if the reference count is zero (the object does not yet exist), and then
calls pDesired->AddRef() to increment the reference count (where pDesired is a p
ointer to IDesired) and returns the pointer to the caller.
(I)Can you explain what is DCOM ?
DCOM differs from COM in that it allows for creating objects distributed across
a network, a protocol for invoking that object’s methods, and secures access to
the object. DCOM provides a wrapper around COM, hence it is a backwards compatib
le extension. DCOM uses Remote Procedural Calls (RPC) using Open Software Founda
tion’s Distributed Computing Environment. These RPC are implemented over TCP/IP
and named pipes. The protocol which is actually being used is registered just pr
ior to use, as opposed to being registered at initialization time. The reason fo
r this is that if a protocol is not being used, it will not be loaded. In order
to inform an object that the client is still alive, periodic pinging is used. He
nce, when the client has died and no ping has been received (to refresh it) befo
re the expiration time, the server object will perform some clean up tasks (incl
uding decrementing its reference count). Since RPC across a network are typicall
y slow (compared to processes residing on the same machine), DCOM sends multiple
requests in the same call. For example, in COM, the program performs a QueryInt
erface, one interface at a time. In DCOM, multiple QueryInterfaces are all clust
ered into one call. This clustering optimization trick is also used when creatin
g an instance of the object and serializing it with data. Since these two operat
ions usually occur together, DCOM allows one method which will perform both oper
ations in one call without waiting for an acknowledgment from the first task bef
ore performing the second one. Similarly, when a client pings its server object,
he can do it in one call. Moreover, if there are multiple clients sending pings
to multiple servers, an optimization is made where the multiple pings going to
the same object are consolidated into just one ping. This is to cut down on the
use of precious bandwidth used only for pinging. The client has the control to s
et the computer which will be responsible for the lifetime of the object. That i
s to say, these objects are not created just somewhere where the system resource
s and access privileges allow for it. Call security is implemented in all four w
ays: authentication (to prevent false clients from impersonating the true client
), authorization (to insure that a client only does what it is authorized to do)
, data integrity (to insure that data was not tampered with during transit) and
data privacy (to insure that only designated sources can read it). The security
issues are handled as they are on
135
operating systems. The client gives the server various access privileges to acce
ss memory or disk space
(B)How do we create DCOM object in VB6?
Using the CreateObject method you can create a DCOM object. You have to put the
server name in the registry.
(A)How to implement DTC in .NET ?
DTC is implemented using COM+. Following are the steps to implement COM + in .NE
T :√ “EnterpriseService” namespace has all the classes by which we can implement
DTC in .NET. You have to add reference “EnterpriseService” namespace.
136
Figure :- 2.3 Add reference to EnterpriseServices.
√ √
You class must derive from “Serviced Component” object. Then you have to define
your class with the transaction attribute
(For all transaction attribute look the down question)
[ Transaction(TransactionOption.RequiresNew) ]
√ After the class level transaction type is defined. Its time to define at the m
ethod level the AutoComplete attribute. Autocomplete attribute says that if no e
xception is thrown then mark its part of the transaction as being okay. This hel
ps cut down on the amount of code required. If the implementation sets AutoCompl
ete to false, or
137
omits it all together, then we would need to manage the transaction manually. To
manually control the transaction you will need to use the ContextUtil class and
its static members. Following is small snippet of ContextUtil: -
public void SampleFunction() { try { // Do something to a database // ... // Eve
rything okay so far Commit the transaction ContextUtil.SetComplete(); } catch(Ex
ception) { // Something went wrong Abort and Rollback the Transaction. ContextUt
il.SetAbort(); } }
√ √ Component derived from “ServicedComponent” should be strong named as they ru
n under COM+. Once the classes are compiled using the string name.Register the C
omponent in COM+ services using
regsvcs c:\DllPath\TransactionComponent.dll
√ You can see that the component is registered using the COM+ explorer.
(A)How many types of Transactions are there in COM + .NET ?
138
There are 5 transactions types that can be used with COM+. Whenever an object is
registered with COM+ it has to abide either to these 5 transaction types. Disab
led: - There is no transaction. COM+ does not provide transaction support for th
is component. Not Supported: - Component does not support transactions. Hence ev
en if the calling component in the hierarchy is transaction enabled this compone
nt will not participate in the transaction. Supported: - Components with transac
tion type support will be a part of the transaction. This will be only if the ca
lling component has an active transaction. If the calling component is not trans
action enabled this component will not start a new transaction. Required: - Comp
onents with this attribute require a transaction i.e. either the calling should
have a transaction in place else this component will start a new transaction.
Required New: - Components enabled with this transaction type always require a n
ew transaction. Components with required new transaction type instantiate a new
transaction for themselves every time.
(A)How do you do object pooling in .NET ?
COM+ reduces overhead by creating object from scratch. So in COM+ when object is
activated its activated from pool and when its deactivated it’s pushed back to
the pool. Object pooling is configures by using the “ObjectPoolingAttribute” to
the class.
Note:- When a class is marked with objectpooling attribute it can not be inherit
ed. ObjectPooling(MinPoolSize := 2, MaxPoolSize := 5, CreationTimeout := 20000)>
_ Public Class testingclass Inherits ServicedComponent Public Sub DoWork() Me
thod contents go here. End Sub End Class
Above is a sample code which has the “ObjectPooling” attribute defined. Below is
a sample code which uses the class.
139
Public Class App Overloads Public Shared Sub Main(args() As String) Dim xyz As N
ew TestObjectPooling() xyz.doWork() ServicedComponent.DisposeObject (xyz) End Su
b End Class
Above is a sample code which uses the object pooled object. Note the DisposeObje
ct() This ensures its safe return to the object pool.
(A)What are types of compatibility in VB6?
There are three possible project compatibility settings: √ √ √ No Compatibility
Project Compatibility Binary Compatibility
No Compatibility
With this setting, new class ID’s, new interface ID’s and a new type library ID
will be generated by VB each time the ActiveX component project is compiled. Thi
s will cause any compiled client components to fail (with error 429!) and report
a missing reference to the VB ActiveX Test Component when a client project is
loaded in the VB IDE.
Note :- Use this setting to compile the initial release of a component to other
developers. Project Compatibility
With this setting, VB will generate new interface ID’s for classes whose interfa
ces have changed, but will not change the class ID’s or the type library ID. Thi
s will still cause any compiled client components to fail (with error 429!) but
will not report a missing reference to the VB ActiveX Test Component when a cl
ient project is loaded in the VB IDE. Recompilation of client components will re
store them to working order again.
Note:- Use this setting during the initial development and testing of a componen
t within the IDE and before the component is released to other developers.
140
Binary Compatibility
VB makes it possible to extend an existing class or interface by adding new meth
ods and properties etc. and yet still retain binary compatibility. It can do thi
s, because it silently creates a new interface ID for the extended interface and
adds registration code to register the original interface ID but with a new For
ward key containing the value of this new interface ID. COM will then substitute
calls having the old ID with the new ID and hence applications built against th
e old interface will continue to work (assuming the inner workings of the compon
ent remain backward compatible!). With this setting, VB will not change any of t
he existing class, interface or type library ID’s, however in order that it can
do so, VB requires the project to specify an existing compiled version that it c
an compare against to ensure that existing interfaces have not been broken
(A)What is equivalent for regsvr32 exe in .NET ?
Regasm
141
3. Threading
(B)What is Multi-tasking ? It’s a feature of modern operating systems with which
we can run multiple programs at same time example Word, Excel etc. (B)What is M
ulti-threading ? Multi-threading forms subset of Multi-tasking. Instead of havin
g to switch between programs this feature switches between different parts of th
e same program. Example you are writing in word and at the same time word is doi
ng a spell check in background. (B)What is a Thread ? A thread is the basic unit
to which the operating system allocates processor time. (B)Did VB6 support mult
i-threading ? While VB6 supports multiple single-threaded apartments, it does no
t support a freethreading model, which allows multiple threads to run against th
e same set of data. (B)Can we have multiple threads in one App domain ? One or m
ore threads run in an AppDomain. An AppDomain is a runtime representation of a l
ogical process within a physical process. Each AppDomain is started with a singl
e thread, but can create additional threads from any of its threads. Note :- All
threading classes are defined in System.Threading namespace. (B)Which namespace
has threading ? Systems.Threading has all the classes related to implement thre
ading. Any .NET application who wants to implement threading has to import this
namespace. Note :- .NET program always has at least two threads running one is t
he main program and second is the garbage collector. (I)Can you explain in brief
how can we implement threading ?
142
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArg
s) Handles MyBase.Load Dim pthread1 As New Thread(AddressOf Thread1) Dim pthread
2 As New Thread(AddressOf Thread2) pthread1.Start() pthread2.Start() End Sub Pub
lic Sub Thread1() Dim pintcount As Integer Dim pstr As String pstr = “This is fi
rst thread” Do Until pintcount > 5 lstThreadDisplay.Items.Add(pstr) pintcount =
pintcount + 1 Loop End Sub Public Sub Thread2() Dim pintcount As Integer Dim pst
r As String pstr = “This is second thread” Do Until pintcount > 5 lstThreadDispl
ay.Items.Add(pstr) pintcount = pintcount + 1 Loop End Sub
Above is a sample code which shows simple sample code for threading. Above sampl
e code can be found in “Threading” folder in CD provided. Above sample has two m
ethods “Thread1()” and “Thread2()” which are started in multi-threaded mode in F
orm load event of the sample. Note :- If you run the sample you will see that so
metimes the first thread runs first and then the second thread.This happens beca
use of thread priorities . The first thread is run with highest priority. (A)How
can we change priority and what the levels of priority are provided by .NET ?
143
Thread Priority can be changed by using Threadname.Priority = ThreadPriority.Hig
hest. In the sample provided look out for code where the second thread is ran wi
th a high priority. Following are different levels of Priority provided by .NET
:√ √ √ √ √ ThreadPriority.Highest ThreadPriority.AboveNormal ThreadPriority.Norm
al ThreadPriority.BelowNormal ThreadPriority.Lowest
(A)What does AddressOf operator do in background ? The AddressOf operator create
s a delegate object to the BackgroundProcess method. A delegate within VB.NET is
a type-safe, object-oriented function pointer. After the thread has been instan
tiated, you begin the execution of the code by calling the Start() method of the
thread (A)How can you reference current thread of the method ? "Thread.CurrentT
hread" refers to the current thread running in the method."CurrentThread" is a p
ublic static property. (I) What s Thread.Sleep() in threading ? Thread s executi
on can be paused by calling the Thread.Sleep method. This method takes an intege
r value that determines how long the thread should sleep. Example Thread.Current
Thread.Sleep(2000). (A)How can we make a thread sleep for infinite period ? You
can also place a thread into the sleep state for an indeterminate amount of time
by calling Thread.Sleep (System.Threading.Timeout.Infinite). To interrupt this
sleep you can call the Thread.Interrupt method. (A) What is Suspend and Resume i
n Threading ?
144
It is Similar to Sleep and Interrupt. Suspend allows you to block a thread until
another thread calls Thread.Resume. The difference between Sleep and Suspend is
that the latter does not immediately place a thread in the wait state. The thre
ad does not suspend until the .NET runtime determines that it is in a safe place
to suspend it. Sleep will immediately place a thread in a wait state. Note :- I
n threading interviews most people get confused with Sleep and Suspend. They loo
k very similar. (A)What the way to stop a long running thread ? Thread.Abort() s
tops the thread execution at that moment itself. (A) How do I debug thread ?
Figure :- 3.1 Debug thread window
This window is only seen when the program is running in debug mode. In windows o
ne of the window is “Threads”.
145
(A)What is Thread.Join() in threading ? There are two versions of Thread.Join :√
√ Thread.join(). Thread.join(Integer) this returns a Boolean value.
The Thread.Join method is useful for determining if a thread has completed befor
e starting another task. The Join method waits a specified amount of time for a
thread to end. If the thread ends before the time-out, Join returns true; otherw
ise it returns False. Once you call Join, the calling procedure stops and waits
for the thread to signal that it is done. Example you have "Thread1" and "Thread
2" and while executing Thread1" you call "Thread2.Join()".So "Thread1" will wai
t until "Thread2" has completed its execution and the again invoke "Thread1". Th
read.Join(Integer) ensures that threads do not wait for a long time. If it excee
ds a specific time which is provided in integer the waiting thread will start. (
A)What are Daemon threads and how can a thread be created as Daemon? Daemon thre
ad s run in background and stop automatically when nothing is running program. E
xample of a Daemon thread is "Garbage collector". Garbage collector runs until s
ome .NET code is running or else its idle. You can make a thread Daemon by Threa
d.Isbackground=true (A) When working with shared data in threading how do you im
plement synchronization ? There are certain somethings that you need to be caref
ul with when using threads. If two threads (e.g. the main and any worker threads
) try to access the same variable at the same time, you ll have a problem. This
can be very difficult to debug because they may not always do it at exactly the
same time. To avoid the problem, you can lock a variable
146
before accessing it. However, if the two threads lock the same variable at the s
ame time, you ll have a deadlock problem. SyncLock x Do something with x End Sy
ncLock (I)Can we use events with threading ? Yes, you can use events with thread
; this is one of the techniques to synchronize one thread with other. (A)How can
we know a state of a thread? "ThreadState" property can be used to get detail o
f a thread. Thread can have one or a combination of status.System.Threading. Thr
eadstate enumeration has all the values to detect a state of thread. Some sample
states are Isrunning, IsAlive, suspended etc. (A) What is use of Interlocked cl
ass ? Interlocked class provides methods by which you can achieve following func
tionalities :√ √ √ √ Increment Values. Decrement values. Exchange values between
variables. Compare values from any thread.
in a synchronization mode. Example :- System.Threading.Interlocked.Increment(Int
A) (A) What is a monitor object? Monitor objects are used to ensure that a block
of code runs without being interrupted by code running on other threads. In oth
er words, code in other threads cannot run until code in the synchronized code b
lock has finished. SyncLock and End SyncLock statements are provided in order to
simplify access to monitor object.
147
(A) What are wait handles ? Twist :- What is a mutex object ? Wait handles sends
signals of a thread status from one thread to other thread. There are three kin
d of wait modes :√ √ √ WaitOne. WaitAny. WaitAll.
When a thread wants to release a Wait handle it can call Set method. You can use
Mutex (mutually exclusive) objects to avail for the following modes. Mutex obje
cts are synchronization objects that can only be owned by a single thread at a t
ime. Threads request ownership of the mutex object when they require exclusive a
ccess to a resource. Because only one thread can own a mutex object at any time,
other threads must wait for ownership of a mutex object before using the resour
ce. The WaitOne method causes a calling thread to wait for ownership of a mutex
object. If a thread terminates normally while owning a mutex object, the state o
f the mutex object is set to be signaled and the next waiting thread gets owners
hip (A) What is ManualResetEvent and AutoResetEvent ? Threads that call one of t
he wait methods of a synchronization event must wait until another thread signal
s the event by calling the Set method. There are two synchronization event class
es. Threads set the status of ManualResetEvent instances to signaled using the S
et method. Threads set the status of ManualResetEvent instances to no signaled u
sing the Reset method or when control returns to a waiting WaitOne call. Instanc
es of the AutoResetEvent class can also be set to signaled using Set, but they a
utomatically return to nonsignaled as soon as a waiting thread is notified that
the event became signaled. (A) What is ReaderWriter Locks ? You may want to lock
a resource only when data is being written and permit multiple clients to simul
taneously read data when data is not being updated. The ReaderWriterLock class e
nforces exclusive access to a resource while a thread is modifying the resource,
but it allows nonexclusive access when reading the resource. ReaderWriter locks
are a useful
148
alternative to exclusive locks that cause other threads to wait, even when those
threads do not need to update data. (I) How can you avoid deadlock in threading
? A good and careful planning can avoid deadlocks.There are so many ways Microso
ft has provided by which you can reduce deadlocks example Monitor, Interlocked c
lasses, Wait handles, Event raising from one thread to other thread, ThreadState
property which you can poll and act accordingly etc. (B) What is the difference
between thread and process? A thread is a path of execution that run on CPU, a
process is a collection of threads that share the same virtual memory. A process
has at least one thread of execution, and a thread always run in a process cont
ext. Note:- Its difficult to cover threading interview question in this small ch
apter. These questions can take only to a basic level. If you are attending inte
rviews where people are looking for threading specialist, try to get deeper in t
o synchronization issues as that s the important point they will stress.
149
4. Remoting and Webservices
(B)What is an application domain? Previously “PROCESS” where used as security bo
undaries. One process has its own virtual memory and does not over lap the other
process virtual memory; due to this one process can not crash the other process
. So any problem or error in one process does not affect the other process. In .
NET they went one step ahead introducing application domains. In application dom
ains multiple applications can run in same process with out influencing each oth
er. If one of the application domains throws error it does not affect the other
application domains. To invoke method in a object running in different applicati
on domain .NET remoting is used.
Figure :- 4.1 One process can have multiple Application domains
(B) What is .NET Remoting ? .NET remoting is replacement of DCOM. Using .NET rem
oting you can make remote object calls which lie in different Application Domain
s. As the remote objects run in different process client calling the remote obje
ct can not call it directly. So the client uses a proxy which looks like a real
object. When client wants to make method call on the remote object it uses proxy
for it. These method calls are called as “Messages”. Messages are serialized us
ing “formatter” class and sent to client “channel”. Client Channel communicates
with Server Channel. Server Channel uses as formatter to deserialize the message
and sends to the remote object.
150
Figure :- 4.2 Channels, Formatters and Proxy in action.
(B) Which class does the remote object has to inherit ? All remote objects shoul
d inherit from System.MarshalbyRefObject. (I) What are two different types of re
mote object creation mode in .NET ? There are two different ways in which object
can be created using Remoting :√ √ SAO (Server Activated Objects) also called a
s Well-Known call mode. CAO (Client Activated Objects)
SAO has two modes “Single Call” and “Singleton”. With Single Call object the obj
ect is created with every method call thus making the object stateless. With Sin
gleton the object is created only once and the object is shared with all clients
. CAO are stateful as compared to SAO. In CAO the creation request is sent from
client side. Client holds a proxy to the server object created on server. (A) De
scribe in detail Basic of SAO architecture of Remoting? For these types of quest
ions interviewer expects small and sweet answers. He is basically looking at wha
t you know about the specific subject. For these type of question this book will
provide detail code which is not necessary to be said during interview. Only th
e basic steps and overall brief are enough to convince that you have knowledge a
bout the subject. Even though this question has detail code and answer say only
what is needed in interview.
151
Remoting has at least three sections :√ √ √ Common Interface which will be share
d between them. Server. Client.
Figure :- 4.3 Solution Explorer of Remoting Project
In CD “RemotingSample(SAO)” project is provided which gives a insight of remotin
g. Above is the figure which shows the three important project sections needed t
o implement remoting. First important section is the common interface between Se
r ver and Client.”InterFaceRemoting” project has the interface code. For sample
project interface is very simple with only two methods :- SetValue and GetValue.
Public Interface InterFaceRemoting Sub SetValue(ByVal value As String) Function
GetValue() As String End Interface
Second important section is the server.In this sample server is using HTTP chann
el and the server object is singleton.
Imports Imports Imports Imports Imports System System.Runtime.Remoting System.Ru
ntime.Remoting.Channels.Http System.Runtime.Remoting.Channels InterFaceRemoting
Public Class RemotingServer Inherits MarshalByRefObject 152
Implements InterFaceRemoting.InterFaceRemoting Private strData As String Public
Function GetValue() As String Implements InterFaceRemoting.InterFaceRemoting.Get
Value Return strData End Function Sub New() strData = “testing..” End Sub Public
Sub SetValue(ByVal value As String) Implements InterFaceRemoting.InterFaceRemot
ing.SetValue strData = value End Sub End Class Module ModuleRemotingStartUp Sub
Main() Dim objHttpChannel As HttpChannel Console.WriteLine(“Server Started....”)
objHttpChannel = New HttpChannel(1234) ChannelServices.RegisterChannel(objHttpC
hannel) RemotingConfiguration.RegisterWellKnownServiceType(GetType(RemotingServe
r), “RemoteObject”, WellKnownObjectMode.Singleton) Console.WriteLine(“Server reg
istered and listening waiting for clients...”) Console.ReadLine() End Sub End Mo
dule
Following is detail explanation :√ Channel object is created and registered. Dim
objHttpChannel As HttpChannel Console.WriteLine(“Server Started....”) objHttpCh
annel = New HttpChannel(1234) ChannelServices.RegisterChannel(objHttpChannel) √
Server then hosts the object so that client can connect to it. This is the time
when we specify what mode the server object will be created i.e. Singleton or Si
ngleCall. This is done by the following below given code. Note in sample we
153
Following is the code.
are hosting the server object in singleton mode that means that the same object
will be shared between all clients. Also note the server object is implementing
“InterFaceRemoting” and inheriting from “MarshalByRefObject”. RemotingConfigurat
ion.RegisterWellKnownServiceType(GetType(RemotingServer), “RemoteObject”, WellKn
ownObjectMode.Singleton) Now comes the final section that is third section the c
lient which will connect to this hosted remoting object. Following is a detail e
xplanation of client code :√ First we create the channel i.e. HTTP. Note whateve
r channel the server is using same will be used by the client. ChannelServices.R
egisterChannel(objHttpChannel) √ √ As said before the common interface i.e.“Inte
rFaceRemoting” will be used to communicate with client. After that we can get th
e server object reference using following code objRemoting = CType(Activator.Get
Object(GetType(InterFaceRemoting.InterFaceRemoting), “http://localhost:1234/Remo
teObject”), InterFaceRemoting.InterFaceRemoting) √ Then the client can make meth
od call as if the object is local. But actually the object is a proxy. Console.W
riteLine(“Value on server :- “ & objRemoting.GetValue.ToString())
Imports Imports Imports Imports Imports System System.Runtime.Remoting System.Ru
ntime.Remoting.Channels.Http System.Runtime.Remoting.Channels InterFaceRemoting
Module ModuleStartClient Sub Main() Dim objHttpChannel As New HttpChannel Dim ob
jRemoting As InterFaceRemoting.InterFaceRemoting ChannelServices.RegisterChannel
(objHttpChannel) objRemoting = CType(Activator.GetObject(GetType(InterFaceRemoti
ng.InterFaceRemoting), “http://localhost:1234/RemoteObject”), 154
InterFaceRemoting.InterFaceRemoting) Console.WriteLine(“Referenced the main obje
ct.... Now displaying Data”) Console.WriteLine(“Value on server :- “ & objRemoti
ng.GetValue.ToString()) Console.WriteLine(“Press enter to Terminate”) Console.Re
adLine() End Sub End Module
You an run the program and see the output. For running the program run the serve
r program which is in server directory. Run “Server.exe” from BIN directory. If
the EXE runs properly following will be the screen as shown below.
Figure :- 4.4 Running Server Program of Remoting
Now run “Client.exe” from client folder in BIN directory.Following will be the o
utput seen.This means that the client connected to the server program and displa
yed the data in the server object. In the server object we have initialized valu
e “testing......”. In constructor of class “RemotingServer” same value is displa
yed at the client side as shown in figure below.
155
Figure :- 4.5 Client Program output of Remoting
(A) What are the situations you will use singleton architecture in remoting ? If
all remoting clients have to share the same data singleton architecture will be
used. (A) What is fundamental of published or precreated objects in Remoting ?
In scenarios of singleton or single call the objects are created dynamically. Bu
t in situations where you want to precreate object and publish it you will use p
ublished object scenarios. Dim obj as new objRemote obj.Initvalue = 100 Remoting
Services.Marshal(obj,”RemoteObject”) As shown in above sample following changes
will be needed on server side. RemotingConfiguration.RegisterWellKnownSer viceTy
pe is replaced by RemotingServices.Marshal(obj,”RemoteObject”) where “obj” is th
e precreated objected on the server whose value is initialized to 100. (A) What
are the ways in which client can create object on server in CAO model ? There ar
e two ways by which you can create Client objects on remoting server :156
√ √
Activator.CreateInstance(). By Keyword “New”.
(A) Are CAO stateful in nature ? Yes. In CAO remoting model client creates a ins
tance on server and instance variable set by client on server can be retrieved a
gain with correct value. (A) In CAO model when we want client objects to be crea
ted by “NEW” keyword is there any precautions to be taken ? Remoting Clients and
Remoting Server can communicate because they share a common contract by impleme
nting Shared Interface or Base Class (As seen in previous examples). But accordi
ng to OOP’s concept we can not create a object of interface or Base Classes (Abs
tract Class). Shipping the server object to client is not a good design practice
. In CAO model we can use SOAPSUDS utility to generate Metadata DLL from server
which can be shipped to client, clients can then use this DLL for creating objec
t on server. Run the SOAPSUDS utility from visual studio command prompt for synt
ax see below :soapsuds -ia:RemotingServer -nowp -oa:ClientMetaData.dll Where Rem
otingServer is your server class name. ClientMetaData.dll is the DLL name by whi
ch you will want to create the metadll. Server code will change as follows :Chan
nelServices.RegisterChannel(objHttpChannel) RemotingConfiguration.ApplicationNam
e = “RemoteObject” RemotingConfiguration.RegisterActivatedServiceType(GetType(In
terFaceRemoting.InterFaceRemoting))
Note :- We have to provide applicationname and register the object as ActivatedS
erviceType. On client side we have to reference the generated ClientMetaData.dll
from SOAPSUDS utility. Below are changes which are needed to be incorporated at
the Remoting Client :RemotingConfiguration.RegisterActivatedClientType(typeof(R
emoteObject),“http:// localhost:1234/MyServer”) Dim objRemoteObject as new Remot
eObject().
157
RemoteObject is class which is obtained from ClientMetaData.dll which we created
using SOAPSUDS utility. Now you can reference the object as normal object. (I)
Is it a good design practice to distribute the implementation to Remoting Client
? It’s never advisable to distribute complete implementation at client, due to
following reasons:√ √ Any one can use ILDASM and decrypt your logic. It’s a bad
architecture move to have full implementation as client side as any changes in i
mplementation on server side you have to redistribute it again.
So the best way is to have a interface or SOAPSUDS generated meta-data DLL at cl
ient side rather than having full implementation. (A) What are LeaseTime, Sponso
rshipTime, RenewonCallTime and LeaseManagerPollTime? This is a very important qu
estion from practical implementation point of view. Companies who have specific
requirement for Remoting projects will expect this question to be answered. In n
ormal .NET environment objects lifetime is managed by garbage collector. But in
remoting environment remote clients can access objects which are out of control
of garbage collector. Garbage collector boundary is limited to a single PC on wh
ich framework is running; any remote client across physical PC is out of control
of GC (Garbage Collector). This constraint of garbage collector leads to a new
way of handling lifetime for remoting objects, by using concept called as “Lease
Time”. Every server side object is assigned by default a “LeaseTime” of five min
utes. This leasetime is decreased at certain intervals. Again for every method c
all a default of two minutes is assigned. When i say method call means every cal
l made from client. This is called as “RenewalOnCallTime”. Let’s put the whole t
hing in equation to make the concept more clear. Total Remoting object life time
= LeaseTime + (Number of method calls) X (RenewalTime). If we take NumberOfMeth
odCalls as one.
158
Then default Remote Object Life Time = 5 + (1) X 2 = 10 minutes (Everything is i
n minutes) When total object lifetime is reduced to zero, it queries the sponsor
that should the object be destroyed. Sponsor is an object which decides should
object Lifetime be renewed. So it queries any registered sponsors with the objec
t, if does not find any then the object is marked for garbage collection. After
this garbage collection has whole control on the object lifetime. If we do not f
oresee how long a object will be needed specify the “SponsorShipTimeOut” value.
SponsorShipTimeOut is time unit a call to a sponsor is timed out. “LeaseManagerP
ollTime” defines the time the sponsor has to return a lease time extension. (A)
Which config file has all the supported channels/protocol ? Machine.config file
has all the supported channels and formatter supported by .NET remoting.Machine.
config file can be found at “C:\WINDOWS\Microsoft.NET\Framework\vXXXXX\CONFIG” p
ath. Find <system.runtime.remoting> element in the Machine.config file which has
the channels and the formatters. Below is a figure shown which can give a clear
idea of how the file looks like. Note :- Interviewer will not ask you to name a
ll channels and formatters in machine.config but will definitely like to know in
which file are all the formatter and channels specified, one sweet answer “Mach
ine.config” can fetch you handsome job.
159
Figure :- 4.6 Channels and Formatter in machine.config file
(A) How can you specify remoting parameters using Config files ? Both remoting s
erver and remoting client parameters can be provided through config files. Below
is a sample of server config file which provides all remoting parameter values
which we where providing through code.
<configuration> <system.runtime.remoting> <application name=”Server”> <service>
<wellknown 160
mode=”SingleCall” type=”Server.ClsServer, Server” objectUri=”RemoteObject” /> </
service> <channels> <channel ref=”tcp server” port=”9000" /> </channels> </appli
cation> </system.runtime.remoting> </configuration>
Later this config file can be loaded using the following code. RemotingConfigura
tion.Configure(AppDomain.CurrentDomain.SetupInformation.ApplicationBase & “Serve
r.config”) Same way we also have client.config file for loading the client remot
ing parameters.
<configuration> <system.runtime.remoting> <application name=”Client”> <client ur
l=”tcp://localhost:9000/RemoteObject”> <wellknown type=”CommonInterface.Icommon,
Icommon” url = “tcp://localhost:9000/Server/RemoteObject”/> </client> <channels
> <channel ref=”tcp client” /> </channels> </application> </system.runtime.remot
ing> </configuration>
client remoting can then load the configuration file by using :Dim IobjCommon As
CommonInterFace.Icommon Dim StrData As String Dim objServiceEntries As WellKnow
nClientTypeEntry() RemotingConfiguration.Configure(AppDomain.CurrentDomain.Setup
Information.ApplicationBase & “Client.config”) objServiceEntries = RemotingConfi
guration.GetRegisteredWellKnownClientTypes() IobjCommon = Activator.GetObject(Ge
tType(Icommon), objServiceEntries(0).ObjectUrl.ToString()) StrData = IobjCommon.
GetValue() 161
Console.WriteLine(“ Serve side Data is “ & StrData) Console.ReadLine()
Note :- Complete source is provided in CD in folder “RemotingObjectLifeTime”.If
you run Server and Client following output can be seen. All source is compiled u
sing VS2005 BETA1
Figure : - 4.7 Output of Server and Client for RemotingObjectLifeTime project
(A) Can Non-Default constructors be used with Single Call SAO? Twist :- What are
the limitation of constructors for Single call SAO ?
162
Non-Default constructors can not be used with single call objects as object is c
reated with every method call, there is no way to define Non-default constructor
s in method calls. It’s possible to use Non-Default constructor with Client acti
vated objects as both methods :“NEW” keyword and “Activator.CreateInstance” prov
ide a way to specify Non-Default constructors. (I) How can we call methods in re
moting Asynchronously ? All previous examples are a synchronous method calls tha
t means client has to wait until the method completes the process. By using Dele
gates we can make Asynchronous method calls. (A) What is Asynchronous One-Way Ca
lls ? One-way calls are a different from asynchronous calls from execution angle
that the .NET Framework does not guarantee their execution. In addition, the me
thods used in this kind of call cannot have return values or out parameters. One
-way calls are defined by using [OneWay()] attribute in class. (B) What is marsh
alling and what are different kinds of marshalling ? Marshaling is used when an
object is converted so that it can be sent across the network or across applicat
ion domains. Unmarshaling creates an object from the marshaled data. There are t
wo ways to do marshalling :√ Marshal-by-value (MBV) :- In this the object is ser
ialized into the channel, and a copy of the object is created on the other side
of the network. The object to marshal is stored into a stream, and the stream is
used to build a copy of the object on the other side with the unmarshalling seq
uence. Marshaling-by-reference (MBR):- Here it creates a proxy on the client tha
t is used to communicate with the remote object. The marshaling sequence of a re
mote object creates an ObjRef instance that itself can be serialized across the
network.
√
Objects that are derived from “MarshalByRefObject” are always marshaled by refer
ence. All our previous samples have classes inherited from “MarshalByRefObject”
163
To marshal a remote object the static method RemotingServices.Marshal() is used.
RemotingServices.Marshal() has following overloaded versions:public static ObjRe
f Marshal(MarshalByRefObject obj) public static ObjRef Marshal(MarshalByRefObjec
t obj, string objUri) public static ObjRef Marshal(MarshalByRefObject obj, strin
g objUri,Type requestedType) The first argument obj specifies the object to mars
hal. The objUri is the path that is stored within the marshaled object reference
; it can be used to access the remote object. The requestedType can be used to p
ass a different type of the object to the object reference. This is useful if th
e client using the remote object shouldn t use the object class but an interface
that the remote object class implements instead. In this scenario the interface
is the requestedType that should be used for marshaling. (A) What is ObjRef obj
ect in remoting ? All Marshal() methods return ObjRef object.The ObjRef is seria
lizable because it implements the interface ISerializable, and can be marshaled
by value. The ObjRef knows about :√ √ √ √ location of the remote object host nam
e port number object name.
(B) What is a Web Service ? Web Services are business logic components which pro
vide functionality via the Internet using standard protocols such as HTTP. Web S
ervices uses Simple Object Access Protocol (SOAP) in order to expose the busines
s functionality.SOAP defines a standardized format in XML which can be exchanged
between two entities over standard protocols such as HTTP. SOAP is platform ind
ependent so the consumer of a Web Service is therefore completely shielded from
any implementation details about the platform exposing the Web Service. For the
consumer it is simply a black box of send and receive XML over HTTP. So any web
service hosted on windows can also be consumed by UNIX and LINUX platform.
164
(B) What is UDDI ? Full form of UDDI is Universal Description, Discovery and Int
egration. It is a directory that can be used to publish and discover public Web
Services. If you want to see more details you can visit the http://www.UDDI.org
. (B) What is DISCO ? DISCO is the abbreviated form of Discovery. It is basicall
y used to club or group common services together on a server and provides links
to the schema documents of the services it describes may require. (B) What is WS
DL? Web Service Description Language (WSDL)is a W3C specification which defines
XML grammar for describing Web Services.XML grammar describes details such as:√
√ √ √ Where we can find the Web Service (its URI)? What are the methods and prop
erties that service supports? Data type support. Supported protocols
In short its a bible of what the webservice can do.Clients can consume this WSDL
and build proxy objects that clients use to communicate with the Web Services.
Full WSDL specification is available at http://www.w3.org/TR/wsdl. (A) What the
different phase/steps of acquiring a proxy object in Webservice ? Following are
the different steps needed to get a proxy object of a webservice at the client s
ide :√ √ Client communicates to UDI node for WebService either through browser o
r UDDI s public web service. UDII responds with a list of webservice.
165
√ √ √
Every service listed by webservice has a URI pointing to DISCO or WSDL document.
After parsing the DISCO document, we follow the URI for the WSDL document relat
ed to the webservice which we need. Client then parses the WSDL document and bui
lds a proxy object which can communicate with Webservice.
(B) What is file extension of Webservices ? .ASMX is extension for Webservices.
Note :- After this we are going to deal with a sample of webservice. In VS2005 w
ebproject is created from the menu itself as compared to 2003 where it was prese
nt in the explorer.
166
Figure :- 4.8 Create Web project menu in VS2005
(B)Which attribute is used in order that the method can be used as WebService ?
WebMethod attribute has to be specified in order that the method and property ca
n be treated as WebService. (A) What are the steps to create a webservice and co
nsume it ? Note :- For this question this book will make a attempt by creating a
simple webservice and explaining steps to acheive it. A simple webservice will
be created which takes two number and gives addition result of the two number. I
n CD sample webservice project with folder name “MathsWebService” is provided an
d same will be explained below. Definitely the
167
interviewer will not expect such a detail answer but this book will explain you
in detail so that you are on right track during interview. This webservice will
add two numbers and give to the calling client.All the below steps are according
to VS2005 beta editor :√ √ See First create a website by clicking on File -- Ne
w WebSite. From “Visual Studio Installed Templates” click on “Asp.NET Web Servic
e”. figure below. Name the figure as “Maths Web Service”.
168
Figure :- 4.9 Create WebService Project
√
By default the .NET editor has made a default webservice method called as "Hello
Word" which returns a string datatype. Let s rename "Service.vb" to "Maths.vb" a
nd "Service.asmx" to "Maths.asmx". Let’s replace the “HelloWorld” with following
code below :-
<WebMethod()> _ Public Function AddTwoNumbers(ByVal Number1 As Integer, ByVal Nu
mber2 As Integer) As Integer Return Number1 + Number2
169
End Function
Figure :- 4.10 Rename all your default “Service” to “Maths”
√
After the webservice is done click on add Webreference. Normally for components
we do a “Add Reference” and for Webservices we do “Add Web Reference”.
170
Figure :- 4.11 Click on Add Web Reference
√
You will be shown with a list of webservices which are known to the solutions. A
s we are looking for our “Maths” webservice which exist in the
171
same
solution, we click “Webservices in this solution”.
Figure :- 4.12 List of webservices for browsing
√
Your editor has located the “Maths” webservice.Select the webservice.
172
Figure :- 4.13 Solution showing the availability of Maths Webservice.
173
√
After you have clicked on “Maths” webservice you will see a search progress bar
as shown in figure below. This process will start the webservice, reference it a
nd create a proxy for the client, so that using it client can absorb the webserv
ice.
Figure :- 4.14 Starting the webservice and creating the proxy for your solution.
174
√
Finally you are able to see your webservice which is ready for use. Click on Add
Reference and you will see a “Localhost” reference in your .NET solution.
Figure :- 4.15 Starting the webservice and creating the proxy for your solution.
√
We need to make a client who will absorb this “Maths Webservice”. Add “Webservic
eClient.aspx” and create a UI as shown below. In the button click put in the fol
lowing code. “LocalHost.ClsMaths” is the proxy object by which you can make call
s to the webservice.
Sub cmdCalculate_Click(ByVal sender As Object, ByVal e As
175
System.EventArgs) Dim pobjMaths As New localhost.ClsMaths lblResultDisplay.Text
= Convert.ToString(pobjMaths.AddTwoNumbers(Convert.ToInt16(txtNumber1.Text), Con
vert.ToInt16(txtNumber2.Text))) End Sub
Figure :- 4.16 Complete Webservice in action.
Note :- The whole point of creating this “Maths Webservice” step by step was to
have a understanding of practical angle of how webservices are created. It’s ver
y rare that you will be asked to explain every step of how to write a webservice
. But in case your interviewer is too bend down to also know what are the actual
steps in creating a Webservice. (A) Do webservice have state ? Twist :- How can
we maintain State in Webservices ?
176
Webservices as such do not have any mechanism by which they can maintain state.
Webservices can access ASP.NET intrinsic objects like Session, application and s
o on if they inherit from “WebService” base class. <%@ Webservice class="TestWeb
ServiceClass" %> Imports System.Web.Services Public class TestWebServiceClass In
herits WebService <WebMethod> Public Sub SetSession(value As String) session("Va
l") = Value End Sub end class Above is a sample code which sets as session objec
t called as “val”. TestWebserviceClass is inheriting from WebService to access t
he session and application objects.
177
5. Caching Concepts
(B) What is an application object ? Application object ca be n used in situation
where we want data to be shared across users globally. (I)What’s the difference
between Cache object and application object ? The main difference between the C
ache and Application objects is that the Cache object provides cache-specific fe
atures, such as dependencies and expiration policies. (I)How can get access to c
ache object ? The Cache object is defined in the System.Web.Caching namespace. Y
ou can get a reference to the Cache object by using the Cache property of the Ht
tpContext class in the System.Web namespace or by using the Cache property of th
e Page object. (A)What are dependencies in cache and types of dependencies ? Whe
n you add an item to the cache, you can define dependency relationships that can
force that item to be removed from the cache under specific activities of depen
denci es.Example if the cache object is dependent on file and when the file data
changes you want the cache object to be update. Following are the supported dep
endency :√ File dependency :- Allows you to invalidate a specific cache item whe
n a disk based file or files change.
√ Time-based expiration :- Allows you to invalidate a specific cache item depend
ing on predefined time. √ Key dependency :-Allows you to invalidate a specific c
ache item depending when another cached item changes.
178
(P)Can you show a simple code showing file dependency in cache ?
Partial Class Default_aspx Public Sub displayAnnouncement() Dim announcement As
String If Cache(“announcement”) Is Nothing Then Dim file As New _ System.IO.Stre
amReader _ (Server.MapPath(“announcement.txt”)) announcement = file.ReadToEnd fi
le.Close() Dim depends As New _ System.Web.Caching.CacheDependency _ (Server.Map
Path(“announcement.txt”)) Cache.Insert(“announcement”, announcement, depends) En
d If Response.Write(CType(Cache(“announcement”), String)) End Sub Private Sub Pa
ge_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init dis
playAnnouncement() End Sub End Class
Note :- Above source code can be obtained from CD in “CacheSample” folder.”Annou
ncement.txt” is in the same folder which you can play around to see the results.
Above given method displayAnnouncement() displays banner text from Announcement
.txt file which is lying in application path of the web directory. Above method
first checks whether the Cache object is nothing, if the cache object is nothing
then it moves further to load the cache data from the file. Whenever the file d
ata changes the cache object is removed and set to nothing. (A) What is Cache Ca
llback in Cache ? Cache object is dependent on its dependencies example file bas
ed, time based etc...Cache items remove the object when cache dependencies chang
e.ASP.NET provides capability to execute a callback method when that item is rem
oved from cache.
179
(A) What is scavenging ? When server running your ASP.NET application runs low o
n memory resources, items are removed from cache depending on cache item priorit
y. Cache item priority is set when you add item to cache. By setting the cache i
tem priority controls the items scavenging are removed first. (B) What are diffe
rent types of caching using cache object of ASP.NET? You can use two types of ou
tput caching to cache information that is to be transmitted to and displayed in
a Web browser: Page Output Caching Page output caching adds the response of page
to cache object. Later when page is requested page is displayed from cache rath
er than creating the page object and displaying it. Page output caching is good
if the site is fairly static. √ Page Fragment Caching If parts of the page are c
hanging, you can wrap the static sections as user controls and cache the user co
ntrols using page fragment caching. √
(B) How can you cache different version of same page using ASP.NET cache object
? Output cache functionality is achieved by using “OutputCache” attribute on ASP
.NET page header. Below is the syntax <%@ OutputCache Duration="20" Location="Se
rver" VaryByParam="state" VaryByCustom="minorversion" VaryByHeader="Accept-Langu
age"%> √ √ VaryByParam :- Caches different version depending on input parameters
send through HTTP POST/GET. VaryByHeader:- Caches different version depending o
n the contents of the page header.
180
√ √
VaryByCustom:-Lets you customize the way the cache handles page variations by de
claring the attribute and overriding the GetVaryByCustomString handler. VaryByCo
ntrol:-Caches different versions of a user control based on the value of propert
ies of ASP objects in the control.
(A) How will implement Page Fragment Caching ? Page fragment caching involves th
e caching of a fragment of the page, rather than the entire page. When portions
of the page are need to be dynamically created for each user request this is bes
t method as compared to page caching. You can wrap Web Forms user control and ca
che the control so that these portions of the page don’t need to be recreated ea
ch time. (B) What are ASP.NET session and compare ASP.NET session with classic A
SP session variables? ASP.NET session caches per user session state. It basicall
y uses “HttpSessionState” class. Following are the limitations in classic ASP se
ssions :√ ASP session state is dependent on IIS process very heavily. So if IIS
restarts ASP session variables are also recycled.ASP.NET session can be independ
ent of the hosting environment thus ASP.NET session can maintained even if IIS r
eboots. ASP session state has no inherent solution to work with Web Farms.ASP.NE
T session can be stored in state server and SQL SERVER which can support multipl
e server. ASP session only functions when browser supports cookies.ASP.NET sessi
on can be used with browser side cookies or independent of it.
√
√
(B) Which various modes of storing ASP.NET session ? √ InProc:- In this mode Ses
sion state is stored in the memory space of the Aspnet_wp.exe process. This is t
he default setting. If the IIS reboots or web application restarts then session
state is lost.
181
√
StateServer:-In this mode Session state is serialized and stored in a separate p
rocess (Aspnet_state.exe); therefore, the state can be stored on a separate comp
uter(a state server). SQL SERVER:- In this mode Session state is serialized and
stored in a SQL Server database.
√
Session state can be specified in <sessionState> element of application configur
ation file. Using State Server and SQL SERVER session state can be shared across
web farms but note this comes at speed cost as ASP.NET needs to serialize and d
eserialize data over network again and again. (A) Is Session_End event supported
in all session modes ? Session_End event occurs only in “Inproc mode”.”State Se
rver” and “SQL SERVER” do not have Session_End event. (A) What are the precautio
ns you will take in order that StateServer Mode work properly ? Following are th
e things to remember so that StateServer Mode works properly :√ √ √ StateServer
mode session data is stored in a different process so you must ensure that your
objects are serializable. <machineKey> elements in Web.config should be identica
l across all servers.So this ensures that encryption format is same across all c
omputers. IIS metabase (\LM\W3SVC\2) must be identical across all servers in tha
t farm.
(A) What are the precautions you will take in order that SQLSERVER Mode work pro
perly ? Following are the things to remember so that SQLSERVER Mode works proper
ly :√ √ SQLSERVER mode session data is stored in a different process so you must
ensure that your objects are serializable. IIS metabase (\LM\W3SVC\2) must be i
dentical across all servers in that farm.
182
√
By default Session objects are stored in “Tempdb”, you can configure it store ou
tside “TempDB” by running Microsoft provided SQL script. Note :- “TempDB” databa
se is re-created after SQL SERVER computer reboot.If you want to maintain sessio
n state with every reboot best is to run SQL Script and store session objects ou
tside “TempDB” database.
(A) Where do you specify session state mode in ASP.NET ?
<sessionState mode=”SQLServer” stateConnectionString=”tcpip=192.168.1.1:42424" s
qlConnectionString=”data source=192.168.1.1; Integrated Security=SSPI” cookieles
s=”false” timeout=”20" />
Above is sample session state mode specified for SQL SERVER. (B) What are the ot
her ways you can maintain state ? Other than session variables you can use the f
ollowing technique to store state : √ √ √ √ √ Hidden fields View state Hidden fr
ames Cookies Query strings
(B) What are benefits and Limitation of using Hidden fields ? Following are the
benefits of using Hidden fields :√ √ √ √ They are simple to implement. As data i
s cached on client side they work with Web Farms. All browsers support hidden fi
eld. No server resources are required.
Following are limitations of Hidden field :183
√ √ √
They can be tampered creating a security hole. Page performance decreases if you
store large data, as the data are stored in pages itself. Hidden fields do not
support rich structures as HTML hidden fields are only single valued. Then you h
ave to work around with delimiters etc to handle complex structures. <input id="
HiddenValue" type="hidden" value="Initial Value" runat="server"NAME="HiddenValue
">
Below is how you will actually implement hidden field in a project
(B) What is ViewState ? Viewstate is a built-in structure for automatically reta
ining values amongst the multiple requests for the same page. The viewstate is i
nternally maintained as a hidden field on the page but is hashed, providing grea
ter security than developer-implemented hidden fields do. (A) Does the performan
ce for viewstate vary according to User controls ? Performance of viewstate vari
es depending on the type of server control to which it is applied. Label, TextBo
x, CheckBox, RadioButton, and HyperLink are server controls that perform well wi
th ViewState. DropDownList, ListBox, DataGrid, and DataList suffer from poor per
formance because of their size and the large amounts of data making roundtrips t
o the server. (B) What are benefits and Limitation of using Viewstate for state
management? Following are the benefits of using Viewstate :No server resources a
re required because state is in a structure in √ the page code. √ √
184
Simplicity. States are retained automatically.
√ √
The values in view state are hashed, compressed, and encoded, thus representing
a higher state of security than hidden fields. View state is good for caching da
ta in Web frame configurations because the data is cached on the client. Page lo
ading and posting performance decreases when large values are stored because vie
w state is stored in the page. Although view state stores data in a hashed forma
t, it can still be tampered because it is stored in a hidden field on the page.
The information in the hidden field can also be seen if the page output source i
s viewed directly, creating a potential security risk. this.ViewState["EnterTime
"] = DateTime.Now.ToString();
Following are limitation of using Viewstate:√ √
Below is sample of storing values in view state.
(B) How can you use Hidden frames to cache client data ? This technique is imple
mented by creating a Hidden frame in page which will contain your data to be cac
hed. <FRAMESET cols="100%,*,*"> <FRAMESET rows="100%"> <FRAME src="data_of_frame
1.html"></FRAMESET> <FRAME src="data_of_hidden_frame.html"> <FRAME src="data_of_
hidden_frame.html" frameborder="0" noresize scrolling="yes"> </FRAMESET> Above i
s a sample of hidden frames where the first frame “data_of_frame1.html” is visib
le and the remaining frames are hidden by giving whole col section to first fram
e. See allocation where 100 % is allocated to first frame and remaining frames t
hus remain hidden. (I) What are benefits and limitations of using Hidden frames?
Following are the benefits of using hidden frames:
185
√ √ √
You can cache more than one data field. The ability to cache and access data ite
ms stored in different hidden forms. The ability to access JScript® variable val
ues stored in different frames if they come from the same site. Hidden frames ar
e not supported on all browsers. Hidden frames data and be tampered thus creatin
g security hole.
The limitations of using hidden frames are: √ √
(I) What are benefits and limitations of using Cookies? Following are benefits o
f using cookies for state management :√ √ √ No server resources are required as
they are stored in client. They are light weight and simple to use Most browsers
place a 4096-byte limit on the size of a cookie, although support for 8192-byte
cookies is becoming more common in the new browser and client-device versions a
vailable today. Some users disable their browser or client device’s ability to r
eceive cookies, thereby limiting the use of cookies. Cookies can be tampered and
thus creating a security hole. Cookies can expire thus leading to inconsistency
.
Following are limitation of using cookies :-
√ √ √
Below is sample code of implementing cookies
Request.Cookies.Add(New HttpCookie(“name”, “user1”))
(I) What is Query String and What are benefits and limitations of using Query St
rings? A query string is information sent to the server appended to the end of a
page URL. Following are the benefits of using query string for state management
:-
√ √ √ √
No server resources are required. The query string containing in the HTTP reques
ts for a specific URL. All browsers support query strings. Query string data is
directly visible to user thus leading to security problems.Most browsers and cli
ent devices impose a 255-character limit on URL length.
Following are limitations of query string :-
Below is a sample “Login” query string passed in URL http://www.querystring.com/
login.asp?login=testing. This query string data can then be requested later by
using Request.QueryString(“login”). (I) What is Absolute and Sliding expiration?
Absolute Expiration allows you to specify the duration of the cache, starting f
rom the time the cache is activated. The following example shows that the cache
has a cache dependency specified, as well as an expiration time of one minute. C
ache.Insert("announcement", announcement, depends, _ DateTime.Now.AddMinutes(1),
Nothing) Sliding Expiration specifies that the cache will expire if a request i
s not made within a specified duration. Sliding expiration policy is useful when
ever you have a large number of items that need to be cached, because this polic
y enables you to keep only the most frequently accessed items in memory. For exa
mple, the following code specifies that the cache will have a sliding duration o
f one minute. If a request is made 59 seconds after the cache is accessed, the v
alidity of the cache would be reset to another minute: Cache.Insert("announcemen
t", announcement, depends, _ DateTime.MaxValue, _ TimeSpan.FromMinutes(1)) (I)Wh
at is cross page posting?
Note :- This is a new feature in ASP.NET 2.0 By default, button controls in ASP.
NET pages post back to the same page that contains the button, where you can wri
te an event handler for the post. In most cases this is the desired behavior, bu
t occasionaly you will also want to be able to post to another page in your appl
ication. The Server.Transfer method can be used to move between pages, however t
he URL doesn t change. Instead, the cross page posting feature in ASP.NET 2.0 al
lows you to fire a normal post back to a different page in the application. In t
he target page, you can then access the values of server controls in the source
page that initiated the post back. To use cross page posting, you can set the Po
stBackUrl property of a Button, LinkButton or ImageButton control, which specifi
es the target page. In the target page, you can then access the PreviousPage pro
perty to retrieve values from the source page. By default, the PreviousPage prop
erty is of type Page, so you must access controls using the FindControl method.
You can also enable strongly-typed access to the source page by setting the @Pre
viousPageType directive in the target page to the virtual path or Type name of t
he source page. Here is a step-by-step guide for implementing the cross-page pos
t back using controls that implement the IButtonControl interface. √ √ Create a
Web Form and insert a Button control on it using the VS .NET designer. Set the b
utton s PostBackUrl property to the Web Form you want to post back. For instance
in this case it is "nextpage.aspx" <asp:Button ID="Button1" runat="server" Post
BackUrl="~/nextpage.aspx" Text="Post to nextpage" /> When the PostBackUrl proper
ty of the IButtonControl is set, the ASP.NET framework binds the corresponding H
TML element to new JavaScript function named WebForm_DoPostBackWithOptions. The
corresponding HTML rendered by the ASP.NET 2.0 will look like this: <input type=
"submit" name="Button1" value="Post to Page 2" onclick="javascript:WebForm_DoPos
tBackWithOptions(new WebForm_PostBackOptions("Button1", ",false”,"Page2.aspx", f
alse, false))" id="Button1" />
188
How do we access viewstate value of this page in the next page ? View state is p
age specific; it contains information about controls embedded on the particular
page. ASP.NET 2.0 resolves this by embedding a hidden input field name, __POSTBA
CK . This field is embedded only when there is an IButtonControl on the page and
its PostBackUrl property is set to a non-null value. This field contains the vi
ew state information of the poster page. To access the view state of the poster
page, you can use the new PreviousPage property of the page: Page poster = this.
PreviousPage; Then you can find any control from the previous page and read its
state: Label posterLabel = poster.findControl("myLabel"); string lbl = posterLab
el.Text; This cross-page post back feature also solves the problem of posting a
Form to multiple pages, because each control, in theory, can point to different
post back URL. Can we post and access view state in another application? You can
post back to any page and pages in another application, too. But if you are pos
ting pages to another application, the PreviousPage property will return null. T
his is a significant restriction, as it means that if you want to use the view s
tate, you are confined, for example, to posting to pages in the same virtual dir
ectory. Even so, this is a highly acceptable addition to the functionality of AS
P.NET. What is SQL Cache Dependency in ASP.NET 2.0? SQL cache dependencies is a
new feature in ASP.NET 2.0 which can automatically invalidate a cached data obje
ct (such as a Dataset) when the related data is modified in the database. So for
instance if you have a dataset which is tied up to a database tables any change
s in the database table will invalidate the cached data object which can be a da
taset or a data source. How do we enable SQL Cache Dependency in ASP.NET 2.0? Be
low are the broader steps to enable a SQL Cache Dependency:189
• • • •
Enable notifications for the database. Enable notifications for individual table
s. Enable ASP.NET polling using “web.config” file Finally use the Cache dependen
cy object in your ASP.NET code
Enable notifications for the database. Before you can use SQL Server cache inval
idation, you need to enable notifications for the database. This task is perform
ed with the aspnet_regsql.exe command-line utility, which is located in the c:\[
WinDir]\Microsoft.NET\Framework\[Version] directory. aspnet_regsql -ed -E -d Nor
thwind -ed :- command-line switch -E: - Use trusted connection -S: - Specify ser
ver name it other than the current computer you are working on -d: - Database Na
me So now let’s try to understand what happens in the database because of “aspne
t_regsql.exe”. After we execute the “aspnet_regsql -ed -E -d Northwind” command
you will see one new table and four new stored procedures created.
Figure 5.1 : - SQL Cache table created for notification
Essentially, when a change takes place, a record is written in this table. The S
QL Server polling queries this table for changes.
190
Figure 5.2 : - New stored procedures created
Just to make brief run of what the stored procedures do. “AspNet_SqlCacheRegiste
rTableStoredProcedure” :- This stored procedure sets a table to support notifica
tions. This process works by adding a notification trigger to the table, which w
ill fire when any row is inserted, deleted, or updated. “AspNet_SqlCacheUnRegist
erTableStoredProcedure”:- This stored procedure takes a registered table and rem
oves the notification trigger so that notifications won t be generated. “AspNet_
SqlCacheUpdateChangeIdStoredProcedure”:- The notification trigger calls this sto
red procedure to update the AspNet_SqlCacheTablesForChangeNotification table, th
ereby indicating that the table has changed. AspNet_SqlCacheQueryRegisteredTable
sStoredProcedure :- This extracts just the table names from the AspNet_SqlCacheT
ablesForChangeNotification table. It’s used to get a quick look at all the regis
tered tables.
191
AspNet_SqlCachePollingStoredProcedure :- This will get the list of changes from
the AspNet_SqlCacheTablesForChangeNotification table. It is used to perform poll
ing. Enabling notification for individual tables Once the necessary stored proce
dure and tables are created then we have to notify saying which table needs to b
e enabled for notifications. That can be achieved by two ways:√ √ aspnet_regsql
-et -E -d Northwind -t Products Exec spNet_SqlCacheRegisterTableStoredProcedure
TableName
Registering tables for notification internally creates triggerfor the tables. Fo
r instance for a “products” table the following trigger is created. So any modif
ications done to the “Products” table will update the “AspNet_SqlCacheNotificati
on’ table. CREATE TRIGGER dbo.[Products_AspNet_SqlCacheNotification_Trigger] ON
[Products] FOR INSERT, UPDATE, DELETE AS BEGIN SET NOCOUNT ON EXEC dbo.AspNet_Sq
lCacheUpdateChangeIdStoredProcedure N Products‘ END “AspNet_SqlCacheTablesForCha
ngeNotification” contains a single record for every table you re monitoring. Whe
n you make a change in the table (such as inserting, deleting or updating a reco
rd), the change Id column is incremented by 1.ASP.NET queries this table repeate
dly keeps track of the most recent changed values for every table. When this val
ue changes in a subsequent read, ASP.NET knows that the table has changed.
192
Figure 5.3 : - Entries in the Cache notification table
Enable ASP.NET polling using “web.config” file Now that all our database side is
configured in order to get the SQL Cache working in the ASP.NET side we need to
do some configuration in the web.config file. We need to set two attributes in
the “web.config” file:√ √ Set “Enabled” attribute to true to set the caching on.
Set the poll time attribute to the number of milliseconds between each poll Bel
ow is the snapshot of the web.config file.
Figure 5.4 :- Web.config file modifications for SQL cache
193
Finally use the Cache dependency object in your ASP.NET code Now comes the final
step to use our cache dependency with programmatic data caching, a data source
control, and output caching. For programmatic data caching, we need to create a
new SqlCacheDependency and supply that to the Cache.Insert() method. In the SqlC
acheDependency constructor, you supply two strings. The first is the name of the
database you defined in the element in the section of the web.config file e.g:
Northwind. The second is the name of the linked table e.g: Products. private sta
tic void CacheProductsList(List<ClsProductItem> products) {SqlCacheDependency sq
lDependency = new SqlCacheDependency("Northwind", "Products"); HttpContext.Curre
nt.Cache.Insert("ProductsList", products, sqlDependency, DateTime.Now.AddDays(1)
, Cache.NoSlidingExpiration);} private static List<ClsProductItem> GetCachedProd
uctList() {return HttpContext.Current.Cache["ProductsList"] as List<ClsProductIt
em>;} ClsProductItem is business class, and here we are trying to cache a list o
f ClsProductItem instead of DataSet or DataTable. The following method is used b
y an ObjectDataSource Control to retrieve List of Products public static List<Cl
sProductItem> GetProductsList(int catId, string sortBy) { //Try to Get Products
List from the Cache List<ClsProductItem> products = GetCachedProductList(); if (
products == null) { //Products List not in the cache, so query the Database laye
r ClsProductsDB db = new ClsProductsDB(_connectionString); DbDataReader reader =
null; products = new List<ClsProductItem>(80);
194
if (catId > 0) { //Return Product List from the Data Layer reader = db.GetProduc
tsList(catId); } else { //Return Product List from the Data Layer reader = db.Ge
tProductsList(); } //Create List of Products -List if ClsProductItemproducts = B
uildProductsList(reader); reader.Close(); //Add entry to products list in the Ca
che CacheProductsList(products); } products.Sort(new ClsProductItemComparer(sort
By)); if (sortBy.Contains("DESC")) products.Reverse(); return products; }
195
To perform the same trick with output caching, you simply need to set the SqlDep
endency property with the database dependency name and the table name, separated
by a colon: <%@ OutputCache Duration="600" SqlDependency="Northwind:Products" V
aryByParam="none" %> The same technique works with the SqlDataSource and ObjectD
ataSource controls: <asp:SqlDataSource SqlCacheDependency="Northwind:Products" .
.. /> EnableCaching="True"
Note :- ObjectDataSource doesn t support built in caching for Custom types such
as the one in our example. It only supports this feature for DataSets and DataTa
bles. Just to make a sample check run the SQL Server profiler and see that does
the SQL actually hit the database after the first run. What is Post Cache substi
tution? Post cache substitution is used when we want to cache the whole page but
also need some dynamic region inside that cached page. Some examples like Quote
oftheDay, RandomPhotos, and AdRotator etc. are examples where we can implement P
ost Cache Substitution. Post-cache substitution can be achieved by two means: √
√ Call the new Response.WriteSubstitution method, passing it a reference to the
desired substitution method callback. Add a <asp:Substitution> control to the pa
ge at the desired location, and set its methodName attribute to the name of the
callback method.
196
Figure 5.5 : - “Writesubstitution” in action
You can see we have a static function here “GetDateToString()”. We pass the resp
onse substitution callback to the “WriteSubstitution” method. So now when ASP.NE
T page framework retrieves the cached page, it automatically triggers your callb
ack method to get the dynamic content. It then inserts your content into the cac
hed HTML of the page. Even if your page hasn t been cached yet (for example, it
s being rendered for the first time), ASP.NET still calls your callback in the s
ame way to get the dynamic content. So you create a method that generates some d
ynamic content, and by doing so you guarantee that your method is always called,
and it’s content is never cached. Ok the above example was by using “WriteSubst
itution” now lets try to see how we can do by using “<asp:substitution>” control
. You can get the “<asp:substitution>” control from the editor toolbox.
197
Figure 5.6 : - Substitution Control
Figure 5.7 : - Substitution in Action.
198
Above is a sample code which shows how substitution control works. We have ASPX
code at the right hand side and class code at the behind code at the left hand s
ide. We need to provide the method name in the “methodname” attribute of the sub
stitution control. Why do we need methods to be static for Post Cache substituti
on? ASP.NET should be able to call this method even when there isn t an instance
of your page class available. When your page is served from the cache, the page
object isn t created. So ASP.NET skips the page life cycle when the page is com
ing from cache, which means it won t create any control objects or raise any con
trol events. If your dynamic content depends on the values of other controls, yo
u ll need to use a different technique, because these control objects won t be a
vailable to your callback
199
6. OOPS
(B) What is Object Oriented Programming ?
It is a problem solving technique to develop software systems. It is a technique
to think real world in terms of objects. Object maps the software model to real
world concept. These objects have responsibilities and provide services to appl
ication or other objects.
(B) What’s a Class ?
A class describes all the attributes of objects, as well as the methods that imp
lement the behavior of member objects. It’s a comprehensive data type which repr
esents a blue print of objects. It’s a template of object.
(B) What’s an Object ?
It is a basic unit of a system. An object is an entity that has attributes, beha
vior, and identity. Objects are members of a class. Attributes and behavior of a
n object are defined by the class definition.
(A) What is the relation between Classes and Objects ?
They look very much same but are not same. Class is a definition, while object i
s a instance of the class created. Class is a blue print while objects are actua
l objects existing in real world. Example we have class CAR which has attributes
and methods like Speed, Brakes, Type of Car etc. Class CAR is just a prototype,
now we can create real time objects which can be used to provide functionality.
Example we can create a Maruti car object with 100 km speed and urgent brakes.
(B) What are different properties provided by Objectoriented systems ?
Twist :- Can you explain different properties of Object Oriented Systems? Note:-
Difference between abstraction and encapsulation is one of the favorite intervi
ew question and quiet confusing as both the terminology look alike. Best is if y
ou can brainstorm with your friends or do a little reading. Following are charac
teristic’s of Object Oriented System’s :200
Abstraction It allows complex real world to be represented in simplified manner.
Example color is abstracted to RGB. By just making the combination of these thr
ee colors we can achieve any color in world.It’s a model of real world or concep
t. Encapsulation It is a process of hiding all the internal details of an object
from the outside world. Communication using messages When application wants to
achieve certain task it can only be done using combination of objects. A single
object can not do all the task. Example if we want to make order processing form
.We will use Customer object, Order object, Product object and Payment object to
achieve this functionality. In short these objects should communicate with each
other. This is achieved when objects send messages to each other. Object lifeti
me All objects have life time.Objects are created ,and initialized, necessary fu
nctionalities are done and later the object is destroyed. Every object have ther
e own state and identity which differ from instance to instance. Class hierarchi
es (Inheritance and aggregation) Twist :- What is difference between Association
, Aggregation and Inheritance relationships? In object oriented world objects ha
ve relation and hierarchies in between them. There are basically three kind of r
elationship in Object Oriented world :-
Association
This is the simplest relationship between objects. Example every customer has sa
les. So Customer object and sales object have an association relation between th
em.
Aggregation
This is also called as composition model. Example in order to make a “Accounts”
class it has use other objects example “Voucher”, “Journal” and “Cash” objects.
So accounts class is aggregation of these three objects.
201
Inheritance
Hierarchy is used to define more specialized classes based on a preexisting gene
ralized class. Example we have VEHICLE class and we can inherit this class make
more specialized class like CAR, which will add new attributes and use some exis
ting qualities of the parent class. Its shows more of a parent-child relationshi
p. This kind of hierarchy is called inheritance. Polymorphism When inheritance i
s used to extend a generalized class to a more specialized class, it includes be
havior of the top class(Generalized class). The inheriting class often implement
a behavior that can be somewhat different than the generalized class, but the n
ame of the behavior can be same. It is important that a given instance of an obj
ect use the correct behavior, and the property of polymorphism allows this to ha
ppen automatically.
(B) How can we acheive inheritance in VB.NET ?
Note:- The following explanation is for VB.NET Inheritance is achieved by using
“Inherits” keyword in VB.NET (For C# it is “:”). Simple Sample is provided in CD
for understanding inheritance in folder “WindowsApplicationInheritance”. There
are two classes one is the parent “ClsParent” and second is the child “ClsChild”
. Parent class has a string which has to parsed for junk data “@” and “/”.ClsPar
ent has the functionality which parses only cleans up “@”.”ClsChild” then inheri
ts from parent and adds extra functionality by parsing “/”.
Public Class ClsParent Protected strData As String = “jksdhkj@dadad///ajkdhsjakd
” Public Function Parse() As String Dim PstrData As String PstrData = strData Ps
trData = Replace(PstrData, “@”, “”) Return PstrData End Function Public Function
GetActualString() As String Return strData End Function End Class
Above is the source which parses only “@” of strData variable.
202
Public Class ClsChild Inherits ClsParent ‘ this is child and a special parse fun
ction is added which will also parse “/” Public Function ParseBackSlash() Dim Ps
trData As String PstrData = Me.Parse() PstrData = Replace(PstrData, “/”, “”) Ret
urn PstrData End Function End Class
Above is the source code for “ClsChild” which does the remaining work. It adds e
xtra functionality by parsing “/” junk character’s of the data. Note:- Strdata w
as accessible only because it was defined as protected in the parent class.
Figure :- 6.1 Inheritance in action
(I) What are abstract classes ?
Following are features of a abstract class :√ You can not create a object of abs
tract class
203
√
Abstract class is designed to act as a base class (to be inherited by other clas
ses). Abstract class is a design concept in program development and provides a b
ase upon which other classes are built. Abstract classes are similar to interfac
es. After declaring an abstract class, it cannot be instantiated on its own, it
must be inherited. In VB.NET abstract classes are created using “MustInherit” ke
yword.In C# we have “Abstract” keyword. Abstract classes can have implementation
or pure abstract methods which should be implemented in the child class. Note:-
In order to understand the concept simple sample of add and multiply functional
ity is implemented in “WindowsAbstract” folder in CD.
√ √ √
From interview point of view just saying using “MustInherit” keyword is more tha
n enough to convince that you have used abstract classes. But to clear simple fu
ndamental let’s try to understand the sample code. There are two classes one is
“ClsAbstract” class and other is “ClsChild” class. “ClsAbstract” class is a abst
ract class as you can see the mustinherit keyword. It has one implemented method
“Add” and other is abstract method which has to be implemented by child class “
MultiplyNumber”. In the child class we inherit the abstract class and implement
the multiplynumber function. Definitely this sample does not take out actually h
ow things are implemented in live projects. Basically you put all your common fu
nctionalities or half implemented functionality in parent abstract class and lat
er let child class define the full functionality of the abstract class. Example
i always use abstract class with all my SET GET properties of object in abstract
class and later make specialize classes for insert, update, delete for the corr
esponding entity object.
Public MustInherit Class ClsAbstract ‘ use the mustinherit class to declare the
class as abstract Public Function Add(ByVal intnum1 As Integer, ByVal intnum2 As
Integer) As Integer Return intnum1 + intnum2 End Function ‘ left this seconf fu
nction to be completed by the inheriting class Public MustOverride Function Mult
iplyNumber(ByVal intnum1 As Integer, ByVal intnum2 As Integer) As Integer End Cl
ass 204
Public Class ClsChild Inherits ClsAbstract ‘ class child overrides the Multiplyn
umber function Public Overrides Function MultiplyNumber(ByVal intnum1 As Integer
, ByVal intnum2 As Integer) As Integer Return intnum1 * intnum2 End Function End
Class
Figure :- 6.2 Abstract classes in action
My attitude towards abstract class has been that i put all my common functionali
ty in abstract class.
(B) What is a Interface ?
Interface is a contract that defines the signature of the functionality. So if a
class is implementing a interface it says to the outer world, that it provides
specific behavior. Example if a class is implementing Idisposable interface that
means it has a functionality to release unmanaged resources. Now external objec
ts using this class know that it has contract by which it can dispose unused unm
anaged objects. √ √ Single Class can implement multiple interfaces. If a class i
mplements a interface then it has to provide implementation to all its methods.
205
Note:- In CD sample “WindowsInterFace” is provided, which has a simple interface
implemented. In sample there are two files.One has the interface definition and
other class implements the interface. Below is the source code “IInterface” is
the interface and “ClsDosomething” implements the “IInterface”. This sample just
displays a simple message box.
Public Interface IInterFace Sub DoSomething() End Interface
Public Class ClsDoSomething Implements IInterFace Public Sub DoSomething() Imple
ments WindowsInterFace.IInterFace.DoSomething MsgBox(“Interface implemented”) En
d Sub End Class
Figure:- 6.3 Interface in action
206
(A) What is difference between abstract classes and interfaces?
Following are the differences between abstract and interfaces :√ √ Abstract clas
ses can have concrete methods while interfaces have no methods implemented. Inte
rfaces do not come in inheriting chain, while abstract classes come in inheritan
ce.
(B) What is a delegate ?
Delegate is a class that can hold a reference to a method or a function. Delegat
e class has a signature and it can only reference those methods whose signature
is compliant with the class. Delegates are type-safe functions pointers or callb
acks. Below is a sample code which shows a example of how to implement delegates
.
Public Class FrmDelegates Inherits System.Windows.Forms.Form Public Delegate Sub
DelegateAddString() Private Sub FrmDelegates_Load(ByVal sender As System.Object
, ByVal e As System.EventArgs) Handles MyBase.Load End Sub Private Sub AddString
() lstDelegates.Items.Add(“Running AddString() method”) End Sub Private Sub cmdD
elegates_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handl
es cmdDelegates. Click Dim objDelegateAddString As DelegateAddString objDelegate
AddString = AddressOf AddString objDelegateAddString.Invoke() End Sub End Class
In the above there is a method called “AddString()” which adds a string to a lis
tbox.You can also see a delegate declared as :Public Delegate Sub DelegateAddStr
ing() This delegate signature is compatible with the “AddString” method. When I
mean compatibility that means that there return types and passing parameter type
s are same.
207
Later in command click of the button object of the Delegate is created and the m
ethod pointer is received from “AddressOf ” keyword. Then by using the “Invoke”
method the method is invoked.
Figure :- 6.4 Delegate in Action
(B) What are events ?
As compared to delegates events works with source and listener methodology. So l
isteners who are interested in receiving some events they subscribe to the sourc
e. Once this subscription is done the source raises events to its entire listene
r when needed. One source can have multiple listeners. In sample given below cla
ss “ClsWithEvents” is a event source class, which has a event “EventAddString()”
. Now the listeners who are interested in receiving this events they can subscri
be to this event. In class “FrmWithEvents” you can see they handle clause which
is associated with the “mobjClsWithEvents” objects.
Public Class ClsWithEvents Event EventAddString(ByVal Value As String) Public Su
b AddString() RaiseEvent EventAddString(“String added by Event”) End Sub End Cla
ss 208
Public Class FrmWithEvents Inherits System.Windows.Forms.Form Private WithEvents
mobjClsWithEvents As New ClsWithEvents() Private Sub FrmWithEvents_Load(ByVal s
ender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub
Private Sub mobjClsWithEvents_EventAddString(ByVal Value As String) Handles mob
jClsWithEvents.EventAddString LstData.Items.Add(Value) End Sub Private Sub CmdRu
nEvents_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handle
s CmdRunEvents.Click mobjClsWithEvents.AddString() End Sub End Class
Figure :- 6.5 Events in action
Nore:- Above source code is provided in “WindowsEvent”
209
(I) Do events have return type ?
No, events do not have return type.
(A) Can event’s have access modifiers ?
Event’s are always public as they are meant to serve every one register ing to i
t. But you can access modifiers in events.You can have events with protected key
word which will be accessible only to inherited classes.You can have private eve
nts only for object in that class.
(A) Can we have shared events ?
Yes, you can have shared event’s note only shared methods can raise shared event
s.
(I) What is shadowing ?
When two elements in a program have same name, one of them can hide and shadow t
he other one. So in such cases the element which shadowed the main element is re
ferenced. Below is a sample code, there are two classes “ClsParent” and “ClsShad
owedParent”. In “ClsParent” there is a variable “x” which is a integer. “ClsShad
owedParent” overrides “ClsParent” and shadows the “x” variable to a string. Note
:- In Sample CD “WindowsShadowing” is folder which has the sample code. If you r
un the program you can have two output’s one which shows a integer and other whi
ch shows a string.
Public Class ClsParent Public x As Integer End Class
Public Class ClsShadowedParent Inherits ClsParent Public Shadows x As String End
Class
210
Figure :- 6.6 Shadowing in Action
(A) What is the difference between Shadowing and Overriding ?
Following are the differences between shadowing and overriding :√ √ Overriding r
edefines only the implementation while shadowing redefines the whole element. In
overriding derived classes can refer the parent class element by using “ME” key
word, but in shadowing you can access it by “MYBASE”.
(I) What is the difference between delegate and events?
√ √ Actually events use delegates in bottom. But they add an extra layer on the
delegates, thus forming the publisher and subscriber model. As delegates are fun
ction to pointers they can move across any clients. So any of the clients can ad
d or remove events, which can be pretty confusing. But events give the extra pro
tection by adding the layer and making it a publisher and subscriber model.
211
Just imagine one of your clients doing this c.XyzCallback = null This will reset
all your delegates to nothing and you have to keep searching where the error is
.
(B) If we inherit a class do the private variables also get inherited ?
Yes, the variables are inherited but can not be accessed directly by the class i
nterface.
(B) What are the different accessibility levels defined in .NET ?
Following are the five levels of access modifiers :√ √ √ √ √ Private : Only memb
ers of class have access. Protected :-All members in current class and in derive
d classes can access the variables. Friend (internal in C#) :- Only members in c
urrent project have access to the elements. Protected friend (protected internal
in C#) :- All members in current project and all members in derived class can a
ccess the variables. Public :- All members have access in all classes and projec
ts.
(I) Can you prevent a class from overriding ?
If you define a class as “Sealed” in C# and “NotInheritable” in VB.NET you can n
ot inherit the class any further.
(I) What is the use of “MustInherit” keyword in VB.NET ?
If you want to create a abstract class in VB.NET it’s done by using “MustInherit
” keyword.You can not create an object of a class which is marked as “MustInheri
t”. When you define “MustInherit” keyword for class you can only use the class b
y inheriting.
212
Note :- There was huge typo in my previous versions for the above two questions.
I hope some one has not lost good oppurtunity because of the same. Thanks to al
l my readers for pointing it out.
(I) Do interface have accessibility modifier?
All elements in Interface should be public. So by default all interface elements
are public by default.
(A) What are similarities between Class and structure ?
Following are the similarities between classes and structures :√ √ √ √ Both can
have constructors, methods, properties, fields, constants, enumerations, events,
and event handlers. Structures and classes can implement interface. Both of the
m can have constructors with and without parameter. Both can have delegates and
events.
(A) What is the difference between Class and structure’s ?
Following are the key differences between them :√ √ √ √ Structure are value type
s and classes are reference types. So structures use stack and classes use heap.
Structures members can not be declared as protected, but class members can be.
You can not do inheritance in structures. Structures do not require constructors
while classes require. Objects created from classes are terminated using Garbag
e collector. Structures are not destroyed using GC.
(B) What does virtual keyword mean ?
They are that method and property can be overridden.
(B) What are shared (VB.NET)/Static(C#) variables?
213
Static/Shared classes are used when a class provides functionality which is not
specific to any instance. In short if you want an object to be shared between mu
ltiple instances you will use a static/Shared class. Following are features of S
tatic/Shared classes :√ √ √ √ They can not be instantiated. By default a object
is created on the first method call to that object. Static/Shared classes can no
t be inherited. Static/Shared classes can have only static members. Static/Share
d classes can have only static constructor. Note :- In CD there is a folder “Win
dowsShared” which has a sample code for shared variables.Below is a snippet. It
has a “AddCount” function which increments a static “intCount” variable. In form
there are two buttons which creates a new object and displays the count of the
static variable. Even though the object is created and destroyed, the variable v
alues does not change. It retains its old value.
Public Class ClsShared Shared intCount As Integer Public Function AddCount() As
Integer intCount = intCount + 1 Return intCount End Function End Class Public Cl
ass FrmSharedClasses Inherits System.Windows.Forms.Form Private Sub CmdInstance1
_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmdIn
stance1.Click Dim pobjClsShared As New ClsShared() MessageBox.Show(“The count at
this moment is” & pobjClsShared.AddCount.ToString()) End Sub Private Sub CmdIns
tance2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
CmdInstance2.Click Dim pobjClsShared As New ClsShared() MessageBox.Show(“The co
unt at this moment is” & pobjClsShared.AddCount.ToString())
214
End Sub End Class
Figure :- 6.7 Shared/Static In Action
(B) What is Dispose method in .NET ?
.NET provides “Finalize” method in which we can clean up our resources. But rely
ing on this is not always good so the best is to implement “Idisposable” interfa
ce and implement the “Dispose” method where you can put your clean up routines.
(B) What is the use of “OverRides” and “Overridable” keywords ?
Overridable is used in parent class to indicate that a method can be overridden.
Overrides is used in the child class to indicate that you are overriding a meth
od
(A) Where are all .NET Collection classes located ?
215
System.Collection namespace has all the collection classes available in .NET.
(A) What is ArrayList ?
Array is whose size can increase and decrease dynamically. Array list can hold i
tem of different types. As Array list can increase and decrease size dynamically
you do not have to use the REDIM keyword. You can access any item in array usin
g the INDEX value of the array position.
(A) What’s a HashTable ?
Twist :- What’s difference between HashTable and ArrayList ? You can access arra
y using INDEX value of array, but how many times you know the real value of inde
x. Hashtable provides way of accessing the index using a user identified KEY val
ue, thus removing the INDEX problem.
(A) What are queues and stacks ?
Queue is for first-in, first-out (FIFO) structures. Stack is for last-in, first-
out (LIFO) structures.
(B) What is ENUM ?
It’s used to define constants.
(A) What is nested Classes ?
Nested classes are classes within classes. In sample below “ClsNested” class has
a “ChildNested” class nested inside it.
Public Class ClsNested Public Class ChildNested Public Sub ShowMessage() Message
Box.Show(“Hi this is nested class”) End Sub End Class End Class
This is the way we can instantiate the nested class and make the method call.
Dim pobjChildNested As New ClsNested.ChildNested() pobjChildNested.ShowMessage()
216
Note:-In CD the above sample is provided in “WindowsNestedClasses”.
(B)What is Operator Overloading in .NET?
It provides a way to define and use operators such as +, -, and / for user-defin
ed classes or structs. It allows us to define/redefine the way operators work wi
th our classes and structs. This allows programmers to make their custom types l
ook and feel like simple types such as int and string. VB.NET till now does not
support operator overloading. Operator overloading is done by using the “Operato
r” keyword. Note:- Operator overloading is supported in VB.NET 2005
(I) In below sample code if we create a object of class2 which constructor will
fire first ?
Public Class Class1 Sub New() End Sub End Class Public Class class2 Inherits Cla
ss1 Sub New() End Sub End Class * I leave this to the readers......
(B)What is the significance of Finalize method in .NET?
.NET Garbage collector does almost all clean up activity for your objects. But u
nmanaged resources (ex: - Windows API created objects, File, Database connection
objects, COM objects etc) is outside the scope of .NET framework we have to exp
licitly clean our resources. For these types of objects .NET framework provides
Object. Finalize method
217
which can be overridden and clean up code for unmanaged resources can be put in
this section.
(A)Why is it preferred to not use finalize for clean up?
Problem with finalize is that garbage collection has to make two rounds in order
to remove objects which have finalize methods. Below figure will make things cl
ear regarding the two rounds of garbage collection rounds performed for the obje
cts having finalized methods. In this scenario there are three objects Object1,
Object2 and Object3. Object2 has the finalize method overridden and remaining ob
jects do not have the finalize method overridden. Now when garbage collector run
s for the first time it searches for objects whose memory has to free. He can se
e three objects but only cleans the memory for Object1 and Object3. Object2 it p
ushes to the finalization queue. Now garbage collector runs for the second time.
He see’s there are no objects to be released and then checks for the finalizati
on queue and at this moment it clears object2 from the memory. So if you notice
that object2 was released from memory in the second round and not first. That’s
why the best practice is not to write clean up Non.NET resources in Finalize met
hod rather use the DISPOSE.
218
Figure :- 6.8 Garbage collection in actions
(I)How can we suppress a finalize method?
GC.SuppressFinalize ()
(B)What is the use of DISPOSE method?
Dispose method belongs to IDisposable interface. We had seen in the previous sec
tion how bad it can be to override the finalize method for writing the cleaning
of unmanaged resources. So if any object wants to release its unmanaged code bes
t is to implement
219
IDisposable and override the Dispose method of IDisposable interface. Now once y
our class has exposed the Dispose method it’s the responsibility of the client t
o call the Dispose method to do the cleanup.
(A)How do I force the Dispose method to be called automatically, as clients can
forget to call Dispose method?
Note :- I admire this question. Call the Dispose method in Finalize method and i
n Dispose method suppress the finalize method using GC.SuppressFinalize. Below i
s the sample code of the pattern. This is the best way we do clean our unallocat
ed resources and yes not to forget we do not get the hit of running the Garbage
collector twice. Note:- It will suppress the finalize method thus avoiding the t
wo trip. Public Class ClsTesting Implements IDisposable Public Overloads Sub Dis
pose()Implements IDisposable.Dispose write ytour clean up code here GC.Suppres
sFinalize(Me) End Sub Protected Overrides Sub Finalize() Dispose() End Sub End C
lass
(I)In what instances you will declare a constructor to be private?
When we create a private constructor, we can not create object of the class dire
ctly from a client. So you will use private constructors when you do not want in
stances of the class to be created by any external client. Example UTILITY funct
ions in project will have no
220
instance and be used with out creating instance, as creating instances of the cl
ass would be waste of memory.
(I)Can we have different access modifiers on get/set methods of a property ?
No we can not have different modifiers same property. The access modifier on a p
roperty applies to both its get and set accessors.
(I)If we write a goto or a return statement in try and catch block will the fina
lly block execute ?
The code in then finally always run even if there are statements like goto or a
return statements.
(A)What is Indexer ?
An indexer is a member that enables an object to be indexed in the same way as a
n array.
(A)Can we have static indexer in C# ?
No.
(A)In a program there are multiple catch blocks so can it happen that two catch
blocks are executed ?
No, once the proper catch section is executed the control goes finally to block.
So there will not be any scenarios in which multiple catch blocks will be execu
ted.
(A) What is the difference between System.String and System.StringBuilder classe
s?
System.String is immutable; System.StringBuilder can have mutable string where a
variety of operations can be performed.
221
7. ASP.NET
(B) What’ is the sequence in which ASP.NET events are processed ?
Following is the sequence in which the events occur :√ √ √ √ Page_Init. Page_Loa
d. Control events Page_Unload event.
Page_init event only occurs when first time the page is started, but Page_Load o
ccurs in subsequent request of the page.
(B) In which event are the controls fully loaded ?
Page_load event guarantees that all controls are fully loaded. Controls are also
accessed in Page_Init events but you will see that viewstate is not fully loade
d during this event.
(B) How can we identify that the Page is PostBack ?
Page object has a “IsPostBack” property which can be checked to know that is the
page posted back.
(B) How does ASP.NET maintain state in between subsequent request ?
Refer caching chapter.
(A) What is event bubbling ?
Server controls like Datagrid, DataList, Repeater can have other child controls
inside them. Example DataGrid can have combo box inside datagrid. These child co
ntrol do not raise there events by themselves, rather they pass the event to the
container parent (which can be a datagrid, datalist, repeater), which passed to
the page as “ItemCommand” event. As the child control send there events to pare
nt this is termed as event bubbling.
222
(B) How do we assign page specific attributes ?
Page attributes are specified using the @Page directive.
(A) Administrator wants to make a security check that no one has tampered with V
iewState, how can he ensure this ?
Using the @Page directive EnableViewStateMac to True.
(B) What is the use of @ Register directives ?
@Register directive informs the compiler of any custom server control added to t
he page.
(B) What’s the use of SmartNavigation property ?
It’s a feature provided by ASP.NET to prevent flickering and redrawing when the
page is posted back. Note:- This is only supported for IE browser. Project’s who
have browser compatibility as requirements have to think some other ways of avo
iding flickering.
(B) What is AppSetting Section in “Web.Config” file ?
Web.config file defines configuration for a webproject. Using “AppSetting” secti
on we can define user defined values. Example below defined is “ConnectionString
” section which will be used through out the project for database connection. <c
onfiguration> <appSettings> <add key="ConnectionString" value="server=xyz;pwd=ww
w;database=testing" /> </appSettings>
(B) Where is ViewState information stored ?
In HTML Hidden Fields.
223
(I) What is the use of @ OutputCache directive in ASP.NET?
It is basically used for caching. See more for Caching chapter.
(B) How can we create custom controls in ASP.NET ?
User controls are created using .ASCX in ASP.NET. After .ASCX file is created yo
u need to two things in order that the ASCX can be used in project:. √ √ Registe
r the ASCX control in page using the <%@ Register directive. Example <%@ Registe
r tagprefix="Accounting" Tagname="footer" Src="Footer.ascx" %> Now to use the ab
ove accounting footer in page you can use the below directive. <Accounting:foote
r runat="server" />
(B) How many types of validation controls are provided by ASP.NET ?
There are six main types of validation controls :-
RequiredFieldValidator
It checks whether the control have any value. It s used when you want the contro
l should not be empty.
RangeValidator
It checks if the value in validated control is in that specific range. Example T
xtCustomerCode should not be more than eight length.
CompareValidator
It checks that the value in controls should match the value in other control. Ex
ample Textbox TxtPie should be equal to 3.14.
RegularExpressionValidator
When we want the control value should match with a specific regular expression.
224
CustomValidator
It is used to define UserDefined validation.
ValidationSummary
It displays summary of all current validation errors. Note:- It s rare that some
one will ask step by step all the validation controls. Rather they will ask for
what type of validation which validator will be used. Example in one of the int
erviews i was asked how you display summary of all errors in the validation cont
rol...So there goes the last one Validation summary.
(B) Can you explain what is “AutoPostBack” feature in ASP.NET ?
If we want the control to automatically postback in case of any event, we will n
eed to check this attribute as true. Example on a ComboBox change we need to sen
d the event immediately to the server side then set the “AutoPostBack” attribute
to true.
(B) How can you enable automatic paging in DataGrid ?
Following are the points to be done in order to enable paging in Datagrid :√ √ S
et the “AllowPaging” to true. In PageIndexChanged event set the current pageinde
x clicked. Note:- The answers are very short, if you have implemented practicall
y its just a revision. If you are fresher just make sample code using Datagrid a
nd try to implement this functionality.
(B) What’s the use of “GLOBAL.ASAX” file ?
It allows to executing ASP.NET application level events and setting application-
level variables.
(B) What is the difference between “Web.config” and “Machine.Config” ?
225
“Web.config” files apply settings to each web application, while “Machine.config
” file apply settings to all ASP.NET applications.
(B) What is a SESSION and APPLICATION object ?
Session object store information between HTTP requests for a particular user, wh
ile application object are global across users.
(A) What is the difference between Server.Transfer and response.Redirect ?
Following are the major differences between them:√ Response.Redirect sends messa
ge to the browser saying it to move to some different page, while server.transfe
r does not send any message to the browser but rather redirects the user directl
y from the server itself. So in server.transfer there is no round trip while res
ponse.redirect has a round trip and hence puts a load on server. Using Server.Tr
ansfer you can not redirect to a different from the server itself. Example if yo
ur server is www.yahoo.com you can use server.transfer to move to www.microsoft.
com but yes you can move to www.yahoo.com/travels, i.e. within websites. This cr
oss server redirect is possible only using Response.redirect.
√
√
With server.transfer you can preserve your information. It has a parameter calle
d as “preserveForm”. So the existing query string etc. will be able in the calli
ng page. In response.redirect you can maintain the state, but has lot of drawbac
ks. If you are navigating within the same website use “Server.transfer” or else
go for “response.redirect()”
(A)What is the difference between Authentication and authorization?
This can be a tricky question. These two concepts seem altogether similar but th
ere is wide range of difference. Authentication is verifying the identity of a u
ser and authorization is process where we check does this identity have access r
ights to the system. In short we
226
can say the following authentication is the process of obtaining some sort of cr
edentials from the users and using those credentials to verify the user’s identi
ty. Authorization is the process of allowing an authenticated user access to res
ources. Authentication always proceed to Authorization; even if your application
lets anonymous users connect and use the application, it still authenticates th
em as being anonymous.
(I) What is impersonation in ASP.NET ?
By default, ASP.NET executes in the security context of a restricted user accoun
t on the local machine. Sometimes you need to access network resources such as a
file on a shared drive, which requires additional permissions. One way to overc
ome this restriction is to use impersonation. With impersonation, ASP.NET can ex
ecute the request using the identity of the client who is making the request, or
ASP.NET can impersonate a specific account you specify in web.config.
(B) Can you explain in brief how the ASP.NET authentication process works?
ASP.NET does not run by itself, it runs inside the process of IIS. So there are
two authentication layers which exist in ASP.NET system. First authentication ha
ppens at the IIS level and then at the ASP.NET level depending on the WEB.CONFIG
file. Below is how the whole process works:√ √ IIS first checks to make sure th
e incoming request comes from an IP address that is allowed access to the domain
. If not it denies the request. Next IIS performs its own user authentication if
it is configured to do so. By default IIS allows anonymous access, so requests
are automatically authenticated, but you can change this default on a per – appl
ication basis with in IIS. If the request is passed to ASP.net with an authentic
ated user, ASP.net checks to see whether impersonation is enabled. If impersonat
ion is enabled, ASP.net acts as though it were the authenticated user. If not AS
P.net acts with its own configured account. Finally the identity from step 3 is
used to request resources from the operating system. If ASP.net authentication c
an obtain all the necessary resources it grants the users request otherwise it i
s denied. Resources can include much
227
√
√
more than just the ASP.net page itself you can also use .Net’s code access secur
ity features to extend this authorization step to disk files, Registry keys and
other resources.
(A) What are the various ways of authentication techniques in ASP.NET?
Selecting an authentication provider is as simple as making an entry in the web.
config file for the application. You can use one of these entries to select the
corresponding built in authentication provider: √ √ √ √ <authentication mode=”wi
ndows”> <authentication mode=”passport”> <authentication mode=”forms”> Custom au
thentication where you might install an ISAPI filter in IIS that compares incomi
ng requests to list of source IP addresses, and considers requests to be authent
icated if they come from an acceptable address. In that case, you would set the
authentication mode to none to prevent any of the .net authentication providers
from being triggered.
Windows authentication and IIS
If you select windows authentication for your ASP.NET application, you also have
to configure authentication within IIS. This is because IIS provides Windows au
thentication. IIS gives you a choice for four different authentication methods:
Anonymous, basic digest and windows integrated If you select anonymous authentic
ation, IIS doesn’t perform any authentication, Any one is allowed to access the
ASP.NET application. If you select basic authentication, users must provide a wi
ndows username and password to connect. How ever this information is sent over t
he network in clear text, which makes basic authentication very much insecure ov
er the internet. If you select digest authentication, users must still provide a
windows user name and password to connect. However the password is hashed befor
e it is sent across the network.
228
Digest authentication requires that all users be running Internet Explorer 5 or
later and that windows accounts to stored in active directory. If you select win
dows integrated authentication, passwords never cross the network. Users must st
ill have a username and password, but the application uses either the Kerberos o
r challenge/response protocols authenticate the user. Windows-integrated authent
ication requires that all users be running internet explorer 3.01 or later Kerbe
ros is a network authentication protocol. It is designed to provide strong authe
ntication for client/server applications by using secret-key cryptography. Kerbe
ros is a solution to network security problems. It provides the tools of authent
ication and strong cryptography over the network to help to secure information i
n systems across entire enterprise
Passport authentication
Passport authentication lets you to use Microsoft’s passport service to authenti
cate users of your application. If your users have signed up with passport, and
you configure the authentication mode of the application to the passport authent
ication, all authentication duties are off-loaded to the passport servers. Passp
ort uses an encrypted cookie mechanism to indicate authenticated users. If users
have already signed into passport when they visit your site, they’ll be conside
red authenticated by ASP.NET. Otherwise they’ll be redirected to the passport se
rvers to log in. When they are successfully log in, they’ll be redirected back t
o your site To use passport authentication you have to download the Passport Sof
tware Development Kit (SDK) and install it on your ser ver. The SDK can be found
at http:// msdn.microsoft.com/library/default.asp?url=/downloads/list/websrvpas
s.aps. It includes full details of implementing passport authentication in your
own applications.
Forms authentication
Forms authentication provides you with a way to handle authentication using your
own custom logic with in an ASP.NET application. The following applies if you c
hoose forms authentication. √ When a user requests a page for the application, A
SP.NET checks for the presence of a special session cookie. If the cookie is pre
sent, ASP.NET assumes the user is authenticated and processes the request.
229
√
If the cookie isn’t present, ASP.NET redirects the user to a web form you provid
e
You can carry out whatever authentication, it check’s you like it checks your fo
rm. When the user is authenticated, you indicate this to ASP.NET by setting a pr
operty, which creates the special cookie to handle subsequent requests.
(A)How does authorization work in ASP.NET?
ASP.NET impersonation is controlled by entries in the applications web.config fi
le. The default setting is “no impersonation”. You can explicitly specify that A
SP.NET shouldn’t use impersonation by including the following code in the file <
identity impersonate=”false”/> It means that ASP.NET will not perform any authen
tication and runs with its own privileges. By default ASP.NET runs as an unprivi
leged account named ASPNET. You can change this by making a setting in the proce
ssModel section of the machine.config file. When you make this setting, it autom
atically applies to every site on the server. To user a high-privileged system a
ccount instead of a low-privileged set the userName attribute of the processMode
l element to SYSTEM. Using this setting is a definite security risk, as it eleva
tes the privileges of the ASP.NET process to a point where it can do bad things
to the operating system. When you disable impersonation, all the request will ru
n in the context of the account running ASP.NET: either the ASPNET account or th
e system account. This is true when you are using anonymous access or authentica
ting users in some fashion. After the user has been authenticated, ASP.NET uses
its own identity to request access to resources. The second possible setting is
to turn on impersonation. <identity impersonate =”true”/> In this case, ASP.NET
takes on the identity IIS passes to it. If you are allowing anonymous access in
IIS, this means ASP.NET will impersonate the IUSR_ComputerName account that IIS
itself uses. If you aren’t allowing anonymous access,ASP.NET will take on the cr
edentials of the authenticated user and make requests for resources as if it wer
e that user. Thus by turning impersonation on and using a non-anonymous method o
f authentication in IIS, you can let users log on and use their identities withi
n your ASP.NET application. Finally, you can specify a particular identity to us
e for all authenticated requests
230
<identity impersonate=”true” username=”DOMAIN\username” password=”password”/ > W
ith this setting, all the requests are made as the specified user (Assuming the
password it correct in the configuration file). So, for example you could design
ate a user for a single application, and use that user’s identity every time som
eone authenticates to the application. The drawback to this technique is that yo
u must embed the user’s password in the web.config file in plain text. Although
ASP.NET won’t allow anyone to download this file, this is still a security risk
if anyone can get the file by other means.
(B)What’s difference between Datagrid, Datalist and repeater ?
A Datagrid, Datalist and Repeater are all ASP.NET data Web controls. They have m
any things in common like DataSource Property, DataBind Method ItemDataBound and
ItemCreated. When you assign the DataSource Property of a Datagrid to a DataSet
then each DataRow present in the DataRow Collection of DataTable is assigned to
a corresponding DataGridItem and this is same for the rest of the two controls
also. But The HTML code generated for a Datagrid has an HTML TABLE <ROW> element
created for the particular DataRow and its a Table form representation with Col
umns and Rows. For a Datalist its an Array of Rows and based on the Template Sel
ected and the RepeatColumn Property value We can specify how many DataSource rec
ords should appear per HTML <table> row. In short in datagrid we have one record
per row, but in datalist we can have five or six rows per row. For a Repeater C
ontrol, the Datarecords to be displayed depends upon the Templates specified and
the only HTML generated is the due to the Templates. In addition to these, Data
grid has a in-built support for Sort, Filter and paging the Data, which is not p
ossible when using a DataList and for a Repeater Control we would require to wri
te an explicit code to do paging.
231
(A)From performance point of view how do they rate ?
Repeater is fastest followed by Datalist and finally datagrid.
(B)What is the method to customize columns in DataGrid?
Use the template column.
(B)How can we format data inside DataGrid?
Use the DataFormatString property.
(A) How to decide on the design consideration to take a Datagrid, datalist or re
peater ?
Many make a blind choice of choosing datagrid directly, but that s not the right
way. Datagrid provides ability to allow the end-user to sort, page, and edit it
s data. But it comes at a cost of speed. Second the display format is simple tha
t is in row and columns. Real life scenarios can be more demanding that With its
templates, the DataList provides more control over the look and feel of the dis
played data than the DataGrid. It offers better performance than datagrid Repeat
er control allows for complete and total control. With the Repeater, the only HT
ML emitted are the values of the databinding statements in the templates along w
ith the HTML markup specified in the templates—no "extra" HTML is emitted, as wi
th the DataGrid and DataList. By requiring the developer to specify the complete
generated HTML markup, the Repeater often requires the longest development time
. But repeater does not provide editing features like datagrid so everything has
to be coded by programmer. However, the Repeater does boast the best performanc
e of the three data Web controls. Repeater is fastest followed by Datalist and f
inally datagrid.
(B) Difference between ASP and ASP.NET?
ASP.NET new feature supports are as follows :Better Language Support √ New ADO.N
ET Concepts have been implemented.
232
√
ASP.NET supports full language (C#, VB.NET, C++) and not simple scripting like V
BSCRIPT..
Better controls than ASP √ √ ASP.NET covers large set’s of HTML controls.. Bette
r Display grid like Datagrid, Repeater and datalist.Many of the display grids ha
ve paging support. All ASP.NET controls support events. Load, Click and Change e
vents handled by code makes coding much simpler and much better organized.
Controls have events support √ √
Compiled Code The first request for an ASP.NET page on the server will compile t
he ASP.NET code and keep a cached copy in memory. The result of this is greatly
increased performance. Better Authentication Support ASP.NET supports forms-base
d user authentication, including cookie management and automatic redirecting of
unauthorized logins. (You can still do your custom login page and custom user ch
ecking). User Accounts and Roles ASP.NET allows for user accounts and roles, to
give each user (with a given role) access to different server code and executabl
es. High Scalability √ √ Much has been done with ASP.NET to provide greater scal
ability. Server to server communication has been greatly enhanced, making it pos
sible to scale an application over several servers. One example of this is the a
bility to run XML parsers, XSL transformations and even resource hungry session
objects on other servers.
Easy Configuration
233
√ √
Configuration of ASP.NET is done with plain text files. Configuration files can
be uploaded or changed while the application is running. No need to restart the
server. No more metabase or registry puzzle.
Easy Deployment No more server restart to deploy or replace compiled code. ASP.N
ET simply redirects all new requests to the new code.
(A) What are major events in GLOBAL.ASAX file ?
The Global.asax file, which is derived from the HttpApplication class, maintains
a pool of HttpApplication objects, and assigns them to applications as needed.
The Global.asax file contains the following events: Application_Init: Fired when
an application initializes or is first called. It is invoked for all HttpApplic
ation object instances. Application_Disposed: Fired just before an application i
s destroyed. This is the ideal location for cleaning up previously used resource
s. Application_Error: Fired when an unhandled exception is encountered within th
e application. Application_Start: Fired when the first instance of the HttpAppli
cation class is created. It allows you to create objects that are accessible by
all HttpApplication instances. Application_End: Fired when the last instance of
an HttpApplication class is destroyed. It is fired only once during an applicati
on s lifetime. Application_BeginRequest: Fired when an application request is re
ceived. It is the first event fired for a request, which is often a page request
(URL) that a user enters. Application_EndRequest: The last event fired for an a
pplication request. Application_PreRequestHandlerExecute: Fired before the ASP.N
ET page framework begins executing an event handler like a page or Web service.
Application_PostRequestHandlerExecute: Fired when the ASP.NET page framework has
finished executing an event handler. Applcation_PreSendRequestHeaders: Fired be
fore the ASP.NET page framework sends HTTP headers to a requesting client (brows
er).
234
Application_PreSendContent: Fired before the ASP.NET page framework send content
to a requesting client (browser). Application_AcquireRequestState: Fired when t
he ASP.NET page framework gets the current state (Session state) related to the
current request. Application_ReleaseRequestState: Fired when the ASP.NET page fr
amework completes execution of all event handlers. This results in all state mod
ules to save their current state data. Application_ResolveRequestCache: Fired wh
en the ASP.NET page framework completes an authorization request. It allows cach
ing modules to serve the request from the cache, thus bypassing handler executio
n. Application_UpdateRequestCache: Fired when the ASP.NET page framework complet
es handler execution to allow caching modules to store responses to be used to h
andle subsequent requests. Application_AuthenticateRequest: Fired when the secur
ity module has established the current user s identity as valid. At this point,
the user s credentials have been validated. Application_AuthorizeRequest: Fired
when the security module has verified that a user can access resources. Session_
Start: Fired when a new user visits the application Web site. Session_End: Fired
when a user s session times out, ends, or they leave the application Web site.
Note :- During interview you do not have to really cram all these events. But ju
st keep the basic events in mind
(A) What order they are triggered ?
They re triggered in the following order: Application_BeginRequest Application_A
uthenticateRequest Application_AuthorizeRequest Application_ResolveRequestCache
Application_AcquireRequestState
235
Application_PreRequestHandlerExecute Application_PreSendRequestHeaders Applicati
on_PreSendRequestContent <<code is executed>> Application_PostRequestHandlerExec
ute Application_ReleaseRequestState Application_UpdateRequestCache Application_E
ndRequest.
(I) Do session use cookies ?
Twist:- How can we make session to not to use cookies ? Left to the user, you wi
ll enjoy to find this answer.
(I)How can we force all the validation control to run ?
Page.Validate
(B)How can we check if all the validation control are valid and proper ?
Using the Page.IsValid() property you can check whether all the validation are d
one.
(A)If client side validation is enabled in your Web page, does that mean server
side code is not run?
When client side validation is enabled server emit’s JavaScript code for the cus
tom validators. But note that does not mean that server side checks on custom va
lidators do not execute. It does this redundant check two times as some of the v
alidators do not support client side scripting.
(A)Which JavaScript file is referenced for validating the validators at the clie
nt side ?
236
WebUIValidation.js javascript file installed at “aspnet_client” root IIS directo
ry is used to validate the validation controls at the client side
(B)How to disable client side script in validators?
Set EnableClientScript to false.
(A)How can I show the entire validation error message in a message box on the cl
ient side?
In validation summary set “ShowMessageBox” to true.
(B)You find that one of your validation is very complicated and does not fit in
any of the validators, what will you do ?
Best is to go for CustomValidators. Below is a sample code for a custom validato
r which checks that a textbox should not have zero value <asp:CustomValidator id
="CustomValidator1" runat="server" ErrorMessage="Number not divisible by Zero" C
ontrolToValidate="txtNumber" OnServerValidate="ServerValidate" ClientValidationF
unction="CheckZero" /><br> Input: <asp:TextBox id="txtNumber" runat="server" />
<script language="javascript"> <!-function CheckZero(source, args) { int val = p
arseInt(args.Value, 10); if (value==0) { args.IsValid = false; }
237
else { args.IsValid = true; } } // --> </script>
(A)What is Tracing in ASP.NET ?
Tracing allows us to view how the code was executed in detail.
(A) How do we enable tracing ?
<%@ Page Trace="true" %>
(I)What exactly happens when ASPX page is requested from Browser?
Note: - Here the interviewer is expecting complete flow of how an ASPX page is p
rocessed with respect to IIS and ASP.NET engine. Following are the steps which o
ccur when we request a ASPX page :√ The browser sends the request to the webserv
er. Let us assume that the webserver at the other end is IIS. √ Once IIS receive
s the request he looks on which engine can serve this request. When I mean engin
e means the DLL who can parse this page or compile and send a response back to b
rowser. Which request to map to is decided by file extension of the page request
ed. .aspx, for ASP.NET Web pages, .asmx, for ASP.NET Web services, .config, for
ASP.NET configuration files, .ashx, for custom ASP.NET HTTP handlers,
Depending on file extension following are some mapping √ √ √ √
238
√ √
.rem, for remoting resources Etc
You can also configure the extension mapping to which engine can route by using
the IIS engine.
Figure: - 7.1 Following screen shows some IIS mappings
Example an ASP page will be sent to old classic ASP.DLL to compile. While .ASPX
pages will be routed to ASP.NET engine for compilation.
239
√
As this book mainly will target ASP.NET we will look in to how ASP.NET pages tha
t is ASPX pages generation sequence occurs. Once IIS passes the request to ASP.N
ET engine page has to go through two section HTTP module section and HTTP handle
r section. Both these section have there own work to be done in order that the p
age is properly compiled and sent to the IIS. HTTP modules inspect the incoming
request and depending on that they can change the internal workflow of the reque
st. HTTP handler actually compiles the page and generates output. If you see you
r machine.config file you will see following section of HTTP modules <httpModule
s> <add name="OutputCache" type="System.Web.Caching.OutputCacheModule" /> <add n
ame="Session" type="System.Web.SessionState.SessionStateModule" /> <add name="Wi
ndowsAuthentication" type="System.Web.Security.WindowsAuthenticationModule" /> <
add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModu
le" /> <add name="PassportAuthentication" type="System.Web.Security.PassportAuth
enticationModule" /> <add name="UrlAuthorization" type="System.Web.Security.UrlA
uthorizationModule" /> <add name="FileAuthorization" type="System.Web.Security.F
ileAuthorizationModule" /> <add name="ErrorHandlerModule" type="System.Web.Mobil
e.ErrorHandlerModule, System.Web.Mobile, Version=1.0.5000.0, Culture=neutral, Pu
blicKeyToken=b03f5f7f11d50a3a" / > </httpModules>
The above mapping will show which functionality is handled by which Namespace. E
xample For msAthuentication is handled by “System.Web.
240
Security.FormsAuthenticationModule”. If you look at the web.config section HTTP
module is where authentication and authorization happens. Ok now the HTTP handle
r is where the actual compilation takes place and the output is generated. Follo
wing is a paste from HTTP handler section of WEB.CONFIG file. <httpHandlers> <ad
d verb="*" path="*.vjsproj" type="System.Web.HttpForbiddenHandler" /> <add verb=
"*" path="*.java" type="System.Web.HttpForbiddenHandler" /> <add verb="*" path="
*.jsl" type="System.Web.HttpForbiddenHandler" /> <add verb="*" path="trace.axd"
type="System.Web.Handlers.TraceHandler" /> <add verb="*" path="*.aspx" type="Sys
tem.Web.UI.PageHandlerFactory" /> <add verb="*" path="*.ashx" type="System.Web.U
I.SimpleHandlerFactory" /> ... </httpHandlers> √ Depending on the File extension
handler decides which Namespace will generate the output. Example all .ASPX ext
ension files will be compiled by System.Web.UI.PageHandlerFactory Once the file
is compiled it will be send back again to the HTTP modules and there to IIS and
then to the browser.
√ from
241
Figure :- 7.2 IIS flow from various sections.
(B)How can we kill a user session ?
Session.abandon
242
(I)How do you upload a file in ASP.NET ?
I will leave this to the readers … Just a hint we have to use System.Web.HttpPos
tedFile class.
(I)How do I send email message from ASP.NET ?
ASP.NET provides two namespaces System.WEB.mailmessage classand System.Web.Mail.
Smtpmail class. Just a small homework create a Asp.NET project and send a email
at shiv_koirala@yahoo.com. Do not Spam.
(A)What are different IIS isolation levels?
IIS has three level of isolation:LOW (IIS process):- In this main IIS process an
d ASP.NET application run in same process. So if any one crashes the other is al
so affected. Example let’s say (well this is not possible) I have hosted yahoo,
hotmail .amazon and google on a single PC. So all application and the IIS proces
s runs on the same process. In case any website crashes it affects every one.
Figure: - 7.3 LOW IIS process scenario
Medium (Pooled):- In Medium pooled scenario the IIS and web application run in d
ifferent process. So in this case there are two processes process1 and process2.
In process1 the IIS process is running and in process2 we have all Web applicat
ion running.
243
Figure: - 7.4 Medium pooled scenario
High (Isolated):-In high isolated scenario every process is running is there own
process. In below figure there are five processes and every one handling indivi
dual application. This consumes heavy memory but has highest reliability.
244
Figure: - 7.5 High isolation scenario
(A)ASP used STA threading model, what is the threading model used for ASP.NET ?
ASP.NET uses MTA threading model.
(A)What is the use of <%@ page aspcompat=true %> attribute ?
This attribute works like a compatibility option. As mentioned before ASP worked
in STA model and ASP.NET works in MTA model, but what if your ASP.NET applicati
on is using a VB COM component. In order that VB COM runs properly in ASP.NET th
reading model we have to set attribute. After defining the ASPCOMPAT directive a
ttribute ASP.NET pages runs in STA model thus building the compatibility between
ASP.NET and old COM components that does not support MTA model.
245
(B)Explain the differences between Server-side and Clientside code?
Server side code is executed at the server side on IIS in ASP.NET framework, whi
le client side code is executed on the browser.
(I)Can you explain Forms authentication in detail ?
In old ASP if you where said to create a login page and do authentication you ha
ve to do hell lot of custom coding. But now in ASP.NET that’s made easy by intro
ducing Forms authentication. So let’s see in detail what form authentication is.
Forms authentication uses a ticket cookie to see that user is authenticated or
not. That means when user is authenticated first time a cookie is set to tell th
at this user is authenticated. If the cookies expire then Forms authentication m
echanism sends the user to the login page. Following are the steps which defines
steps for Forms authentication :√ Configure Web.config file with forms authenti
cation. As shown below in the config file you can see we have give the cookie na
me and loginurl page. <configuration> <system.web> <!-- Other settings omitted.
--> <authentication mode="Forms"> <forms name="logincookies" loginUrl="login.asp
x" protection="All" timeout="30" path="/" /> </authentication> </system.web> </c
onfiguration>
246
√
Remove anonymous access to the IIS web application, following are changes done t
o web.config file. <configuration> <system.web> <!-- Other settings omitted. -->
<authorization> <deny users="?" /> </authorization> </system.web> </configurati
on>
√ Create the login page which will accept user information. You will have create
your login page that is the Login.aspx which will actually take the user data.
√ Finally a Small coding in the login button. Let us assume that the login page
has two textboxes Txtname and txtapssword. Also import System.Web.Security and p
ut the following code in login button of the page. If Page.IsValid Then If Forms
Authentication.Authenticate(txtName.Text, txtPassword.Text) Then FormsAuthentica
tion.RedirectFromLoginPage(txtName.Text, False) Else lblStatus.Text = "Error not
proper user" End If End If
247
(A)How do I sign out in forms authentication ?
FormsAuthentication.Signout()
(A)If cookies are not enabled at browser end does form Authentication work?
No, it does not work.
(A)How to use a checkbox in a datagrid?
Twist :- How can I track event in checkbox which is one of the columns of a data
grid ? Note: - This is normally asked when the interviewer want to see that have
you really worked practically on a project. Following are the steps to be done
:√ In ASPX page you have to add Itemtemplate tag in datagrid. <ItemTemplate> <as
p:CheckBox id="CheckBox1" runat="server" AutoPostBack="True" OnCheckedChanged="C
heck_Clicked"></asp:CheckBox> </ItemTemplate> √ If you look at the Itemtemplate
we have “OnCheckChanged” event. This “OnCheckChanged” event has “Check_Clicked”
subroutine is actually in behind code. Note this method which is in behind code
should either be “protected” or “public” Following below is the subroutine which
defines the method Protected Sub Check_Clicked(ByVal sender As Object, ByVal e
As EventArgs) ‘ do something End Sub The above steps should be defined in short
to the interviewer which will give a quick feeling of your practical experience
with ASP.NET
248
√
(I)What are the steps to create a windows service in VB.NET ?
Windows Services are long-running executable applications that run in its own Wi
ndows session, which then has the ability to start automatically when the comput
er boots and also can be manually paused, stopped or even restarted. Following a
re the steps to create a service :√ Create a project of type “Windows Service”.
Figure 7.6 :- Create project for Windows Service
√
If you see the class created it is automatically inheriting from “System.Service
Process.ServiceBase”.
249
√
You can override the following events provided by service and write your custom
code. All the three main events can be used that is Start, stop and continue. pr
otected override void OnStart(string[] args) { } protected override void OnStop(
) { } protected override void OnContinue() { }
√
Now to install the service you need to do run the install util exe. InstallUtil
<Project Path>\BIN\MyNewService.exe
(A) What is the difference between “Web farms” and “Web garden”?
“Web farms” are used to have some redundancy to minimize failures. It consists o
f two or more web server of the same configuration and they stream the same kind
of contents. When any request comes there is switching / routing logic which de
cides which web server from the farm handles the request. For instance we have t
wo servers “Server1” and “Server2” which have the same configuration and content
. So there is a special switch which stands in between these two servers and the
users and routes the request accordingly.
250
Figure 7.7 : - Web Farm in action
Above figure explains in detail how web farm work. You can see there is a router
in between which takes a request and sees which one of the server is least load
ed and forwards the request to that server. So for request1 it route’s server1,
for request2 it routes server2, for request3 it routes to server3 and final requ
est4 is routed to server4. So you can see because we have web farm at place serv
er1 and server2 are loaded with two request each rather than one server loading
to full. One more advantage of using this kind of architecture is if one of the
servers goes down we can still run with the other server thus having 24x7 uptime
. The routing logic can be a number of different options:√ Round-robin: Each nod
e gets a request sent to it “in turn”. So, server1 gets a request, then server2
again, then server1, then server2 again. As shown in the above figure.
251
√
Least Active: Whichever node show to have the lowest number of current connects
gets new connects sent to it. This is good to help keep the load balanced betwee
n the server nodes.
√
Fastest Reply: Whichever node replies faster is the one that gets new requests.
This is also a good option - especially if there are nodes that might not be “eq
ual” in performance. If one performs better than the other, then send more reque
sts there rather than which is moving slowly? Before we try to understand what a
web garden is let’s try to understand how IIS handles processes. All requests t
o IIS are routed to “aspnet_wp.exe” for IIS 5.0 and “w3wp.exe” for IIS 6.0. In n
ormal case i.e. with out web garden we have one worker process instance (“aspnet
_wp.exe” / “w3wp.exe”) across all requests. This one instance of worker process
uses the CPU processor as directed by the operating system.
Figure 7.8 : - With out Web Garden
252
But when we enable web garden for a web server it creates different instances of
the worker process and each of these worker process runs on different CPU. You
can see in the below diagram we have different worker process instances created
which run on different CPU’s.
Figure 7.9 : - With Web Garden
In short we can define a model in which multiple processes run on multiple CPUs
in a single server machine are known as a Web garden.
(A) How do we configure “WebGarden”?
“Web garden” can be configured by using process model settings in “machine.confi
g” or “Web.config” file. The configuration section is named <processModel> and i
s shown in
253
the following example. The process model is enabled by default (enable=”true”).
Below is the snippet from config file. <processModel enable=”true” timeout=”infi
nite” idleTimeout=”infinite” shutdownTimeout=”0:00:05" requestLimit=”infinite” r
equestQueueLimit=”5000" memoryLimit=”80" webGarden=”false” cpuMask=”12" userName
=”” password=”” logLevel=”errors” clientConnectedCheck=”0:00:05" /> From the abo
ve processmodel section for web garden we are concerned with only two attributes
“webgarden” and “cpuMask”. webGarden :- Controls CPU affinity. True indicates t
hat processes should be affinitized to the corresponding CPU. The default is Fal
se. cpuMask:- Specifies which processors on a multiprocessor server are eligible
to run ASP.NET processes. The cpuMask value specifies a bit pattern that indica
tes the CPUs eligible to run ASP.NET threads. ASP.NET launches one worker proces
s for each eligible CPU. If webGarden is set to false, cpuMask is ignored and on
ly one worker process will run regardless of the number of processors in the mac
hine. If webGarden is set to true, ASP.NET launches one worker process for each
CPU that corresponds to a set bit in cpuMask. The default value of cpuMask is 0x
ffffffff.
254
Below are detail steps of how to implement web garden √ √ √ √ √ click Start and
then click Run. type calc.exe and then click OK. Goto View menu, click Scientifi
c. Goto View menu, click Binary. Use 0 and 1 to specify the processors ASP.NET c
an or cannot use.
Use 1 for the processor that you want to use for ASP.NET. Use 0 for the processo
r that you do not want to use for ASP.NET. For example, if you want to use the f
irst two processors for ASP.NET of a four-processor computer, type 1100. √ √ √ O
n the View menu, click Decimal. Note the decimal number. Open the Web.config or
machine.config file in a text editor such as Notepad. The Web.config file is loc
ated in the folder where the application is saved.
In the Web.config file, add the processModel configuration element under the Sys
tem.web element. Before adding <processModel> to Web.config file, the user has t
o make sure that the allowDefinition attribute in the <processModel> section o f
the Web.config file is set to everywhere. √ √ Add and then set the webGarden at
tribute of the processModel element to True. Add and then set the cpuMask attrib
ute of the processModel element to the result that is determined in your calcula
tion.
Do not preface the number with 0x because the result of the calculation is a dec
imal number. The following example demonstrates the processModel element that is
configured to enable only the first two processors of a four-processor computer
. <processModel enable=”true” webGarden=”true” cpuMask=”12" /> Save the Web.conf
ig file. The ASP.NET application automatically restarts and uses only the specif
ied processors.
255
(B)What is the main difference between Gridlayout and FlowLayout ?
GridLayout provides absolute positioning for controls placed on the page. Develo
pers that have their roots in rich-client development environments like Visual B
asic will find it easier to develop their pages using absolute positioning, beca
use they can place items exactly where they want them. On the other hand, FlowLa
yout positions items down the page like traditional HTML. Experienced Web develo
pers favor this approach because it results in pages that are compatible with a
wider range of browsers. If you look in to the HTML code created by absolute pos
itioning you can notice lot of DIV tags. While in Flow layout you can see more o
f using HTML table to position elements which is compatible with wide range of b
rowsers.
256
8..NET Architecture
(B) What are design patterns ? Design patterns are recurring solution to recurri
ng problems in software architecture. (A) Can you list down all patterns and the
ir classification ? Note :- This is advanced question because anyone who asks to
list down all patterns can only be crazy for what he is asking. But it is alway
s a win-win situation for the interviewer. There are three basic classification
of patterns Creational, Structural and Behavioral patterns. Creational Patterns
√ Abstract Factory:- Creates an instance of several families of classes √ √ √ √
Builder :- Separates object construction from its representation Factory Method:
- Creates an instance of several derived classes Prototype:- A fully initialized
instance to be copied or cloned Singleton:- A class in which only a single inst
ance can exist Note :- The best way to remember Creational pattern is by ABFPS (
Abraham Became First President of States). Structural Patterns √ Adapter:-Match
interfaces of different classes. √ √ √ √ √ √ Bridge:-Separates an object’s inter
face from its implementation. Composite:-A tree structure of simple and composit
e objects. Decorator :-Add responsibilities to objects dynamically. Façade:-A si
ngle class that represents an entire subsystem. Flyweight:-A fine-grained instan
ce used for efficient sharing. Proxy:-An object representing another object.
257
Note : To remember structural pattern best is (ABCDFFP) Behavioral Patterns √ Me
diator:-Defines simplified communication between classes. √ √ √ √ √ √ √ √ √ √ Me
mento:-Capture and restore an object s internal state. Interpreter:-A way to inc
lude language elements in a program. Iterator:-Sequentially access the elements
of a collection. Chain of Resp:-A way of passing a request between a chain of ob
jects. Command:-Encapsulate a command request as an object. State:-Alter an obje
ct s behavior when its state changes. Strategy:-Encapsulates an algorithm inside
a class. Observer:-A way of notifying change to a number of classes. Template M
ethod:-Defer the exact steps of an algorithm to a subclass. Visitor:-Defines a n
ew operation to a class without change. Note :- Just remember Music....... 2 MIC
S On TV (MMIICCSSOTV). Note:- No source code is provided for architecture sectio
n as much of the things can be clear from good UML diagrams. (A)What is the diff
erence between Factory and Abstract Factory Patterns? Note: - This is quiet a co
nfusing architect question especially in design pattern section. Interviewer can
take you for a nice ride. So get the difference in your heart. First read the d
efinition provided in the first question about both these patterns. The common t
hing they have is that they belong to creational patterns. In short they hide th
e complexity of creating objects. The main difference between factory and Abstra
ct factory is factory method uses inheritance to decide which object has to be i
nstantiated while abstract factory uses delegation to decide instantiation of ob
ject. We can say Abstract factory uses factory
258
method to complete the architecture. Abstract Factory is one level higher in abs
traction over Factory. The two class diagrams below will provide overview of wha
t is the actual difference. First figure shows a sample implementation of Factor
y Patterns. In this figure there are two basic sections:√ The actual product sec
tion i.e. Class “Product” it inherits from an abstract class “AbstractProduct”.
√ The creational aspect section i.e. “ConcreteCreator” class which inherits from
class “Creator”. √ Now there are some rules the client will have to follow who
will need the “Product” object. He will never refer directly to the actual “Prod
uct” object he will refer the “Product” object using “AbstractProduct”. √ Second
client will never use “New” keyword to create the “Product” object but will use
the “Creator” class which in turn will use the “ConcreteCreator” class to creat
e the actual “Product” object.
Figure: - 8.1 Class diagram of a factory Pattern
So what are the benefits from this architecture? All creational and initializing
aspects are now detached from the actual client. As your creational aspect is n
ow been handled in “ConcreteCreator” and the client has reference to only “Creat
or”, so any implementation change in “CreateProduct” will not affect the client
code. In short now your creational aspect of object is completely encapsulated f
rom the client’s logic.
259
Now let’s look at the second class diagram which provides an overview of what ac
tually “Abstract factory” pattern is. It creates objects for families of classes
. In short it describes collection of factor methods from various different fami
lies. In short it groups related factory methods. Example in this the class “Cre
ator” is implemented using the “Abstract” factory pattern. It now creates object
s from multiple families rather one product. Note :- Just stick up to this defin
ition that Abstract factory classifies factory methods or groups logically relat
ed factory method together.
260
Figure:- 8.2 Class Diagram of Abstract Factory
(I)What is MVC pattern? Twist: - How can you implement MVC pattern in ASP.NET? T
he main purpose using MVC pattern is to decouple the GUI from the Data. It also
gives the ability to provide multiple views for the same Data. MVC pattern separ
ates objects in 261 to three important sections:-
√
Model: - This section is specially for maintaining data. It is actually where yo
ur business logic, querying database, database connection etc. is actually imple
mented. Views: - Displaying all or some portion of data, or probably different v
iew of data. View is responsible for look and feel, Sorting, formatting etc. Con
troller: - They are event handling section which affects either the model or the
view. Controller responds to the mouse or keyboard input to command model and v
iew to change. Controllers are associated with views. User interaction triggers
the events to change the model, which in turn calls some methods of model to upd
ate its state to notify other registered views to refresh their display.
√ √
Ok now this was all in theory. Let us look at how in actually ASP.NET we can imp
lement MVC pattern. During interview with theory question they will be looking a
t have you really implemented MVC or its just talks. Following are the various s
ections of ASP.NET which maps to MVC sections:√ Model: - This section is represe
nted by Data view, Dataset, Typed Dataset, Business components, business entity
models etc. Now this section can then be tied up to either windows application o
r web UI. View: - ASPX, ASCX, or windows application UI like data grid etc. form
the view part of it. Controller: - In ASP.NET the behind code is the controller
as the events are handled by that part. Controller communicates both with Model
as well as view.
√ √
I hope I was able to map you imagination of ASP.NET with the diagram given below
.
262
Figure: - 8. 3 Data flow between MVC architectures.
(A)How can we implement singleton pattern in .NET? Singleton pattern mainly focu
ses on having one and only one instance of the object running. Example a windows
directory service which has multiple entries but you can only have single insta
nce of it through out the network. Note:- May of developers would jump to a conc
lusion saying using the “STATIC” keyword we can have a single instance of object
. But that’s not the real case there is something more that has to be done. But
please note we can not define a class as STATIC, so this will not serve our actu
al purpose of implementing singleton pattern. Following are the three steps need
ed to implement singleton pattern in .NET:-
263
√
First create your class with static members. Public class ClsStaticClass Private
shared objCustomer as clsCustomer End class
This ensures that there is actually only one Customer object throughout the proj
ect. √ √ Second define a private constructor to your class. Note: - defining a p
rivate constructor to class does not allow a client to create objects directly.
Finally provide a static method to get access to your singleton object.
(A)How do you implement prototype pattern in .NET? Twist: - How to implement clo
ning in .NET ? What is shallow copy and deep copy ? Cloning is achieved by using
ICloneable of the System namespace. It has a “Clone” method which actually retu
rns the reference of the same copy. Clone method allows a Shallow copy and not a
deep copy. In Shallow copy if you make changes to the cloned object it actually
changes on the main object itself. So how is deep copy achieved, by using “ISer
ializable” interface? So what you do is first serialize the object then deserial
ize back to a complete new copy. Now any changes to this new copy do not reflect
on the original copy of the object, this is called as Deep copy. (I)What are th
e situations you will use a Web Service and Remoting in projects? Well “Web serv
ices” uses “remoting” concepts internally. But the major difference between “web
service” and “remoting” is that “web service” can be consumed by clients who ar
e not .NET platform. While remoting you need the client to be .NET compliant. Re
garding the speed issue “Remoting” is faster than “Web Services”. So I think whe
n deciding the architecture side of choosing between “Web services” and “Remotin
g” keep the cross platform issue and the speed issue in mind. (A)Can you give a
practical implementation of FAÇADE patterns?
264
Façade pattern sits on the top of lot of subsystems and makes access easy to int
erfaces of these subsystems. Basic purpose of Façade is to make interfacing betw
een many modules and classes manageable.
Figure: - 8.4 Façade in action
Above is a simple live application of a Façade class. In this we have four subsy
stems :√ √ Customer Product
265
√ √
Payment Invoicing
All the four modules when built at initial stage where built completely independ
ent. The main interaction between all these subsystems is customer placing order
. This functionality can be attained by using all these subsystems, which involv
es complex interaction between them. That is where FAÇADE comes in to action. We
have built a FAÇADE called as “FACADEORDER” which sits on the top of all these
subsystem and fulfill our functionality. (I) How can we implement observer patte
rn in .NET? Observer patterns can be implemented using “Delegates” and “Events”.
I leave this to the readers to implement one sample code for observer patterns.
(B)What is three tier architecture? The three tier software architecture emerge
d in the 1990s to overcome the limitations of the two tier architecture. There a
re three layers when we talk about three tier architecture:User Interface (Clien
t) :- This is mostly the windows user interface or the Web interface but this ha
s only the UI part. Mid layer: - Middle tier provides process management where b
usiness logic and rules are executed and can accommodate hundreds of users (as c
ompared to only 100 users with the two tier architecture) by providing functions
such as queuing, application execution, and database staging. Data Access Layer
: - This is also called by the famous acronym "DAL" component. It has mainly the
SQL statement which do the database operation part of the job. The three tier a
rchitecture is used when an effective distributed client/server design is needed
that provides (when compared to the two tier) increased performance, flexibilit
y, maintainability, reusability, and scalability, while hiding the complexity of
distributed processing from the user.
266
(I)Have you ever worked with Microsoft Application Blocks, if yes then which? Ap
plication Blocks are C# and VB.NET classes distributed as Visual Studio projects
that can be downloaded from Microsoft s Web site and used in any .NET applicati
on, including ASP.NET Web applications. They are useful and powerful tools that
can make applications more maintainable, scalable and efficient Secondly which a
pplication blocks has been used depends on really what you have implemented. But
there are two famous MAB which is making buzz around the industry:√ data access
block The Data Access Block provides static methods located in the SqlHelper cl
ass that encapsulates the most common data access tasks performed with Microsoft
SQL server. If the term "static method" is new to you, it means that the class
methods can be called without instantiating an instance of the class. For exampl
e, the method ExecuteReader () within the SqlHelper class can be called by simpl
y using the statement SqlHelper.ExecuteReader () -- no object instantiation of t
he SqlHelper class is required. √ Exception management block. The Exception Mana
gement Application Block provides a simple yet extensible framework for handling
exceptions. With a single line of application code you can easily log exception
information to the Event Log or extend it by creating your own components that
log exception details to other data sources or notify operators, without affecti
ng your application code. The Exception Management Application Block can easily
be used as a building block in your own .NET application Note: - It’s beyond the
scope the book to look into details of application block. Best is go to www.mic
rosoft.com and search for these application block. Try to compile one or two pro
grams using their given classes and documentation. (A)What is Service Oriented a
rchitecture? “Services” are components which expose well defined interfaces and
these interfaces communicate through XML messages. Using SOA you can build workf
low, which uses
267
interfaces of these components. SOA is typically useful when you are crossing he
terogeneous technical boundaries, organizations, domain etc. In .NET SOA technic
ally uses Web services to communicate with each service which is crossing bounda
ries. You can look SOA which sits on top of web services and provides a workflow
. SOA uses service components which operate in their own domain boundary. Let us
note some points of service :√ √ √ √ They are independent components and operat
e in their own boundary and own technology. They have well defined interfaces wh
ich use XML and WSDL to describe themselves. Services have URL where anyone can
find them and clients can bind to these URL to avail for the service. Services h
ave very loosely coupled architecture. In order to communicate to service you on
ly have to know the WSDL. Your client can then generate proxy from the WSDL of t
he service.
268
Figure: - 8.5 SOA basic architecture
Above figure describes a broader picture of what service oriented architecture w
ill look like. The basic fundamental of SOA is a web service. In above diagram y
ou can see there are two services available. One is the “Credit Card” service an
d other is “Address Check”
269
web service. Both these services are provided by different company. Now we want
to build a functionality which needs to validate a credit card and also check th
at addresses are proper. In short we will need functionalities of both the “Cred
itCard” and “AddressCheck” service. Also note the “CreditCard” service has its o
wn business layer and DAL components, which can be in a proprietary language. It
’s very much possible that the whole Credit card service is made in .NET and the
Address check is SAP implementation or JAVA implementation. But because both th
e systems provide there functionality using Web services which is nothing but ba
sically XML message communication. So we have made new service which sits like a
FAÇADE on top of both the web service and performs both functionalities in one
common service. You will see I have made a third service which sits on top of bo
th the webservice and consumes them. Also you can see that the UI part of the sy
stems have access to Business layer and Web service of there system. But the ser
vice which does both these check has only access to the Web service. Note:- It’s
beyond the scope of this book to discuss about SOA. But just to keep you safe d
uring interview this book has tried to clear some basics of SOA. (I)What are dif
ferent ways you can pass data between tiers? There are many ways you can pass da
ta between tiers :√ √ √ √ Dataset the most preferred one as they maintain data i
n XML format. Datareader Custom classes. XML
(A)What is Windows DNA architecture? Note :- If you have worked with classic ASP
this question can come to you. The Windows Distributed interNet Applications Ar
chitecture (DNA) is a Microsoft blueprint for robust, scalable, distributed busi
ness software. Windows DNA has evolved over time and was not preplanned. It give
s all combined advantages of Centralized
270
mainframe, application servers, internet technologies and Personal computers. Wi
ndows DNA is an evolution which started from mainframes (where all logic was cen
tralized), Fox pro ages ( where we talked in terms of two tier systems), VB6 / S
QL SERVER (three tier where we talked in terms of having one more tier which was
mainly COM where business logic resided), COM+ ( looking in terms of transactio
ns and fulfilling ACID rules) and finally the DNA.
Figure :- 8.6 Windows DNA sections
Above shown is a Windows DNA model which is a blue print which Microsoft has pro
posed. So if interviewer is asking you have you worked with Windows DNA, then an
swer is yes. You will see that you always use these sections in project. Do not
get confused with the terminology DNA.
271
(A)What is aspect oriented programming? Note :- This is something which is catch
ing up the market so interviewer can ask you to see how you are in touch with th
e market. So probably this explanation can be quiet long but bear with me it is
worth of it I will try and make it as short as possible as this book is not a re
ference book. Just to save you from interviewer I will give a short description
of aspect oriented programming in .NET. First let us try and define it which can
probably save you during interview Aspect-oriented software development is a ne
w technology for separation of concerns (SOC) in software development. The techn
iques of AOSD make it possible to modularize crosscutting aspects of a system. O
k that statement can save you for the first stage let us get down actually what
is it. Let’s revisit back how software development cycle evolved. When we look b
ack at times of COBOL where we used to break the modules in small functionalitie
s and use reusability to its maximum. Then came the time when we talked in terms
of Objects where things were clearer as software was modeled in terms of real l
ife examples. It worked fine and till today is the most accepted way of implemen
ting and organizing project. So why AOP ?? Aspect oriented programming does not
oppose OOP’s but rather supports it and make’s it more maintainable. So remove t
he logic from head the AOP is replacement of OOP. No its brother of OOP helping
him to be better. When we talk in terms of objects it is an entity which maps to
real world domain. Object has attributes which represent the state of object an
d also define its behavior. By rule of object oriented programming object should
be stand alone and communicate with other objects using messages or defined int
erface. One object should not communicate with other object directly rather comm
unicate through defined interfaces. Every object satisfies some “Concern” in rel
ation to the system. Twist: - What is Concern in AOP? “A concern is a particular
goal, concept, or area of interest” There are mainly two types of concern from
an object perspective:272
√ √
Core / Main concerns which it should satisfy and is his work. System concerns wh
ich are not related to business functionalities but software related concerns ex
ample audit trail, Error handling, Security etc.
Ok let us try to understand this principle by some actual example.
Figure :- 8.7 Customer and Audit trail relationships
Above is a class diagram which shows relationshipbetween two classes “ClsCustome
r” and “ClsAuditTrail”. “ClsCustomer” class does inserting of new customers in t
o database and “ClsAuditTrail” does the auditing of what is changed in the custo
mer class. Now there are two concerns in this project :√ √ Customer code should
not exceed than 10 lengths (Business level concern) greater All customer data wh
ich is updated should be audited. (System level concern)
Here goes the class code. If you see the ClsCustomer implementation in the updat
e method I have called the Audit trail implementation. If you really look from o
bject oriented point of view we are doing something in customer class which is s
upposed to be not his implementation: - Audit Trail logging. Thus we have also b
roken down the rule of
273
encapsulation. In short the class not only handles his work but also some other
work which is not his concern. Ok now let us define crosscutting which is one of
important aspects of AOP. Twist :- What is cross cutting in AOP ? When one or m
any concerns span across module it is called as cross cutting. Example in our au
dit trail example we will probably need to audit trail for customer as well as s
upplier. So Audit trail can span across other objects also that is termed as cro
ss cutting. Below are both the classes actually implemented as per class diagram
8.7. If you see the “Update” method of the customer class, its doing both of th
e concerns that is checking for customer code length and also maintaining the au
dit trail using the audit trail class. Public Class ClsCustomer Private pstrCust
code As String Private pstrCustName As String Public Property Code() As String G
et Return pstrCustcode End Get Set(ByVal Value As String) pstrCustcode = Value E
nd Set End Property Public Property CustomerName() As String Get Return pstrCust
Name End Get Set(ByVal Value As String)
274
pstrCustName = Value End Set End Property Public Function Update() As Boolean ‘
first / core concern If pstrCustcode.Length() > 10 Then Throw New Exception("Val
ue can not be greater than 10") End If usingthe customer audit trail to do aud
iting ‘ second concern / system concern Dim pobjClsAuditTrail As New ClsAuditTra
il With pobjClsAuditTrail .NewValue = "1001" .OldValue = "1003" .UserName = "shi
v" .Update() End With then inserting the customer in database End Function End
Class Public Class ClsAuditTrail Private pstrUserName As String Private pstrOld
Value As String Private pstrNewValue As String Private pdblLogTime As Double
275
Public Property UserName() As String Get Return pstrUserName End Get Set(ByVal V
alue As String) pstrUserName = Value End Set End Property Public Property OldVal
ue() As String Get Return pstrOldValue End Get Set(ByVal Value As String) pstrOl
dValue = Value End Set End Property Public Property NewValue() As String Get Ret
urn pstrNewValue End Get Set(ByVal Value As String) pstrNewValue = Value End Set
End Property Public Property LogTime() As Double
276
Get Return pdblLogTime End Get Set(ByVal Value As Double) pdblLogTime = Value En
d Set End Property Public Sub Update() do the logging activity here End Sub En
d Class In short the customer class is doing many activity. There is lot of tang
ling of code. So how do we overcome this problem...? Simple, separate the System
level concern (Audit Trail) from the core level concern ( Customer code check).
This is achieved at this moment in .NET using attribute programming. Here is th
e change to the customer class Imports System.Reflection Public Class ClsCustome
r Private pstrCustcode As String Private pstrCustName As String Public Property
Code() As String Get Return pstrCustcode End Get Set(ByVal Value As String)
277
pstrCustcode = Value End Set End Property Public Property CustomerName() As Stri
ng Get Return pstrCustName End Get Set(ByVal Value As String) pstrCustName = Val
ue End Set End Property <ClsAuditTrail("Shiv", "1001", "1003", 12)> _ Public Fun
ction Update() As Boolean If pstrCustcode.Length() > 10 Then Throw New Exception
("Value can not be greater than 10") End If usingthe customer audit trail to d
o auditing
then inserting the customer in database End Function End Class
278
And here is the change to the audit trail class Imports System.Reflection <Attri
buteUsage(AttributeTargets.All)> _ Public Class ClsAuditTrail Inherits Attribute
Private pstrUserName As String Private pstrOldValue As String Private pstrNewVa
lue As String Private pdblLogTime As Double Public Property UserName() As String
Get Return pstrUserName End Get Set(ByVal Value As String) pstrUserName = Value
End Set End Property Public Property OldValue() As String Get Return pstrOldVal
ue End Get Set(ByVal Value As String) pstrOldValue = Value End Set
279
End Property Public Property NewValue() As String Get Return pstrNewValue End Ge
t Set(ByVal Value As String) pstrNewValue = Value End Set End Property Public Pr
operty LogTime() As Double Get Return pdblLogTime End Get Set(ByVal Value As Dou
ble) pdblLogTime = Value End Set End Property Public Sub New(ByVal pstrUserName
As String, _ ByVal pstrOldValue As String, _ ByVal pstrnewValue As String, _ ByV
al plng As Long) Update() End Sub Public Sub Update() do the logging activity
here
280
End Sub End Class
9. ADO.NET
(B)What is the namespace in which .NET has the data functionality classes ?
Following are the namespaces provided by .NET for data management :System.data T
his contains the basic objects used for accessing and storing relational data, s
uch as DataSet,DataTable, and DataRelation. Each of these is independent of the
type of data source and the way we connect to it. System.Data.OleDB It contains
the objects that we use to connect to a data source via an OLE-DB provider, such
as OleDbConnection, OleDbCommand, etc. These objects inherit from the common ba
se classes, and so have the same properties, methods, and events as the SqlClien
t equivalents. System.Data.SqlClient: This contains the objects that we use to c
onnect to a data source via the Tabular Data Stream (TDS) interface of Microsoft
SQL Server (only). This can generally provide better performance as it removes
some of the intermediate layers required by an OLE-DB connection. System.XML Thi
s Contains the basic objects required to create, read, store, write, and manipul
ate XML documents according to W3C recommendations.
(B) Can you give a overview of ADO.NET architecture ?
The most important section in ADO.NET architecture is “Data Provider”. Data Prov
ider provides access to datasource (SQL SERVER, ACCESS, ORACLE).In short it prov
ides object to achieve functionalities like opening and closing connection, retr
ieve data and update data. In the below figure you can see the four main section
s of a data provider :√ Connection.
281
√ √ √
Command object (This is the responsible object to use stored procedures) Data Ad
apter (This object acts as a bridge between datastore and dataset). Datareader (
This object reads data from data store in forward only mode).
Dataset object represents disconnected and cached data. If you see the diagram i
t is not in direct connection with the data store (SQL SERVER, ORACLE etc) rathe
r it talks with Data adapter, who is responsible for filling the dataset. Datase
t can have one or more Datatable and relations.
Figure :- 9.1 ADO.NET Architecture
282
“DataView” object is used to sort and filter data in Datatable. Note:- This is o
ne of the favorite questions in .NET. Just paste the picture in your mind and du
ring interview try to refer that image.
(B)What are the two fundamental objects in ADO.NET ?
Datareader and Dataset are the two fundamental objects in ADO.NET.
(B)What is difference between dataset and datareader ?
Following are some major differences between dataset and datareader :√ DataReade
r provides forward-only and read-only access to data, while the DataSet object c
an hold more than one table (in other words more than one rowset) from the same
data source as well as the relationships between them. Dataset is a disconnected
architecture while datareader is connected architecture. Dataset can persist co
ntents while datareader can not persist contents, they are forward only.
√ √
(I)What are major difference between classic ADO and ADO.NET ?
Following are some major differences between both √ As in classic ADO we had cli
ent and server side cursors they are no more present in ADO.NET. Note it s a dis
connected model so they are no more applicable. Locking is not supported due to
disconnected model.
√
√ All data persist in XML as compared to classic ADO where data persisted in Bin
ary format also.
(B)What is the use of connection object ?
They are used to connect a data to a Command object. √ An OleDbConnection object
is used with an OLE-DB provider
283
√
A SqlConnection object uses Tabular Data Services (TDS) with MS SQL Server
(B)What is the use of command objects and what are the methods provided by the c
ommand object ?
They are used to connect connection object to Datareader or dataset. Following a
re the methods provided by command object :√ ExecuteNonQuery :- Executes the com
mand defined in the CommandText property against the connection defined in the C
onnection property for a query that does not return any row (an UPDATE, DELETE o
r INSERT). Returns an Integer indicating the number of rows affected by the quer
y. ExecuteReader :- Executes the command defined in the CommandText property aga
inst the connection defined in the Connection property. Returns a "reader" objec
t that is connected to the resulting rowset within the database, allowing the ro
ws to be retrieved.
√
ExecuteScalar :- Executes the command defined in the CommandText property agains
t the connection defined in the Connection property. Returns only single value (
effectively the first column of the first row of the resulting rowset) any other
returned columns and rows are discarded. It is fast and efficient when only a "
singleton" value is required
√
(B)What is the use of dataadapter ?
These are objects that connect one or more Command objects to a Dataset object.
They provide logic that would get data from the data store and populates the tab
les in the DataSet, or pushes the changes in the DataSet back into the data stor
e. √ √ An OleDbDataAdapter object is used with an OLE-DB provider A SqlDataAdapt
er object uses Tabular Data Services with MS SQL Server.
(B)What are basic methods of Dataadapter ?
There are three most commonly used methods of Dataadapter :Fill :- Executes the
SelectCommand to fill the DataSet object with data from the data source. It an a
lso be used to update (refresh) an existing table in a DataSet with changes
284
made to the data in the original datasource if there is a primary key in the tab
le in the DataSet. FillSchema :- Uses the SelectCommand to extract just the sche
ma for a table from the data source, and creates an empty table in the DataSet o
bject with all the corresponding constraints. Update:- Calls the respective Inse
rtCommand, UpdateCommand, or DeleteCommand for each inserted, updated,or deleted
row in the DataSet so as to update the original data source with the changes ma
de to the content of the DataSet. This is a little like the UpdateBatch method p
rovided by the ADO Recordset object, but in the DataSet it can be used to update
more than one table.
(B)What is Dataset object?
The DataSet provides the basis for disconnected storage and manipulation of rela
tional data. We fill it from a data store,work with it while disconnected from t
hat data store, then reconnect and flush changes back to the data store if requi
red.
(B)What are the various objects in Dataset ?
Dataset has a collection of DataTable object within the Tables collection. Each
DataTable object contains a collection of DataRow objects and a collection of Da
taColumn objects. There are also collections for the primary keys, constraints,
and default values used in this table which is called as constraint collection,
and the parent and child relationships between the tables. Finally, there is a D
efaultView object for each table. This is used to create a DataView object based
on the table, so that the data can be searched, filtered or otherwise manipulat
ed while displaying the data. Note :- Look back again to the main diagram for AD
O.NET architecture for visualizing this answer in pictorial form.
(B) How can we connect to Microsoft Access , Foxpro , Oracle etc ?
Microsoft provides System.Data.OleDb namespace to communicate with databases lik
e scess , Oracle etc. In short any OLE DB-Compliant database can be connected us
ing System.Data.OldDb namespace.
285
Note :- Small sample of OLEDB is provided in “WindowsAppOleDb” which uses “Nwind
.mdb” in bin directory to display data in Listbox.
Private Sub loadData() Dim strPath As String strPath = AppDomain.CurrentDomain.B
aseDirectory Dim objOLEDBCon As New OleDbConnection(“Provider=Microsoft.Jet.OLED
B.4.0;Data Source =” & strPath & “Nwind.mdb”) Dim objOLEDBCommand As OleDbComman
d Dim objOLEDBReader As OleDbDataReader Try objOLEDBCommand = New OleDbCommand(“
Select FirstName from Employees”) objOLEDBCon.Open() objOLEDBCommand.Connection
= objOLEDBCon objOLEDBReader = objOLEDBCommand.ExecuteReader() Do While objOLEDB
Reader.Read() lstNorthwinds.Items.Add(objOLEDBReader.GetString(0)) Loop Catch ex
As Exception Throw ex Finally objOLEDBCon.Close() End Try End Sub
The main heart is the “Loaddata()” method which actually loads the data in listb
ox. Note:- This source code has the connectionstring hard coded in the program i
tself which is not a good programming practice. For windows application the best
place to store connectionstring is “App.config”. Also note that “AppDomain.Curr
entDomain.BaseDirectory” function gives the current path of the running exe whic
h is “BIN” and the MDB file is in that directory. Also note that the final block
which executes irrespective that there is error or not. Thus ensuring that all
the connection to the datastore is freed. Its best practice to put all clean up
statements in finally block thus ensuring that the resources are deallocated pro
perly.
(B) How do we connect to SQL SERVER, which namespace do we use ?
286
Below is the code, after the code I have given the explanation for it. For this
sample we will also need a SQL Table setup which I have imported using the DTS w
izard.
Private Sub LoadData() ‘ note :- with and end with makes your code more readable
Dim strConnectionString As String Dim objConnection As New SqlConnection Dim ob
jCommand As New SqlCommand Dim objReader As SqlDataReader Try ‘ this gets the co
nnectionstring from the app.config file. ‘ note if this gives error see where th
e MDB file is stored in your pc and point to that strConnectionString = AppSetti
ngs.Item(“ConnectionString”) ‘ take the connectiostring and initialize the conne
ction object With objConnection .ConnectionString = strConnectionString .Open()
End With objCommand = New SqlCommand(“Select FirstName from Employees”) With obj
Command .Connection = objConnection objReader = .ExecuteReader() End With ‘ loop
ing through the reader to fill the list box Do While objReader.Read() lstData.It
ems.Add(objReader.Item(“FirstName”)) Loop Catch ex As Exception Throw ex Finally
objConnection.Close() End Try
<appSettings> <add key=”Connectionstring” value=”Server=ERMBOM1-IT2;User ID=sa;D
atabase=Employees”/> </appSettings>
287
Note:- The above code is provided in CD in folder WindowsAppSqlClient”. Comments
in the code do explain a lot but we will again iterate through the whole code l
ater. “LoadData” is the main method which loads the data from SQL SERVER. Before
running this code you have to install SQL SERVER in your machine. As we are dea
ling with SQLCLIENT we need to setup database in SQL SERVER. For this sample I h
ave imported access “Nwind.mdb” in “SampleAccessDatabase” folder in CD in to SQl
SERVER. Depending on computer you will also have to change the connectionstring
in Web.config file. For setting up the sample SQL table we can use the DTS impor
t wizard to import the table. See the below figure which is using data source as
Microsoft Access.While importing the database author had give the database name
as “Employees”.
Figure:- 9.2 Loading “Nwind.mdb” in SQL SERVER for the sample
288
Figure :- 9.3 Load only the Employee table.
To make it simple we will only import the employee table as that is the only thi
ng needed in our sample code.
289
Figure :- 9.4 View of loaded Employee table
Now from interview point of view definitely you are not going to say the whole s
ource code which is given in the book. Interviewer expects only the broader answ
er of what are the steps needed to connect to SQL SERVER. For fundamental sake a
uthor has explained the whole source code. In short you have to explain the “Loa
dData” method in broader way. Following are the steps to connect to SQL SERVER :
√ √ First import the namespace “System.Data.SqlClient”. Create a connection obje
ct as shown in “LoadData” method.
With objConnection .ConnectionString = strConnectionString .Open() End With
√
Create the command object with the SQL. Also assign the created connection objec
t to command object and execute the reader.
290
objCommand = New SqlCommand(“Select FirstName from Employees”) With objCommand .
Connection = objConnection objReader = .ExecuteReader() End With
√
Finally loop through the reader and fill the list box. If old VB programmers are
expecting the movenext command it’s replaced by Read() which returns true if th
ere is any data to be read. If the .Read() return’s false that means that it’s e
nd of datareader and there is no more data to be read.
Do While objReader.Read() lstData.Items.Add(objReader.Item(“FirstName”)) Loop
√
Do not forget to close the connection object. Note:- In “LoadData” you will see
that connectionstring is stored in Web.config file and is loaded using “AppSetti
ngs.Item(“ConnectionString”)”. While running this sample live on your database d
o not forget to change this connectionstring accordingly to your machine name an
d SQL SERVER or else the source code will not run.
(B) How do we use stored procedure in ADO.NET and how do we provide parameters t
o the stored procedures?
ADO.NET provides the SqlCommand object which provides the functionality of execu
ting stored procedures. Note :- Sample code is provided in folder “WindowsSqlCli
entCommand”. There are two stored procedures created in same database “Employees
” which was created for the previous question. CREATE PROCEDURE SelectByEmployee
@FirstName nvarchar(200) AS Select FirstName from Employees where FirstName lik
e @FirstName + % CREATE PROCEDURE SelectEmployee AS Select FirstName from Empl
oyees
If txtEmployeeName.Text.Length = 0 Then objCommand = New SqlCommand(“SelectEmplo
yee”) Else objCommand = New SqlCommand(“SelectByEmployee”) 291
objCommand.Parameters.Add(“@FirstName”, Data.SqlDbType.NVarChar, 200) objCommand
.Parameters.Item(“@FirstName”).Value = txtEmployeeName.Text.Trim() End If
In the above sample not much has been changed only that the SQL is moved to the
stored procedures. There are two stored procedures one is “SelectEmployee” which
selects all the employees and the other is “SelectByEmployee” which returns emp
loyee name starting with a specific character. As you can see to provide paramet
ers to the stored procedures we are using the parameter object of the command ob
ject. In such question interviewer expects two simple answers one is that we use
command object to execute stored procedures and the parameter object to provide
parameter to the stored procedure. Above sample is provided only for getting th
e actual feel of it. Be short be nice and get a job.
(B) How can we force the connection object to close after my datareader is close
d ?
Command method Executereader takes a parameter called as CommandBehavior where i
n we can specify saying close connection automatically after the Datareader is c
lose. pobjDataReader = pobjCommand.ExecuteReader(CommandBehavior.CloseConnection
)
(B) I want to force the datareader to return only schema of the datastore rather
than data ?
pobjDataReader = pobjCommand.ExecuteReader(CommandBehavior.SchemaOnly)
(B) How can we fine tune the command object when we are expecting a single row o
r a single value ?
Again CommandBehaviour enumeration provides two values SingleResult and SingleRo
w. If you are expecting a single value then pass “CommandBehaviour.SingleResult”
and the query is optimized accordingly, if you are expecting single row then pa
ss “CommandBehaviour.SingleRow” and query is optimized according to single row.
(B) Which is the best place to store connectionstring in .NET projects ?
292
Config files are the best places to store connectionstrings. If it is a web-base
d application “Web.config” file will be used and if it is a windows application
“App.config” files will be used.
(B) What are the steps involved to fill a dataset ?
Twist :- How can we use dataadapter to fill a dataset ? Sample code is provided
in “WindowsDataSetSample” folder in CD.”LoadData” has all the implementation of
connecting and loading to dataset. This dataset is finally bind to a ListBox. Be
low is the sample code.
Private Sub LoadData() Dim strConnectionString As String strConnectionString = A
ppSettings.Item(“ConnectionString”) Dim objConn As New SqlConnection(strConnecti
onString) objConn.Open() Dim objCommand As New SqlCommand(“Select FirstName from
Employees”) objCommand.Connection = objConn Dim objDataAdapter As New SqlDataAd
apter() objDataAdapter.SelectCommand = objCommand Dim objDataSet As New DataSet
End Sub
In such type of questions interviewer is looking from practical angle, that have
you worked with dataset and datadapters. Let me try to explain the above code f
irst and then we move to what steps should be told during interview. Dim objConn
As New SqlConnection(strConnectionString) objConn.Open() First step is to open
the connection.Again note the connection string is loaded from config file. Dim
objCommand As New SqlCommand(“Select FirstName from Employees”) objCommand.Conne
ction = objConn Second step is to create a command object with appropriate SQL a
nd set the connection object to this command. Dim objDataAdapter As New SqlDataA
dapter()
293
objDataAdapter.SelectCommand = objCommand Third steps is to create the Adapter o
bject and pass the command object to the adapter object. objDataAdapter.Fill(obj
DataSet) Fourth step is to load the dataset using the “Fill” method of the dataa
dapter. lstData.DataSource = objDataSet.Tables(0).DefaultView lstData.DisplayMem
ber = “FirstName” lstData.ValueMember = “FirstName” Fifth step is to bind to the
loaded dataset with the GUI. At this moment sample has listbox as the UI. Bindi
ng of the UI is done by using DefaultView of the dataset. Just to revise every d
ataset has tables and every table has views. In this sample we have only loaded
one table i.e. Employees table so we are referring that with an index of zero. J
ust say all the five steps during interview and you will see the smile on the in
terviewer’s face and appointment letter in your hand.
(B)What are the various methods provided by the dataset object to generate XML?
Note:- XML is one of the most important leap between classic ADO and ADO.NET. So
this question is normally asked more generally how can we convert any data to X
ML format. Best answer is convert in to dataset and use the below methods. √ √ √
ReadXML Read’s a XML document in to Dataset. GetXML This is a function which re
turns the string containing XML document. WriteXML This writes a XML data to dis
k.
(B) How can we save all data from dataset ?
294
Dataset has “AcceptChanges” method which commits all the changes since last time
“Acceptchanges” has been executed. Note :- This book does not have any sample o
f Acceptchanges. I leave that to readers as homework sample. But yes from interv
iew aspect that will be enough.
(B) How can we check that some changes have been made to dataset since it was lo
aded ?
Twist :- How can we cancel all changes done in dataset ? How do we get values wh
ich are changed in a dataset ? For tracking down changes Dataset has two methods
which comes as rescue “GetChanges “and “HasChanges”. GetChanges Returns dataset
which are changed since it was loaded or since Acceptchanges was executed. HasC
hanges This property indicates that has any changes been made since the dataset
was loaded or acceptchanges method was executed. If we want to revert or abandon
all changes since the dataset was loaded use “RejectChanges”. Note:- One of the
most misunderstood things about these properties is that it tracks the changes
of actual database. That is a fundamental mistake; actually the changes are rela
ted to only changes with dataset and have nothing to with changes happening in a
ctual database. As dataset are disconnected and do not know anything about the c
hanges happening in actual database.
(B) How can we add/remove row’s in “DataTable” object of “DataSet” ?
“Datatable” provides “NewRow” method to add new row to “DataTable”. “DataTable”
has “DataRowCollection” object which has all rows in a “DataTable” object. Follo
wing are the methods provided by “DataRowCollection” object :295
Add Adds a new row in DataTable Remove It removes a “DataRow” object from “DataT
able” RemoveAt It removes a “DataRow” object from “DataTable” depending on index
position of the “DataTable”.
(B) What is basic use of “DataView” ?
“DataView” represents a complete table or can be small section of rows depending
on some criteria. It is best used for sorting and finding data with in “datatab
le”. Dataview has the following method’s :Find It takes a array of values and re
turns the index of the row. FindRow This also takes array of values but returns
a collection of “DataRow”. If we want to manipulate data of “DataTable” object c
reate “DataView” (Using the “DefaultView” we can create “DataView” object) of th
e “DataTable” object and use the following functionalities :AddNew Adds a new ro
w to the “DataView” object.
296
Delete Deletes the specified row from “DataView” object.
(B) What is the difference between “DataSet” and “DataReader” ?
Twist :- Why is DataSet slower than DataReader ? Fourth point is the answer to t
he twist. Note:- This is my best question and I expect everyone to answer it. It
is asked almost 99% in all companies....Basic very Basic cram it. Following are
the major differences between “DataSet” and “DataReader” :√ “DataSet” is a disc
onnected architecture, while “DataReader” has live connection while reading data
. If we want to cache data and pass to a different tier “DataSet” forms the best
choice and it has decent XML support. When application needs to access data fro
m more than one table “DataSet” forms the best choice. If we need to move back w
hile reading records, “datareader” does not support this functionality. But one
of the biggest drawbacks of DataSet is speed. As “DataSet” carry considerable ov
erhead because of relations, multiple tables etc speed is slower than “DataReade
r”. Always try to use “DataReader” wherever possible, as it’s meant specially fo
r speed performance.
√ √ √
(B) How can we load multiple tables in a DataSet ?
objCommand.CommandText = "Table1" objDataAdapter.Fill(objDataSet, "Table1") objC
ommand.CommandText = "Table2" objDataAdapter.Fill(objDataSet, "Table2") Above is
a sample code which shows how to load multiple “DataTable” objects in one “Data
Set” object. Sample code shows two tables “Table1” and “Table2” in object ObjDat
aSet.
297
lstdata.DataSource = objDataSet.Tables("Table1").DefaultView In order to refer “
Table1” DataTable, use Tables collection of DataSet and the Defaultview object w
ill give you the necessary output.
(B) How can we add relation’s between table in a DataSet ?
Dim objRelation As DataRelation objRelation=New DataRelation("CustomerAddresses"
,objDataSet.Tables("Customer").Columns("Custid") ,objDataSet.Tables("Addresses")
.Columns("Custid_fk")) objDataSet.Relations.Add(objRelation) Relations can be ad
ded between “DataTable” objects using the “DataRelation” object. Above sample co
de is trying to build a relationship between “Customer” and “Addresses” “Datatab
le” using “CustomerAddresses” “DataRelation” object.
(B) What is the use of CommandBuilder ?
CommandBuilder builds “Parameter” objects automatically. Below is a simple code
which uses commandbuilder to load its parameter objects. Dim pobjCommandBuilder
As New OleDbCommandBuilder(pobjDataAdapter) pobjCommandBuilder.DeriveParameters(
pobjCommand) Be careful while using “DeriveParameters” method as it needs an ext
ra trip to the Datastore which can be very inefficient.
(B) What’s difference between “Optimistic” and “Pessimistic” locking ?
In pessimistic locking when user wants to update data it locks the record and ti
ll then no one can update data. Other user’s can only view the data when there i
s pessimistic locking. In optimistic locking multiple users can open the same re
cord for updating, thus increase maximum concurrency. Record is only locked when
updating the record. This is the most
298
preferred way of locking practically. Now a days browser based application is ve
ry common and having pessimistic locking is not a practical solution.
(A) How many ways are there to implement locking in ADO.NET ?
Following are the ways to implement locking using ADO.NET :√ If block √ When we
call “Update” method of DataAdapter it handles locking internally. the DataSet v
alues are not matching with current data in Database it raises concurrency excep
tion error. We can easily trap this error using Try..Catch and raise appropriate
error message to the user. Define a Datetime stamp field in the table.When actu
ally you are firing the UPDATE SQL statements compare the current timestamp with
one existing in the database. Below is a sample SQL which checks for timestamp
before updating and any mismatch in timestamp it will not update the records. Th
is is the best practice used by industries for locking. Update table1 set field1
=@test where LastTimeStamp=@CurrentTimeStamp √ In Check for original values stor
ed in SQL SERVER and actual changed values. stored procedure check before updati
ng that the old data is same as the current. Example in the below shown SQL befo
re updating field1 we check that is the old field1 value same. If not then some
one else has updated and necessary action has to be taken. Update table1 set fie
ld1=@test where field1 = @oldfield1value Locking can be handled at ADO.NET side
or at SQL SERVER side i.e. in stored procedures. For more details of how to impl
ementing locking in SQL SERVER read “What are different locks in SQL SERVER ?” i
n SQL SERVER chapter. Note:- This is one of the favorite questions of interviewe
r, so cram it....When I say cram itI do not mean it.... I mean understand it. Th
is book has tried to cover ADO.NET as much as possible, but indeterminist nature
of ADO.NET interview questions makes it difficult to make full justice. But hop
e so that the above questions will make you quiet confident during interviews.
(A)How can we perform transactions in .NET?
299
The most common sequence of steps that would be performed while developing a tra
nsactional application is as follows: √ √ Open a database connection using the O
pen method of the connection object. Begin a transaction using the Begin Transac
tion method of the connection object. This method provides us with a transaction
object that we will use later to commit or rollback the transaction. Note that
changes caused by any queries executed before calling the Begin Transaction meth
od will be committed to the database immediately after they execute. Set the Tra
nsaction property of the command object to the above mentioned transaction objec
t. Execute the SQL commands using the command object. We may use one or more com
mand objects for this purpose, as long as the Transaction property of all the ob
jects is set to a valid transaction object. Commit or roll back the transaction
using the Commit or Rollback method of the transaction object. Close the databas
e connection.
√
√ √
(I)What is difference between Dataset. clone and Dataset. copy ?
Clone: - It only copies structure, does not copy data. Copy: - Copies both struc
ture and data.
(A)Can you explain the difference between an ADO.NET Dataset and an ADO Recordse
t?
There two main basic differences between recordset and dataset :√ With dataset y
ou an retrieve data from two databases like oracle and sql server and merge them
in one dataset , with recordset this is not possible √ √ All representation of
Dataset is using XML while recordset uses COM. Recordset can not be transmitted
on HTTP while Dataset can be.
300
(A)Explain in detail the fundamental of connection pooling?
When a connection is opened first time a connection pool is created and is based
on the exact match of the connection string given to create the connection obje
ct. Connection pooling only works if the connection string is the same. If the c
onnection string is different, then a new connection will be opened, and connect
ion pooling won t be used.
Figure 9.5 : - Connection Pooling action.
Lets try to explain the same pictorially. In the above figure you can see there
are three requests “Request1”, “Request2” and “Request3”. “Request1” and “Reques
t3” have
301
same connection string so no new connection object is created for “Request3” as
the connection string is same. They share the same object “ConObject1”. But new
object “ConObject2” is created for “Request2” as the connection string is differ
ent. Note: - The difference between the connection string is that one has “User
id=sa” and other has “User id=Testing”.
(A)What is Maximum Pool Size in ADO.NET Connection String?
Maximum pool size decides the maximum number of connection objects to be pooled.
If the maximum pool size is reached and there is no usable connection available
the request is queued until connections are released back in to pool. So it’s a
lways a good habit to either call the close or dispose method of the connection
as soon as you have finished work with the connection object.
(A)How to enable and disable connection pooling?
For .NET it is enabled by default but if you want to just make sure set Pooling=
true in the connection string. To disable connection pooling set Pooling=false i
n connection string if it is an ADO.NET Connection. If it is an OLEDBConnection
object set OLE DB Services=-4 in the connection string.
302
10. SQL SERVER
Note :- This chapter is too small to cover SQL Server completely. I will suggest
you to buy my SQL Server Interview Question book to gain full confidence during
interview for this product.
(B) What is normalization? What are different types of normalization?
Note :- A regular .NET programmer working on projects often stumbles in this que
stion, which is but obvious. Bad part is sometimes interviewer can take this as
a very basic question to be answered and it can be a turning point for the inter
view. So let s cram it. It is set of rules that have been established to aid in
the design of tables that are meant to be connected through relationships. This
set of rules is known as Normalization. Benefits of normalizing your database wi
ll include: √ √ √ √ Avoiding repetitive entries Reducing required storage space
Preventing the need to restructure existing tables to accommodate new data. Incr
eased speed and flexibility of queries, sorts, and summaries. Note :- During int
erview people are expect to answer maximum of three normal forms and that’s what
is expected practically. Actually you can normalize database to fifth normal fo
rm. But believe this book will answer three normal forms that will put you in de
cent shape during interview. Following are the three normal forms :-
303
First Normal Form For a table to be in first normal form, data must be broken up
into the smallest units possible.In addition to breaking data up into the small
est meaningful values, tables in first normal form should not contain repetition
s groups of fields.
Figure :- 10.1 Repeating groups example
For in the above example city1 and city2 are repeating.In order that this table
to be in First normal form you have to modify the table structure as follows.Als
o not that the Customer Name is now broken down to first name and last name (Fir
st normal form data should be broken down to smallest unit).
Figure :- 10.2 Customer table normalized to first normal form
Second Normal form The second normal form states that each field in a multiple f
ield primary keytable must be directly related to the entire primary key. Or in
other words, each non-key field should be a fact about all the fields in the pri
mary key. In the above table of customer, city is not linked to any primary fiel
d.
304
Figure :- 10.3 Normalized customer table.
Figure :- 10.4 City is now shifted to a different master table.
That takes our database to a second normal form. Third normal form A non-key fie
ld should not depend on other Non-key field. The field "Total" is dependent on "
Unit price" and "qty".
Figure :- 10.5 Fill third normal form
So now the "Total" field is removed and is multiplication of Unit price * Qty. N
ote :- Fourth and Fifth normal form is left as a home work to users.
(B)What is denormalization ?
305
Denormalization is the process of putting one fact in numerous places (its vice-
versa of normalization).Only one valid reason exists for denormalizing a relatio
nal design - to enhance performance.The sacrifice to performance is that you inc
rease redundancy in database.
(B)What is a candidate key ?
A table may have more than one combination of columns that could uniquely identi
fy the rows in a table; each combination is a candidate key. During database des
ign you can pick up one of the candidate keys to be the primary key. For example
, in the supplier table supplierid and suppliername can be candidate key but you
will only pick up supplierid as the primary key.
(B) What are the different types of joins? What is the difference between them ?
INNER JOIN Inner join shows matches only when they exist in both tables.Example,
in the below SQL there are two tables Customers and Orders and the inner join i
n made on Customers Customerid and Orders Customerid.So this SQL will only give
you result with customers who have orders.If the customer does not have order it
will not display that record. SELECT Customers.*, Orders.* FROM Customers INNER
JOIN Orders ON Customers.CustomerID =Orders.CustomerID LEFT OUTER JOIN Left joi
n will display all records in left table of the SQL statement.In SQL below custo
mers with or without orders will be displayed. Order data for customers without
orders appears as NULL values. For example, you want to determine the amount ord
ered by each customer and you need to see who has not ordered anything as well.
You can also see the LEFT OUTER JOIN as a mirror image of the RIGHT OUTER JOIN (
Is covered in the next section) if you switch the side of each table. SELECT Cus
tomers.*, Orders.* FROM Customers LEFT OUTER JOIN Orders ON Customers.CustomerID
=Orders.CustomerID
306
RIGHT OUTER JOIN Right join will display all records in right table of the SQL s
tatement. In SQL below all orders with or without matching customer records will
be displayed. Customer data for orders without customers appears as NULL values
. For example, you want to determine if there are any orders in the data with un
defined CustomerID values (say, after a conversion or something like it). You ca
n also see the RIGHT OUTER JOIN as a mirror image of the LEFT OUTER JOIN if you
switch the side of each table. SELECT Customers.*, Orders.* FROM Customers RIGHT
OUTER JOIN Orders ON Customers.CustomerID =Orders.CustomerID
(I)What are indexes? What is the difference between clustered and nonclustered i
ndexes?
Indexes in SQL Server are similar to the indexes in books. They help SQL Server
retrieve the data quickly. There are clustered and nonclustered indexes. A clust
ered index is a special type of index that reorders the way in which records in
the table are physically stored. Therefore table can have only one clustered ind
ex. The leaf nodes of a clustered index contain the data pages. A nonclustered i
ndex is a special type of index in which the logical order of the index does not
match the physical stored order of the rows on disk. The leaf node of a nonclus
tered index does not consist of the data pages. Instead, the leaf nodes contain
index rows.
(A)How can you increase SQL performance ?
Following are tips which will increase your SQl performance :√ Every index incre
ases the time takes to perform INSERTS, UPDATES and DELETES, so the number of in
dexes should not be too much. Try to use maximum 4-5 indexes on one table, not m
ore. If you have read-only table, then the number of indexes may be increased.
307
√ √ √
Keep your indexes as narrow as possible. This reduces the size of the index and
reduces the number of reads required to read the index. Try to create indexes on
columns that have integer values rather than character values. If you create a
composite (multi-column) index, the order of the columns in the key are very imp
ortant. Try to order the columns in the key as to enhance selectivity, with the
most selective columns to the leftmost of the key. If you want to join several t
ables, try to create surrogate integer keys for this purpose and create indexes
on their columns. Create surrogate integer primary key (identity for example) if
your table will not have many insert operations. Clustered indexes are more pre
ferable than nonclustered, if you need to select by a range of values or you nee
d to sort results set with GROUP BY or ORDER BY. If your application will be per
forming the same query over and over on the same table, consider creating a cove
ring index on the table. You can use the SQL Server Profiler Create Trace Wizard
with "Identify Scans of Large Tables" trace to determine which tables in your d
atabase may need indexes. This trace will show which tables are being scanned by
queries instead of using an index.
√ √ √
√ √
(A)What is the use of OLAP ?
OLAP is useful because it provides fast and interactive access to aggregated dat
a and the ability to drill down to detail.
(A)What is a measure in OLAP ?
Measures are the key performance indicator that you want to evaluate. To determi
ne which of the numbers in the data might be measures. A rule of thumb is: If a
number makes sense when it is aggregated, then it is a measure.
(A)What are dimensions in OLAP ?
308
Dimensions are the categories of data analysis. For example, in a revenue report
by month by sales region, the two dimensions needed are time and sales region.
Typical dimensions include product, time, and region.
(A)What are levels in dimensions ?
Dimensions are arranged in hierarchical levels, with unique positions within eac
h level. For example, a time dimension may have four levels, such as Year, Quart
er, Month, and Day. Or the dimension might have only three levels, for example,
Year, Week, and Day. The values within the levels are called members. For exampl
e, the years 2002 and 2003 are members of the level Year in the Time dimension.
(A)What are fact tables and dimension tables in OLAP ?
Twist :- Can you explain the star schema for OLAP ? The dimensions and measures
are physically represented by a star schema. Dimension tables revolve around fac
t table. A fact table contains a column for each measure as well as a column for
each dimension. Each dimension column has a foreign-key relationship to the rel
ated dimension table, and the dimension columns taken together are the key to th
e fact table.
(A)What is DTS?
DTS is used to pull data from various sources into the star schema.
(A)What is fillfactor ?
Twist :- When does page split occurs ? The fill factor option specifies how fu
ll SQL Server will make each index page. When there is no free space to insert n
ew row on the index page, SQL Server will create new index page and transfer som
e rows from the previous page to the new one. This operation is called page spli
ts. You can reduce the number of page splits by setting the appropriate fill fac
tor option to reserve free space on each index page. The fill factor is a value
from 1 through 100 that specifies the percentage of the index page to be left em
pty. The default value for fill factor is 0. It is treated similarly to a fill f
actor value of 100, the difference in that SQL Server leaves some space within t
he upper level of the index tree for FILLFACTOR = 0. The fill factor percentage
is used only at the time when the index is created. If the table contains read-o
nly data (or data that very rarely changed), you can
309
set the fill factor option to 100. When the table s data is modified very ofte
n, you can decrease the fill factor to 70% or whatever you think is best.
(A)What is RAID and how does it work ?
Redundant Array of Independent Disks (RAID) is a term used to describe the techn
ique of improving data availability through the use of arrays of disks and vario
us data-striping methodologies. Disk arrays are groups of disk drives that work
together to achieve higher data-transfer and I/O rates than those provided by si
ngle large drives. An array is a set of multiple disk drives plus a specialized
controller (an array controller) that keeps track of how data is distributed acr
oss the drives. Data for a particular file is written in segments to the differe
nt drives in the array rather than being written to a single drive. For speed an
d reliability, it is better to have more disks. When these disks are arranged in
certain patterns and are use a specific controller, they are called a Redundant
Array of Inexpensive Disks (RAID) set. There are several numbers associated wit
h RAID, but the most common are 1, 5 and 10. RAID 1 works by duplicating the sam
e writes on two hard drives. Let us assume you have two 20 Gigabyte drives. In R
AID 1, data is written at the same time to both the drives. RAID1 is optimized f
or fast writes. RAID 5 works by writing parts of data across all drives in the s
et (it requires at least three drives). If a drive failed, the entire set would
be worthless. To combat this problem, one of the drives stores a "parity" bit. T
hink of a math problem, such as 3 + 7 = 10. You can think of the drives as stori
ng one of the numbers, and the 10 is the parity part. By removing any one of the
numbers, you can get it back by referring to the other two, like this: 3 + X =
10. Of course, losing more than one could be evil. RAID 5 is optimized for reads
. RAID 10 is a bit of a combination of both types. It doesn t store a parity bit
, so it is faster, but it duplicates the data on two drives to be safe. You need
at least four drives for RAID 10. This type of RAID is probably the best compro
mise for a database server. Note :- It s difficult to cover complete aspect of R
AID in this book. It s better to take some decent SQL SERVER book for in detail
knowledge, but yes from interview aspect you can probably escape with this answe
r.
310
(B)What is the difference between DELETE TABLE and TRUNCATE TABLE commands?
Following are difference between them :√ DELETE TABLE syntax logs the deletes th
us make the delete operation slow. TRUNCATE table does not log any information b
ut it logs information about deallocation of data page of the table so TRUNCATE
table is faster as compared to delete table. DELETE table can have criteria whil
e TRUNCATE can not. TRUNCATE table can not trigger. Note :- Thanks to all the re
aders for pointing out my mistake for the above question in my first edition. I
had mentioned that TRUNCATE table can not be rolled back while delete can be.
√ √
(B)What are the problems that can occur if you do not implement locking properly
in SQL SERVER ?
Following are the problems that occur if you do not implement locking properly i
n SQL SERVER. Lost Updates Lost updates occur if you let two transactions modify
the same data at the same time, and the transaction that completes first is los
t. You need to watch out for lost updates with the READ UNCOMMITTED isolation le
vel. This isolation level disregards any type of locks, so two simultaneous data
modifications are not aware of each other. Suppose that a customer has due of 2
000$ to be paid. He pays 1000$ and again buys a product of 500$. Lets say that t
hese two transactions are now been entered from two different counters of the co
mpany. Now both the counter user starts making entry at the same time 10:00 AM.
Actually speaking at 10:01 AM the customer should have 2000$-1000$+500 = 1500$ p
ending to be paid. But as said in lost updates the first transaction is not cons
idered and the second transaction overrides it. So the final pending is 2000$+50
0$ = 2500$.....I hope the company does not loose the customer.
311
Non-Repeatable Read Non-repeatable reads occur if a transaction is able to read
the same row multiple times and gets a different value each time. Again, this pr
oblem is most likely to occur with the READ UNCOMMITTED isolation level. Because
you let two transactions modify data at the same time, you can get some unexpec
ted results. For instance, a customer wants to book flight, so the travel agent
checks for the flights availability. Travel agent finds a seat and goes ahead to
book the seat.While the travel agent is booking the seat, some other travel age
nt books the seat. When this travel agent goes to update the record, he gets err
or saying that “Seat is already booked”. In short the travel agent gets differen
t status at different times for the seat. Dirty Reads Dirty reads are a special
case of non-repeatable read. This happens if you run a report while transactions
are modifying the data that you re reporting on. For example there is a custome
r invoice report which runs on 1:00 AM in afternoon and after that all invoices
are sent to the respective customer for payments. Let us say one of the customer
has 1000$ to be paid. Customer pays 1000$ at 1:00 AM and at the same time repor
t is run. Actually customer has no money pending but is still issued an invoice.
Phantom Reads Phantom reads occur due to a transaction being able to read a row
on the first read, but not being able to modify the same row due to another tra
nsaction deleting rows from the same table. Lets say you edit a record in the me
an time somebody comes and deletes the record, you then go for updating the reco
rd which does not exist....Panicked. Interestingly, the phantom reads can occur
even with the default isolation level supported by SQL Server: READ COMMITTED. T
he only isolation level that doesn t allow phantoms is SERIALIZABLE, which ensur
es that each transaction is completely isolated from others. In other words, no
one can acquire any type of locks on the affected row while it is being modified
.
(B)What are different transaction levels in SQL SERVER?
Twist :- What are different types of locks in SQL SERVER ?
312
Transaction Isolation level decides how is one process isolated from other proce
ss.Using transaction levels you can implement locking in SQL SERVER. There are f
our transaction levels in SQL SERVER :READ COMMITTED The shared lock is held for
the duration of the transaction, meaning that no other transactions can change
the data at the same time. Other transactions can insert and modify data in the
same table, however, as long as it is not locked by the first transaction. READ
UNCOMMITTED No shared locks and no exclusive locks are honored. This is the leas
t restrictive isolation level resulting in the best concurrency but the least da
ta integrity.
REPEATABLE READ This setting disallows dirty and non-repeatable reads. However,
even though the locks are held on read data, new rows can still be inserted in t
he table, and will subsequently be interpreted by the transaction. SERIALIZABLE
This is the most restrictive setting holding shared locks on the range of data.
This setting does not allow the insertion of new rows in the range that is locke
d; therefore, no phantoms are allowed. Following is the syntax for setting trans
action level in SQL SERVER. SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
(I)What are the different locks in SQL SERVER ?
Depending on the transaction level six types of lock can be acquired on data :-
313
Intent The intent lock shows the future intention of SQL Server s lock manager t
o acquire locks on a specific unit of data for a particular transaction. SQL Ser
ver uses intent locks to queue exclusive locks, thereby ensuring that these lock
s will be placed on the data elements in the order the transactions were initiat
ed. Intent locks come in three flavors: intent shared (IS), intent exclusive (IX
), and shared with intent exclusive (SIX). IS locks indicate that the transactio
n will read some (but not all) resources in the table or page by placing shared
locks. IX locks indicate that the transaction will modify some (but not all) res
ources in the table or page by placing exclusive locks. SIX locks indicates that
the transaction will read all resources, and modify some(but not all) of them.
This will be accomplished by placing the shared locks on the resources read and
exclusive locks on the rows modified. Only one SIX lock is allowed per resource
at one time; therefore, SIX locks prevent other connections from modifying any d
ata in the resource (page or table), although they do allow reading the data in
the same resource. Shared Shared locks (S) allow transactions to read data with
SELECT statements. Other connections are allowed to read the data at the same ti
me; however, no transactions are allowed to modify data until the shared locks a
re released. Update Update locks (U) are acquired just prior to modifying the da
ta. If a transaction modifies a row, then the update lock is escalated to an exc
lusive lock; otherwise, it is converted to a shared lock. Only one transaction c
an acquire update locks to a resource at one time. Using update locks prevents m
ultiple connections from having a shared lock that want to eventually modify a r
esource using an exclusive lock. Shared locks are compatible with other shared l
ocks, but are not compatible with Update locks. Exclusive Exclusive locks (X) co
mpletely lock the resource from any type of access including reads. They are iss
ued when data is being modified through INSERT, UPDATE and DELETE statements.
314
Schema Schema modification locks (Sch-M) are acquired when data definition langu
age statements, such as CREATE TABLE, CREATE INDEX, ALTER TABLE, and so on are b
eing executed. Schema stability locks (Sch-S) are acquired when store procedures
are being compiled. Bulk Update Bulk update locks (BU) are used when performing
a bulk-copy of data into a table with TABLOCK hint. These locks improve perform
ance while bulk copying data into a table; however, they reduce concurrency by e
ffectively disabling any other connections to read or modify data in the table.
(I)Can we suggest locking hints to SQL SERVER ?
We can give locking hints that helps you over ride default decision made by SQL
Server. For instance, you can specify the ROWLOCK hint with your UPDATE statemen
t to convince SQL Server to lock each row affected by that data modification. Wh
ether it s prudent to do so is another story; what will happen if your UPDATE af
fects 95% of rows in the affected table? If the table contains 1000 rows, then S
QL Server will have to acquire 950 individual locks, which is likely to cost a l
ot more in terms of memory than acquiring a single table lock. So think twice be
fore you bombard your code with ROWLOCKS.
(I)What is LOCK escalation?
Lock escalation is the process of converting of low level locks (like row locks,
page locks) into higher level locks (like table locks). Every lock is a memory
structure too many locks would mean, more memory being occupied by locks. To pre
vent this from happening, SQL Server escalates the many fine-grain locks to fewe
r coarse-grain locks. Lock escalation threshold was definable in SQL Server 6.5,
but from SQL Server 7.0 onwards it s dynamically managed by SQL Server.
(B)What are the different ways of moving data/ databases between servers and dat
abases in SQL Server?
315
There are lots of option available; you have to choose your option depending upo
n your requirements. Some of the options you have are: BACKUP/RESTORE, detaching
and attaching databases, replication, DTS, BCP, logshipping, INSERT...SELECT, S
ELECT...INTO, creating INSERT scripts to generate data.
(I)What are advantages of SQL 2000 over SQl 7.0 ?
√ User-Defined Functions: User-Defined Functions (UDFs) -- one or more Transact-
SQL statements can be used to encapsulate code for reuse. Userdefined functions
cannot make a permanent change to the data or modify database tables. UDF can ch
ange only local objects for a UDF, such as local cursors or variables. Distribut
ed Partitioned Views: Distributed partitioned views allow you to partition table
s horizontally across multiple servers. So, you can scale out one database serve
r to a group of database servers that cooperate to provide the same performance
levels as a cluster of database servers. Due to distributed partitioned views, S
QL Server 2000 now on the first place in the tpc-c tests. New Data Types: These
include: bigint, an 8-byte integer type; sql_variant, a data type that allows th
e storage of data of different data types; and the table data type, which allows
applications to store results temporarily for later use. INSTEAD OF and AFTER T
riggers: There are INSTEAD OF and AFTER Triggers in SQL Server 2000. INSTEAD OF
triggers are executed instead of the INSERT, UPDATE or DELETE triggering action.
AFTER triggers are executed after the triggering action. Cascading Referential
Integrity Constraints: There are new ON DELETE and ON UPDATE clauses in the REFE
RENCES clause of the CREATE TABLE and ALTER TABLE statements. The ON DELETE clau
se controls what actions are taken if you attempt to delete a row to which exist
ing foreign keys point. The ON UPDATE clause defines the actions that are taken
if you attempt to update a candidate key value to which existing foreign keys po
int. The ON DELETE and ON UPDATE clauses have two options: NO ACTION :-NO ACTION
specifies that the deletion/update fail with an error. CASCADE :-CASCADE specif
ies that all the rows with foreign keys pointing to the deleted/updated row are
also deleted and updated.
316
√
√ √
√
√
√
32 CPU and 64GB Memory Support: SQL Server 2000 Enterprise Edition running under
Windows 2000 DataCenter can support up to 32 CPUs and up to 64GB of physical me
mory (RAM) on a computer. XML Support: SQL Server 2000 can use XML to insert, up
date, and delete values in the database, and the database engine can return data
as Extensible Markup Language (XML) documents
√
(B)What is the difference between a HAVING CLAUSE and a WHERE CLAUSE?
You can use Having Clause with the GROUP BY function in a query and WHERE Clause
is applied to each row before they are part of the GROUP BY function in a query
.
(B) What is the difference between UNION and UNION ALL SQL syntax ?
UNION SQL syntax is used to select information from two tables. But it selects o
nly distinct records from both the table, while UNION ALL selects all records fr
om both the tables. Note :- Selected records should have same datatype or else t
he syntax will not work.
(I)How can you raise custom errors from stored procedure ?
The RAISERROR statement is used to produce an ad hoc error message or to retriev
e a custom message that is stored in the sysmessages table. You can use this sta
tement with the error handling code presented in the previous section to impleme
nt custom error messages in your applications. The syntax of the statement is sh
own here. RAISERROR ({msg_id |msg_str }{,severity ,state } [ ,argument [ ,,...n
] ] )) [ WITH option [ ,,...n ] ] A description of the components of the stateme
nt follows. msg_id :-The ID for an error message, which is stored in the error c
olumn in sysmessages.
317
msg_str :-A custom message that is not contained in sysmessages. severity :- The
severity level associated with the error. The valid values are 0–25. Severity l
evels 0–18 can be used by any user, but 19–25 are only available to members of t
he fixed-server role sysadmin. When levels 19–25 are used, the WITH LOG option i
s required. state A value that indicates the invocation state of the error. The
valid values are 0–127. This value is not used by SQL Server. Argument, . . . On
e or more variables that are used to customize the message. For example, you cou
ld pass the current process ID (@@SPID) so it could be displayed in the message.
WITH option, . . . The three values that can be used with this optional argumen
t are described here. LOG - Forces the error to log in the SQL Server error log
and the NT application log. NOWAIT - Sends the message immediately to the client
. SETERROR - Sets @@ERROR to the unique ID for the message or 50,000. The number
of options available for the statement makes it seem complicated, but it is act
ually easy to use. The following shows how to create an ad hoc message with a se
verity of 10 and a state of 1. RAISERROR ( An error occurred updating the NonFat
al table ,10,1) --Results-An error occured updating the NonFatal table The state
ment does not have to be used in conjunction with any other code, but for our pu
rposes it will be used with the error handling code presented earlier. The follo
wing alters the ps_NonFatal_INSERT procedure to use RAISERROR. USE tempdb go ALT
ER PROCEDURE ps_NonFatal_INSERT @Column2 int =NULL AS
318
DECLARE @ErrorMsgID int INSERT NonFatal VALUES (@Column2) SET @ErrorMsgID =@@ERR
OR IF @ErrorMsgID <>0 BEGIN RAISERROR ( An error occured updating the NonFatal t
able ,10,1) END When an error-producing call is made to the procedure, the custo
m message is passed to the client. The following shows the output generated by Q
uery Analyzer.
(I) What is ACID fundamental? What are transactions in SQL SERVER ?
A transaction is a sequence of operations performed as a single logical unit of
work. A logical unit of work must exhibit four properties, called the ACID (Atom
icity, Consistency, Isolation, and Durability) properties, to qualify as a trans
action: Atomicity √ A transaction must be an atomic unit of work; either all of
its data modifications are performed or none of them is performed. Consistency √
When completed, a transaction must leave all data in a consistent state. In a r
elational database, all rules must be applied to the transaction s modifications
to maintain all data integrity. All internal data structures, such as B-tree in
dexes or doubly-linked lists, must be correct at the end of the transaction.
319
Isolation √ Modifications made by concurrent transactions must be isolated from
the modifications made by any other concurrent transactions. A transaction eithe
r see data in the state it was before another concurrent transaction modified it
, or it sees the data after the second transaction has completed, but it does no
t see an intermediate state. This is referred to as serializability because it r
esults in the ability to reload the starting data and replay a series of transac
tions to end up with the data in the same state it was in after the original tra
nsactions were performed. Durability √ After a transaction has completed, its ef
fects are permanently in place in the system. The modifications persist even in
the event of a system failure.
(A) What is DBCC?
DBCC (Database Consistency Checker Commands) is used to check logical and physic
al consistency of database structure.DBCC statements can fix and detect problems
.They are grouped in to four categories :√ √ Maintenance commands like DBCC DBRE
INDEX , DBCC DBREPAR etc , they are mainly used for maintenance tasks in SQL SER
VER. Miscellaneous commands like DBCC ROWLOCK , DBCC TRACEO etc , they are mainl
y used for enabling row-level locking or removing DLL from memory. Status Comman
ds like DBCC OPENTRAN , DBCC SHOWCONTIG etc , they are mainly used for checking
status of the database. Validation Commands like DBCC CHECKALLOC,DBCC CHECKCATAL
OG etc , they perform validation operations on database. Note :- Check MSDN for
list of all DBCC commands, it is very much possible specially during DBA intervi
ews they can ask in depth individual commands. Below is a sample screen in which
DBCC SHOWCONTIG command is run. DBCC SHOWCONTIG is used to display fragmentatio
n information for the data and indexes of the specified table.In the sample scre
en “Customer” table is checked for fragmentation
320
√ √
information. If you look at the figure “Scan density” is 100 if everything isuco
ntigious in this image it is 95.36% which is decent percentage. So such type of
useful information can be collected by DBCC command and database performance and
maintenance can be improved.
321
Figure :- 10.6 DBCC SHOWCONTIG command in action.
(A) What is the purpose of Replication ?
Replication is way of keeping data synchronized in multiple databases. SQL serve
r replication has two important aspects publisher and subscriber. Publisher Data
base server that makes data available for replication is called as Publisher.
322
Subscriber Database Servers that get data from the publishers is called as Subsc
ribers.
(A) What are the different types of replication supported by SQL SERVER ?
There are three types of replication supported by SQL SERVER:Snapshot Replicatio
n. Snapshot Replication takes snapshot of one database and moves it to the other
database. After initial load data can be refreshed periodically. The only disad
vantage of this type of replication is that all data has to be copied each time
the table is refreshed. Transactional Replication In transactional replication d
ata is copied first time as in snapshot replication, but later only the transact
ions are synchronized rather than replicating the whole database.You can either
specify to run continuously or on periodic basis. Merge Replication. Merge repli
cation combines data from multiple sources into a single central database.Again
as usual the initial load is like snapshot but later it allows change of data bo
th on subscriber and publisher, later when they come on-line it detects and comb
ines them and updates accordingly.
(I) What is BCP utility in SQL SERVER ?
BCP (Bulk Copy Program) is a command line utility by which you can import and ex
port large amounts of data in and out of SQL SERVER database. Below is a sample
which shows BCP in action.
323
Figure :- 10.7 Export BCP utility in action
324
Figure :- 10.8 Import BCP utility in action
(I)What are the different types of triggers in SQl SERVER 2000 ?
There are two types of triggers :√ INSTEAD OF triggers INSTEAD OF triggers fire
in place of the triggering action. For example, if an INSTEAD OF UPDATE trigger
exists on the Sales table and an UPDATE statement is executed against the Salest
able, the UPDATE statement will not change a row in the sales table. Instead, th
e UPDATE statement causes the INSTEAD OF UPDATE trigger to be executed, which ma
y or may not modify data in the Sales table.
325
√
AFTER triggers
AFTER triggers execute following the SQL action, such as an insert, update, or d
elete. This is the traditional trigger which existed in SQL SERVER. INSTEAD OF t
riggers gets executed automatically before the Primary Key and the Foreign Key c
onstraints are checked, whereas the traditional AFTER triggers gets executed aft
er these constraints are checked. Unlike AFTER triggers, INSTEAD OF triggers can
be created on views.
(A)If we have multiple AFTER Triggers on table how can we define the sequence of
the triggers ?
If a table has multiple AFTER triggers, then you can specify which trigger shoul
d be executed first and which trigger should be executed last using the stored p
rocedure sp_settriggerorder. All the other triggers are in an undefined order wh
ich you cannot control.
(A)What is SQl injection ?
It is a Form of attack on a database-driven Web site in which the attacker execu
tes unauthorized SQL commands by taking advantage of insecure code on a system c
onnected to the Internet, bypassing the firewall. SQL injection attacks are used
to steal information from a database from which the data would normally not be
available and/or to gain access to an organization’s host computers through the
computer that is hosting the database. SQL injection attacks typically are easy
to avoid by ensuring that a system has strong input validation. As name suggest
we inject SQL which can be relatively dangerous for the database. Example this i
s a simple SQL SELECT email, passwd, login_id, full_name FROM members WHERE emai
l = x Now somebody does not put “x” as the input but puts “x ; DROP TABLE memb
ers;”. So the actual SQL which will execute is :326
SELECT email, passwd, login_id, full_name FROM members WHERE email = x ; DROP
TABLE members; Think what will happen to your database.
What is the difference between Stored Procedure (SP) and User Defined Function (
UDF)?
Following are some major differences between a stored procedure and user defined
functions:√ √ √ √ √ UDF can be executed using the “SELECT” clause while SP’s ca
n not be. UDF can not be used in XML FOR clause but SP’s can be used. UDF does n
ot return output parameters while SP’s return output parameters. If there is an
error in UDF its stops executing. But in SP’s it just ignores the error and move
s to the next statement. UDF can not make permanent changes to server environmen
ts while SP’s can change some of the server environment. Note :- SQL Server prod
uct is equivalently important from interview point of view. Below are questions
taken from my second book “SQL Server Interview questions”. If you are intereste
d in buying the book mail bpb@bol.net.in / bpb@vsnl.com or call the nearest BPB
book stall for my book. For shop phone numbers you can either see the back or fr
ont page of the book. Database Concepts What is database or database management
systems (DBMS)? What is the difference between DBMS and RDBMS ? What are CODD ru
les? Is access database a RDBMS? What is the main difference between ACCESS and
SQL SERVER?
327
What is the difference between MSDE and SQL SERVER 2000? What is SQL SERVER Expr
ess 2005 Edition? What is SQL Server 2000 Workload Governor? What is the differe
nce between SQL SERVER 2000 and 2005? What are E-R diagrams? How many types of r
elationship exist in database designing? Can you explain Fourth Normal Form? Can
you explain Fifth Normal Form? What’s the difference between Fourth and Fifth n
ormal form? Have you heard about sixth normal form? What is Extent and Page? Wha
t are the different sections in Page? What are page splits? In which files does
actually SQL Server store data? What is Collation in SQL Server? Can we have a d
ifferent collation for database and table? SQL Revisiting basic syntax of SQL? W
hat are “GRANT” and “REVOKE’ statements? What is Cascade and Restrict in DROP ta
ble SQL? How to import table using “INSERT” statement? What is a DDL, DML and DC
L concept in RDBMS world? What are different types of joins in SQL? What is “CRO
SS JOIN”?
328
Who will you select the first record in a given set of rows? How do you sort in
SQL? How do you select unique rows using SQL? Can you name some aggregate functi
on is SQL Server? What is the default “SORT” order for a SQL? What is a self-joi
n? What’s the difference between DELETE and TRUNCATE ? Select addresses which ar
e between ‘1/1/2004’ and ‘1/4/2004’? What are Wildcard operators in SQL Server?
What’s the difference between “UNION” and “UNION ALL” ? What are cursors and in
which situations you will use them? What are the steps to create a cursor? What
are the different Cursor Types? What are “Global” and “Local” cursors? What is “
Group by” clause? What is ROLLUP? What is CUBE? What is the difference between “
HAVING” and “WHERE” clause? What is “COMPUTE” clause in SQL? What is “WITH TIES”
clause in SQL? What does “SET ROWCOUNT” syntax achieves? What is a Sub-Query? W
hat is “Correlated Subqueries”? What is “ALL” and “ANY” operator? What is a “CAS
E” statement in SQL?
329
What does COLLATE Keyword in SQL signify? What is CTE (Common Table Expression)?
Why should you use CTE rather than simple views? What is TRY/CATCH block in T-S
QL? What is PIVOT feature in SQL Server? What is UNPIVOT? What are RANKING funct
ions? What is ROW_NUMBER()? What is RANK() ? What is DENSE_RANK()? What is NTILE
()? What is SQl injection ? .NET Integration What are steps to load a .NET code
in SQL SERVER 2005? How can we drop an assembly from SQL SERVER? Are changes mad
e to assembly updated automatically in database? Why do we need to drop assembly
for updating changes? How to see assemblies loaded in SQL Server? I want to see
which files are linked with which assemblies? Does .NET CLR and SQL SERVER run
in different process? Does .NET controls SQL SERVER or is it vice-versa? Is SQLC
LR configured by default? How to configure CLR for SQL SERVER?
330
Is .NET feature loaded by default in SQL Server? How does SQL Server control .NE
T run-time? What’s a “SAND BOX” in SQL Server 2005? What is an application domai
n? How are .NET Appdomain allocated in SQL SERVER 2005? What is Syntax for creat
ing a new assembly in SQL Server 2005? Does Assemblies loaded in database needs
actual .NET DLL? You have an assembly which is dependent on other assemblies, wi
ll SQL Server load the dependent assemblies? Does SQL Server handle unmanaged re
sources? What is Multi-tasking? What is Multi-threading? What is a Thread ? Can
we have multiple threads in one App domain? What is Non-preemptive threading? Wh
at is pre-emptive threading? Can you explain threading model in SQL Server? How
does .NET and SQL Server thread work? How is the exception in SQLCLR code handle
d? Are all .NET libraries allowed in SQL Server? What is “Hostprotectionattribut
e” in SQL Server 2005? How many types of permission level are there for an assem
bly? In order that an assembly gets loaded in SQL Server what type of checks are
done? Can you name system tables for .NET assemblies? Are two version of same a
ssembly allowed in SQL Server?
331
How are changes made in assembly replicated? Is it a good practice to drop a ass
embly for changes? In one of the projects following steps where done, will it wo
rk? What does Alter assembly with unchecked data signify? How do I drop an assem
bly? Can we create SQLCLR using .NET framework 1.0? While creating .NET UDF what
checks should be done? How do you define a function from the .NET assembly? Can
you compare between T-SQL and SQLCLR? With respect to .NET is SQL SERVER case s
ensitive? Does case sensitive rule apply for VB.NET? Can nested classes be acces
sed in T-SQL? Can we have SQLCLR procedure input as array? Can object datatype b
e used in SQLCLR? How is precision handled for decimal datatypes in .NET? How do
we define INPUT and OUTPUT parameters in SQLCLR? Is it good to use .NET datatyp
es in SQLCLR? How to move values from SQL to .NET datatypes? What is System.Data
.SqlServer? What is SQLContext? Can you explain essential steps to deploy SQLCLR
? How to create function in SQL Server using .NET? How do we create trigger usin
g .NET? How to create User Define Functions using .NET? How to create aggregates
using .NET?
332
What is Asynchronous support in ADO.NET? What is MARS support in ADO.NET? What i
s SQLbulkcopy object in ADO.NET? How to select range of rows using ADO.NET? What
are the different types of triggers in SQl SERVER 2000 ? If we have multiple AF
TER Triggers on table how can we define the sequence of the triggers ? How can y
ou raise custom errors from stored procedure ? ADO.NET Which are namespaces for
ADO.NET? Can you give a overview of ADO.NET architecture? What are the two funda
mental objects in ADO.NET? What is difference between dataset and datareader? Wh
at are major difference between classic ADO and ADO.NET? What is the use of conn
ection object? What are the methods provided by the command object? What is the
use of “Dataadapter”? What are basic methods of “Dataadapter”? What is Dataset o
bject? What are the various objects in Dataset? How can we connect to Microsoft
Access, FoxPro, Oracle etc? What’s the namespace to connect to SQL Server? How d
o we use stored procedure in ADO.NET?
333
How can we force the connection object to close? I want to force the datareader
to return only schema? Can we optimize command object when there is only one row
? Which is the best place to store connectionstring? What are steps involved to
fill a dataset? What are the methods provided by the dataset for XML? How can we
save all data from dataset? How can we check for changes made to dataset? How c
an we add/remove rows in “DataTable” object of “DataSet”? What’s basic use of “D
ataView”? What is the difference between “DataSet” and “DataReader”? How can we
load multiple tables in a DataSet? How can we add relations between table in a D
ataSet? What’s the use of CommandBuilder? What is the difference between “Optimi
stic” and “Pessimistic” locking? How many ways are there to implement locking in
ADO.NET? How can we perform transactions in .NET? What is the difference betwee
n Dataset. clone and Dataset. copy? What is the difference between Dataset and A
DO Recordset? Notification Services What are notification services? What are bas
ic components of Notification services? Can you explain architecture of Notifica
tion Services?
334
Which are the two XML files needed for notification services? What is Nscontrols
command? What are the situations you will use “Notification” Services? Service
Broker What do we need Queues? What is “Asynchronous” communication? What is SQL
Server Service broker? What are the essential components of SQL Server Service
broker? What is the main purpose of having Conversation Group? How to implement
Service Broker? How do we encrypt data between Dialogs? XML Integration What is
XML? What is the version information in XML? What is ROOT element in XML? If XML
does not have closing tag will it work? Is XML case sensitive? What’s the diffe
rence between XML and HTML? Is XML meant to replace HTML? Can you explain why yo
ur project needed XML? What is DTD (Document Type definition)? What is well form
ed XML? What is a valid XML?
335
What is CDATA section in XML? What is CSS? What is XSL? What is Element and attr
ibutes in XML? Can we define a column as XML? How do we specify the XML data typ
e as typed or untyped? How can we create the XSD schema? How do I insert in to a
table which has XSD schema attached to it? What is maximum size for XML datatyp
e? What is Xquery? What are XML indexes? What are secondary XML indexes? What is
FOR XML in SQL Server? Can I use FOR XML to generate SCHEMA of a table? How? Wh
at is the OPENXML statement in SQL Server? I have huge XML file which we want to
load in database? How to call stored procedure using HTTP SOAP? What is XMLA? D
ata Warehousing/Data Mining What is “Data Warehousing”? What are Data Marts? Wha
t are Fact tables and Dimension Tables? What is Snow Flake Schema design in data
base?
336
What is ETL process in Data warehousing? How can we do ETL process in SQL Server
? What is “Data mining”? Compare “Data mining” and “Data Warehousing”? What is B
CP? How can we import and export using BCP utility? During BCP we need to change
the field position or eliminate some fields how can we achieve this? What is Bu
lk Insert? What is DTS? Can you brief about the Data warehouse project you worke
d on? What is an OLTP (Online Transaction Processing) System? What is an OLAP (O
n-line Analytical processing) system? What is Conceptual, Logical and Physical m
odel? What is Data purging? What is Analysis Services? What are CUBES? What are
the primary ways to store data in OLAP? What is META DATA information in Data wa
rehousing projects? What is multi-dimensional analysis? What is MDX? How did you
plan your Data ware house project? What are different deliverables according to
phases? Can you explain how analysis service works? What are the different prob
lems that “Data mining” can solve?
337
What are different stages of “Data mining”? What is Discrete and Continuous data
in Data mining world? What is MODEL is Data mining world? How are models actual
ly derived? What is a Decision Tree Algorithm? Can decision tree be implemented
using SQL? What is Naïve Bayes Algorithm? Explain clustering algorithm? Explain
in detail Neural Networks? What is Back propagation in Neural Networks? What is
Time Series algorithm in data mining? Explain Association algorithm in Data mini
ng? What is Sequence clustering algorithm? What are algorithms provided by Micro
soft in SQL Server? How does data mining and data warehousing work together? Wha
t is XMLA? What is Discover and Execute in XMLA? Integration Services/DTS What i
s Integration Services import / export wizard? What are prime components in Inte
gration Services? How can we develop a DTS project in Integration Services? Repl
ication
338
What is the best way to update data between SQL Servers? What are the scenarios
you will need multiple databases with schema? How will you plan your replication
? What are publisher, distributor and subscriber in “Replication”? What is “Push
” and “Pull” subscription? Can a publication support push and pull at one time?
What are the different models / types of replication? What is Snapshot replicati
on? What are the advantages and disadvantages of using Snapshot replication? Wha
t type of data will qualify for “Snapshot replication”? What’s the actual locati
on where the distributor runs? Can you explain in detail how exactly “Snapshot R
eplication” works? What is merge replication? How does merge replication works?
What are advantages and disadvantages of Merge replication? What is conflict res
olution in Merge replication? What is a transactional replication? Can you expla
in in detail how transactional replication works? What are data type concerns du
ring replications? Reporting Services Can you explain how can we make a simple r
eport in reporting services? How do I specify stored procedures in Reporting Ser
vices?
339
What is the architecture for “Reporting Services “? Database Optimization What a
re indexes? What are B-Trees? I have a table which has lot of inserts, is it a g
ood database design to create indexes on that table? What are “Table Scan’s” and
“Index Scan’s”? What are the two types of indexes and explain them in detail? W
hat is “FillFactor” concept in indexes? What is the best value for “FillFactor”?
What are “Index statistics”? How can we see statistics of an index? How do you
reorganize your index, once you find the problem? What is Fragmentation? How can
we measure Fragmentation? How can we remove the Fragmented spaces? What are the
criteria you will look into while selecting an index? What is “Index Tuning Wiz
ard”? What is an Execution plan? How do you see the SQL plan in textual format?
What is nested join, hash join and merge join in SQL Query plan? What joins are
good in what situations? What is RAID and how does it work ?
340
Transaction and Locks What is a “Database Transactions “? What is ACID? What is
“Begin Trans”, “Commit Tran”, “Rollback Tran” and “Save Tran”? What are “Checkpo
int’s” in SQL Server? What are “Implicit Transactions”? Is it good to use “Impli
cit Transactions”? What is Concurrency? How can we solve concurrency problems? W
hat kind of problems occurs if we do not implement proper locking strategy? What
are “Dirty reads”? What are “Unrepeatable reads”? What are “Phantom rows”? What
are “Lost Updates”? What are different levels of granularity of locking resourc
es? What are different types of Locks in SQL Server? What are different Isolatio
n levels in SQL Server? What are different types of Isolation levels in SQL Serv
er? If you are using COM+ what “Isolation” level is set by default? What are “Lo
ck” hints? What is a “Deadlock” ? What are the steps you can take to avoid “Dead
locks” ? How can I know what locks are running on which resource?
341
11. UML
(B) What is UML? The Unified Modeling Language (UML) is a graphical language for
visualizing, specifying, constructing, and documenting the artifacts of a softw
are-intensive system.UML provides blue prints for business process, System funct
ion, programming language statements, database schemas and reusable components.
(I) How many types of diagrams are there in UML ? Twist :- Explain in short all
types of diagrams in UML ? There are nine types of diagrams in UML :Use case dia
gram: They describe "WHAT" of a system rather than "HOW" the system does it.They
are used to identify the primary elements and processes that form the system. T
he primary elements are termed as "actors" and the processes are called "use cas
es". Use Case diagrams shows "actors" and there "roles". Class diagram: From the
use case diagram we can now go to detail design of system, for which the primar
y step is class diagram. The best way to identify classes is to consider all "NO
UNS" in use cases as classes, "VERBS" as methods of classes, relation between ac
tors can then be used to define relation between classes. The relationship or as
sociation between the classes can be either an "is-a" or "has-a" relationship wh
ich can easily be identified from use cases. Object diagram: An object is an ins
tance of a class. Object diagram captures the state of classes in the system and
their relationships or associations at a specific point of time. State diagram:
A state diagram, as the name suggests, represents the different states that obj
ects in the system undergo during their life cycle. Object change in response to
certain simulation so
342
this simulation effect is captured in state diagram. So basically it has a initi
al state and final state and events that happen in between them. Whenever you th
ink that some simulations are complicated you can go for this diagram. Sequence
diagram: Sequence diagrams can be used to explore the logic of a complex operati
on, function, or procedure. They are called sequence diagrams because sequential
nature is shown via ordering of messages. First message starts at the top and t
he last message ends at bottom. The important aspect of a sequence diagram is th
at it is time-ordered. This means that the exact sequence of the interactions be
tween the objects is represented step by step. Different objects in the sequence
diagram interact with each other by passing "messages". Collaboration diagram:
A collaboration diagram groups together the interactions between different objec
ts to fulfill a common purpose. Activity diagram: Activity diagram is typically
used for business process modeling, for modeling the logic captured by a single
use case, or for visualizing the detailed logic of a business rule.Complicated p
rocess flows in the system are captured in the activity diagram. Similar to a st
ate diagram, an activity diagram also consists of activities, actions, transitio
ns, initial and final states, and guard conditions. But difference is state diag
rams are in context of simulation while activity gives detail view of business l
ogic. Deployment diagram: Deployment diagrams show the hardware for your system,
the software that is installed on that hardware, and the middleware used to con
nect the disparate machines to one another. It shows how the hardware and softwa
re work together to run a system. In one line its shows the deployment view of t
he system. Component diagram: The component diagram represents the high-level pa
rts that make up the system. From .NET angle point of view they form the "NAMESP
ACES". This diagram depicts, at a
343
high level, what components form part of the system and how they are interrelate
d. Its shows the logical grouping of classes or group of other components. Note
:- The best way to remember all the blocks of UML is “Serve cool SOUP during chu
rch ceremony” that covers State chart, Class diagrams, Sequence diagram, Object
diagram, Use Case diagram, Package diagram, Deployment diagram, Collaboration di
agram, Component diagram. (B) What are advantages of using UML? Twist: - What is
Modeling and why UML ? As the name suggest UNIFIED MODELING LANGUAGE. Modelling
has been around for years, not only in software field but also in other trades
like civil, mechanical etc. Example in civil engineering drawing the main archit
ecture built of diagram is a model by itself. Modelling makes complex and huge s
ystem to break up in to simple and discrete pieces that can be individually unde
rstood. Example simple flowchart drawing is modeling. There are two main advanta
ges of modeling:√ Readability: - Representing your whole architecture in flowcha
rt, class diagrams, ER diagrams etc makes your project more readable. Especially
when programmer’s change jobs handover becomes easier. More the project is not
readable more the dependencies. Reusability: - After the system is more readable
and broken down to pieces, it becomes easier to identify redundant and similar
modules. Thus increasing reusability.
√
So why UML? Well different languages have different ways of coding and syntaxes.
In order to bring all languages in one roof UML is in to picture. As the term c
omes in UNIFIED, it unifies all disparate languages in one roof so that can be u
nderstood by people who are working on some other platforms. (A)What is the sequ
ence of UML diagrams in project? Twist: - How did you implement UML in your proj
ect? First let me say some fact about this question, you can not implement all t
he nine diagrams given by UML in one project; you can but can be very rare scena
rio. The way UML is implemented in project varies from project to project and co
mpany to company.
344
Second very important point to remember is normally all diagrams are not impleme
nted in project, but some basic diagrams are important to have in order that pro
ject is readable. When we talk about projects every project have phases example
(Requirements phase, design phase, coding phase etc ). As every phase of the sof
tware cycle proceeds these diagrams come in picture. Some diagrams span across m
ultiple phases. Note: - If you want to have a detail about software life cycle l
ook out for chapter “Project Management”. Normally following are different basic
phases:Requirement phase (Use Case Diagrams, Activity diagrams) Requirement pha
se is the phase where you normally gather requirement and Use Cases are the best
things to make explanation of the system. In requirement phase you can further
make complicated Use Cases more simple and easy to understand by using activity
diagrams, but I do not see it as must in every project. If the Use cases are rea
lly complicated go for a Activity diagram. Example CRUD (creates, read, update a
nd delete) operation use cases have no significance for making activity diagrams
. So in short the outcome UML documents from requirement phase will be Use Case
and Activity diagram documents (Activity diagram documents will only be there if
there are complicated Use Cases to be simplified). Just a small Twist: - Do I n
eed all UML diagrams in a project? Note: - This question is specially asked to k
now have you actually used UML. I have seen many guys trying to give some jack o
f all answers saying “YES”. Beware it is a trap. Not all diagrams are needed in
project example: - Activity diagrams will only be needed when you want some simp
lified look of a complicated use case. Design phase (Class diagrams, object diag
rams, Component diagrams, Collaboration diagrams, Deployment diagrams, Sequence
diagrams) Design phase is the phase where you design your technical architecture
of your project. Now again in this you do not use all UML documents of a projec
t. But the next document after the Use Case document will be the Component diagr
am. Component diagrams form a high level classification of the system. So after
“Use Cases” just try to come out with a high level classification / grouping of
related functionalities.
345
This should be compulsory diagram as outcome of this document will form “NAMESPA
CES” structure of .NET project. Ok now once your high level grouping is done you
can go ahead with class diagrams. Especially from Use Case you get the “NOUNS”
and “VERBS” which can form the class name and the method name respectively. From
my point of view class diagrams should be compulsory in projects. Object diagra
ms are not compulsory it depends on how complicated your project. Object diagram
s shows the relation between instances of class at runtime. In short it captures
the state and relation of classes at any given moment of time. Example you have
class which creates objects of different classes, its like a factory. In class
diagram you will only show that it as a simple class with a method called as “Cr
eateObject”. But in object diagrams actually you will show the types of instance
s create from that object. Collaboration diagrams mainly depict interaction betw
een object to depict some purpose. I find this diagram to be more useful than Ob
ject diagrams as they are addressed for some purpose example “Login Process” whi
ch will use “Login object”, “User Object” etc to fulfill the login purpose. So i
f you find the process very complicated go for this diagram. I see as a thumb ru
le if there is an activity diagram which show some serious complicated scenarios
. I will like to go for this diagram in order to simplify the explanation. State
chart diagram is again created if your project requires it. If your project has
some complicated start and end states to show then this diagram is most useful.
Recently I was making a call center project where the agent phone pickup and ha
ng state has to be depicted. So my first state was when agent picks up the phone
and the final stage was when agent hangs the phone, in between process was very
complicated, which can only be shown by using state chart diagrams. Sequence di
agrams are needed if some sequence is complicated. Do not confuse sequence diagr
ams with Activity diagram, Activity diagrams map to a Use Case while sequence di
agrams show object interaction in sequence. Deployment diagrams are again not a
compulsory requirement. It will show the hardware and software deployment of you
r system. If you really have leisure in your project go for it or if you want to
make the client smile seeing some diagrams. Implementation phase / Coding phase
(Class diagrams for reverse
346
engineering, Other diagrams for validity check) In this phase mostly class diagr
ams are re-engineered with the source code. But other diagrams are also present
for validity check example state chart diagrams will be used in case to check th
at the both activity between those states follow the proper logic. If some thing
s have to be changed then again there is iteration backward to the Requirement p
hase. Testing phase This phase mostly goes for the testing department. I am not
talking about preparing UTP plans but SITP plans. Where the testing department w
ill look at all diagrams to prepare a test plan and execute it. Example it will
see the Use Case document to see the business rules, it will see the activity di
agram and sequence diagrams to see the proper flow of modules. If some things ar
e not proper there is iteration back to the Design phase. Roll out and close ove
r phases. All document just to re-check that things are proper, example all modu
les deployed according to the deployment diagrams, are all business rules in Use
Cases satisfied. Let us revise the following points:√ √ Not all diagrams are co
mpulsory. The minimum diagrams according to software life cycle phases are :Requ
irement phase: - Use Case Diagrams Design Phase: - Component diagrams, Class dia
grams Implementation phase: - All diagrams derived from pervious phases speciall
y class diagram for reverse engineering. Testing phase: - All diagrams derived f
rom requirement and design phases for verification and preparing test plans. Rol
l out and close over phase: - All document derived from Design phase and require
ment phases. Below is a sample figure which shows all the documents in relevant
phases.
347
Figure :-11.1 Phase mapping with UML documents
348
Note:- This book will now attempt to describe every element of a UML diagram. Bu
t it is advisable that you should install any decent UML tool and do a small pra
ctice of one or two diagrams which will make you comfortable during interview. (
A)Give a small brief explanation of all Elements in activity diagrams?
Figure :- 11.2 Elements of Activity Diagram
Action State :- It is a type of state that has an internal action and one outgoi
ng event that would complete the internal action. State :- It is a condition whe
n following events occur:349
√ √ √
Object satisfies a condition. Or performs a action. Or wait for a event to happe
n.
Initial State:- It represents a state before any event occurs. Final State:- Rep
resents completion of an activity. Transition Fork::- Denotes beginning of paral
lel path activities. Transition Join: - Denotes merging of parallel path activit
ies. Control Flow: - Represents relationship between two states and actions. In
short it indicates that an object in one state is entering some other state. Obj
ect Flow: - Connects an object flow state to control flow or action state. Objec
t in State: - Indicate the object’s state after manipulation by multiple activit
ies. Decisions: - Defines if there are any condition’s in the path. Swim Lanes:
- Assigns responsibility to action states. Signal receipt Shape: - Used to repla
ce an event label on a transition. Signal Send Shape: - Used to replace an event
label on a transition. Constraint: - Conditions that must be maintained true in
order the system is valid.
350
2-Element Constraint: - It show a constraint on two classes or associations. OR
constraint: - It show an OR constraint on two classes or associations. (A) Expla
in Different elements of a collaboration diagram ?
Figure :- 11.3 Elements of Collaboration Diagrams
Classifier Role :- It classifies a role. Association Role :- It shows the relati
on between two classifier roles. Multi-Object :- It used to show operation relat
ed to entire set of objects rather than on a single object. Constraint :- Condit
ions which must be maintained as true in order that system is valid.
351
2-Element Constraint: - It shows a constraint on two classes or associations. OR
constraint: - It shows an OR constraint on two classes or associations. (A) Exp
lain Component diagrams ?
Figure :- 11.4 Elements of component diagrams
Package: - It logically make group of element of a UML model. Component: - It’s
the actual implementation or physical module of a UML system.
352
Node: - A physical system which represents a processing resource, example PC or
a host machine. InterFace :- It specifies the externally operations of a class,
component, package, or other element without specifying internal structure. Depe
ndency :- Shows relationship between two elements. 2-Element Constraint: - It sh
ows a constraint on two classes or associations. OR constraint: - It shows an OR
constraint on two classes or associations.
353
(A) Explain all parts of a deployment diagram?
Figure : - 11.5 Elements of Deployment Diagram
Package: - It logically groups element of a UML model. Node: - A physical system
which represents a processing resource, example PC or a host machine. Component
: - It’s the actual implementation or physical module of a UML system. Node inst
ance: - It’s a runtime physical instance of a processing resource.
354
Component Instance: - It represents an implementation unit that has identity at
run time and can contain objects. A component could be contained within a node i
nstance. InterFace :- It specifies the external operations of a class, component
, package, or other element without specifying internal structure. Object: - Ins
tance of a class. Composition shape: - It is a form of aggregation that indicate
s that a part may belong to only one element or life time of the element. Commun
ication: - How an actor Dependency: - Shows relationship between two elements. 2
-Element Constraint: - It shows a constraint on two classes or associations. OR
constraint: - It shows an OR constraint on two classes or associations.
355
(A) Describe the various components in sequence diagrams?
Figure :-11.6 Elements of Sequence diagrams
Object lifeline: - It represents the lifetime of an object creation and its dest
ruction. If the object is created or destroyed during the time period the diagra
m represents, then the lifeline stops or starts at the appropriate point. An obj
ect s destruction is marked with a large X. Activation: - It’s time period durin
g which actor is performing a action. Lifeline :- This says that there exists so
me condition on the object lifetime.
356
Message: - It shows communication between objects that conveys information and r
esults in an action. Message (call):- It’s same like message but also conveys so
me information and results in action. All messages have same definition as the M
essage (Call) given above. 2-Element Constraint: - It shows a constraint on two
classes or associations. OR constraint: - It shows an OR constraint on two class
es or associations.
357
(A) What are the element in State Chart diagrams ?
Figure :- 11.7 Elements of State Chart Diagrams
State: - It’s a condition when following events occur:√ √ √ Object satisfies a c
ondition. Or performs a action. Or waits for a event to happen.
358
Composite State :- It has one or more sub states. Initial State: - It represents
a state before any event occurs. Final State: - Represents completion of an act
ivity. Transition :- Shows the change of one state to other. Transition Fork: -
Denotes beginning of parallel path activities. Transition Join: - Denotes mergin
g of parallel path activities. Decision: - Indicates condition to move to differ
ent states. Shallow History: - Represents the state last visited. When a transit
ion to the indicator fires, an object resumes the state it last had at the same
level as the history indicator. Deep history: A deep history allows you to retur
n from whatever sub-state, whereas a shallow one only remembers the initial stat
e of a composite state. 2-Element Constraint: - It shows a constraint on two cla
sses or associations. OR constraint: - It shows an OR constraint on two classes
or associations.
359
(A)Describe different elements in Static Chart diagrams ?
Figure :- 11.8 Elements of Static diagrams
Package: - It logically groups element of a UML model. Class: - They describe se
t of objects with similar structure, behavior, and relationships. Data Type :- A
data type is an instance of the DataType metaclass defined in the UML metamodel
. A data type declares a type of class attribute. This type is available as a st
ring, you can include it when you define attributes for other elements in a mode
l.
360
Interface :- It specifies the externally operations of a class, component, packa
ge, or other element without specifying internal structure. Generalization: - It
is a relationship between a specific element and a general element, such that t
he specific element is fully consistent with the general element and includes ad
ditional information (such as attributes and associations). For example, the cla
sses Car, Bike, Cycle can all be specific elements of a more general abstract cl
ass element named vehicle. Binary Association: - It’s a relationship between two
classes. Composition: - A composition is a form of aggregation that indicates t
hat a part may belong to only one whole and that the lifetime of the whole deter
mines the lifetime of the part. Dependency: - Shows relationship between two ele
ments. Utility : - Whatever Attributes and operations you define for a utility b
ecome global variables and procedures. Subsystem: - It is a package that contain
s the contents of the entire system or an entire model within the system. Parame
terized class: - It is a template that describes a class with one or more unboun
d formal parameters. Binding: - It is a kind of dependency that indicates a bind
ing of parameterized class or template, parameters to actual values to create a
bound, or no parameterized, element. Bound element : - Parameters of the paramet
erized class are bound to actual values. Object: - Represents instance of a clas
s. Link: - Represents Links between objects. N-ary Link: - Represents link betwe
en an objects. Meta-Class: - Whose instances are classes. Signal: - Specifies st
imulus between classes for which there is no reply. It is an element which can b
e generalized and is defined independently of the classes handling the signal. E
xception: - Signal raised because of bad execution. Trace: - Indicates historica
l relationship between two elements.
361
Refinement: - Refinement is a kind of dependency that indicates a historical or
derivation relationship between two elements with a mapping between them. Usage
: - Usage is a kind of dependency that indicates that one element requires the p
resence of another element for its correct implementation or functioning. 2-Elem
ent Constraint: - It shows a constraint on two classes or associations. OR const
raint: - It shows an OR constraint on two classes or associations. (A)Explain th
e different elements of a Use Case ?
362
Figure :-11.9 Different Elements of Use Case
Package: - It logically groups element of a UML model. Use Case :- It represents
a set of events. Actor : - Role played by an outside object. Interface :- It sp
ecifies the externally operations of a class, component, package, or other eleme
nt without specifying internal structure. Communication: - How an actor Dependen
cy shows relationship between two elements.
363
Extends: - Indicates that the elements come in parent child relationship where o
ne element inherits other elements behavior. Uses: - Here one element uses the o
ther elements behavior. The main difference between Extends and Uses is a “Is a”
and “Has a” relationship. “Is a” relationship defines a child parent relationsh
ip. Example “XYZ” is a child of “PQR”. “Has a” relationship defines an aggregati
on relationship that “XYZ” has a “BLUE SHIRT”. System boundary: - Indicates the
system boundary of a Use case. 2-Element Constraint: - It shows a constraint on
two classes or associations. OR constraint: - It shows an OR constraint on two c
lasses or associations. Twist: - What is the difference between Activity and seq
uence diagrams?(I leave this to the readers)
364
12. Project Management
Note:- This topic is meant specially for .NET programmers who are looking for be
tter position rather than simple programmer jobs. Project management is not ever
ybody’s cup of tea. I have seen 10 year good decent technical guys do not get th
is position easily. But street smart programmers with average technical guys do
really well. How much ever I try to cover this topic in this book.....it has so
many variations that it’s really difficult to predict every scenario of project
management interview. But definitely I will try to cover the basics by which you
can at least get a feel of what is asked.
(B) What is project management?
Applying knowledge, skills, tools, techniques in project and deliver project del
iverables is a short definition of project management.It’s basically managing pr
oject time, cost and scope.
(A) Is spending in IT projects constant through out the project?
Note:- It’s a tricky question, to know how much depth you have regarding costing
of projects. Normally in initial stage of projects (requirement and design phas
e) the cost is very less (as you need maximum business analyst and architecture)
, but as the project proceeds cost factor starts increasing. The cost is maximum
in coding phase (this is where you require programmers, project leads and proje
ct manager). Later when the project is in testing and acceptance phase cost is l
ess as we will need only one or two programmers for removing bugs, than the whol
e team.
365
Figure :- 12.1 Graph showing cost variation in project.
(B) Who is a stakeholder ?
A stakeholder is anyone who has something to gain or lose as a result of the com
pletion or failure of this project or phase Note:- It’s not only the end custome
r the stakeholder. Project managers, Project Lead, even programmers, testing dep
artment etc. are stake holders of project. So during project management intervie
w whenever you refer stake holders be clear about the terminology.
(B) Can you explain project life cycle ?
Twist :- How many phases are there in software project ?
366
Figure :- 12.2 Life cycle of a project
There are five stages of any project initiating, planning, executing, controllin
g, and closeout. These are general phases and change according to domain. Exampl
e when writing a book
367
I will have following mappings initiating(contacting publishers,getting copy rig
ht etc), planning(Table of contents of book, Number of chapters , tool to use, c
hapter wise deadlines etc), executing(Actually writing the book), controlling(pr
oof reading, language checks, page alignments etc), and closeout(Finally printin
g and on the shelf for sale). So this classification is at very broader level ,
for software development the above figure shows the mapping. During Software pro
ject management interview expected answer is requirement phase, design phase, co
ding phase, testing phase and project closure. But you can just impress the answ
er by giving a general answer and then showing the mapping.
(B) Are risk constant through out the project ?
* Never say that risk is high through out the project. Risk is high at the start
of projects, but by proper POC (Proof of concept) risk is brought in control.Go
od project managers always have proper risk mitigation plan at the start of proj
ect. As the project continues one by one risk is eliminated thus bringing down t
he risk.
368
Figure :-12.3 Risk % according to project phases
(A)Can you explain different software development life cycles ?
Note:- This questions is asked to test that as a project manager do you have a k
now how of all the project life cycles.In PMP (Project management plan) you have
to specify saying which
369
software development model you will follow. Definitely depending on client and p
roject scenarios it’s the project manager’s responsibility to choose a developme
nt cycle. SDLC (System Development Life Cycle) is overall process of developing
information systems through multi stage process systems from investigation of in
itial requirements through analysis, design, implementation and maintenance. The
days are gone when one COBOL programmer used to analyze, test and implement sof
tware systems. Systems have become complex, huge team members are involved, arch
itects, analyst, programmers, testers, users etc. To manage this number of SDLC
models have been created. Following are popular models which are listed:√ √ √ √
√ Waterfall Model. Spiral Model. Build and Fix model. Rapid prototyping Model. I
ncremental Model.
This section we will go into depth of different SDLC models.
Water Fall Model
This is the oldest model. It has sequence of stages; output of one stage becomes
input of other. Following are stages in Waterfall model:√ √ System Requirement:
- This is initial stage of the project where end user requirements are gathered
and documented. System Design: - In this stage detail requirements, screen layo
ut, business rules, process diagram, pseudo code and other documentations are pr
epared. This is first step in technical phase. Implementation: - Depending on th
e design document actual code is written here. Integration and Testing: - All pi
eces are brought together and tested. Bugs are removed in this phase.
√ √
370
√
Acceptance, Installation and Deployment: - This is final stage where software is
put in production and runs actual business.
√ Maintenance: - This is least glamorous phase which runs forever. Code Changes,
correction, addition etc are done in this phase. Waterfall is suited for low ri
sk in areas of User Interface and performance requirements, but high risk in bud
get and schedule predictability and control. Waterfall assumes that all requirem
ents can be specified in advance. But unfortunately requirement grows and change
s through various stages, so it needs feedback from one stage to other.
Spiral Model
Spiral Model removes the drawback of waterfall model, by providing emphasis to g
o back and reiterate earlier stages a number of times as project progresses. On
broader level it’s a series of short waterfall cycles, each producing an early p
rototype representing a part of entire project. It also helps demonstrate a Proo
f of Concept at early software life cycle.
Build and Fix Model
This is the way free-lancers work Write some code and keep modifying it until th
e customer is happy. This approach can be quite dangerous and risky.
Rapid Prototyping Model
This model is also called as Rapid Application Development. The initial emphasis
is on creating prototype that look and acts like the desired product. Prototype
can be created by using tools which is different from those used for final prod
uct. Once the prototype is approved, its discarded and real software development
is started from scratch. The problem with this model is that sometimes the prot
otype moves ahead to become the final live product which can be bad from design
point of view. It’s a effective model but can have higher costing than other mod
els as you require programmers during the initial phase of the software cycle.
371
Incremental Model
In this model we divide products into builds, where section of product are creat
ed and tested separately. Here errors are found in requirement phase itself, use
r feedback is taken for each stage and code is tested after it is written.
(B) What is triple constraint triangle in project management ?
Figure :- 12.4 Project Management Triangle
Project Management triangle is depicted as Cost, Schedule and scope.These three
aspects form the sides of triangle and the customer is the center point.As custo
mer is always concerned about Cost,Scope and Schedule, so in order to get custom
er satisfaction project manager should deliver all scope in propose schedule and
cost. If we want to disturb any one of the legs then the other two legs get aff
ected. Example if customer increases the scope then other two sides of the trian
gle also get affected a lot. Note:- During project management interviews it’s ra
re that you will be asked directly about constraint triangle. But when you are a
sked about what are the main factors that affect customer satisfaction you can r
efer this triangle.
372
(B)What is a project baselines ?
It defines a logical closure of any deliverable or cycle. Example you have compl
eted the requirement phase with sign off from the client on the requirement docu
ment.So you put a baseline and say that further any changes to this document are
change request. Versioning of source code is one type of baseline.
(B)What is effort variance?
Effort Variance = (Actual effort – Estimated Effort) / Estimated Effort.
(B)How is normally a project management plan document organized ?
PMP document forms the bible of a project. It has normally these sections :√ √ √
√ √ √ √ √ √ √ √ Project summary Project organization hierarchy WBS / Activity l
ist to be performed with schedule. Work product identification (In short who wil
l do what) Project schedule( GANNT chart or PERT chart). Estimated Cost and comp
letion. Project requirements. Risk identification. Configuration management sect
ion. Quality section. Action Item status.
(I)How do you estimate a project?
There are many techniques available for estimating a project:-
373
√ √ √
Function points Use Case points WBS etc etc.
(B)What is CAR (Causal Analysis and Resolution)?
The basic purpose of CAR is to analyze all defects, problems and good practices/
positive triggers in projects, perform a root cause analysis of the same, identi
fy respective corrective and preventive actions and track these to closure. The
advantage of CAR is that root causes are scientifically identified and their cor
rective and preventive actions are carried out. CAR needs to be performed at pro
ject initiation, all phase and project ends and on a monthly basis. Fishbone dia
gram is one of the ways you can do CAR.
(B) What is DAR (Decision Analysis and Resolution) ?
Decision Analysis and Resolution is to analyze possible decisions using a formal
evaluation process that identifies alternatives against established criteria. E
xample in a project you are said to use third party tools so you will not depend
on only one tool but evaluate three to four more tools so that in case of probl
ems you have alternatives. This is called as DAR
(B) What is a fish bone diagram ?
Twist:- What is Ishikawa diagram ? Dr. Kaoru Ishikawa, invented the fishbone dia
gram. Therefore, it can be also referred as Ishikawa diagram. Fishbone diagram i
s an analysis diagram which provides a systematic way of looking at effects and
the causes that create or contribute to those effects. Because of the function o
f the fishbone diagram, it may be referred to as a cause-and-effect diagram. The
design of the diagram looks much like the skeleton of a fish. Therefore, it is
often referred to as the fishbone diagram. Fishbone diagram helps in categorizin
g potential causes of problems or issues in an orderly way and in identifying ro
ot causes.
374
Below is a sample fish bone diagram which shows why a project dead line was not
met. The middle arrow is the main problem “Deadline not met”. Then we start anal
yzing other problems which has led to this problem.Example There is client probl
em -- as he is always changing the requirement -- this is caused because the com
pany did not sign the SRS --and this happened as proper project management proce
dures where not at place. So to solve this problem we either appoint a project m
anager or give training on project management to senior team members.
Figure :- 12.5 Sample fish bone diagram
(B) What is pareto principle ?
375
Twist :- What is 80/20 principle ? Pareto principle also paraphrased as 80/20 pr
inciple is simple effective problem tackling way in management. It says that 20%
of your problems lead to other 80 % of problems. So rather than concentrating o
n the 80% of problem if you concentrate on 20% of problems you can save lot of t
rouble. So in pareto you analyze the problems and only concentrate on 20% of you
r vital problems. In projects the first 10% and the last 10% of project form the
vital part of project.
(B)How do you handle change request?
Normally change request are handled by preparing an Impact analysis document and
then doing re-estimation. Example you have an on going project, which has a cus
tomer table. Now customer want to also have addresses assigned to it. So you nor
mally raise a change request and then do an impact analysis of the same. Dependi
ng on the impact you estimate and let know the client about the financial aspect
of the project. Once client sign off or the upper management agrees to the chan
ge request you move ahead with implementation.
(I)What is internal change request?
Internal change request are not normally billable change request, it has no fina
ncial gains from the client. Example your architecture division of your company
has said in mid of the project that the architecture has to be modified. Definit
ely this has nothing to do with the client, but you make changes to it this is c
alled as Internal change request.
(B)What is difference between SITP and UTP in testing ?
UTP (Unit Test Plan) are done at smallest unit level or stand alone mode. Exampl
e you have Customer and invoicing module. So you will do test on Customer and In
voice module independently. But later when we want test both customer and invoic
e in one set we integrate them and test it. So that’s is SITP (System Integratio
n Test Plan) UTP can be done using NUNIT. Unit testing is done normally by devel
opers and System testing is done normally by testing department in integration m
ode.
(B)What is the software you have used for project management?
Many companies have there own software defined. There are many project managemen
t software available at this moment in market but this can vary from company to
company
376
, worst it can very from project to project. But Microsoft project is the most u
sed software at this moment.So just brush your skills on Microsoft project , its
used heavily across industry.
(I)What are the metrics followed in project management?
Twist: - What metrics will you look at in order to see the project is moving suc
cessfully? Most metric sets deal with a variation of these attributes and are ch
osen to help project managers gain insight into their product (size, software qu
ality, rework), process (rework, software quality) and project (effort, schedule
). But below is a broader classification :-
Project Management Metrics milestone metrics
√ √ √ number of milestones number of proved requirements per milestone controlli
ng level metrics
risk metrics
√ √ √ probability of resources availability probability of the requirements vali
dity
risk indicators (long schedules, inadequate cost estimating, excessive paperwork
, error-prone modules, canceled projects, excessive schedule pressure, low quali
ty, cost overruns, creeping user requirements, excessive time to market, unused
or unusable software, unanticipated acceptance criteria, hidden errors) √ applic
ation risk metrics
workflow metrics
√ walkthrough metrics
377
√ √
traceability metrics variance metrics
controlling metrics
√ √ √ √ size of control elements structure of control elements documentation lev
el tool application level
management database metrics
√ √ √ √ √ data quality metrics management data complexity data handling level (p
erformance metrics) visualization level safety and security metrics
Quality Management Metrics customer satisfaction metrics
√ √ √ √ characteristics size metrics characteristics structure metrics empirical
evaluation metrics data presentation metrics
review metrics
√ √ number of reviews in the process review level metrics
378
√ √ √
review dependence metrics review structure metrics review resources metrics
productivity metrics
√ √ √ actual vs. planned metrics performance metrics productivity vs. quality me
trics
efficiency metrics
√ √ √ time behavior metrics resources behavior metrics actual vs. Planned metric
s
quality assurance metrics
√ √ √ √ quality evaluation metrics error prevention metrics measurement level da
ta analysis metrics
Configuration Management Metrics change control metrics
√ √ √ √ size of change dependencies of changes change interval metrics revisions
metrics
379
version control metrics
√ √ √ √ √ number of versions number of versions per customer version differences
metrics releases metrics (version architecture) data handling level
Note:- Following are some questions who do not have a specific answer and vary f
rom person to person or are out of the scope of book. This book will list down t
he questions just go through them.
(B)You have people in your team who do not meet there deadlines or do not perfor
m what are the actions you will take ?
Twist :- Two of your resources have conflicts between them how would you sort it
out ? In such kind of question they want to see your delegation skills. The bes
t answer to this question is a job of a project manager is managing projects and
not problems of people, so I will delegate this work to HR or upper authority..
.. Thanks to my Project Manager for this beautiful answer.
(B)What is black box testing and White box testing?
Black box testing is also termed as functional testing. It ignores how the inter
nal functionality of a system works and depends only what are the outputs on spe
cified inputs. Source code availability is not an important in back box testing.
Black box testing is mostly to ensure that it meets the user functionality. Acc
ording to IEEE standards following are characteristics of Black box testing:√ “T
esting that ignores the internal mechanism of a system or component and focuses
solely on the outputs generated in response to selected inputs and execution con
ditions;”
380
√
“Testing conducted to evaluate the compliance of a system or component with spec
ified functional requirements.”
One of the ways of black box testing is Manual testing what the tester performs.
For instance you can install the application on a machine and tester starts tes
ting is a type of black box testing. In this case the tester is completely unawa
re of the how the program logic flows and how its coded etc. White box testing i
s opposite to Black box it requires internal know how of how the logic flows. As
this testing needs know how of the internal structure it can only be done progr
ammers. Unit testing is one of the ways of doing White box testing in which prog
rammers use NUNIT or JNUIT to test each class individually. White box testing ca
n be done by programmer by either stepping through the code or testing the class
es and components in isolation.
(B) What’s the difference between Unit testing, Assembly testing and Regression
testing?
Unit testing is also called as Component testing. Unit testing ensures that reli
able program unit meets their requirements. Unit testing is normally conducted b
y programmer under the supervision of the project lead or the team Lead. Main ob
jective of this testing is to test each unit in isolation and individually. This
is done by knowing what are the inputs to the unit and what the expected output
s for the same. Unit testing is a white box activity. Unit test normally comes i
n the implementation phase of the project. For instance in the below figure we a
re trying to do unit testing on the customer class. So we create the object of C
ustomer class assign “CustomerCode” and “Age” property and check for the respons
e. For instance in this condition we tried to pass a non-numeric value to the “A
ge” property and the class threw an error saying “Age should be numeric”. So her
e the basic unit testing entity is your class.
381
Figure 12.6 : - Unit testing for sample Customer class
But unit testing is not limited to a component, object or function. So definitio
n of a unit testing will depend on the approach. Below are some examples of unit
testing:√ √ √ √ Check points in UI like tab orders, error messages, look and fe
el etc. Class, object, component level testing as said previously. In case of fu
nctional programming can be a simple method or function. Logic testing for algor
ithms. Some projects can have some critical algorithm for instance some kind of
custom sorting, security implementation etc. So that logic can be tested indepen
dently.
But the general thumb rule of what is Unit in Unit testing is that the module se
lf contained and by itself. Assembly testing goes one step ahead than unit testi
ng. It demonstrates that can the modules interact in a correct, stable and prope
r manner as defined by the functional specifications provided by the client. Ass
embly testing is Black box testing style and also called as Integration testing.
For instance in the above unit test of the “Customer” class, testing was done i
n isolation. But in actually the “Customer” class is not going to be stand alone
rather it will be used more in conjunction with the “Product” class and also wi
ll have UI to do the same. So in short the “Customer” class will work with two m
ore entity
382
one is the “UI” and the other is the “Product” class. So normally assembly testi
ng is done through UI but not necessarily.
Figure 12.7 : - Integration Testing
The above figure defines a simple scenario for integration testing. The same “Cu
stomer” class is now tested with the “UI” and “Product” to see if the interactio
n between them matches according to functional specifications. Regression testin
g ensures that application function properly even if there are changes or enhanc
ements to system.For instance you change the “Product” class still you will run
all the test cases for “Product” , “Customer” and “UI” just to make sure that an
y changes in “Product” class does not affect interaction with other entities. So
you will see when testers do a regression testing they run all the scripts to e
nsure that nothing has been affected.
(I)What is V model in testing?
V model map’s the type of test to the stage of development in a project.
383
Figure 12.8 : - V Model
Unit Testing
Starting from the bottom the first test level is "Unit Testing". It involves che
cking that each feature specified in the "Component Design" has been implemented
in the component. In theory an independent tester should do this, but in practi
ce the developer usually does it, as they are the only people who understand how
a component works. The problem with a component is that it performs only a smal
l part of the functionality of a system, and it relies on co-operating with othe
r parts of the system, which may not have been built yet. To overcome this, the
developer either builds, or uses special software to trick the component into be
lieve it is working in a fully functional system.
Integration Testing
As the components are constructed and tested they are then linked together to ch
eck if they work with each other. It is a fact that two components that have pas
sed all their
384
tests, when connected to each other produce one new component full of faults. Th
ese tests can be done by specialists, or by the developers. Integration Testing
is not focused on what the components are doing but on how they communicate with
each other, as specified in the "System Design". The "System Design" defines re
lationships between components. The tests are organized to check all the interfa
ces, until all the components have been built and interfaced to each other produ
cing the whole system.
System Testing
Once the entire system has been built then it has to be tested against the "Syst
em Specification" to check if it delivers the features required. It is still dev
eloper focused, although specialist developers known as systems testers are norm
ally employed to do it. In essence System Testing is not about checking the indi
vidual parts of the design, but about checking the system as a whole. In fact it
is one giant component. System testing can involve a number of specialist types
of test to see if all the functional and non-functional requirements have been
met. In addition to functional requirements these may include the following type
s of testing for the non-functional requirements: √ √ √ √ √ Performance - Are th
e performance criteria met? Volume - Can large volumes of information be handled
? Stress - Can peak volumes of information be handled? Documentation - Is the do
cumentation usable for the system? Robustness - Does the system remain stable un
der adverse circumstances?
There are many others, the need for which is dictated by how the system is suppo
sed to perform.
Acceptance Testing
Acceptance Testing checks the system against the "Requirements". It is similar t
o systems testing in that the whole system is checked but the important differen
ce is the change in focus:
385
Systems testing checks that the system that was specified has been delivered. Ac
ceptance Testing checks that the system will deliver what was requested. The cus
tomer should always do acceptance testing and not the developer . The customer k
nows what is required from the system to achieve value in the business and is th
e only person qualified to make that judgment. This testing is more of getting t
he answer for whether is the software delivered as defined by the customer. It’s
like getting a green flag from the customer that the software is up to the expe
ctation and ready to be used.
(B)How do you start a project?
Left to the readers
(B)How did you do resource allocations?
Left to the readers
(I) How will you do code reviews ?
The way in which code reviews are done change from person to person and also com
pany to company. But the normally when a project is started project people defin
e their architecture, coding standards etc in their design document. So before s
tarting the code review you will have go through the standards defined in the pr
oject.
(A)What is CMMI?
It is a collection of instructions an organization can follow with the purpose t
o gain better control over its software development process.
(A) What are the five levels in CMMI?
There are five levels of the CMM. According to the SEI,
Level 1 – Initial
At maturity level 1, processes are usually ad hoc and the organization usually d
oes not provide a stable environment. Success in these organizations depends on
the competence and heroics of people in the organization and not on the use of p
roven processes. In spite of this ad hoc, chaotic environment, maturity level 1
organizations often produce products
386
and services that work; however, they frequently exceed the budget and schedule
of their projects. Maturity level 1 organizations are characterized by a tendenc
y to over commit, abandon processes in the time of crisis, and not be able to re
peat their past successes again.
Level 2 – Repeatable
At maturity level 2, software development successes are repeatable. The organiza
tion may use some basic project management to track cost and schedule. Process d
iscipline helps to ensure that existing practices are retained during times of s
tress. When these practices are in place, projects are performed and managed acc
ording to their documented plans. Project status and the delivery of services ar
e visible to management at defined points (for example, at major milestones and
at the completion of major tasks). Basic project management processes are establ
ished to track cost, schedule, and functionality. The necessary process discipli
ne is in place to repeat earlier successes on projects with similar applications
.
Level 3 – Defined
At maturity level 3, processes are well characterized and understood, and are de
scribed in standards, procedures, tools, and methods. The organization’s set of
standard processes, which is the basis for level 3, is established and improved
over time. These standard processes are used to establish consistency across the
organization. Projects establish their defined processes by the organization’s
set of standard processes according to tailoring guidelines. The organization’s
management establishes process objectives based on the organization’s set of sta
ndard processes and ensures that these objectives are appropriately addressed. A
critical distinction between level 2 and level 3 is the scope of standards, pro
cess descriptions, and procedures. At level 2, the standards, process descriptio
ns, and procedures may be quite different in each specific instance of the proce
ss (for example, on a particular project). At level 3, the standards, process de
scriptions, and procedures for a project are tailored from the organization’s se
t of standard processes to suit a particular project or organizational unit.
387
Level 4 – Managed
Using precise measurements, management can effectively control the software deve
lopment effort. In particular, management can identify ways to adjust and adapt
the process to particular projects without measurable losses of quality or devia
tions from specifications. Sub processes are selected that significantly contrib
ute to overall process performance. These selected sub processes are controlled
using statistical and other quantitative techniques. A critical distinction betw
een maturity level 3 and maturity level 4 is the predictability of process perfo
rmance. At maturity level 4, the performance of processes is controlled using st
atistical and other quantitative techniques, and is quantitatively predictable.
At maturity level 3, processes are only qualitatively predictable.
Level 5 – Optimizing
Maturity level 5 focuses on persistently improving process performance through b
oth incremental and innovative technological improvements. Quantitative processi
mprovement objectives for the organization are established, continually revised
to reflect changing business objectives, and used as criteria in managing proces
s improvement. The effects of deployed process improvements are measured and eva
luated against the quantitative process-improvement objectives. Both the defined
processes and the organization set of standard processes are targets of measura
ble improvement activities. Process improvements to address common causes of pro
cess variation and measurably improve the organization’s processes are identifie
d, evaluated, and deployed. Optimizing processes that are nimble, adaptable and
innovative depends on the participation of an empowered workforce aligned with t
he business values and objectives of the organization. The organization’s abilit
y to rapidly respond to changes and opportunities is enhanced by finding ways to
accelerate and share learning. A critical distinction between maturity level 4
and maturity level 5 is the type of process variation addressed. At maturity lev
el 4, processes are concerned with addressing special causes of process variatio
n and providing statistical predictability of the results. Though processes may
produce predictable results, the results may be insufficient to achieve the esta
blished objectives. At maturity level 5, processes are concerned with addressing
common causes of process variation and changing the process (that is, shifting
the mean of the
388
process performance) to improve process performance (while maintaining statistic
al probability) to achieve the established quantitative process-improvement obje
ctives. Note: - I am sure during interview specially the SQA guys expect all the
different levels of CMMI to be in mind. So below is the figure which will help
you remembering the same.
Figure 12.9 : - CMMI Levels
389
(A) What is continuous and staged representation?
CMMI contains 25 key process areas which organization can follow to adapt CMMI.
√ √ √ √ √ √ √ √ √ √ √ √ √ √ √ √ √ √ √ √ √ √ √
390
Causal Analysis and Resolution (CAR) Configuration Management (CM) Decision Anal
ysis and Resolution (DAR) Integrated Project Management (IPM) Integrated Supplie
r Management (ISM) Integrated Teaming (IT) Measurement and Analysis (MA) Organiz
ational Environment for Integration (OEI) Organizational Innovation and Deployme
nt (OID) Organizational Process Definition (OPD) Organizational Process Focus (O
PF) Organizational Process Performance (OPP) Organizational Training (OT) Produc
t Integration (PI) Project Monitoring and Control (PMC) Project Planning (PP) Pr
ocess and Product Quality Assurance (PPQA) Quantitative Project Management (QPM)
Requirements Development (RD) Requirements Management (REQM) Risk Management (R
SKM) Supplier Agreement Management (SAM) Technical Solution (TS)
√ √
Validation (VAL) Verification (VER)
The method by which company wants to adapt to CMMI is called a representation. S
o either organization can adapt for staged or continuous representation. In the
continuous representation process areas are organized by functional area. For ex
ample, a company interested to improve its Project Management capability would f
ocus on IPM, ISM, IT, PMC, PP, QPM, RSKM and SAM.
Process Management
OID - Organizational Innovation and Deployment OPD - Organizational Process Defi
nition OPF - Organizational Process Focus OPP - Organizational Process Performan
ce OT - Organizational Training
Project Management
IPM - Integrated Project Management ISM - Integrated Supplier Management IT - In
tegrated Teaming PMC - Project Monitoring and Control PP - Project Planning QPM
- Quantitative Project Management RSKM - Risk Management SAM - Supplier Manageme
nt Agreement
391
Engineering
PI - Product Integration REQM - Requirements Management RD - Requirements Develo
pment TS - Technical Solution VAL - Validation VER - Verification
Support
CAR - Casual Analysis and Resolution CM - Configuration Management DAR - Decisio
n Analysis and Resolution MA - Measurement and Analysis OEI - Organizational Env
ironment for Integration PPQA - Process and Product Quality Assurance
Staged representation
While in staged representation the concept of levels comes in to picture. In the
staged representation process areas are organized by organizational maturity le
vel. For example, a company interested to obtain a Maturity Level 2 rating would
require company processes covering all of the Maturity Level 2 process areas.
Maturity Levels 2
CM - Configuration Management MA - Measurement and Analysis PMC - Project Monito
ring and Control PP - Project Planning PPQA - Process and Product Quality Assura
nce
392
REQM - Requirements Management SAM - Supplier Management Agreement
Maturity Level 3
DAR - Decision Analysis and Resolution IPM - Integrated Project Management ISM -
Integrated Supplier Management IT - Integrated Teaming OEI - Organizational Env
ironment for Integration OPD - Organizational Process Definition OPF - Organizat
ional Process Focus OT - Organizational Training PI - Product Integration RD - R
equirements Development RSKM - Risk Management TS - Technical Solution VAL - Val
idation VER - Verification
Maturity Level 4
QPM - Quantitative Project Management OPP - Organizational Process Performance
393
Maturity Level 5
CAR - Casual Analysis and Resolution OID - Organizational Innovation and Deploym
ent
(A)Can you explain the process areas?
Note: - No one is going to ask such a question. But they would like to know at l
east the purpose of each KPA. Second they would like to know what you did to att
ain compatibility to these process areas. For instance you say that you did Orga
nizational Process Definition. They would like to know how you did it. For insta
nce you can justify it by saying that you made standard documents for coding sta
ndards which was then followed at the organization level for reference. Normally
every one follows process it’s only that they do not know. So try to map the KP
A to the process what you follow. The only purpose to paste all the KPA is if in
case you are looking for some higher positions in bug companies they really exp
ect you to speak in term of KPA rather than generic term. This whole stuff can b
e like a quick reference for you before entering the interview room. Each proces
s area is defined by a set of goals and practices. There are two categories of g
oals and practices: generic and specific. Generic goals and practices are a part
of every process area. Specific goals and practices are specific to a given pro
cess area. A process area is satisfied when company processes cover all of the g
eneric and specific goals and practices for that process area. Generic goals and
practices Generic goals and practices are a part of every process area. GG 1 Ac
hieve Specific Goals GP 1.1 Perform Base Practices GG 2 Institutionalize a Manag
ed Process GP 2.1 Establish an Organizational Policy GP 2.2 Plan the Process GP
2.3 Provide Resources GP 2.4 Assign Responsibility GP 2.5 Train People
394
GP 2.6 Manage Configurations GP 2.7 Identify and Involve Relevant Stakeholders G
P 2.8 Monitor and Control the Process GP 2.9 Objectively Evaluate Adherence GP 2
.10 Review Status with Higher Level Management GG 3 Institutionalize a Defined P
rocess GP 3.1 Establish a Defined Process GP 3.2 Collect Improvement Information
GG 4 Institutionalize a Quantitatively Managed Process GP 4.1 Establish Quantit
ative Objectives for the Process GP 4.2 Stablize Subprocess Performance GG 5 Ins
titutionalize an Optimizing Process GP 5.1 Ensure Continuous Process Improvement
GP 5.2 Correct Root Causes of Problems Process areas The CMMI contains 25 key p
rocess areas indicating the aspects of product development that are to be covere
d by company processes. Causal Analysis and Resolution (CAR) A Support process a
rea at Maturity Level 5 Purpose The purpose of Causal Analysis and Resolution (C
AR) is to identify causes of defects and other problems and take action to preve
nt them from occurring in the future. Specific Practices by Goal SG 1 Determine
Causes of Defects SP 1.1-1 Select Defect Data for Analysis SP 1.2-1 Analyze Caus
es
395
SG 2 Address Causes of Defects SP 2.1-1 Implement the Action Proposals SP 2.2-1
Evaluate the Effect of Changes SP 2.3-1 Record Data Configuration Management (CM
) A Support process area at Maturity Level 2 Purpose The purpose of Configuratio
n Management (CM) is to establish and maintain the integrity of work products us
ing configuration identification, configuration control, configuration status ac
counting, and configuration audits. Specific Practices by Goal SG 1 Establish Ba
selines SP 1.1-1 Identify Configuration Items SP 1.2-1 Establish a Configuration
Management System SP 1.3-1 Create or Release Baselines SG 2 Track and Control C
hanges SP 2.1-1 Track Change Requests SP 2.2-1 Control Configuration Items SG 3
Establish Integrity SP 3.1-1 Establish Configuration Management Records SP 3.2-1
Perform Configuration Audits Decision Analysis and Resolution (DAR) A Support p
rocess area at Maturity Level 3 Purpose
396
The purpose of Decision Analysis and Resolution (DAR) is to analyze possible dec
isions using a formal evaluation process that evaluates identified alternatives
against established criteria. Specific Practices by Goal SG 1 Evaluate Alternati
ves SP 1.1-1 Establish Guidelines for Decision Analysis SP 1.2-1 Establish Evalu
ation Criteria SP 1.3-1 Identify Alternative Solutions SP 1.4-1 Select Evaluatio
n Methods SP 1.5-1 Evaluate Alternatives SP 1.6-1 Select Solutions Integrated Pr
oject Management (IPM) A Project Management process area at Maturity Level 3 Pur
pose The purpose of Integrated Project Management (IPM) is to establish and mana
ge the project and the involvement of the relevant stakeholders according to an
integrated and defined process that is tailored from the organization s set of s
tandard processes. Specific Practices by Goal SG 1 Use the Project s Defined Pro
cess SP 1.1-1 Establish the Project s Defined Process SP 1.2-1 Use Organizationa
l Process Assets for Planning Project Activities SP 1.3-1 Integrate Plans SP 1.4
-1 Manage the Project Using the Integrated Plans SP 1.5-1 Contribute to the Orga
nizational Process Assets SG 2 Coordinate and Collaborate with Relevant Stakehol
ders SP 2.1-1 Manage Stakeholder Involvement
397
SP 2.2-1 Manage Dependencies SP 2.3-1 Resolve Coordination Issues SG 3 Use the P
roject s Shared Vision for IPPD SP 3.1-1 Define Project s Shared Vision for IPPD
SP 3.2-1 Establish the Project s Shared Vision SG 4 Organize Integrated Teams f
or IPPD SP 4.1-1 Determine Integrated Team Structure for the Project SP 4.2-1 De
velop a Preliminary Distribution of Requirements to Integrated Teams SP 4.3-1 Es
tablish Integrated Teams Integrated Supplier Management (ISM) A Project Manageme
nt process area at Maturity Level 3 Purpose The purpose of Integrated Supplier M
anagement (ISM) is to proactively identify sources of products that may be used
to satisfy the project s requirements and to manage selected suppliers while mai
ntaining a cooperative project-supplier relationship. Specific Practices by Goal
SG 1 Analyze and Select Sources of Products SP 1.1-1 Analyze Potential Sources
of Products SP 1.2-1 Evaluate and Determine Sources of Products SG 2 Coordinate
Work with Suppliers SP 2.1-1 Monitor Selected Supplier Processes SP 2.2-1 Evalua
te Selected Supplier Work Products SP 2.3-1 Revise the Supplier Agreement or Rel
ationship Integrated Teaming (IT) A Project Management process area at Maturity
Level 3 Purpose
398
The purpose of Integrated Teaming (IT) is to form and sustain an integrated team
for the development of work products. Specific Practices by Goal SG 1 Establish
Team Composition SP 1.1-1 Identify Team Tasks SP 1.2-1 Identify Needed Knowledg
e and Skills SP 1.3-1 Assign Appropriate Team Members SG 2 Govern Team Operation
SP 2.1-1 Establish a Shared Vision SP 2.2-1 Establish a Team Charter SP 2.3-1 D
efine Roles and Responsibilities SP 2.4-1 Establish Operating Procedures SP 2.5-
1 Collaborate among Interfacing Teams Measurement and Analysis (MA) A Support pr
ocess area at Maturity Level 2 Purpose The purpose of Measurement and Analysis (
MA) is to develop and sustain a measurement capability that is used to support m
anagement information needs. Specific Practices by Goal SG 1 Align Measurement a
nd Analysis Activities SP 1.1-1 Establish Measurement Objectives SP 1.2-1 Specif
y Measures SP 1.3-1 Specify Data Collection and Storage Procedures SP 1.4-1 Spec
ify Analysis Procedures SG 2 Provide Measurement Results SP 2.1-1 Collect Measur
ement Data
399
SP 2.2-1 Analyze Measurement Data SP 2.3-1 Store Data and Results SP 2.4-1 Commu
nicate Results Organizational Environment for Integration (OEI) A Support proces
s area at Maturity Level 3 Purpose The purpose of Organizational Environment for
Integration (OEI) is to provide an Integrated Product and Process Development (
IPPD) infrastructure and manage people for integration. Specific Practices by Go
al SG 1 Provide IPPD Infrastructure SP 1.1-1 Establish the Organization s Shared
Vision SP 1.2-1 Establish an Integrated Work Environment SP 1.3-1 Identify IPPD
-Unique Skill Requirements SG 2 Manage People for Integration SP 2.1-1 Establish
Leadership Mechanisms SP 2.2-1 Establish Incentives for Integration SP 2.3-1 Es
tablish Mechanisms to Balance Team and Home Organization Responsibilities Organi
zational Innovation and Deployment (OID) A Process Management process area at Ma
turity Level 5 Purpose The purpose of Organizational Innovation and Deployment (
OID) is to select and deploy incremental and innovative improvements that measur
ably improve the organization s processes and technologies. The improvements sup
port the organization s quality and process-performance objectives as derived fr
om the organization s business objectives.
400
Specific Practices by Goal SG 1 Select Improvements SP 1.1-1 Collect and Analyze
Improvement Proposals SP 1.2-1 Identify and Analyze Innovations SP 1.3-1 Pilot
Improvements SP 1.4-1 Select Improvements for Deployment SG 2 Deploy Improvement
s SP 2.1-1 Plan the Deployment areas SP 2.2-1 Manage the Deployment SP 2.3-1 Mea
sure Improvement Effects Organizational Process Definition (OPD) A Process Manag
ement process area at Maturity Level 3 Purpose The purpose of Organizational Pro
cess Definition (OPD) is to establish and maintain a usable set of organizationa
l process assets. Specific Practices by Goal SG 1 Establish Organizational Proce
ss Assets SP 1.1-1 Establish Standard Processes SP 1.2-1 Establish Life-Cycle Mo
del Descriptions SP 1.3-1 Establish Tailoring Criteria and Guidelines SP 1.4-1 E
stablish the Organization s Measurement Repository SP 1.5-1 Establish the Organi
zation s Process Asset Library Organizational Process Focus (OPF)
401
A Process Management process area at Maturity Level 3 Purpose The purpose of Org
anizational Process Focus (OPF) is to plan and implement organizational process
improvement based on a thorough understanding of the current strengths and weakn
esses of the organization s processes and process assets. Specific Practices by
Goal SG 1 Determine Process Improvement Opportunities SP 1.1-1 Establish Organiz
ational Process Needs SP 1.2-1 Appraise the Organization s Processes SP 1.3-1 Id
entify the Organization s Process Improvements SG 2 Plan and Implement Process I
mprovement Activities SP 2.1-1 Establish Process Action Plans SP 2.2-1 Implement
Process Action Plans SP 2.3-1 Deploy Organizational Process Assets SP 2.4-1 Inc
orporate Process-Related Experiences into the Organizational Process Assets Orga
nizational Process Performance (OPP) A Process Management process area at Maturi
ty Level 4 Purpose The purpose of Organizational Process Performance (OPP) is to
establish and maintain a quantitative understanding of the performance of the o
rganization s set of standard processes in support of quality and process-perfor
mance objectives, and to provide the process performance data, baselines, and mo
dels to quantitatively manage the organization s projects. Specific Practices by
Goal SG 1 Establish Performance Baselines and Models SP 1.1-1 Select Processes
402
SP 1.2-1 Establish Process Performance Measures SP 1.3-1 Establish Quality and P
rocess Performance Objectives SP 1.4-1 Establish Process Performance Baselines S
P 1.5-1 Establish Process Performance Models Organizational Training (OT) A Proc
ess Management process area at Maturity Level 3 Purpose The purpose of Organizat
ional Training (OT) is to develop the skills and knowledge of people so that the
y can perform their roles effectively and efficiently. Specific Practices by Goa
l SG 1 Establish an Organizational Training Capability SP 1.1-1 Establish the St
rategic Training Needs SP 1.2-1 Determine Which Training Needs Are the Responsib
ility of the Organization SP 1.3-1 Establish an Organizational Training Tactical
Plan SP 1.4-1 Establish Training Capability SG 2 Provide Necessary Training SP
2.1-1 Deliver Training SP 2.2-1 Establish Training Records SP 2.3-1 Assess Train
ing Effectiveness Product Integration (PI) An Engineering process area at Maturi
ty Level 3 Purpose
403
The purpose of Product Integration (PI) is to assemble the product from the prod
uct components, ensure that the product, as integrated, functions properly and d
eliver the product. Specific Practices by Goal SG 1 Prepare for Product Integrat
ion SP 1.1-1 Determine Integration Sequence SP 1.2-1 Establish the Product Integ
ration Environment SP 1.3-1 Establish Product Integration Procedures and Criteri
a SG 2 Ensure Interface Compatibility SP 2.1-1 Review Interface Descriptions for
Completeness SP 2.2-1 Manage Interfaces SG 3 Assemble Product Components and De
liver the Product SP 3.1-1 Confirm Readiness of Product Components for Integrati
on SP 3.2-1 Assemble Product Components SP 3.3-1 Evaluate Assembled Product Comp
onents SP 3.4-1 Package and Deliver the Product or Product Component Project Mon
itoring and Control (PMC) A Project Management process area at Maturity Level 2
Purpose The purpose of Project Monitoring and Control (PMC) is to provide an und
erstanding of the project s progress so that appropriate corrective actions can
be taken when the project s performance deviates significantly from the plan. Sp
ecific Practices by Goal sSG 1 Monitor Project Against Plan SP 1.1-1 Monitor Pro
ject Planning Parameters
404
SP 1.2-1 Monitor Commitments SP 1.3-1 Monitor Project Risks SP 1.4-1 Monitor Dat
a Management SP 1.5-1 Monitor Stakeholder Involvement SP 1.6-1 Conduct Progress
Reviews SP 1.7-1 Conduct Milestone Reviews SG 2 Manage Corrective Action to Clos
ure SP 2.1-1 Analyze Issues SP 2.2-1 Take Corrective Action SP 2.3-1 Manage Corr
ective Action Project Planning (PP) A Project Management process area at Maturit
y Level 2 Purpose The purpose of Project Planning (PP) is to establish and maint
ain plans that define project activities. Specific Practices by Goal SG 1 Establ
ish Estimates SP 1.1-1 Estimate the Scope of the Project SP 1.2-1 Establish Esti
mates of Work Product and Task Attributes SP 1.3-1 Define Project Life Cycle SP
1.4-1 Determine Estimates of Effort and Cost SG 2 Develop a Project Plan SP 2.1-
1 Establish the Budget and Schedule SP 2.2-1 Identify Project Risks
405
SP 2.3-1 Plan for Data Management SP 2.4-1 Plan for Project Resources SP 2.5-1 P
lan for Needed Knowledge and Skills SP 2.6-1 Plan Stakeholder Involvement SP 2.7
-1 Establish the Project Plan SG 3 Obtain Commitment to the Plan SP 3.1-1 Review
Plans that Affect the Project SP 3.2-1 Reconcile Work and Resource Levels SP 3.
3-1 Obtain Plan Commitment Process and Product Quality Assurance (PPQA) A Suppor
t process area at Maturity Level 2 Purpose The purpose of Process and Product Qu
ality Assurance (PPQA) is to provide staff and management with objective insight
into processes and associated work products. Specific Practices by Goal SG 1 Ob
jectively Evaluate Processes and Work Products SP 1.1-1 Objectively Evaluate Pro
cesses SP 1.2-1 Objectively Evaluate Work Products and Services SG 2 Provide Obj
ective Insight SP 2.1-1 Communicate and Ensure Resolution of Noncompliance Issue
s SP 2.2-1 Establish Records Quantitative Project Management (QPM) A Project Man
agement process area at Maturity Level 4
406
Purpose The purpose of the Quantitative Project Management (QPM) process area is
to quantitatively manage the project s defined process to achieve the project s
established quality and process-performance objectives. Specific Practices by G
oal SG 1 Quantitatively Manage the Project SP 1.1-1 Establish the Project s Obje
ctives SP 1.2-1 Compose the Defined Processes SP 1.3-1 Select the Subprocesses t
hat Will Be Statistically Managed SP 1.4-1 Manage Project Performance SG 2 Stati
stically Manage Subprocess Performance SP 2.1-1 Select Measures and Analytic Tec
hniques SP 2.2-1 Apply Statistical Methods to Understand Variation SP 2.3-1 Moni
tor Performance of the Selected Subprocesses SP 2.4-1 Record Statistical Managem
ent Data Requirements Development (RD) An Engineering process area at Maturity L
evel 3 Purpose The purpose of Requirements Development (RD) is to produce and an
alyze customer, product, and product-component requirements. Specific Practices
by Goal SG 1 Develop Customer Requirements SP 1.1-1 Collect Stakeholder Needs SP
1.1-2 Elicit Needs SP 1.2-1 Develop the Customer Requirements
407
SG 2 Develop Product Requirements SP 2.1-1 Establish Product and Product-Compone
nt Requirements SP 2.2-1 Allocate Product-Component Requirements SP 2.3-1 Identi
fy Interface Requirements SG 3 Analyze and Validate Requirements SP 3.1-1 Establ
ish Operational Concepts and Scenarios SP 3.2-1 Establish a Definition of Requir
ed Functionality SP 3.3-1 Analyze Requirements SP 3.4-3 Analyze Requirements to
Achieve Balance SP 3.5-1 Validate Requirements SP 3.5-2 Validate Requirements wi
th Comprehensive Methods Requirements Management (REQM) An Engineering process a
rea at Maturity Level 2 Purpose The purpose of Requirements Management (REQM) is
to manage the requirements of the project s products and product components and
to identify inconsistencies between those requirements and the project s plans
and work products. Specific Practices by Goal SG 1 Manage Requirements SP 1.1-1
Obtain an Understanding of Requirements SP 1.2-2 Obtain Commitment to Requiremen
ts SP 1.3-1 Manage Requirements Changes SP 1.4-2 Maintain Bidirectional Traceabi
lity of Requirements SP 1.5-1 Identify Inconsistencies between Project Work and
Requirements
408
Risk Management (RSKM) A Project Management process area at Maturity Level 3 Pur
pose The purpose of Risk Management (RSKM) is to identify potential problems bef
ore they occur so that risk-handling activities can be planned and invoked as ne
eded across the life of the product or project to mitigate adverse impacts on ac
hieving objectives. Specific Practices by Goal SG 1 Prepare for Risk Management
SP 1.1-1 Determine Risk Sources and Categories SP 1.2-1 Define Risk Parameters S
P 1.3-1 Establish a Risk Management Strategy SG 2 Identify and Analyze Risks SP
2.1-1 Identify Risks SP 2.2-1 Evaluate, Categorize, and Prioritize Risks SG 3 Mi
tigate Risks SP 3.1-1 Develop Risk Mitigation Plans SP 3.2-1 Implement Risk Miti
gation Plans Supplier Agreement Management (SAM) A Project Management process ar
ea at Maturity Level 2 Purpose The purpose of Supplier Agreement Management (SAM
) is to manage the acquisition of products from suppliers for which there exists
a formal agreement. Specific Practices by Goal SG 1 Establish Supplier Agreemen
ts SP 1.1-1 Determine Acquisition Type
409
SP 1.2-1 Select Suppliers SP 1.3-1 Establish Supplier Agreements SG 2 Satisfy Su
pplier Agreements SP 2.1-1 Review COTS Products SP 2.2-1 Execute the Supplier Ag
reement SP 2.3-1 Accept the Acquired Product SP 2.4-1 Transition Products Techni
cal Solution (TS) An Engineering process area at Maturity Level 3 Purpose The pu
rpose of Technical Solution (TS) is to design, develop, and implement solutions
to requirements. Solutions, designs, and implementations encompass products, pro
duct components, and product-related life-cycle processes either alone or in app
ropriate combination . Specific Practices by Goal SG 1 Select Product-Component
Solutions SP 1.1-1 Develop Alternative Solutions and Selection Criteria SP 1.1-2
Develop Detailed Alternative Solutions and Selection Criteria SP 1.2-2 Evolve O
perational Concepts and Scenarios SP 1.3-1 Select Product-Component Solutions SG
2 Develop the Design SP 2.1-1 Design the Product or Product Component SP 2.2-3
Establish a Technical Data Package SP 2.3-1 Establish Interface Descriptions SP
2.3-3 Design Interfaces Using Criteria
410
SP 2.4-3 Perform Make, Buy, or Reuse Analyses SG 3 Implement the Product Design
SP 3.1-1 Implement the Design SP 3.2-1 Develop Product Support Documentation Val
idation (VAL) An Engineering process area at Maturity Level 3 Purpose The purpos
e of Validation (VAL) is to demonstrate that a product or product component fulf
ills its intended use when placed in its intended environment. Specific Practice
s by Goal SG 1 Prepare for Validation SP 1.1-1 Select Products for Validation SP
1.2-2 Establish the Validation Environment SP 1.3-3 Establish Validation Proced
ures and Criteria SG 2 Validate Product or Product Components SP 2.1-1 Perform V
alidation SP 2.2-1 Analyze Validation Results Verification (VER) An Engineering
process area at Maturity Level 3 Purpose The purpose of Verification (VER) is to
ensure that selected work products meets their specified requirements. Specific
Practices by Goal
411
SG 1 Prepare for Verification SP 1.1-1 Select Work Products for Verification SP
1.2-2 Establish the Verification Environment SP 1.3-3 Establish Verification Pro
cedures and Criteria SG 2 Perform Peer Reviews SP 2.1-1 Prepare for Peer Reviews
SP 2.2-1 Conduct Peer Reviews SP 2.3-2 Analyze Peer Review Data SG 3 Verify Sel
ected Work Products SP 3.1-1 Perform Verification SP 3.2-2 Analyze Verification
Results and Identify Corrective Action
(A)What is SIX sigma?
Sigma means deviation in Greek language. Deviation means how much variations exi
st in a set of data. For instance let’s say in a software maintenance project ou
t of 100 defects 68 defects are rectified to the mark and remaining bounce back
that means your bug fixing process is on “2 Sigma” level. I had described only f
rom bug fixing perspective. But this can be applicable to any process organizati
on.
Figure 12.10 : - SIX Sigma Values
So I should only have 3.4 defects in a million defects then I can say I am six s
igma.
412
(A)What is DMAIC and DMADV ?
Six Sigma has two key methodologies DMAIC and DMADV. DMAIC is used to improve an
existing business process. DMADV is used to create new product designs or proce
ss designs in such a way that it results in a more predictable, mature and defec
t free performance.
DMAIC
Basic methodology consists of the following five phases: √ √ Define- formally de
fine the process improvement goals that are consistent with customer demands and
enterprise strategy. Measure- to define baseline measurements on current proces
s for future comparison. Map and measure process in question and collect require
d process data.
√ Analyze- to verify relationship and causality of factors. What is the relation
ship? Are there other factors that have not been considered? √ Improve - to opti
mize the process based upon the analysis using techniques like Design of experim
ents. √ Control- setup pilot runs to establish process capability, transition to
production and thereafter continuously measure the process and institute contro
l mechanisms to ensure that variances are corrected before they result in defect
s.
DMADV
Basic methodology consists of the following five phases: √ Define- formally defi
ne the goals of the design activity that are consistent with customer demands an
d enterprise strategy.
√ Measures- to identify CTQs, product capabilities, production process capabilit
y, risk assessment, etc. √ Analyze-to develop and design alternatives, create hi
gh-level design and evaluate design capability to select the best design. √ Desi
gn- to develop detail design, optimize design, and plan for design verification.
This phase may require simulations.
413
√
Verify-to design, setup pilot runs, implement production process and handover to
process owners. This phase may also require simulations.
(A)What are the various roles in Six Sigma implementation?
Attaining Six Sigma is team effort and can not be attained individually. Driving
Six Sigma itself in an organization is huge project as it involves lot of mento
ring and change of attitude of the current workers. So when an organization want
s to drive the Six Sigma way they appoint persons with certain roles as defined
below. Executive Leadership includes CEO and other key top management team membe
rs. They are responsible for setting up a vision for Six Sigma implementation. T
hey also empower the other role holders with the freedom and resources to explor
e new ideas for breakthrough improvements. Champions are responsible for the Six
Sigma implementation across the organization in an integrated manner. The Execu
tive Leadership draw them from the upper management. Champions also act as mento
r to Black Belts. Master Black Belts, identified by champions, act as in-house e
xpert coach for the organization on Six Sigma. They devote 100% of their time to
Six Sigma. They assist champions and guide Black Belts and Green Belts. Apart f
rom the usual rigor of statistics, their time is spent on ensuring integrated de
ployment of Six Sigma across various functions and departments. Black Belts oper
ate under Master Black Belts to apply Six Sigma methodology to specific projects
. They devote 100% of their time to Six Sigma. They primarily focus on Six Sigma
project execution, whereas Champions and Master Black Belts focus on identifyin
g projects/functions for Six Sigma. Green Belts are the employees who take up Si
x Sigma implementation along with their other job responsibilities. They operate
under the guidance of Black Belts and support them in achieving the overall res
ults. Note: - If you are going for project manager position then you will defini
tely need to prepare yourself in the area of estimation to a good extent. In the
coming sections we will run through estimation related questions which are aske
d for project manager position. Estimation is a real weakness in software indust
ry today. Different technologies, different company approaches and custom proces
ses followed by software companies it still does not have a standard. So we will
try to run through the most embraced estimation technologies by software indust
ry.
414
(I)What are function points?
Twist: - Define Elementary process in FPA? FPA is breaking huge systems in to sm
aller pieces and analyzing them. Software application is combination of set of e
lementary processes. EP is smallest unit of activity that is meaningful to the u
ser. EP must be self contained and leave the application in a consistent state.
Elementary process is not necessarily completely independent or can exist by its
elf. But it should leave the application in a consistent state.
(I)What are the different types of elementary process in FPA?
There are two types of elementary process √ √ Dynamic Elementary process Static
Elementary process
Dynamic elementary process moves data from internal application boundary to exte
rnal application boundary or vice-versa. Examples of dynamic elementary process:
√ √ √ Input data screen where user inputs data in to application. Data moves fr
om the input screen inside application. Transaction exported in export files in
XML or any other standard. Display reports which can come from external applicat
ion boundary and internal application boundary.
Static elementary process maintains data of application either inside applicatio
n boundary or in external application boundary. Examples of static elementary pr
ocess: √ In a customer maintenance screen maintaining customer data is static el
ementary process.
(I)What are the different elements in Functions points?
The different elements in function points are as follows:415
√ √ √ √ √ √ √ √
Internal Logical Files (ILF) External Interface File (EIF) Record Element Type (
RET) DET (Data element types) File Type Reference (FTR) External Input (EI) Exte
rnal Inquiry (EQ) External Output (EO)
Let’s run in detail through each of them.
Internal Logical Files (ILF)
Following are points to be noted for ILF:√ √ √ ILF are logically related data fr
om user point of view. They reside in Internal Application boundary and are main
tained through elementary process of application. ILF may have maintenance scree
n or probably not.
416
Figure 12.11 : - Supplier ER database diagram
Note: - Do not make a mistake of mapping one to one relationship between ILF and
technical database design in that case FPA can go very misleading. The main dif
ference between ILF and technical database is ILF is logical view and database i
s physical structure (Technical Design). Example Supplier database design will h
ave tables like Supplier, Supplier Address, and Supplier Phone numbers but from
ILF point of view it’s only Supplier. As logically they are all Supplier details
.
External Interface file (EIF)
They are logically related data from user point of view. √ √ √ EIF reside in ext
ernal application boundary. EIF is used only for reference purpose and are not m
aintained by internal application. EIF is maintained by external application.
417
Record Element Type (RET) Following are points to be noted for RET √ √ RET are s
ub-group element data of ILF or EIF. If there is no sub-group of ILF then count
the ILF itself as one RET.
√ A group of RET within ILF are logically related, most probably with a parent C
hild relationship. Example: - Supplier had multiple addresses and every address
can have multiple phone numbers (see the image below which shows database diagra
ms). So Supplier, SupplierAddress and Supplier phone numbers are RET.
Figure 12.12 : - Whole supplier is one ILF.
Note: - The whole database is one supplier ILF as all belong to one logical sect
ion.
418
√
RET quantifies the relationship complexity of ILF and EIF.
DET (Data element types)
Following are the points to be noted for DET counting:√ Each DET should be User
recognizable. Example in the above given figure we have kept auto increment fiel
d (Supplierid) for primary key. Supplierid field from user point of view never e
xists at all, it’s only from software designing aspect, so does not qualifies fo
r DET. DET should be non-recursive field in ILF. DET should not repeat in the sa
me ILF again, it should be counted only once. Count foreign keys as one DET. “Su
pplierid” does not qualifies as DET but its relationship in “supplieraddress” ta
ble is counted as DET. So “Supplierid_fk” in supplieraddress table is counted as
DET. Same holds true for “Supplieraddressid_fk”.
√ √
File Type Reference (FTR)
Following are points to be noted for FTR:√ √ √ FTR is files or data referenced b
y a transaction. FTR should be ILF or EIF. So count each ILF or EIF read during
process. If the EP is maintaining an ILF then count that as FTR. So by default y
ou will always have one FTR in any EP.
External Input (EI)
Following are points to be noted for EI:√ It’s a dynamic elementary process [For
definition see “Dynamic and Static Elementary Process”] in which data is receiv
ed from external application boundary. Example: User Interaction Screens, when d
ata comes from User Interface to Internal Application. EI may maintain ILF of th
e application, but it is not compulsory rule. Example: - A calculator applicatio
n does not maintain any data, but still the screen of calculator will be counted
as EI.
√
419
√
Most of time User Screens will be EI, again no hard and fast rule. Example: - An
import batch process running from command line does not have screen, but still
should be counted as EI as it helps passing data from External Application Bound
ary to Internal Application Boundary.
External Inquiry (EQ)
Following are points to be noted for EQ √ √ √ √ It’s a dynamic elementary proces
s in which result data is retrieved from one or more ILF or EIF. In this EP some
input request has to enter the application boundary. Output results exits the a
pplication boundary. EQ does not contain any derived data. Derived data means an
y complex calculated data. Derived data is not just mere retrieval but are combi
ned with additional formulae to generate results. Derived data is not part of IL
F or EIF, they are generated on fly. EQ does not update any ILF or EIF. EQ activ
ity should be meaningful from user perspective. EP is self contained and leaves
the business in consistent state. DET and processing logic is different from oth
er EQ’s. Simple reports form good base as EQ. Note: - No hard and fast rules tha
t only simple reports are EQ. Simple view functionality can also be counted as E
Q.
√ √ √ √ √
External Output (EO)
Following are points to be noted for EO:√ √ √ It’s a dynamic elementary process
in which derived data crosses from Internal Application Boundary to External App
lication Boundary. EO can update an ILF or EIF. Process should be the smallest u
nit of activity that is meaningful to end user in business.
420
√ √ √ √
EP is self contained and leaves the business in a consistent state. DET is diffe
rent from other EO’s. So this ensures to us that we do not count EO’s twice. The
y have derived data or formulae calculated data. Major difference between EO and
EQ is that data passes across application boundary. Example: - Exporting Accoun
ts transaction to some external file format like XML or some other format. This
can be later imported by the external accounting software. Second important diff
erence is in EQ has non-derived data and EO has derived
data.
(A) Can you explain in GSC and VAF in function points?
In GSC (General System Characteristic) there are 14 factors which are rated on 1
to 5 depending on the complexity of the factor. Below are the 14 factors:√ √ √
√ √ √ √ √ √ √ √ Data communications: - How many communication facilities are the
re to aid in the transfer or exchange of information with the application or sys
tem? Distributed data processing: handled? Performance: How are distributed data
and processing functions
Did the user require response at times or throughout?
Heavily used configuration: - How heavily used is the current hardware platform
where the application will be executed? Transaction rate:-How frequently are tra
nsactions executed; daily, weekly, monthly, etc.? On-Line data entry:-What perce
ntage of the information is entered On-Line? End-user efficiency:-Was the applic
ation designed for end-user efficiency? On-Line update: - How many ILF’s are upd
ated by On-Line transaction? Complex processing:-Does the application have exten
sive logical or mathematical processing?. Reusability:-Was the application devel
oped to meet one or many users needs? Installation ease: - How difficult is conv
ersion and installation?
421
√ √ √
Operational ease: - How effective and/or automated are start-up, back up, and re
covery procedures? Multiple sites: - Was the application specifically designed,
developed, and supported to be installed at multiple sites for multiple organiza
tions? Facilitate change: - Was the application specifically designed, developed
, and supported to facilitate change?
Figure 12.13 : - GSC rated in estimation sheet
From the GSC we get the VAF i.e. Value added function points by the below formul
ae.
422
VAF = 0.65 + ((sum of all GSC factor)/100).
(I)What are unadjusted function points and how is it calculated?
Unadjusted function points = ILF + EIF + EI + EQ + EO. Below is the table referr
ed for getting ILF, EIF, EI, EQ and EO.
Figure 12.14 : - Rating tables
423
(I)Can you explain steps in function points?
Below are the steps in function points:√ √ √ √ √ First Count ILF, EIF, EI, EQ, R
ET, DET, FTR and use the rating tables. After you have counted all the elements
you will get the unadjusted function points. Put rating values 0 to 5 to all 14
GSC. Adding total of all 14 GSC to come out with total VAF. Formula for VAF = 0.
65 + (sum of all GSC factor/100). Finally, make the calculation of adjusted func
tion point. Formula: Total function point = VAF * Unadjusted function point. Mak
e estimation how many function points you will do per day. This is also called a
s "Performance factor". On basis of performance factor, you can calculate Man/Da
ys.
(I) What is the FP per day in your current company?
Twist :- What is your company’s productivity factor ? Left to the readers as eve
ry company has his own FP per Day. Note: - There is a free PDF provided “How to
prepare Software Quotations?” Please do refer Function point chapter.
(A)Do you know Use Case points?
In CD we have a complete free PDF tutorial of how to prepare software quotation.
It has all the estimation technology that today’s software industry uses.
(A)What is COCOMO I, COCOMOII and COCOMOIII?
In CD we have a complete free PDF tutorial of how to prepare software quotation.
It has all the estimation technology that today’s software industry uses.
(A) What is SMC approach of estimation?
Look for the PDF in the CD.
424
(A)How do you estimate maintenance project and change requests?
Left for the readers to answer.
425
13. XML
Note: - In this chapter we will first just skim through basic XML interview ques
tions so that you do not get stuck up with simple questions.
(B)What is XML?
XML (Extensible markup language) is all about describing data. Below is a XML wh
ich describes invoice data. <?xml version="1.0" encoding="ISO-8859-1"?> <invoice
> <productname>Shoes</productname> <qty>12</qty> <totalcost>100</totalcost> <dis
count>10</discount> </invoice> An XML tag is not something predefined but it is
something you have to define according to your needs. For instance in the above
example of invoice all tags are defined according to business needs. The XML doc
ument is self explanatory, any one can easily understand looking at the XML data
what exactly it means.
(I)What is the version information in XML?
“version” tag shows which version of XML is used.
(B)What is ROOT element in XML?
In our XML sample given previously <invoice></invoice> tag is the root element.
Root element is the top most elements for a XML.
(B)If XML does not have closing tag will it work?
No, every tag in XML which is opened should have a closing tag. For instance in
the top if I remove </discount> tag that XML will not be understood by lot of ap
plication.
426
(B)Is XML case sensitive?
Yes, they are case sensitive.
(B)What is the difference between XML and HTML?
XML describes data while HTML describes how the data should be displayed. So HTM
L is about displaying information while XML is about describing information.
(B)Is XML meant to replace HTML?
No, they both go together one is for describing data while other is for displayi
ng data.
(A)Can you explain why your project needed XML?
Note: - This is an interview question where the interviewer wants to know why yo
u have chosen XML. Remember XML was meant to exchange data between two entities
as you can define your user friendly tags with ease. In real world scenarios XML
is meant to exchange data. For instance you have two applications who want to e
xchange information. But because they work in two complete opposite technologies
it’s difficult to do it technically. For instance one application is made in JA
VA and the other in .NET. But both languages understand XML so one of the applic
ations will spit XML file which will be consumed and parsed by other application
s You can give a scenario of two applications which are working separately and h
ow you chose XML as the data transport medium.
(B)What is DTD (Document Type definition)?
It defines how your XML should structure. For instance in the above XML we want
to make it compulsory to provide “qty” and “totalcost”, also that these two elem
ents can only contain numeric. So you can define the DTD document and use that D
TD document with in that XML.
(B)What is well formed XML?
If a XML document is confirming to XML rules (all tags started are closed, there
is a root element etc) then it’s a well formed XML.
427
(B)What is a valid XML?
If XML is confirming to DTD rules then it’s a valid XML.
(B)What is CDATA section in XML?
All data is normally parsed in XML but if you want to exclude some elements you
will need to put those elements in CDATA.
(B)What is CSS?
With CSS you can format a XML document.
(B)What is XSL?
XSL (the eXtensible Stylesheet Language) is used to transform XML document to so
me other document. So its transformation document which can convert XML to some
other document. For instance you can apply XSL to XML and convert it to HTML doc
ument or probably CSV files.
(B)What is element and attributes in XML?
In the below example invoice is the element and the invnumber the attribute. <in
voice invnumber=1002></invoice>
(B)Which are the namespaces in .NET used for XML?
“System.xml.dll” is the actual physical file which has all XML implementation. B
elow are the commonly used namespaces:√ √ √ √ System.Xml System.Xml.Schema Syste
m.Xml.XPath System.Xml.Xsl
(A)What are the standard ways of parsing XML document?
428
Twist: - What is a XML parser? XML parser sits in between the XML document and t
he application who want to use the XML document. Parser exposes set of well defi
ned interfaces which can be used by the application for adding, modifying and de
leting the XML document contents. Now whatever interfaces XML parser exposes sho
uld be standard or else that would lead to different vendors preparing there own
custom way of interacting with XML document. There are two standard specificati
ons which are very common and should be followed by a XML parser:DOM: - Document
Object Model. DOM is a W3C recommended way for treating XML documents. In DOM w
e load entire XML document into memory and allows us to manipulate the structure
and data of XML document. SAX: - Simple API for XML. SAX is event driven way fo
r processing XML documents. In DOM we load the whole XML document in to memory a
nd then application manipulates the XML document. But this is not always the bes
t way to process large XML documents which have huge data elements. For instance
you only want one element from the whole XML document or you only want to see i
f the XML is proper which means loading the whole XML in memory will be quiet re
source intensive. SAX parsers parse the XML document sequentially and emit event
s like start and end of the document, elements, text content etc. So application
s who are interested in processing these events can register implementations of
callback interfaces. SAX parser then only sends those event messages which the a
pplication has demanded.
429
Figure 13.1 : - DOM Parser loading XML document
Above is a pictorial representation of how DOM parser works. Application queries
the DOM Parser for “quantity” field. DOM parser loads the complete XML file in
to memory.
430
Figure 13.2 : - Returning the Quantity value back to application
DOM parser then picks up the “quantity” tag from the memory loaded XML file and
returns back to the application.
431
Figure 13.3 : - SAX parser in action
SAX parser does not load the whole DOM in to memory but has event based approach
. SAX parser while parsing the XML file emits events. For example in the above f
igure its has emitted Invoice tag start event, Amount Tag event, Quantity tag ev
ent and Invoice end tag event. But our application software is only interested i
n quantity value. So the application has to register to the SAX parser saying th
at he is only interested in quantity field and not any other field or element of
the XML document. Depending on what interest the application software has SAX p
arser only sends those events to the application the rest of events is suppresse
d. For instance in the above figure only quantity tag event is sent to the appli
cation software and the rest of the events are suppressed.
432
(A)In What scenarios will you use a DOM parser and SAX parser?
√ If you do not need all the data from the XML file then SAX approach is much pr
eferred than DOM as DOM can quiet memory intensive. In short if you need large p
ortion of the XML document its better to have DOM. With SAX parser you have to w
rite more code than DOM. If you want to write the XML in to a file DOM is the ef
ficient way to do it. Some time you only need to validate the XML structure and
do not want to retrieve any Data for those instances SAX is the right approach.
√ √ √
(A) How was XML handled during COM times?
During COM it was done by using MSXML 4.0. So old languages like VB6, VC++ used
MSXML 4.0 which was shipped with SP1( Service Pack 1). Note: - This book will no
t show any samples as such for MSXML 4.0. So if anyone interested please do refe
r the same in MSDN and try to compile some sample programs.
(A)What is the main difference between MSML and .NET Framework XML classes?
MSXML supports XMLDOM and SAX parsers while .NET framework XML classes support X
ML DOM and XML readers and writers. MSXML supports asynchronous loading and vali
dation while parsing. For instance you can send synchronous and asynchronous cal
ls to a remote URL. But as such there is not direct support of synchronous and a
synchronous calls in .NET framework XML. But same can be achieved by using “Syst
em.Net” namespaces.
(B) What are the core functionalities in XML .NET framework? Can you explain in
detail those functionalities?
The XML API for the .NET Framework comprises the following set of functionalitie
s:
433
XML readers With XML readers the client application get reference to instance of
reader class. Reader class allows you to scroll forward through the contents li
ke moving from node to node or element to element. You can compare it with the “
SqlDataReader” object in ADO.NET which is forward only. In short XML reader allo
ws you to browse through the XML document. XML writers Using XML writers you can
store the XML contents to any other storage media. For instance you want to sto
re the whole in memory XML to a physical file or any other media. XML document c
lasses XML documents provides a in memory representation for the data in an XMLD
OM structure as defined by W3C. It also supports browsing and editing of the doc
ument. So it gives you a complete memory tree structure representation of your X
ML document.
(B)What is XSLT?
XSLT is a rule based language used to transform XML documents in to other file f
ormats. XSLT are nothing but generic transformation rules which can be applied t
o transform XML document to HTML, CS, Rich text etc.
434
Figure 13.4 : - XSLT Processor in Actions
You can see in the above figure how the XSLT processor takes the XML file and ap
plies the XSLT transformation to produce a different document.
(I)Define XPATH?
It is an XML query language to select specific parts of an XML document. Using X
PATH you can address or filter elements and text in a XML document. For instance
a simple XPATH expression like “Invoice/Amount” states find “Amount” node which
are children of “Invoice” node.
(A)What is the concept of XPOINTER?
XPOINTER is used to locate data within XML document. XPOINTER can point to a par
ticular portion of a XML document, for instance address.xml#xpointer(/descendant
::streetnumber[@id=9]) So the above XPOINTER points streetnumber=9 in “address.x
ml”.
435
(B)What is an XMLReader Class?
It is an abstract class available from System.XML namespace. XML reader works on
a read-only stream browsing from one node to other in a forward direction. It m
aintains only a pointer to the current node but has no idea of the previous and
the next node. You can not modify the XML document, you can only move forward.
(B)What is XMLTextReader?
The “XmlTextReader” class helps to provide fast access to streams of XML data in
a forward-only and read-only manner. It also checks if the XML is well-formed.
But XMLTextReader does not validate against a schema or DTD for that you will ne
ed “XmlNodeReader” or “XmlValidatingReader” class. Instance of “XmlTextReader” c
an be created in number of ways. For example if you want to load file from a dis
k you can use the below snippets. XmlTextReader reader = new XmlTextReader(fileN
ame); To loop through all the nodes you need to call the “read()” method of the
“XmlTextreader” object. “read()” method returns “true” if there are records in t
he XML document or else it returns “false”. //Open the stream XmlTextReader read
er = new XmlTextReader(file); while (reader.Read()) { // your logic goes here st
ring pdata = reader.Value } // Close the stream reader.Close(); To read the cont
ent of the current node on which the reader object is you use the “value” proper
ty. As shown in the above code “pdata” gets the value from the XML using “reader
.value”.
436
(I)How do we access attributes using “XmlReader”?
Below snippets shows the way to access attributes. First in order to check wheth
er there any attributes present in the current node you can use “HasAttributes”
function and use the “MoveToNextAttribute” method to move forward in attribute.
In case you want to move to the next element use “MoveToElement()”. if (reader.H
asAttributes) { while(reader.MoveToNextAttribute()) { // your logic goes here st
ring pdata = reader.Value } } reader.MoveToElement();
(I) Explain simple Walk through of XmlReader ?
In this section we will do a simple walkthrough of how to use the “XmlReader” cl
ass. Sample for the same is available in both languages (C# and VB.NET) which yo
u can find in “WindowsApplicationXMLVBNET” and “WindowsApplicationCSharp” folder
s. Task is to load “TestingXML.XML” file and display its data in a message box.
You can find “TestingXML.XML” file in “BIN” directory of both the folders. Below
is the display of “TestingXML.XML” file and its content.
Figure 13.5 : - Testing.XML Data
437
Both the projects have command button “CmdLoadXML” which has the logic to load t
he XML file and display the data in messagebox. I have pasted only the “CmdLoadX
ML” command button logic for simplicity. Following are the basic steps done:√ √
√ Declared the “XMLTextReader” object and gave the XML filename to load the XML
data. Read the “XMLTextReader” object until it has data and concatenate the data
in a temporary string. Finally display the same in a message box.
Figure 13.6 : - VB.NET code for XMLReader
Same holds true for C# code as shown below.
438
Figure 13.7 : - C# code for XMLReader
Figure 13.8 : - Data Display for “TestingXML.XML”
439
(A) What does XmlValidatingReader class do?
XmlTextReader class does not validate the contents of an XML source against a sc
hema. The correctness of XML documents can be measured by two things is the docu
ment well formed and is it valid. Well-formed means that the overall syntax is c
orrect. Validation is much deeper which means is the XML document is proper w.r.
t schema defined. So the XmlTextReader only checks if the syntax is correct but
does not do validation. There’s where XmlValidatingReader class comes in to pict
ure. So this again comes at a price as XmlValidatingReader have to check for DTD
and Schema’s there are slower compared to XmlTextReader.
440
14. Localization/Globalization
(B)What is Unicode and why was it introduced?
Note: - This moment is special to me. While sipping tea in morning I received th
is email from one of my readers. “I should say your book has everything in the w
orld which a .NET person will need. I am a fresher from Hyderabad. In eight mont
hs my sister has to be operated. For that I should get a job some how in 2 weeks
so that I am eligible for a loan after 6 months. That’s when I came across your
book. I Read it again, and again from top to bottom. LOL got a job in 2 weeks.
Thanks for saving my sister and making me a proud brother”. Reading this email h
as made me really fresh, more than what my morning tea can give me. Mail me your
job search success and struggles to shiv_koirala@yahoo.com. In order to underst
and the concept of Unicode we need to move little back and understand ANSI code.
ASCII (ask key) stands for American Standard Code for Information Interchange.
In ASCII format every character is represented by one byte (i.e. 8 bits). So in
short we can have 256 characters (2^8). Before UNICODE came in to picture progra
mmers used code page to represent characters in different languages. Code page i
s a different interpretation of ASCII set. Code pages keep 128 characters for En
glish and the rest 128 characters are tailored for a specific language. Below is
a pictorial representation of the same.
Figure 14.1 :- Code page in action
441
There are following disadvantages of the CODE page approach:√ √ √ √ Some languag
es like Chinese have more than 5000 characters which is difficult to represent o
nly 128 character set. Only two languages can be supported at one time. As said
in the previous note you can use 128 for English and the rest 128 for the other
language. The end client should have the code page. Code Representation change a
ccording to Operating system and Language used. That means a character can be re
presented in different numbers depending on operating system.
For all the above problems UNICODE was introduced. UNICODE represents characters
with 2 bytes. So if its two bytes that means 18 bits. You can now have 2^16 cha
racters i.e. 65536 characters. That s a huge number you can include any language
in the world. Further if you use surrogates you can have additional 1 million c
haracters...Hmm that can include type of language including historian characters
. ASCII representation varied according to operating system and language. But in
UNICODE it assigns a unique letter for every character irrespective of Language
or operating system which makes programmers life much easier while developing i
nternational compatible applications.
(I)Does .NET support UNICODE and how do you know it supports?
Yes .NET definitely supports UNICODE. Try to see sizeof (char), you will se 2 by
tes. Char type data type stores only one character which needs only 8 bits but b
ecause .NET has to support UNICODE it uses 16 bits to store the same.
(A)What’s the difference between localization and globalization?
Below are the definition’s which is taken from the Microsoft glossary. Globaliza
tion: The process of developing a program core whose features and code design ar
e not solely based on a single language or locale. Instead, their design is deve
loped for the input, display, and output of a defined set of Unicode-supported l
anguage scripts and data related to specific locales.
442
Localization: The process of adapting a program for a specific local market, whi
ch includes translating the user interface, resizing dialog boxes, customizing f
eatures (if necessary), and testing results to ensure that the program still wor
ks. You can visualize globalization as more of architecture decisions. While loc
alization is adapting your content to local market. Localization phase occurs be
fore globalization phase.
(A)What architecture decisions you should consider while planning for internatio
nal software’s?
Note: - Many programmers think its only converting the text from one language to
other. It’s a very wrong assumption that just by translating strings from one l
anguage to other language the software is localized. Interviewer will definitely
get disappointed by such an answer. So let’s try to visualize what are the desi
gn considerations to be taken when we design software globally. √ √ Avoid hard c
oding of strings in the project. Any display right from labels to error messages
read it from a resource file. Length of the string is also of prime importance.
It’s a noted fact that when we translate English language in to other language
the words increase by minimum 30 to 40 %. For instance you can see from the belo
w figure how the Hindi text has increased as compared to English text.
Figure 14.2 : - Text length increase
443
So all your labels, message boxes have to be designed in such a way that this te
xt size mismatch is adjusted. Do not crowd all your fields on one screen you wil
l definitely end with the text length issue. Leave some room for expansion. √ De
cimal separator varies from locale to locale. For instance 25, 12.80 in the Unit
ed States is 25.12,80 in Greece or Germany. Yes you guessed right the decimal se
parator in Europe is a "," (Comma). Calendar changes from country to country. De
finitely Gregorian calendar is the most used. But there are some other calendars
like Hebrew, Islamic, Chinese etc. All these calendars have huge differences. F
or instance Nepal follows Nepali Calendar which is 56.7 years ahead of Gregorian
calendar. So according to cultural settings user can expect the dates according
ly. Sort order is affected by language. You can see from the figure below Hindi
and English languages have different sorting order.
√
√
Figure 14.3 : - Different sorting order according to locale
√
Time varies from locale to locale. For instance an 8 PM in India is 20:00 in Eur
ope. In Europe there is not concept of AM and PM.
444
√
If you are using built-in fonts use the resource file to bundle the same. You ca
n load the fonts from the resource file rather than telling the user explicitly
to install the fonts in his PC. Keyboards layout changes according locale and re
gion. So be careful while designing the short cut keys. The function keys are mo
stly present in all key boards. Probably you can consider the function keys for
short cut keys. Below is a sample Hindi key board. If you define CTRL + V as a s
hort cut for paste functionality it can create confusion for Hindi users on the
below key board.
√
Figure 14.4 : - Localized Hindi keyboard Courtesy: - Image taken from http://www
-306.ibm.com/
So you can see from the above points that making software adapt to global cultur
e is only related to string translation. It’s much beyond that.
(I) How do we get the current culture of the environment in windows and ASP.NET?
“CultureInfo.CurrentCulture” displays the current culture of the environment. Fo
r instance if you are running Hindi it will display “hi-IN”. Please note one thi
ng in mind “CurrentCulture” will only give you the culture on which your applica
tion is running. So if it’s a windows application this will work fine. But in AS
P.NET 2.0 we need to know what culture the end user has. For a real internationa
l website you different users can log in with different culture. For instance yo
u can see from the given figure below different users are logging in with differ
ent
445
regional settings. Client browser sends the information in the request headers t
o the server. For instance a Korean user will send “KO” in the request headers t
o server. We can get the value using the” Request.UserLanguages”.
Figure 14.5 : - Different users logging in from different countries
Regional settings are defined on the user’s browser as shown below. Click on Too
ls – Internet options – Languages. You can then add languages in the language pr
eference box. Using "Move up" and "Move down" you can define the priority of the
languages. In the below figure we have four languages defined with “Hindi” lang
uage set at the top priority. ” Request.UserLanguages” returns back an array of
string with the sorted order defined in your language preference tab of the brow
ser.
446
Figure 14.6 : - Setting language preferences in browser
Below is the code snippet which shows how we can display the user languages. The
first figure is the code snippet which shows how to use “Request.UserLanguages”
. The second figure shows the output for the same.
Figure 14.7 : - Request.UserLangauges in action
447
Figure 14.8 : - Output from request.Userlanguages
One of the things to be noted is “q” value. “q” stands for quality factor. In th
e above figure the quality factor means the following:"I prefer Hindi, but will
accept English US (with 80% comprehension) or Greek (with 50% comprehension) or
French (with 30 % comprehension)." Just for Non-English speakers meaning of Comp
rehension. It is the process of understanding and constructing meaning from a pi
ece of text. The comprehension is from the perspective of the end user. It says
the end browser user will understand with this much comprehension for that langu
age. For instance in the above example the end browser under stands English comp
rehension of 80 %. Note: - You can find the sample to display the user languages
in “Globalization” folder. Run “DisplayAllLanguageSettings.aspx” and see the ou
tput. Just to mention the source is coded in VS.NET 2005 so if you try to open i
t using VS.NET 2003 you can get errors.
(B) Which are the important namespaces during localization and globalization?
There are two most important namespaces:√ System.Globalization - contains classe
s that define culture-related information, including the language, the country/r
egion, the calendars in use, the format patterns for dates, currency and numbers
, and the sort order for strings. System.Resources - provides classes and interf
aces that allow developers to create, store, and manage various culture-specific
resources used in an application. With
√
448
this namespace you can read a resource file and display it accordingly to the us
er’s culture.
(B)What are resource files and how do we generate resource files?
Resource files are files which contain program resources. Many programmers think
resource files for only storing strings. But you can also store bitmaps, icons,
fonts, wav files in to resource files. In order to generate resource file you n
eed click on tools – generate local resource as shown in the figure below. Do no
t forget to keep page in designer view or else you will not see the option. Once
you generate the resource file you will see the resx file generated in the solu
tion explorer.
Figure 14.9 : - Generating resource files using IDE
If you see the resource file it has basically key and the value for the key.
449
Figure 14.10 : - Resource file in action
If you see the above figure the key is basically the object name. You can see th
e Label1 has some value stored in the resource file.
(I) Can resource file be in any other format other than resx extensions?
Yes they can be in .txt format in name and value pairs. For instance below is a
simple .txt file with values. lblUserId = User Id lblPassword = Password cmdSubm
itPassword = Submit
(I)How is resource files actually used in project? (A)How can we use Culture Aut
o in project?
450
Note: - Hmmm we have talked so much theoretically its time to see something prac
tically in action. Let’s make small project to understand how we can implement t
he same. In Globalization folder you can run the “LoginScreen.aspx” to see it pr
actically. Below goes the explanation. We will make a simple login screen which
we will try to use for English as well as Greek. Note: - I was thinking of using
Hindi as the second language. But while writing this tutorial my Hindi culture
settings was not properly installed so switched to Greek. Well I worked in Greec
e for 2 years it was lovely country. This answer I dedicate to the wonderful day
s spent in Greece. The login screen will display English settings when an Englis
h user logs in and Greek Settings when a Greek user logs in. So below are the st
eps to start with.
Figure 14.11 : - Culture Auto in action
451
In the above figure you can see the login page. You can find the same in CD as n
amed “LoginScreen.aspx”. It’s a simple page with two labels and two text boxes.
Now the labels values i.e. “User ID” and “Password” should be changed according
to regional settings set on the browser. So below are the steps for the same:√ M
ake two resource files as shown below one for Greece and other for English. Ther
e are three values defined for “Userid”, “Password” and the main title of the pa
ge. One important thing to note is the naming convention of the files. You need
to tag the naming convention with the language code. You can see from the below
figure the resource files naming convention is divided in two three parts File n
ame, Language code and resource file extension. In this sample we will demonstra
te for English and Greek language so I tagged the file with “el” language code.
Figure 14.12 : - Resource file naming conventions
Below are the two resource files defined.
Figure 14.13: - Greek and English resource files
452
√
Once you have defined your resource files we need to define two attributes “UICu
lture=Auto” and “Culture=Auto”. See the above figure “Culture Auto in Action”. F
inal step you also need to define resource key at the UI object level. You can s
ee a sample of the same in figure “Culture Auto in Action”.
√
Figure 14.14 : - Login screen according to settings
Compile the project, run and see the output after changing regional settings for
both languages. You should see different outputs as shown in the above figure.
With out a single line of code everything works…. That’s the magic of “UICulture
=Auto” attribute. Note: - You can the get the above source code in “Globalizatio
n” folder. See for “LoginScreen.aspx” page. Note: - In the further section we wi
ll answer all the below questions in on shot.
(B)What are satellite assemblies? (A)How do we generate Satellite assemblies? (A
)What is AL.EXE and RESGEN.EXE?
In the previous question you have see how we can use resource files to store dat
a according to the localized languages. But when you actually go for deployment
you will not like to also install the “resx” or “txt” files. It’s definitely not
a good deployment practice to install data which can be easily modified. In sho
rt some how we should install this in a binary
453
format so that no end user can change it. That’s why Microsoft introduced satell
ite assemblies. Satellite assemblies are assemblies which do not contain source
code. They only contain resource files. You can create a satellite assembly usin
g rsgen.exe and al.exe. They are in binary DLL format which makes it easier to s
hip it during deployment. So finally during deployment you do not need to ship t
he resx files but only the compiled satellite DLL.
Figure 14.15 : - resgen.exe and al.exe in action
The above diagram will give you a complete picture of how to generate Satellite
assembly. You can see from the above figure we need two exe resgen.exe and al.ex
e. Once you made your resx file or text file you should first convert in to a “.
resource” files. This is done by using the resgen.exe. Below is the command snip
pet for resgen.exe where LoginScreen.aspx.el.resx is the resx file and output is
Greek.resources file. If you do not provide the output file name it will genera
te “LoginScreen.resources”. resgen LoginScreen.aspx.el.resx Greek.resources You
can also generate resx files from txt file using resgen.exe below is the code sn
ippet for the same:resgen MyLanguage.txt MyLanguage.resx The above command snipp
et will generate a MyLanguage.resx using MyLanguag.txt file. You can make a DLL
using resource files and not resx so you should make this conversion. Now once t
he resource file is generated its time make the compiled assembly of the same so
that it can be shipped during deployment. This is accomplished by using the ass
embly linker tool al.exe provided by Microsoft. Below is the command code snippe
t for the same.
454
al.exe /out:el.dll /c:de /embed:greek.resources In the /out switch you need to p
rovide the output DLL name. /c you need to specify the culture of the resource f
ile. /embed you need to specify all the resources which are present in the resou
rce file. As said previously other than strings you can also put image files lik
e GIF, BMP etc. So those physical resources you can specify in the /embed switch
. You can specify more than one resource use “,” as a separator to specify more
than one resource files.
(I)What’s the use of resource manager class?
ResourceManager class helps us to read the resource files and get the values usi
ng key. First you need to create the object of resource manager. You need to spe
cify the resource name and the assembly in the constructor. private ResourceMana
ger objResourceManager = new ResourceManager("Globalization.resource",System.Ref
lection.Assembly.GetExecutingAssembly()); Once the resource manager is populated
with details you can then use the GetString function to get by key. For instanc
e in the below code snippet we are using the “cmdAddNew” key to get the value fo
r button “cmdAddNew”. cmdAddNew.Text = objResourceManager.GetString("cmdAddNew")
;
(A)What precautions do we need to take while deploying satellite assemblies?
When we deploy the assembly, the folder structure has to very organized. Below t
able shows how the folder structure should be organized. MainFolder is the main
application folder. All satellite assemblies should be deployed in the Main appl
ication folder with in there own respective folder. The respective folder is den
oted by the culture code.
Figure 14.16 : - Satellite Assembly folder structure
455
You can see from the above figure Hindi satellite assembly is deployed in hi fol
der, Greek satellite assembly is deployed in el folder and so on. If the program
does not find resource file for a culture it uses the invariant culture satelli
te assembly. The above folder structure is a strict requirement when we deploy t
he satellite assembly. Any mismatch in the folder structure will lead to in appr
opriate results.
(A)Can we get a strongly typed resource class rather than using resource manager
?
In the previous question we had seen how resourcemanager class can be used to re
ad the string from the resource file. But there has been considerable improvemen
t in VS.Net 2005 for resource support. You no more need to load using resourcema
nager class. Though Microsoft has still kept it for backward compatibility. You
can now get strongly types classes in your VS.NET intellisense as shown in the f
igure below.
Figure 14.17 : - Strongly typed resource class
All belong to Resources namespace. Let do a small sample and see how the strongl
y typed classes work in VS.NET 2005 and the simplicity which they bring while im
plementing globalization in projects. Below is the screen shot of the project. I
t’s basically a simple login screen with user id and password text boxes. User h
as options to select the language. Currently only two languages are provided Eng
lish and Greek. Depending on the languages selected the user id and password lab
el values will be displayed.
456
Figure 14.18 : - Strongly typed project
Note: - In the globalization project you can get the project sample in “LoginScr
eenUsingStrongType.aspx”. Below is the code snippet which describes the various
important sections of the code. First thing are the resource files. We have gene
rated two resource files one for Greece with el and second is the general resour
ce file which will be used when the regional code does not match.
457
Figure 14.19 : - Walkthrough for using the resources namespace
There are three important steps in the code:√ First is set the culture informati
on for the current thread with the new culture info object. StrCulture has the l
anguage code which is currently selected in the drop down. Thread.CurrentThread.
CurrentCulture = new CultureInfo(strCulture); √ √ We set the same culture to the
Resource class. Resources.Resource.Culture = Thread.CurrentThread.CurrentCultur
e; Now we are all set to use the value. lblUserId.Text = Resources.Resource.lblU
serIdResource1.ToString();
458
lblPassword.Text = Resources.Resource.lblPasswordResource1.ToString(); Note: - Y
ou can get the same from globalization folder in “LoginScreenUsingStrongType.asp
x”. Try to add a new language and most of the fundamentals will be clear.
(A)Can you explain the fundamentals of “GetGlobalResourceObject” and “GetLocalRe
sourceObject” functions?
These two functions belong to the HttpContext object. Using it you can get the o
bject reference of the resource object. For instance you can see from the below
code snippet we have got reference to the Global resource object and we are tryi
ng to get the value for “lblUserIdresource1” key. lblUserId.Text=HttpContext.Get
GlobalResourceObject("Resource", "lblUserIdResource1").ToString(); Note :- In th
e same globalization folder there is “LoginScreenUsingGetGlobal.aspx” which demo
nstrates how “GetGlobalResource” works. One short note because “GetGlobalResourc
eObject” and “GetLocalResourceObject” operate from with in current HttpContext i
t uses what the regional settings are sent from the browser end.
(A)Can we sign a satellite assembly?
Yes you can sign the satellite assembly using the /keyfile switch which takes “.
snk” file as the input parameter. al /res:MyLanguage.resources /c:de /keyfile:My
Lang.snk out:MyLanguages.resources.dll
(I)Can you explain collation sequence in sql server?
First let’s define collation. Collation sequences are set of rules which determi
ne how the data is sorted and compared. Sorting rules can be defined with option
s with case-sensitivity, accent marks, kana character types and character width.
459
Case sensitivity
If A and a, B and b, etc. are treated in the same way then it is case-insensitiv
e. A computer treats A and a differently because it uses ASCII code to different
iate the input. The ASCII value of A is 65, while a is 97. The ASCII value of B
is 66 and b is 98.
Accent sensitivity
If a and á, o and ó are treated in the same way, then it is accent-insensitive.
A computer treats a and á differently because it uses ASCII code for differentia
ting the input. The ASCII value of a is 97 and áis 225. The ASCII value of o is
111 and ó is 243.
Kana Sensitivity
When Japanese kana characters Hiragana and Katakana are treated differently, it
is called Kana sensitive.
Width sensitivity
When a single-byte character (half-width) and the same character when represente
d as a double-byte character (full-width) are treated differently then it is wid
th sensitive.
(A)How do we define collation sequence for database and tables?
You can create a database with language specific collation sequence. For instanc
e in the below create statement tblCustomer is created by Latin language collati
on sequence. Create database tblCustomer collate Latin1_General_BIN You can also
create tables with particular collation sequence. Below is the create table syn
tax for the same. Create table tblCustomer ( [CustomerCode] char(10) COLLATE Alb
anian_CI_AI_KS_WS NULL,
460
[EntryDate] [char] (8) COLLATE Korean_Wansung_Unicode_CS_AS_KS NOT NULL , [CustA
bbrev] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL )
(A)Can we change the order in a select query with a specified collation sequence
?
Yes we can specify a collate sequence in the order by clause. That will change t
he sort according to the collation defined in the order by claused. ORDER BY { o
rder_by_expression [ COLLATE collation_name ] [ ASC | DESC ] } [ ,...n ] ]
(A)What are the best practices to be followed while implementing globalization a
nd localization?
Below are the best practices while developing international language support sof
tware:√ √ √ √ √ Do not hardcode strings or user interface resources. Make sure y
our application depends on Unicode. When ever you read or write data from variou
s encoding make sure you use the System.text namespace. Many programmers assume
ASCII data. While testing test it with actual international data and environment
s. Whenever we manipulate data for instance numbers, dates or currency make sure
that you are using culture-aware classes defined in System.Globalization namesp
ace.
461
Below is the table which specifies in more detail about the functionality and th
e classes to be used to achieve the same.
Figure 14.20 : - Functionality and classes used
√
If a security decision is based on the result of a string comparison or case cha
nge operation, perform a culture-insensitive operation by explicitly specifying
the CultureInfo.InvariantCulture property. This practice ensures that the result
is not affected by the value of CultureInfo.CurrentCulture. Move all your local
izable resources to separate DLL’s. Avoid using images and icons that contain te
xt in your application. They are expensive to localize. Allow plenty of room for
the length of strings to expand in the user interface. In some languages, phras
es can require 50-75 percent more space. Use the System.Resources.ResourceManage
r class to retrieve resources based on culture. Explicitly set the CurrentUICult
ure and CurrentCulture properties in your application. Do not rely on defaults.
Be aware that you can specify the following three types of encodings in ASP.NET:
requestEncoding specifies the encoding received from the client s browser. resp
onseEncoding specifies the encoding to send to the client browser. In most situa
tions, this should be the same as requestEncoding. FileEncoding specifies the de
fault encoding for .aspx, .asmx, and .asax file parsing.
√ √ √ √ √ √ √ √ √
462
(A)Why is the culture set to the current thread?
First let me explain this question. If you look at the code snippet of how to se
t the culture info. Thread.CurrentThread.CurrentCulture = new CultureInfo(strCul
ture); It uses the current thread to set it. What does that mean? Let’s drill do
wn a bit of how IIS handles request to understand this concept. When any user re
quests a resource from IIS like an ASPX page or any other resource. IIS services
that request in his own thread. That means if 100 users have requested some res
ource from IIS he will serve every request in its own thread. In short IIS will
spawn 100 threads to service the 100 request. It’s very much practically possibl
e that you can different locale in different threads. So when we set a culture w
e can not set it for the whole application as it will affect all the requests. S
o when we set a culture we set it to a particular thread rather to the whole app
lication. Note: - Phew!!! Big chapter right. Yes even I feel the same thing. But
I am sure that we have covered most of the points. But yes who knows what’s up
in the mind of the interviewer….We can just be prepared for the worst.
463
15. Sample Projects
A good practical project is equivalent to this whole book – Shivprasad Koirala (
just kidding). In this chapter I will give some samples which you can practice f
or yourself. But the motto behind these projects is not only to give you sample
projects to complete but the way you can approach to complete these projects. We
will be completing the address book application and finally you can get the ful
l source in CD. Note: - If you are looking for how big multinationals approach t
o complete software projects then buy my book “C# Projects” from BPB publication
s. Mail bpb@vsnl.com for more details. There are four projects which I have outl
ined:√ √ √ √ Address book Mini-Job Site Chat Application Reminder application
Approach to complete the projects
First thing coding is not everything in software world. They form the smallest p
art of the project. So for the above four projects I am not expecting you to onl
y give me source code but lot of other artifacts (documents) also. For all the p
rojects above I have given you prototype look which can be useful in assisting t
o get clarity. Do not take the looks from the prototype as the final one it can
change but the data elements should not change. For instance the edit is hyperli
nk according to the prototype but in actual implementation it can be a button. B
elow are expected documents for the projects discussed:√ Estimation document: -
The first step in all the below project is an estimation document. In how much t
ime do you expect the project to be completed? You can express the estimated fig
ure in ‘man / days’ or ‘man / hours’. So use one of the standard estimation meth
odologies like Function points, Use Case points or WBS to estimate the project.
If you do not know what these estimation methodologies are see project managemen
t chapter for the same. Do not forget to put an assumption section in the estima
tion.
464
√
Project Management plan document: - Once you know what the estimates are to comp
lete the project we need to make detail project management plan (PMP document) f
or the same. You can use softwares like Microsoft project or even a simple word
and excel will do. For details of PMP document see Project Management chapter fo
r more details. Use Case Document: - From the given scope and screen shots write
Use Case documents which will define the exact flow with actors, roles and scen
arios. See UML for what a Use Case document is? Technical Design document: - Onc
e the Use Case document is done start with the technical document. Normally tech
nical document use UML a lot. Look in to UML chapter for more details. But from
the above project point of view I need the following things in the technical doc
ument for clarity sake :√ √ √ √ ER diagram (Which shows us the database diagram)
. Class diagram. Interaction diagram Pseudo-code
√
√
√
Test plan: - This is normally done by the testing department. But just for pract
ice write test plans with steps and expected results. The above test plan will b
e executed after the code complete. √ Coding standard document: - This document
will decide what naming conventions will be followed through out the project i.e
. Database, variable declaration, class file naming conventions etc. For instanc
e for database table objects you can have naming convention like “tbl_group_actu
alobject” ? “tbl_accounts_inventory”. What will be your commenting standards? Fo
r instance programmer name, changes made, date when the changes where made etc.
Source code: - Finally the source code with commenting standards and naming stan
dards as defined in the coding standard document and according to the use case.
√
I have given the approach and documents I expect. But how to go about it is all
up to you guys. You are free to decide whih is the best approach for this projec
t windows or web, three tier or one tier, database access or sql server, VB.NET
or C# etc . So if you are able to finish any of the projects with these seven do
cuments ZIP everything and send it to me. I can check and verify if it has follo
wed everything properly. Please
465
send all you documents zipped at shiv_koirala@yahoo.com . I will review and send
in the comments to you back. My main concern will be on how you approach rather
than just the code. Definitely I will like to see the code working but the appr
oach will be reviewed more in detail rather than just implementation. I am sure
if you do these projects yourself with all the above documents in place you will
be at very good position to face any big company interview with confidence.
Address book
EST sales private limited grew by 3 million dollars this year. EST deals with se
lling mineral water in bulk to commercial premises. All customer information is
maintained till today in excel document. But maintaining data in excel had the f
ollowing issues:√ No provision for avoiding duplicate customer data. All custome
rs are uniquely identified by phone numbers but it was becoming tedious to avoid
duplicate customer data. Customer information was not so secured, anyone can ea
sily copy the excel sheet.
√
Looking at the above two points EST decided to make a small address book applica
tion. Below is the prototype of the “Address book” application.
466
Figure 15.1 : - Address book
Currently EST is interested only in three prime data Name, Phone and Address. Th
is address book will only be a windows application with only one screen as shown
above. Grid below will display the necessary customer information with a “Delet
e” and “Edit” option. When EST staff want to add any new customer they will fill
all three details and click “Update” button. As soon as the customer data is en
tered the below grid will be flourished. User can click on the “Edit” link to ch
ange customer information if necessary. User can also click on the “Delete” link
to remove the customer data permanently from the database. When user clicks on
the “Delete” link user will be prompted to confirm that is he sure to delete the
customer information from the database.
Mini-job site
Note: - This is one of the largest projects so if you think you are not comforta
ble do not attempt this. You can keep this as last project to practice.
467
Mini-job site is a job site which brings together job seekers and companies. It
has the following five important functionalities:√ Login module. This module ens
ures that only registered users can enter the job site.
Figure 15.2 : - Job login screen
Above is how the login screen will look like. Any user who enters the job site w
ill be identified by User Name. User Name can belong to a company or a job seeke
r. So when user validates he has to provide the information on which type he is
logging in. So the drop down below will say that he is a job seeker or company.
√ Job Seeker registration module. This module will be used by job seeker to regi
ster with min-job site to avail to the facilities of the job site.
468
Figure 15.3 : - Job seeker registration
Above is a rough display of how the job seeker registration form will be. All th
e fields are compulsory. He can only attach word document no other type of docum
ent is permitted to be attached. √ Job search module for job seekers. This modul
e will be used by job seekers to find current job posting and any matches with t
heir profile.
469
Figure 15.4 : - Job search employee
Job seeker can search jobs by key words (which is given by the company when they
make job postings) and number of years of experience. There is a “my matches” b
utton which will make auto matching using the keywords of your profile and the j
ob. For instance you have provided in your profile keyword “java and mysql” then
the application will take these keywords and try to find if there exists such m
atching in job keywords. √ Employer’s registration module. This module will be u
sed by companies to register with the job site so that they can make job posting
s.
470
Figure 15.5 : - Employers registration module
All the fields are compulsory on the employers registration screen. Logo will be
only of type GIF. √ Employers job entry screen. This module will be used by com
panies / job employers to enter job postings regarding there company.
471
Figure 15.6 : - Employer Job Entry
Any job which needs to be posted in min-job site should have Job title, experien
ce in number of years, detail job description, keywords and category. Employer c
an add, edit and close any job application posted by him. Employer can also see
how many people have applied for the job. You can see in the figure with the hel
p of an arrow showing “Number of applicants applied”. To see details of the same
he can click on the link and a detail screen of the same is seen as shown below
.
472
.
Figure 15.7 : - Detail of the job seekers applied for the job
In the above figure of job seeker detail screen he can click on download to get
his resume. Employers can click on accept or reject to show further interest in
the candidate. On clicking accept and reject a mail is sent to the job seeker in
timating him about the response.
Chat application
This is a simple web chat application which will be used by people to talk about
any job openings and interview related questions. It has only two modules the l
ogin and the chat module. Below is the screen shot of the login module. User Nam
e should be unique in a room. User enters a user name and clicks submit. If ther
e is a user with a similar name “User already existing” error will be thrown and
user will be redirected to the login screen.
Figure 15.8 : - Chat room login
473
Once user is validated he enters the chat room as shown in the below figure. To
send messages in the chat room user can type in the below text box and click on
the send button.
Figure 15.9 : - Chat room
Reminder Application
Reminder application is used as an alarm to remind appointments. It will be a wi
ndows based application. It will consist primarily of two modules Add reminder a
nd Pop up reminder.
474
Figure 15.10 : - Add / Delete reminder
Add reminder lets you add a reminder. Reminder note, Time and weekdays are compu
lsory fields. Once the user adds the reminder it is seen in the grid below. User
can also edit a current reminder and change its details.
Figure 15.11 : - Pop-up reminder
Reminder application will sit in the task bar. All reminders start showing up on
e day before the appointment. Reminders are reminded by the Pop-up reminder modu
le which flashes in the user computer when a reminder is due. Above figure shows
how the reminder will pop up. User has choice to either “Remind later” or “Dism
iss” the same. If user chooses “Remind later” he will be reminded after 3 hours
by default and if user chooses “Dismiss” the reminder will be purged and deleted
from the reminder list.
475
Complete implementation of address book application
In this section we will try to complete address book application.
Figure 15.12 : - Different documents for Address book project
We will follow the above defined cycle. First prepare requirement document, then
estimate it using function points, then prepare technical design document and f
inally execution and test plans.
476
Use Case Document for address book application
Figure :- 15.13 Use Case for Address book application
477
Estimation
The first thing after requirement gathering in the project is estimation. We wil
l be using function point to do estimation. Note: - For details on how to use fu
nction see Project Management chapter. There is one table to maintain so there i
s only one ILF with three DET’s .
Figure 15.14 :- ILF values for Address book application
We have one grid to display so there will be one EQ.
Figure 15.15 : - EQ for Address book application
Figure 15.16 :- EI for Addressbook application
As the application is quiet simple I have kept the GSC very much simple.
478
Figure: 15.17 - GSC for Address book application
479
Below are the final estimation figures. I have assumed that a programmer can com
plete 1.5 per day as it is a simple database project. So total comes to 7.9 Man
days approximately 8 man days.
Figure 15.18 : - Complete Address book in Estimation
We also need to distribute the estimation properly in phases. As said previously
we will also prepare technical documentation, write uses cases, test script etc
. Always remember function points, use case points or any other estimation metho
dology gives you size of only execution phase. None of the estimation methodolog
ies takes in to account hardware, documentation etc. So if 7.9 man days is my to
tal coding effort then 20 % of that will be my technical design and requirement
gathering and 5 % for testing.
480
Note: - You can get the complete estimation of the “addressbook” in CD. It’s ver
y much possible that the small address book application can become a huge projec
t by itself. So below are the assumptions while estimating.
Assumption Sections
√ √ √ √ √ √ √ √ Address book will not have huge traffic load. Maximum number of
users at any point will not exceed 10. No backup mechanism is implemented. No Au
dit history is implemented. Concurrency measures are not taken care for the proj
ect. Address book will be windows based application No login screen is provided
for the application. As the data is not critical no special security aspect is t
aken care for the application. Estimation only includes the software cost of the
project any licenses or hardware has a different cost factor.
Technical Design Document Overview
This document will decide in detail the technical specification for the address
book application according to the Use case and the initial scope provided.
Architecture approach
This is a simple desktop application which will be used by limited users. We wil
l be using three tier architecture with access database. Access database was rec
ommended because very less data growth is expected.
481
Figure 15.19 : - Architecture road map for address book application
ER Diagram
Below is the ER diagram for address database. “AddressId” is the primary key.
Figure 15.20 :- ER Diagrams
482
Database Layer
Figure 15.21 : - Database access layer diagram
Pseudo Code explanation:-
“addressBookDB” constructor
Connection string and Database type is initialized in the constructor of address
BookDB class. Both the values will be stored in “App.config” file in “appSetting
s” section with “ConnectionString” and “DatabaseType” key. given below is how th
e configuration file section will look like <appSettings> <add key="ConnectionSt
ring" value="here goes the connection string"/> <add key="DatabaseType" value="1
"/> </appSettings> Database type will be any of the following type :√ √ √ Access
intDatabaseType = 1 SQL Server intDatabaseType = 2 Oracle intDatabaseType = 3 p
ublic addressBookDB() {
483
Pseudo-code for the constructor will be as below:-
// create the appsettingReader object AppSettingsReader objAppsettingreader = ne
w AppSettingsReader(); // Get the Connectionstring using the “ConnectionString”
key strConnectionString =objAppsettingreader.GetValue("ConnectionString"); // Ge
t the DatabaseType using the “DatabaseType” key. intDatabaseType = objAppsetting
reader.GetValue("DatabaseType"); }
“GetConnectionObject” function
This function returns connection object with IDbConnection interface. This funct
ion will use connection string loaded in the “strConnectionString” property. It
will do the following things:√ √ If there is no “databasetype” specified it will
raise illegal provider error. Depending on databasetype it will create the conn
ection object. For first phase we will be only providing service to access datab
ase. So the “OleDBConnection” class object will created and assigned to the inte
rface IDBConnection. Note: - “IDBConnection” interface is used as we need to kee
p every thing generalized so that we can support multiple database types like Ac
cess, SQL Server etc. Below is the pseudo-code for the same. public IDbConnectio
n GetConnectionObject() { IDbConnection objConnection = null; if (intDatabaseTyp
e==0) { Throwexception that illegal database provider; } // If its access then u
se the OLeDBConnection class to create object.
484
// Other database like oracle and sql server will be considered for the second p
hase. if (intDatabaseType == 1) {objConnection = new OleDbConnection();} // set
the connection string objConnection.ConnectionString = strConnectionString; retu
rn objConnection;}
GetCommand Function
This function will return a command object interface depending on the connection
object passed. This function also returns “IDBCommand” so that we can operate w
ith generalized command object for all database types (like Access, SQL Server e
tc). public IDbCommand GetCommand(IDbConnection objDbConnection) { IDbCommand ob
jCommand = objDbConnection.CreateCommand(); return objCommand; }
GetAddresses Function
This function will return addresses from address database as “IDataReader” inter
face, which the clients can loop and use the same. Below is the pseudo-code for
“GetAddresses” function:Public function IDataReader GetAddresses() { // Get the
connection object using GetConnectionObject() function objConnection = GetConnec
tionObject(); // open the connection object
485
objConnection.Open(); // Using the GetCommand function and objConnection get the
command object objCommand = GetCommand(objConnection); // current this DAL comp
onent will only support simple SQL // and not Stored procedures objCommand.Comma
ndType = CommandType.Text; // We need all the records so us the Select * from SQ
L objCommand.CommandText = "Select * from Address"; // finally execute the reade
r objDataReader = objCommand.ExecuteReader(); // and then return the reader to t
he function Return objDataReader; }
GetAddresses (int intAddressid)
This is an over loaded function for “GetAddresses” which takes addressid as inpu
t. There is no difference from the previous function but SQL statement will chan
ge. Public function IDataReader GetAddresses(int intAddressid) { // Get the conn
ection object using GetConnectionObject() function objConnection = GetConnection
Object(); // open the connection object objConnection.Open(); // Using the GetCo
mmand function and objConnection get the command object objCommand = GetCommand(
objConnection); // current this DAL component will only support simple SQL
486
// and not Stored procedures objCommand.CommandType = CommandType.Text; // We ne
ed to select only one address with the specific addressid objCommand.CommandText
= "Select * from Address where addressid=" + intAddressid; // finally execute t
he reader objDataReader = objCommand.ExecuteReader(); // and then return the rea
der to the function Return objDataReader; }
deleteAddress(int intAddressid)
This function delete the specific address record specified public void deleteAdd
ress(int intAddressid) { // First get the connection objConnection = GetConnecti
onObject(); // open the connection objConnection.Open(); // get the command obje
ct using this connection object objCommand = GetCommand(objConnection); // curre
nt this DAL component will only support simple SQL // and not Stored procedures
objCommand.CommandType = CommandType.Text; // check first if there is any addres
sid passed if (intAddressid != 0)
487
{ // then delete the addressid from the address table objCommand.CommandText = "
delete from Address where addressid=" + intAddressid.ToString(); } // execute th
e command objCommand.ExecuteNonQuery(); // close the objec objCommand.Connection
.Close(); }
addAddress
This method add and updates address records to the address table. The dotted lin
es are the same code as defined for the previous “Getaddresses” and “deleteaddre
ss” sub routines. Dotted lines will have the same code √ √ √ √ Get the connectio
n object Get the command object. Set the commandtext And finally execute the com
mand object. Public void addAddress(int intAddressid,string strName,string strAd
dressName,string strPhoneNumber) { … … ... ... if (intAddressid==0)
488
{ objCommand.CommandText = "insert into Address(Name, Address, Phonenumber) valu
es( " + strName + " , " + strAddressName + " , " + strPhoneNumber + " )" ; } els
e {objCommand.CommandText = "update Address set name= " + strName + " , Address=
" + strAddressName + " ,phonenumber= " + strPhoneNumber + " where addressid="
+ intAddressid.ToString();} ... Objcommand.executenonquery();}
489
Business Layer
Figure 15.22: - Business object diagram
Above is the business object diagram for the address application. There are two
main business objects:-
AddressBook
This class will have the validations and two basic operational functionalities a
dding new addresses and delete addresses. “AddressBook” class represents a singl
e entity class.
490
All the business validations will be written in the set property of the class. F
or instance for the name property you can see that if there is no name provided
it will throw error to the client. Public string Name {Set { // if the strName i
s not provided then throw a exception If value.length == 0 { Throw new exception
(“Name is a compulsory field”); } // if all the validations are ok then set the
private value strName = value;} Get {return strName;}} Same type of business val
idation will follow for address property.
addAddress()
This method will call the “addAddress” method of the database class “addressBook
DB” and add new address record in the database. Pseudo-code for calling the data
base object will be something as given below. addressBookDB.addAddress (intAddre
ssid, strName, strAddress, strPhoneNumber) Also note that the private variables
passed to the address database objects.
491
deleteAddress()
This method will call the “deleteAddress” method of the “addressBookDB” class an
d delete a particular address from the address database. Pseudo-code for calling
the database object will be something as below. addressBookDB.deleteAddress(int
Addressid);
AddressBooks ( inherits from Collectionbase)
This class will be having collection of “AddressBook” type objects and it inheri
ts from the System.collections. Collectionbase class. “AddressBooks” represents
a collection. It has the following methods and properties:-
LoadAddress
“Loadaddress” method loads the address in to collection base. Below is the pseud
o-code for the same. public void loadAddress() { // before we load all the addre
ss clear the list collection List.Clear(); // call the addressbookdb and and the
get the address datareader objDatareader = objaddressBookDB.GetAddresses(); //
loop through the datareader and load the // collection of addressbooks while (ob
jDatareader.Read()) { AddressBook objAddressBook ; objAddressBook = new AddressB
ook(); objAddressBook.addressId = objDatareader["Addressid"];
492
objAddressBook.Address = objDatareader["Address"].ToString(); objAddressBook.Nam
e = objDatareader["Name"].ToString(); objAddressBook.PhoneNumber = objDatareader
["PhoneNumber"].ToString(); // after the values are set add it to the list colle
ction List.Add(objAddressBook); } // finally close the object objDatareader.Clos
e(); }
LoadAddress(int intAddressid)
This is a overloaded method it will have the same logic as defined previously fo
r “loadAddress” method without parameters. Only that it will call objaddressBook
DB.GetAddresses(intAddressid);
493
Presentation Layer
FrmAddressBook.cs
Figure 15.23 : - UI component Diagram
494
Presentation layer define the way “addressbook” and “addressbooks” object will f
low and interact. Following are the various methods and properties in the presen
tation layer:AddressBook and AddressBooks object will define a private variable
in the presentation layer. private AddressBook objAddressBook = new AddressBook(
); private AddressBooks objAddressBooks = new AddressBooks();
GUI components
Figure 15.24 :- GUI Component list
setValueFromUI
This will take the value from the UI components and set it to the address object
. Pseudocode is as shown below:private void setValueFromUI() { objAddressBook.Na
me = txtName.Text;
495
objAddressBook.PhoneNumber = txtPhoneNumber.Text; objAddressBook.Address = txtAd
dress.Text; }
ClearUI
This sub routine clears all the user interface values. private void clearUI() {
txtName.Text = ""; txtPhoneNumber.Text = ""; txtAddress.Text = ""; }
LoadAddress
This subroutine will bind the address collection object that is objAddressBooks
to the datagrid. private void loadAddress() {// call the load method of the addr
essbooks object objAddressBooks.loadAddress(); // clear all the previous records
in the grid dgAddresses.DataSource = null; //rebind the fresh new data in t he
addressbooks collection dgAddresses.DataSource = objAddressBooks; // refresh the
grid dgAddresses.refresh(); }
496
LoadAddressinUI
“LoadAddressinUI” does the exact opposite of what “SetValueFromUI” does. public
void loadAddressinUI(int intAddressId) { // Load the addressbooks object with th
e addressid objAddressBooks.loadAddress(intAddressId); // check if there are any
address object loaded if (objAddressBooks.Count > 0) { // if yes then set the c
urrent addressbook object to the first object of the // addressbooks collection
object objAddressBook = objAddressBooks[0]; } // finally load all the object val
ue in to the address book UI txtName.Text = objAddressBook.Name; txtAddress.Text
= objAddressBook.Address; txtPhoneNumber.Text = objAddressBook.PhoneNumber;}
497
Method call flow for address book
Figure 15.25 : - Method flow in UI
Above shows how the methods will interact among themselves to accomplish the tas
k.
498
Test plans
Add new Address with Name as nothing
Steps for the test: √ √ Start the Address book application Enter the following d
ata
√ √ √ √ √
Press Update button System should pop up with error message “Name is Compulsory
field” Enter proper Name data. Press update button System should save the inform
ation and display the newly entered data in the grid below.
Add new Address with Address as nothing
Steps for the test: √ √ Start the Address book application Enter the following d
ata
√
Press Update button
499
√ √ √ √
System should pop up with error message “Address is Compulsory field” Enter prop
er Name data. Press update button System should save the information and display
the newly entered data in the grid below.
Update Address
Steps for the test: √ √ √ √ √ Start the Address book application Select one of t
he addresses from the address data grid. Address details will be displayed on th
e textboxes above. Change some information in all the three fields. Press Update
button System should save the changed information and display the newly entered
data in the grid below.
Cancel Address
Steps for the test: √ √ Start the Address book application Enter the following d
ata
√
Press Cancel button
500
√
System should clear all the three textboxes.
Delete existing Address data
Steps for the test: √ √ √ √ Start the Address book application Select one of the
addresses from the address data grid. Address details will be displayed on the
textboxes above. Press Delete button System should delete the selected address a
nd grid below is refreshed and the currently deleted address is not displayed in
the grid.
Source code
You can get the source code from the CD. I have tried to comment as much as poss
ible but if you do not get some logic mail me at shiv_koirala@yahoo.com. Below a
re the snapshot of all the documents which are provided in the CD. As this is a
sample project the documents are small in size and not that complicated. But whe
n it comes to huge projects there are more documents than what I have created. B
ut these are the basic documents which you should have.
501
Figure 15.26 :- Requirement Gathering Document Snapshot.
Figure 15.27 : - Technical Specification Document Snapshot
502
Figure 15.28 : - Test case document snapshot
When you run the application you can get the following error. This happens becau
se the connection string is not pointing to proper path where MDB file exists.
Figure 15.29 : - Error while running address book application
503
So click on the config file “WindowsAddressBook.exe.config” which is present in
the “Debug” folder and open the same in notepad.
Figure 15.30 : - Edit “WindowsAddressBook.exe.config”
After you edit the config file in notepad change the “Datasource” property in “C
onnectionString” to the path where the database file .MDB is located.
504
16. Test Yourself
Q1. “Crushader” company wants to revamp his website. One of the important change
s “Crushader” want is to display Ad banners. As a developer you want to initiali
ze the banner image paths when the first user accesses the application. So what
will you do? 1. 2. 3. 4. Add code in application_onstart event of global.asax fi
le. Add code in application_begin request event of global.asax file. Add code to
session_onstart event of global.asax. Add code in page.load event handler in th
e startup page of the application.
5. Create a user control named “Banner.ascx” and initialize all the image paths
in this ascx. Then include this banner.ascx in all the pages of the application
which needs the banner displays. Answer 1. Q2 Which one of the following is a li
mitation of XML serialization? A. In classes that implement IEnumerable, the col
lection is not serialized. B. You cannot serialize an object s public fields. C.
You cannot serialize DataSet objects. D. You cannot serialize XmlNode object. E
. It does not serialize type information. Answer E XML serialization does not in
clude type information. For example, if you have a Customer object that exists i
n the Library namespace, there is no guarantee that it will be deserialized into
an object of the same type. Q3 Which one of the following occurs when a struct
type is cast to an interface that it implements?
505
A. The original value type variable is destroyed. B. A trappable InvalidCastExce
ption runtime error occurs. C. A compiler error occurs; struct types cannot impl
ement an interface. D. The struct type is boxed and a new reference type created
. E. The original value type is cloned using the ValueType class implementation
of IClonable. D But yes you can implement interface in structures. As interface
can be only reference types so it will boxed. Q4 internal class Piston {} inter
nal class Engine { private Piston[] myPistons = new Piston[4]; public bool Ignit
ion() { //some code } } public class Car { private Engine myEngine = new Engine(
); public void Start() { //put in keys etc.. if (myEngine.Ignition()) { //some m
ore code
506
} } } What concept does the above sample code demonstrate? A. Delegation B. Comp
osition C. Polymorphism D. Combination E. Inheritance B Q5. As a developer you a
re displaying product data from SQL Server. Product table has Productid and Prod
uctName. You write ADO.NET code that uses a SqlDataAdapter object and a SqlComma
nd object to retrieve the product data from the database by calling a stored pro
cedure. You set the CommandType property of the SqlCommand object to CommandType
.StoredProcedure. You set the CommandText property of the object to procProductL
ist. Your code successfully files a DataTable object with a list of products tha
t is sorted by ProductID in descending order. You want the data to be displayed
in reverse alphabetic order by ProductName. What should you do? A. Set the comma
nd text to "SELECT * FROM procProductList ORDER BY ProductName DESC;" then bind
the DataGrid control to the DataTable object. B. Create a new DataView object ba
sed on the DataTable object. C. Set the Sort Property of the DataView object to
“ProductName DESC”. D. Bind the DataGrid control to the DataView object. E. Set
the AllowSorting property of the DataGrid control to True.
507
F. Set the SortExpression property of the DataGridColumn that displays ProductNa
me to bind the DataGrid control to the DataTable object. G. Set the DisplayExpre
ssion property of the DataTable object to “ORDER BY ProductName DESC”. Bind the
DataGrid control to the DataTable object. Answer A Q6. What is the fastest way t
o concat strings in ASP.NET ? What should you do? A. Write code that uses the Ap
pend method of the StringBuilder object. B. Write code that uses the Substring m
ethod of the String object. C. Write code that uses the Concat method of the Str
ing object. D. Write code that uses the plus-sign (+) operator to concatenate th
e strings. Answer: A Q7. "Virtual Software public limited" wants to connect to S
QL Server 6.5 using ASP.NET ? A. Use a SqlConnection object to connect to the da
tabase, and use a SqlCommand object to run a stored procedure that returns the d
ata. B. Use an OleDbConnection object to connect to the database, and use an Ole
DbCommand object to run a stored procedure that returns the data. C. Configure S
QL Server to support HTTP access, and create an XML template to run a stored pro
cedure that returns the data in XML format. D. Use COM interop to create an ADOD
B.Connection object, and use an ADODB.Command object to run a SQL statement that
returns the data. Answer B You can not use SQL Server .NET Data Provider for SQ
L Server 6.5. Its only for SQL 7.0 and later
508
Q8. You want to only get changed data in a dataset which of the below is the bes
t way ? A. productInfo.GetChanges(DataRowState.Detached); B. productChanges = pr
oductInfo.GetChanges(); C. productChanges.Merge(productInfo, true); D. productCh
anges.Merge(productInfo, false); Answer: B Q9. Which of the following does the a
ctual .NET code execute ? A MSIL B CLS C CLR D C# E CTS Ans :- C Q10. Hiding imp
lementation and exposing the interface in OOP s is called as :A) Polymorphism B)
Encapsulation C) Overloading D) Static Ans :- B Q11. Garbage collector runs ? 1
) When Application is running for more than 30 minutes. 2) Every 1/4th Milli Sec
ond.
509
3) When application is running low of memory. 4) Its very random and takes rando
m time from the CPU clock. Ans :- 3 Q12. Which line is invalid in the code below
? 1. interface Test2 2. { 3. int i; 4. void Method2A(int); 5. string Method2B (
); 6. } A. Line 3 B. Line 4 C. Line 5 Answer :- A Q13. You want to debug a Web-b
ased ASP.NET application. But for some cause debugging information is not shown.
What could be missing? A. <%@ Page Debug="true" %> B. <%@ Application Debug="tr
ue" %> C. <%@ Page Trace="true" %> D. <%@ Application Trace="true" %> Answer :-
A.
510
Q14. What property is used on the DataTable to indicate conflicts after update m
ethod is called? A. HasErrorConflict B. HasError C. HasCollision D. HasDataError
Answer :- A Q15. What is a DiffGram? A. XML file containing both the original a
nd current values for the data. B. XML file containing the difference between or
iginal and current data. C. DataSet loaded with two XML files, resulting in the
difference being current. D. DataSet loaded with an XML file and the original va
lues from the data source. Answer :- A What ASP.NET object encapsulates the stat
e of the client and the browser? A. Application object. B. Session object. C. Re
sponse object. D. Request object. E. Server object Answer :- B Q16. What method(
s) must be used with the Application object to ensure that only one process acce
sses a variable at a time? A. Synchronize() B. Lock() and UnLock()
511
C. ThreadLock D. Synchronize. Answer :- B Q17. Which object can help you maintai
n data across users? A. The Session object. B. The Application object. C. The Re
sponse object. D. The Request object. E. The Server object Answer :- B Q18. What
must be done before you can consume a web service? A. Build a proxy library by
using the TblImp.exe utility. B. Build a proxy library by using the Disc.exe uti
lity. C. Build a proxy library by using the csc.exe utility. D. Build a proxy li
brary by using the wsdl.exe utility Answer :- D Q19. What control is used to val
idate that two fields are equal? A. RequiredFieldValidator B. RegularExpressionV
alidator C. CompareValidator D. The equals() method of the field. Answer :- C
512
Q20. Why should you close all database objects and set them to NULL before leavi
ng the method where the objects were created? A. To ensure that the object’s des
tructors are called. B. To ensure that the connection to the database is closed
as soon as possible. C. To ensure that the objects can be reused. D. Good coding
practice. Answer :- B Q21. You are developing a web application that is retriev
ing historical library information from a database server and displays it to the
users of your application. What cache strategy will give you the best performan
ce? A. Use the output cache. B. Use the cache object. C. Use the ASP.NET central
cache. D. Use the client cache Answer :- B Q22. Which tool can you use to preco
mpile a Windows application? A. mscorcfg.msc B. ngen.exe C. caspol.exe Answer :-
B Q23. Which method of the ServiceController class will allow you to send a com
mand to the service?
513
A. Stop() B. Start() C. Pause() D. ExecuteCommand() Answer :- D Q24. .NET remote
server object must implement? A. IUnknown B. IMarshalByValue C. IMarshalByRef D
. ISingleCall E. ISerializable Answer :- E Q25. You are in charge of creating a
remote object that will return database records to the caller of the method. You
want to keep track of the number of requests. Which activation mode would you u
se? A. SingleCall B. Singleton C. Client-activated D. Server-activated Answer :-
B
514
Q26. You want to ensure that your web method uses the cache for results, so you
change the web method attribute to [WebMethod(BufferResponse = true)]. When you
investigate, you find that your web method still is not using the cache. What is
the most effective way of ensuring that your web method uses the cache? A. Add
CacheTime=300 to the WebMethod attribute. B. Add Cache=true to the WebMethod att
ribute. C. Add EnableCache=true to the WebMethod attribute. D. Add CacheDuration
=300 as a parameter to the WebMethod attribute. Answer :- D Q27. What namespace
must be used in order to use the DOM for XML support? A. System.Data.Xml B. Syst
em.Xml C. System.Xml.DOM D. System.DOM Answer :- B Q28. You need to encrypt the
SOAP header. What is the correct method to use? A. Inherit the web service class
from the SoapHeaderEncrypt class. B. Custom SOAP headers. C. SOAP header extens
ions. D. Enable SSL for the XML web service and configure it to encrypt the head
ers. Answer :- C
515
17. Free exams
√ (Thanks to www.measureup.com click on demo link its decent.) http://cybermedia
dice.measureup.com/cart/displayproducts.asp
516
18. Pending Topics
I have made an attempt to cover most of the topics. But still there are lot of i
mportant topics pending which can turn the tables around. As this been a intervi
ew book its also important to notify the readers what it did not cover and are i
mportant for .NET Interviews. √ Crystal reports. As reporting services has taken
over the full market of reports I have covered a complete chapter in SQL Server
Interview question book. But still there are organization who ask crystal repor
ts even today. So just in case brush you skills regarding the same. * Setup and
Packaging. * VSTS * Biztalk Server. Sharepoint. Commerce Server.
√ √ √ √ √
All topics marked with * will be covered in the third edition.If you feel that s
omething very important and basic not covered in the book mail at shiv_koirala@y
ahoo.com. I will make a attempt to close it in the third edition.
517