presentations
http://www.ida.liu.se/~uweas/Lectures/DesignPatterns01/
Thursday, September 29, 2005
Saturday, September 24, 2005
Accenture Shaping the Future Forum 2005
Today i attended a full day training at Leela palace on SAP Netweaver.
Actually my intention was to get lunch at Leela palace and so i paid 200/- when the entry fee for the event. But then i got enough stuff and a T-Shirt and importantly i got the first prize in the quiz which gave me 1500/- gift voucher.
It was interesting to listen about Netweaver. Accenture is working on Netweaver to provide solutions to its client. Both Accenture and SAP are big players in the market and are capable of capturing market share on the Composite applications domain.
Well, that was the interesting part of the session, that is the theme behind the Netweaver, its about Composite Applications. They seems ready to hit the market. At one point of time i was wondering is the Digital Harbor loosing its lead in the Composite Applications? they are talking more in detail about the Composite Applications. The theory looked better then what i heard at Digital Harbor.
And they are working going to hit the market soon with CAF (Composite Application Framework, which is an IDE based on Eclipse). They are doing wonderful stuff, generate spicy real time reports in no time. They have xApps for composite Applications.
Features of SAP NetWeaver are
1. People Integration
2. Information Integration
3. Process Integration
4. Application Integration and Platform
But then the issues that are ahead of composite applications are too discussed.
1. Managing the complexities of the Composite Applications
2. Life cycle management of the applications and making sure that those applications are running and talking with each other.
There was new thing that i come across, SAP is having a concept called ESA, which i havent heard before (as i know :-) ) well. This ESA (Enterprise Service Architecture) is a business implemetation of the SOA.
There was intersting discussion about how the innovation works.. first innovate something, then work on it and make sure you consolidate it. create a standardization of the innovation, then you outsource the work to somebody else and engage your guys to innovate something else.. Looks impressive isnt it?
Few of the components that are required for developing composite applications are
1. A single common execution architecture
2. An eAI Tool
3. A portal Engine
4. A BI (Business Intelligence) Platform
5. A custom Development Engine
6. A collabarative engine
7. Knowledge Management engine.
8. A work flow engine
9. A process management engine
10.A mobile development plaftform
Netweaver comes with a refrigiretor architecture and it looks impressive.
They are talking of various terms like XI (the SAP Exchange Infrastructure)
Master Data Management (MDM),xIEP, ALE,IDocs, EP (Enterprise Portal)
At the outset, it was an interesting session i attended.
now i got think of what to do with my gift vouchers..
Actually my intention was to get lunch at Leela palace and so i paid 200/- when the entry fee for the event. But then i got enough stuff and a T-Shirt and importantly i got the first prize in the quiz which gave me 1500/- gift voucher.
It was interesting to listen about Netweaver. Accenture is working on Netweaver to provide solutions to its client. Both Accenture and SAP are big players in the market and are capable of capturing market share on the Composite applications domain.
Well, that was the interesting part of the session, that is the theme behind the Netweaver, its about Composite Applications. They seems ready to hit the market. At one point of time i was wondering is the Digital Harbor loosing its lead in the Composite Applications? they are talking more in detail about the Composite Applications. The theory looked better then what i heard at Digital Harbor.
And they are working going to hit the market soon with CAF (Composite Application Framework, which is an IDE based on Eclipse). They are doing wonderful stuff, generate spicy real time reports in no time. They have xApps for composite Applications.
Features of SAP NetWeaver are
1. People Integration
2. Information Integration
3. Process Integration
4. Application Integration and Platform
But then the issues that are ahead of composite applications are too discussed.
1. Managing the complexities of the Composite Applications
2. Life cycle management of the applications and making sure that those applications are running and talking with each other.
There was new thing that i come across, SAP is having a concept called ESA, which i havent heard before (as i know :-) ) well. This ESA (Enterprise Service Architecture) is a business implemetation of the SOA.
There was intersting discussion about how the innovation works.. first innovate something, then work on it and make sure you consolidate it. create a standardization of the innovation, then you outsource the work to somebody else and engage your guys to innovate something else.. Looks impressive isnt it?
Few of the components that are required for developing composite applications are
1. A single common execution architecture
2. An eAI Tool
3. A portal Engine
4. A BI (Business Intelligence) Platform
5. A custom Development Engine
6. A collabarative engine
7. Knowledge Management engine.
8. A work flow engine
9. A process management engine
10.A mobile development plaftform
Netweaver comes with a refrigiretor architecture and it looks impressive.
They are talking of various terms like XI (the SAP Exchange Infrastructure)
Master Data Management (MDM),xIEP, ALE,IDocs, EP (Enterprise Portal)
At the outset, it was an interesting session i attended.
now i got think of what to do with my gift vouchers..
Tuesday, September 20, 2005
White papers
N-Tier Architecture
The same website has lots of other tech suppliments.
White papers from Panda software on software security
Tech Republic White papers
Article on B2B
small intro to B2B from http://wisegeek.com
"B2B" is contemporary shorthand for a longtime sales practice called business-to-business. B2B transactions primarily target companies and other wholesale buyers, while transactions targeting individuals are called B2C, or business-to-customer. Many organizations have both B2B and B2C components, but it's not unusual for a company to specialize in B2B services or sales. In fact, the vast majority of products and services sold are considered to be B2B in nature.
One major reason for the popularity of B2B sales and services is sheer volume. An individual customer may visit a clothing manufacturer's website catalog and order two pairs of shoes or a sweater. The buyer for a national chain of clothing stores, however, may order 5,000 pairs of shoes and 2,000 sweaters. Without a B2B component, the manufacturer would have lost out on a very lucrative sale. This is why many companies provide B2B options alongside the B2C offerings at their websites and other outlets.
B2B sales are also generated by providing a specialized product line or service not available to the general public. This form of B2B transaction is very common in the manufacturing world. A company which produces shaving cream in cans, for example, may need a specific plastic nozzle. Several plastic injection molding companies would send sales representatives to pitch their particular designs. These nozzles would be useless for individual customers, but a manufacturer may order thousands of them.
With the growth in electronic communications, B2B has taken on even more importance. Instead of simply focusing on business-to-business sales, modern corporations are conducting other financial transactions online. B2B communications are now being used to promote investment, trade stocks and form financial alliances. Because the price of these transactions is far beyond the reach of most individuals, there is no equivalent business-to-customer option available. Some B2B transactions handled electronically can literally run into the billions of dollars.
The same website has lots of other tech suppliments.
White papers from Panda software on software security
Tech Republic White papers
Article on B2B
small intro to B2B from http://wisegeek.com
"B2B" is contemporary shorthand for a longtime sales practice called business-to-business. B2B transactions primarily target companies and other wholesale buyers, while transactions targeting individuals are called B2C, or business-to-customer. Many organizations have both B2B and B2C components, but it's not unusual for a company to specialize in B2B services or sales. In fact, the vast majority of products and services sold are considered to be B2B in nature.
One major reason for the popularity of B2B sales and services is sheer volume. An individual customer may visit a clothing manufacturer's website catalog and order two pairs of shoes or a sweater. The buyer for a national chain of clothing stores, however, may order 5,000 pairs of shoes and 2,000 sweaters. Without a B2B component, the manufacturer would have lost out on a very lucrative sale. This is why many companies provide B2B options alongside the B2C offerings at their websites and other outlets.
B2B sales are also generated by providing a specialized product line or service not available to the general public. This form of B2B transaction is very common in the manufacturing world. A company which produces shaving cream in cans, for example, may need a specific plastic nozzle. Several plastic injection molding companies would send sales representatives to pitch their particular designs. These nozzles would be useless for individual customers, but a manufacturer may order thousands of them.
With the growth in electronic communications, B2B has taken on even more importance. Instead of simply focusing on business-to-business sales, modern corporations are conducting other financial transactions online. B2B communications are now being used to promote investment, trade stocks and form financial alliances. Because the price of these transactions is far beyond the reach of most individuals, there is no equivalent business-to-customer option available. Some B2B transactions handled electronically can literally run into the billions of dollars.
Thursday, September 15, 2005
C faqs abridged
Section 1. Declarations and Initializations
1.1: How do you decide which integer type to use?
A: If you might need large values (tens of thousands), use long.
Otherwise, if space is very important, use short. Otherwise,
use int.
1.4: What should the 64-bit type on a machine that can support it?
A: C9X specifies long long.
1.7: What's the best way to declare and define global variables?
A: The best arrangement is to place each definition in some
relevant .c file, with an external declaration in a header file.
1.11: What does extern mean in a function declaration?
A: Nothing, really; the keyword extern is optional here.
1.12: What's the auto keyword good for?
A: Nothing.
1.14: I can't seem to define a linked list node which contains a
pointer to itself.
A: Structures in C can certainly contain pointers to themselves;
the discussion and example in section 6.5 of K&R make this
clear. Problems arise if an attempt is made to define (and use)
a typedef in the midst of such a declaration; avoid this.
1.21: How do I declare an array of N pointers to functions returning
pointers to functions returning pointers to characters?
A: char *(*(*a[N])())();
Using a chain of typedefs, or the cdecl program, makes these
declarations easier.
1.22: How can I declare a function that returns a pointer to a
function of its own type?
A: You can't quite do it directly. Use a cast, or wrap a struct
around the pointer and return that.
1.25: My compiler is complaining about an invalid redeclaration of a
function, but I only define it once.
A: Calling an undeclared function declares it implicitly as
returning int.
1.25b: What's the right declaration for main()?
A: See questions 11.12a to 11.15.
1.30: What am I allowed to assume about the initial values
of variables which are not explicitly initialized?
A: Uninitialized variables with "static" duration start out as 0,
as if the programmer had initialized them. Variables with
"automatic" duration, and dynamically-allocated memory, start
out containing garbage (with the exception of calloc).
1.31: Why can't I initialize a local array with a string?
A: Perhaps you have a pre-ANSI compiler.
1.31b: What's wrong with "char *p = malloc(10);" ?
A: Function calls are not allowed in initializers for global or
static variables.
1.32: What is the difference between char a[] = "string"; and
char *p = "string"; ?
A: The first declares an initialized and modifiable array; the
second declares a pointer initialized to a not-necessarily-
modifiable constant string.
1.34: How do I initialize a pointer to a function?
A: Use something like "extern int func(); int (*fp)() = func;" .
Section 2. Structures, Unions, and Enumerations
2.1: What's the difference between struct x1 { ... }; and
typedef struct { ... } x2; ?
A: The first structure is named by a tag, the second by a typedef
name.
2.2: Why doesn't "struct x { ... }; x thestruct;" work?
A: C is not C++.
2.3: Can a structure contain a pointer to itself?
A: See question 1.14.
2.4: What's the best way of implementing opaque (abstract) data types
in C?
A: One good way is to use structure pointers which point to
structure types which are not publicly defined.
2.6: I came across some code that declared a structure with the last
member an array of one element, and then did some tricky
allocation to make it act like the array had several elements.
Is this legal or portable?
A: An official interpretation has deemed that it is not strictly
conforming with the C Standard.
2.7: I heard that structures could be assigned to variables and
passed to and from functions, but K&R1 says not.
A: These operations are supported by all modern compilers.
2.8: Is there a way to compare structures automatically?
A: No.
2.10: Can I pass constant values to functions which accept structure
arguments?
A: Not yet. As of this writing, C has no way of generating
anonymous structure values.
2.11: How can I read/write structures from/to data files?
A: It is relatively straightforward to use fread and fwrite.
2.12: How can I turn off structure padding?
A: There is no standard method.
2.13: Why does sizeof report a larger size than I expect for a
structure type?
A: The alignment of arrays of structures must be preserved.
2.14: How can I determine the byte offset of a field within a
structure?
A: ANSI C defines the offsetof() macro, which should be used if
available.
2.15: How can I access structure fields by name at run time?
A: Build a table of names and offsets, using the offsetof() macro.
2.18: I have a program which works correctly, but dumps core after it
finishes. Why?
A: Check to see if a structure type declaration just before main()
is missing its trailing semicolon, causing main() to be declared
as returning a structure. See also questions 10.9 and 16.4.
2.20: Can I initialize unions?
A: The current C Standard allows an initializer for the first-named
member.
2.22: What is the difference between an enumeration and a set of
preprocessor #defines?
A: At the present time, there is little difference. The C Standard
states that enumerations are compatible with integral types.
2.24: Is there an easy way to print enumeration values symbolically?
A: No.
Section 3. Expressions
3.1: Why doesn't the code "a[i] = i++;" work?
A: The variable i is both referenced and modified in the same
expression.
3.2: Under my compiler, the code "int i = 7;
printf("%d\n", i++ * i++);" prints 49. Regardless of the order
of evaluation, shouldn't it print 56?
A: The operations implied by the postincrement and postdecrement
operators ++ and -- are performed at some time after the
operand's former values are yielded and before the end of the
expression, but not necessarily immediately after, or before
other parts of the expression are evaluated.
3.3: What should the code "int i = 3; i = i++;" do?
A: The expression is undefined.
3.3b: Here's a slick expression: "a ^= b ^= a ^= b". It swaps a and b
without using a temporary.
A: Not portably; its behavior is undefined.
3.4: Don't precedence and parentheses dictate order of evaluation?
A: Operator precedence and explicit parentheses impose only a
partial ordering on the evaluation of an expression, which does
not generally include the order of side effects.
3.5: But what about the && and || operators?
A: There is a special exception for those operators: left-to-right
evaluation is guaranteed.
3.8: What's a "sequence point"?
A: A point (at the end of a full expression, or at the ||, &&, ?:,
or comma operators, or just before a function call) at which all
side effects are guaranteed to be complete.
3.9: So given a[i] = i++; we don't know which cell of a[] gets
written to, but i does get incremented by one, right?
A: *No*. Once an expression or program becomes undefined, *all*
aspects of it become undefined.
3.12: If I'm not using the value of the expression, should I use i++
or ++i to increment a variable?
A: Since the two forms differ only in the value yielded, they are
entirely equivalent when only their side effect is needed.
3.14: Why doesn't the code "int a = 1000, b = 1000;
long int c = a * b;" work?
A: You must manually cast one of the operands to (long).
3.16: Can I use ?: on the left-hand side of an assignment expression?
A: No.
Section 4. Pointers
4.2: What's wrong with "char *p; *p = malloc(10);"?
A: The pointer you declared is p, not *p.
4.3: Does *p++ increment p, or what it points to?
A: *p++ increments p. To increment the value pointed to by p, use
(*p)++ .
4.5: I want to use a char * pointer to step over some ints. Why
doesn't "((int *)p)++;" work?
A: In C, a cast operator is a conversion operator, and by
definition it yields an rvalue, which cannot be assigned to, or
incremented with ++.
4.8: I have a function which accepts, and is supposed to initialize,
a pointer, but the pointer in the caller remains unchanged.
A: The called function probably altered only the passed copy of the
pointer.
4.9: Can I use a void ** pointer as a parameter so that a function
can accept a generic pointer by reference?
A: Not portably.
4.10: I have a function which accepts a pointer to an int. How can I
pass a constant like 5 to it?
A: You will have to declare a temporary variable.
4.11: Does C even have "pass by reference"?
A: Not really, though it can be simulated.
4.12: I've seen different methods used for calling functions via
pointers.
A: The extra parentheses and explicit * are now officially
optional, although some older implementations require them.
Section 5. Null Pointers
5.1: What is this infamous null pointer, anyway?
A: For each pointer type, there is a special value -- the "null
pointer" -- which is distinguishable from all other pointer
values and which is not the address of any object or function.
5.2: How do I get a null pointer in my programs?
A: A constant 0 in a pointer context is converted into a null
pointer at compile time. A "pointer context" is an
initialization, assignment, or comparison with one side a
variable or expression of pointer type, and (in ANSI standard C)
a function argument which has a prototype in scope declaring a
certain parameter as being of pointer type. In other contexts
(function arguments without prototypes, or in the variable part
of variadic function calls) a constant 0 with an appropriate
explicit cast is required.
5.3: Is the abbreviated pointer comparison "if(p)" to test for non-
null pointers valid?
A: Yes. The construction "if(p)" works, regardless of the internal
representation of null pointers, because the compiler
essentially rewrites it as "if(p != 0)" and goes on to convert 0
into the correct null pointer.
5.4: What is NULL and how is it #defined?
A: NULL is simply a preprocessor macro, #defined as 0 (or
((void *)0)), which is used (as a stylistic convention, in
preference to unadorned 0's) to generate null pointers.
5.5: How should NULL be defined on a machine which uses a nonzero bit
pattern as the internal representation of a null pointer?
A: The same as on any other machine: as 0. (The compiler makes the
translation, upon seeing a 0, not the preprocessor; see also
question 5.4.)
5.6: If NULL were defined as "((char *)0)," wouldn't that make
function calls which pass an uncast NULL work?
A: Not in general. The complication is that there are machines
which use different internal representations for pointers to
different types of data. A cast is still required to tell the
compiler which kind of null pointer is required, since it may be
different from (char *)0.
5.9: If NULL and 0 are equivalent as null pointer constants, which
should I use?
A: Either; the distinction is entirely stylistic.
5.10: But wouldn't it be better to use NULL, in case the value of NULL
changes?
A: No. NULL is a constant zero, so a constant zero is equally
sufficient.
5.12: I use the preprocessor macro "#define Nullptr(type) (type *)0"
to help me build null pointers of the correct type.
A: This trick, though valid, does not buy much.
5.13: This is strange. NULL is guaranteed to be 0, but the null
pointer is not?
A: A "null pointer" is a language concept whose particular internal
value does not matter. A null pointer is requested in source
code with the character "0". "NULL" is a preprocessor macro,
which is always #defined as 0 (or ((void *)0)).
5.14: Why is there so much confusion surrounding null pointers?
A: The fact that null pointers are represented both in source code,
and internally to most machines, as zero invites unwarranted
assumptions. The use of a preprocessor macro (NULL) may seem to
suggest that the value could change some day, or on some weird
machine.
5.15: I'm confused. I just can't understand all this null pointer
stuff.
A: A simple rule is, "Always use `0' or `NULL' for null pointers,
and always cast them when they are used as arguments in function
calls."
5.16: Given all the confusion surrounding null pointers, wouldn't it
be easier simply to require them to be represented internally by
zeroes?
A: Such a requirement would accomplish little.
5.17: Seriously, have any actual machines really used nonzero null
pointers?
A: Machines manufactured by Prime, Honeywell-Bull, and CDC, as well
as Symbolics Lisp Machines, have done so.
5.20: What does a run-time "null pointer assignment" error mean?
A: It means that you've written, via a null pointer, to an invalid
location. (See also question 16.8.)
Section 6. Arrays and Pointers
6.1: I had the definition char a[6] in one source file, and in
another I declared extern char *a. Why didn't it work?
A: The declaration extern char *a simply does not match the actual
definition. Use extern char a[].
6.2: But I heard that char a[] was identical to char *a.
A: Not at all. Arrays are not pointers. A reference like x[3]
generates different code depending on whether x is an array or a
pointer.
6.3: So what is meant by the "equivalence of pointers and arrays" in
C?
A: An lvalue of type array-of-T which appears in an expression
decays into a pointer to its first element; the type of the
resultant pointer is pointer-to-T. So for an array a and
pointer p, you can say "p = a;" and then p[3] and a[3] will
access the same element.
6.4: Why are array and pointer declarations interchangeable as
function formal parameters?
A: It's supposed to be a convenience.
6.7: How can an array be an lvalue, if you can't assign to it?
A: An array is not a "modifiable lvalue."
6.8: What is the real difference between arrays and pointers?
A: Arrays automatically allocate space which is fixed in size and
location; pointers are dynamic.
6.9: Someone explained to me that arrays were really just constant
pointers.
A: An array name is "constant" in that it cannot be assigned to,
but an array is *not* a pointer.
6.11: I came across some "joke" code containing the "expression"
5["abcdef"] . How can this be legal C?
A: Yes, array subscripting is commutative in C. The array
subscripting operation a[e] is defined as being identical to
*((a)+(e)).
6.12: What's the difference between array and &array?
A: The type.
6.13: How do I declare a pointer to an array?
A: Usually, you don't want to. Consider using a pointer to one of
the array's elements instead.
6.14: How can I set an array's size at run time?
A: It's straightforward to use malloc() and a pointer.
6.15: How can I declare local arrays of a size matching a passed-in
array?
A: Until recently, you couldn't; array dimensions had to be compile-
time constants. C9X will fix this.
6.16: How can I dynamically allocate a multidimensional array?
A: The traditional solution is to allocate an array of pointers,
and then initialize each pointer to a dynamically-allocated
"row." See the full list for code samples.
6.17: Can I simulate a non-0-based array with a pointer?
A: Not if the pointer points outside of the block of memory it is
intended to access.
6.18: My compiler complained when I passed a two-dimensional array to
a function expecting a pointer to a pointer.
A: The rule by which arrays decay into pointers is not applied
recursively. An array of arrays (i.e. a two-dimensional array
in C) decays into a pointer to an array, not a pointer to a
pointer.
6.19: How do I write functions which accept two-dimensional arrays
when the width is not known at compile time?
A: It's not always particularly easy.
6.20: How can I use statically- and dynamically-allocated
multidimensional arrays interchangeably when passing them to
functions?
A: There is no single perfect method, but see the full list for
some ideas.
6.21: Why doesn't sizeof properly report the size of an array which is
a parameter to a function?
A: The sizeof operator reports the size of the pointer parameter
which the function actually receives.
Section 7. Memory Allocation
7.1: Why doesn't the code "char *answer; gets(answer);" work?
A: The pointer variable answer has not been set to point to any
valid storage. The simplest way to correct this fragment is to
use a local array, instead of a pointer.
7.2: I can't get strcat() to work. I tried "char *s3 =
strcat(s1, s2);" but I got strange results.
A: Again, the main problem here is that space for the concatenated
result is not properly allocated.
7.3: But the man page for strcat() says that it takes two char *'s as
arguments. How am I supposed to know to allocate things?
A: In general, when using pointers you *always* have to consider
memory allocation, if only to make sure that the compiler is
doing it for you.
7.3b: I just tried the code "char *p; strcpy(p, "abc");" and it
worked. Why didn't it crash?
A: You got "lucky".
7.3c: How much memory does a pointer variable allocate?
A: Only enough memory to hold the pointer itself, not any memory
for the pointer to point to.
7.5a: I have a function that is supposed to return a string, but when
it returns to its caller, the returned string is garbage.
A: Make sure that the pointed-to memory is properly (i.e. not
locally) allocated.
7.5b: So what's the right way to return a string?
A: Return a pointer to a statically-allocated buffer, a buffer
passed in by the caller, or memory obtained with malloc().
7.6: Why am I getting "warning: assignment of pointer from integer
lacks a cast" for calls to malloc()?
A: Have you #included?
7.7: Why does some code carefully cast the values returned by malloc
to the pointer type being allocated?
A: Before ANSI/ISO C, these casts were required to silence certain
warnings.
7.8: Why does so much code leave out the multiplication by
sizeof(char) when allocating strings?
A: Because sizeof(char) is, by definition, exactly 1.
7.14: I've heard that some operating systems don't actually allocate
malloc'ed memory until the program tries to use it. Is this
legal?
A: It's hard to say.
7.16: I'm allocating a large array for some numeric work, but malloc()
is acting strangely.
A: Make sure the number you're trying to pass to malloc() isn't
bigger than a size_t can hold.
7.17: I've got 8 meg of memory in my PC. Why can I only seem to
malloc 640K or so?
A: Under the segmented architecture of PC compatibles, it can be
difficult to use more than 640K with any degree of transparency.
See also question 19.23.
7.19: My program is crashing, apparently somewhere down inside malloc.
A: Make sure you aren't using more memory than you malloc'ed,
especially for strings (which need strlen(str) + 1 bytes).
7.20: You can't use dynamically-allocated memory after you free it,
can you?
A: No. Some early documentation implied otherwise, but the claim
is no longer valid.
7.21: Why isn't a pointer null after calling free()?
A: C's pass-by-value semantics mean that called functions can never
permanently change the values of their arguments.
7.22: When I call malloc() to allocate memory for a local pointer, do
I have to explicitly free() it?
A: Yes.
7.23: When I free a dynamically-allocated structure containing
pointers, do I also have to free each subsidiary pointer?
A: Yes.
7.24: Must I free allocated memory before the program exits?
A: You shouldn't have to.
7.25: Why doesn't my program's memory usage go down when I free
memory?
A: Most implementations of malloc/free do not return freed memory
to the operating system.
7.26: How does free() know how many bytes to free?
A: The malloc/free implementation remembers the size of each block
as it is allocated.
7.27: So can I query the malloc package to find out how big an
allocated block is?
A: Not portably.
7.30: Is it legal to pass a null pointer as the first argument to
realloc()?
A: ANSI C sanctions this usage, although several earlier
implementations do not support it.
7.31: What's the difference between calloc() and malloc()?
A: calloc() takes two arguments, and initializes the allocated
memory to all-bits-0.
7.32: What is alloca() and why is its use discouraged?
A: alloca() allocates memory which is automatically freed when the
function which called alloca() returns. alloca() cannot be
written portably, is difficult to implement on machines without
a stack, and fails under certain conditions if implemented
simply.
Section 8. Characters and Strings
8.1: Why doesn't "strcat(string, '!');" work?
A: strcat() concatenates *strings*, not characters.
8.2: Why won't the test if(string == "value") correctly compare
string against the value?
A: It's comparing pointers. To compare two strings, use strcmp().
8.3: Why can't I assign strings to character arrays?
A: Strings are arrays, and you can't assign arrays directly. Use
strcpy() instead.
8.6: How can I get the numeric (character set) value corresponding to
a character?
A: In C, if you have the character, you have its value.
8.9: Why is sizeof('a') not 1?
A: Character constants in C are of type int.
Section 9. Boolean Expressions and Variables
9.1: What is the right type to use for Boolean values in C?
A: There's no one right answer; see the full list for some
discussion.
9.2: What if a built-in logical or relational operator "returns"
something other than 1?
A: When a Boolean value is generated by a built-in operator, it is
guaranteed to be 1 or 0. (This is *not* true for some library
routines such as isalpha.)
9.3: Is if(p), where p is a pointer, valid?
A: Yes. See question 5.3.
Section 10. C Preprocessor
10.2: I've got some cute preprocessor macros that let me write C code
that looks more like Pascal. What do y'all think?
A: Bleah.
10.3: How can I write a generic macro to swap two values?
A: There is no good answer to this question. The best all-around
solution is probably to forget about using a macro.
10.4: What's the best way to write a multi-statement macro?
A: #define Func() do {stmt1; stmt2; ... } while(0) /* (no trailing ;) */
10.6: What are .h files and what should I put in them?
A: Header files (also called ".h files") should generally contain
common declarations and macro, structure, and typedef
definitions, but not variable or function definitions.
10.7: Is it acceptable for one header file to #include another?
A: It's a question of style, and thus receives considerable debate.
10.8a: What's the difference between #include <> and #include "" ?
A: Roughly speaking, the <> syntax is for Standard headers and ""
is for project headers.
10.8b: What are the complete rules for header file searching?
A: The exact behavior is implementation-defined; see the full list
for some discussion.
10.9: I'm getting strange syntax errors on the very first declaration
in a file, but it looks fine.
A: Perhaps there's a missing semicolon at the end of the last
declaration in the last header file you're #including.
10.10b: I'm #including the header file for a function, but the linker
keeps saying it's undefined.
A: See question 13.25.
10.11: Where can I get a copy of a missing header file?
A: Contact your vendor, or see question 18.16 or the full list.
10.12: How can I construct preprocessor #if expressions which compare
strings?
A: You can't do it directly; try #defining several manifest
constants and implementing conditionals on those.
10.13: Does the sizeof operator work in preprocessor #if directives?
A: No.
10.14: Can I use an #ifdef in a #define line, to define something two
different ways?
A: No.
10.15: Is there anything like an #ifdef for typedefs?
A: Unfortunately, no.
10.16: How can I use a preprocessor #if expression to detect
endianness?
A: You probably can't.
10.18: How can I preprocess some code to remove selected conditional
compilations, without preprocessing everything?
A: Look for a program called unifdef, rmifdef, or scpp.
10.19: How can I list all of the predefined identifiers?
A: If the compiler documentation is unhelpful, try extracting
printable strings from the compiler or preprocessor executable.
10.20: I have some old code that tries to construct identifiers with a
macro like "#define Paste(a, b) a/**/b", but it doesn't work any
more.
A: Try the ANSI token-pasting operator ##.
10.22: What does the message "warning: macro replacement within a
string literal" mean?
A: See question 11.18.
10.23-4: I'm having trouble using macro arguments inside string
literals, using the `#' operator.
A: See questions 11.17 and 11.18.
10.25: I've got this tricky preprocessing I want to do and I can't
figure out a way to do it.
A: Consider writing your own little special-purpose preprocessing
tool, instead.
10.26: How can I write a macro which takes a variable number of
arguments?
A: Here is one popular trick. Note that the parentheses around
printf's argument list are in the macro call, not the
definition.
#define DEBUG(args) (printf("DEBUG: "), printf args)
if(n != 0) DEBUG(("n is %d\n", n));
Section 11. ANSI/ISO Standard C
11.1: What is the "ANSI C Standard?"
A: In 1983, the American National Standards Institute (ANSI)
commissioned a committee to standardize the C language. Their
work was ratified as ANS X3.159-1989, and has since been adopted
as ISO/IEC 9899:1990, and later amended.
11.2: How can I get a copy of the Standard?
A: Copies are available from ANSI in New York, or from Global
Engineering Documents in Englewood, CO, or from any national
standards body, or from ISO in Geneva, or republished within one
or more books. See the unabridged list for details.
11.2b: Where can I get information about updates to the Standard?
A: See the full list for pointers.
11.3: My ANSI compiler is complaining about prototype mismatches for
parameters declared float.
A: You have mixed the new-style prototype declaration
"extern int func(float);" with the old-style definition
"int func(x) float x;". "Narrow" types are treated differently
according to which syntax is used. This problem can be fixed by
avoiding narrow types, or by using either new-style (prototype)
or old-style syntax consistently.
11.4: Can you mix old-style and new-style function syntax?
A: Doing so is currently legal, for most argument types
(see question 11.3).
11.5: Why does the declaration "extern int f(struct x *p);" give me a
warning message?
A: A structure declared (or even mentioned) for the first time
within a prototype cannot be compatible with other structures
declared in the same source file.
11.8: Why can't I use const values in initializers and array
dimensions?
A: The value of a const-qualified object is *not* a constant
expression in the full sense of the term.
11.9: What's the difference between "const char *p" and
"char * const p"?
A: The former declares a pointer to a constant character; the
latter declares a constant pointer to a character.
11.10: Why can't I pass a char ** to a function which expects a
const char **?
A: The rule which permits slight mismatches in qualified pointer
assignments is not applied recursively.
11.12a: What's the correct declaration of main()?
A: int main(int argc, char *argv[]) .
11.12b: Can I declare main() as void, to shut off these annoying "main
returns no value" messages?
A: No.
11.13: But what about main's third argument, envp?
A: It's a non-standard (though common) extension.
11.14: I believe that declaring void main() can't fail, since I'm
calling exit() instead of returning.
A: It doesn't matter whether main() returns or not, the problem is
that its caller may not even be able to *call* it correctly.
11.15: The book I've been using always uses void main().
A: It's wrong.
11.16: Is exit(status) truly equivalent to returning the same status
from main()?
A: Yes and no. (See the full list for details.)
11.17: How do I get the ANSI "stringizing" preprocessing operator `#'
to stringize the macro's value instead of its name?
A: You can use a two-step #definition to force a macro to be
expanded as well as stringized.
11.18: What does the message "warning: macro replacement within a
string literal" mean?
A: Some pre-ANSI compilers/preprocessors expanded macro parameters
even inside string literals and character constants.
11.19: I'm getting strange syntax errors inside lines I've #ifdeffed
out.
A: Under ANSI C, #ifdeffed-out text must still consist of "valid
preprocessing tokens." This means that there must be no
newlines inside quotes, and no unterminated comments or quotes
(i.e. no single apostrophes).
11.20: What are #pragmas ?
A: The #pragma directive provides a single, well-defined "escape
hatch" which can be used for extensions.
11.21: What does "#pragma once" mean?
A: It is an extension implemented by some preprocessors to help
make header files idempotent.
11.22: Is char a[3] = "abc"; legal?
A: Yes, in ANSI C.
11.24: Why can't I perform arithmetic on a void * pointer?
A: The compiler doesn't know the size of the pointed-to objects.
11.25: What's the difference between memcpy() and memmove()?
A: memmove() offers guaranteed behavior if the source and
destination arguments overlap.
11.26: What should malloc(0) do?
A: The behavior is implementation-defined.
11.27: Why does the ANSI Standard not guarantee more than six case-
insensitive characters of external identifier significance?
A: The problem is older linkers which cannot be forced (by mere
words in a Standard) to upgrade.
11.29: My compiler is rejecting the simplest possible test programs,
with all kinds of syntax errors.
A: Perhaps it is a pre-ANSI compiler.
11.30: Why are some ANSI/ISO Standard library functions showing up as
undefined, even though I've got an ANSI compiler?
A: Perhaps you don't have ANSI-compatible headers and libraries.
11.31: Does anyone have a tool for converting old-style C programs to
ANSI C, or for automatically generating prototypes?
A: See the full list for details.
11.32: Why won't frobozz-cc, which claims to be ANSI compliant, accept
this code?
A: Are you sure that the code being rejected doesn't rely on some
non-Standard extension?
11.33: What's the difference between implementation-defined,
unspecified, and undefined behavior?
A: If you're writing portable code, ignore the distinctions.
Otherwise, see the full list.
11.34: I'm appalled that the ANSI Standard leaves so many issues
undefined.
A: In most of these cases, the Standard is simply codifying
existing practice.
11.35: I just tried some allegedly-undefined code on an ANSI-conforming
compiler, and got the results I expected.
A: A compiler may do anything it likes when faced with undefined
behavior, including doing what you expect.
Section 12. Stdio
12.1: What's wrong with the code "char c; while((c = getchar()) !=
EOF) ..."?
A: The variable to hold getchar's return value must be an int.
12.2: Why won't the code "while(!feof(infp)) {
fgets(buf, MAXLINE, infp); fputs(buf, outfp); }" work?
A: EOF is only indicated *after* an input routine fails.
12.4: My program's prompts and intermediate output don't always show
up on the screen.
A: It's best to use an explicit fflush(stdout) whenever output
should definitely be visible.
12.5: How can I read one character at a time, without waiting for the
RETURN key?
A: See question 19.1.
12.6: How can I print a '%' character with printf?
A: "%%".
12.9: How can printf() use %f for type double, if scanf() requires
%lf?
A: C's "default argument promotions" mean that values of type float
are promoted to double.
12.9b: What printf format should I use for a typedef when I don't know
the underlying type?
A: Use a cast to convert the value to a known type, then use the
printf format matching that type.
12.10: How can I implement a variable field width with printf?
A: Use printf("%*d", width, x).
12.11: How can I print numbers with commas separating the thousands?
A: There is no standard routine (but see).
12.12: Why doesn't the call scanf("%d", i) work?
A: The arguments you pass to scanf() must always be pointers.
12.13: Why doesn't the code "double d; scanf("%f", &d);" work?
A: Unlike printf(), scanf() uses %lf for double, and %f for float.
12.15: How can I specify a variable width in a scanf() format string?
A: You can't.
12.17: When I read numbers from the keyboard with scanf "%d\n", it
seems to hang until I type one extra line of input.
A: Try using "%d" instead of "%d\n".
12.18: I'm reading a number with scanf %d and then a string with
gets(), but the compiler seems to be skipping the call to
gets()!
A: scanf() and gets() do not work well together.
12.19: I'm re-prompting the user if scanf() fails, but sometimes it
seems to go into an infinite loop.
A: scanf() tends to "jam" on bad input since it does not discard
it.
12.20: Why does everyone say not to use scanf()? What should I use
instead?
A: scanf() has a number of problems. Usually, it's easier to read
entire lines and then interpret them.
12.21: How can I tell how much destination buffer space I'll need for
an arbitrary sprintf call? How can I avoid overflowing the
destination buffer with sprintf()?
A: Use the new snprintf() function, if you can.
12.23: Why does everyone say not to use gets()?
A: It cannot be prevented from overflowing the input buffer.
12.24: Why does errno contain ENOTTY after a call to printf()?
A: Don't worry about it. It is only meaningful for a program to
inspect the contents of errno after an error has been reported.
12.25: What's the difference between fgetpos/fsetpos and ftell/fseek?
A: fgetpos() and fsetpos() use a special typedef which may allow
them to work with larger files than ftell() and fseek().
12.26: Will fflush(stdin) flush unread characters from the standard
input stream?
A: No.
12.30: I'm trying to update a file in place, by using fopen mode "r+",
but it's not working.
A: Be sure to call fseek between reading and writing.
12.33: How can I redirect stdin or stdout from within a program?
A: Use freopen().
12.34: Once I've used freopen(), how can I get the original stream
back?
A: There isn't a good way. Try avoiding freopen.
12.36b: How can I arrange to have output go two places at once?
A: You could write your own printf variant which printed everything
twice. See question 15.5.
12.38: How can I read a binary data file properly?
A: Be sure to specify "rb" mode when calling fopen().
Section 13. Library Functions
13.1: How can I convert numbers to strings?
A: Just use sprintf().
13.2: Why does strncpy() not always write a '\0'?
A: For mildly-interesting historical reasons.
13.5: Why do some versions of toupper() act strangely if given an
upper-case letter?
A: Older versions of toupper() and tolower() did not always work as
expected in this regard.
13.6: How can I split up a string into whitespace-separated fields?
A: Try strtok().
13.7: I need some code to do regular expression and wildcard matching.
A: regexp libraries abound; see the full list for details.
13.8: I'm trying to sort an array of strings with qsort(), using
strcmp() as the comparison function, but it's not working.
A: You'll have to write a "helper" comparison function which takes
two generic pointer arguments, converts them to char **, and
dereferences them, yielding char *'s which can be usefully
compared.
13.9: Now I'm trying to sort an array of structures, but the compiler
is complaining that the function is of the wrong type for
qsort().
A: The comparison function must be declared as accepting "generic
pointers" (const void *) which it then converts to structure
pointers.
13.10: How can I sort a linked list?
A: Algorithms like insertion sort and merge sort work well, or you
can keep the list in order as you build it.
13.11: How can I sort more data than will fit in memory?
A: You want an "external sort"; see the full list for details.
13.12: How can I get the time of day in a C program?
A: Just use the time(), ctime(), localtime() and/or strftime()
functions.
13.13: How can I convert a struct tm or a string into a time_t?
A: The ANSI mktime() function converts a struct tm to a time_t. No
standard routine exists to parse strings.
13.14: How can I perform calendar manipulations?
A: The ANSI/ISO Standard C mktime() and difftime() functions
provide some support for both problems.
13.14b: Does C have any Year 2000 problems?
A: No, although poorly-written C programs do. Make sure you know
that tm_year holds the value of the year minus 1900.
13.15: I need a random number generator.
A: The Standard C library has one: rand().
13.16: How can I get random integers in a certain range?
A: One method is something like
(int)((double)rand() / ((double)RAND_MAX + 1) * N)
13.17: Each time I run my program, I get the same sequence of numbers
back from rand().
A: You can call srand() to seed the pseudo-random number generator
with a truly random initial value.
13.18: I need a random true/false value, so I'm just taking rand() % 2,
but it's alternating 0, 1, 0, 1, 0...
A: Try using the higher-order bits: see question 13.16.
13.20: How can I generate random numbers with a normal or Gaussian
distribution?
A: See the longer versions of this list for ideas.
13.24: I'm trying to port this old program. Why do I get "undefined
external" errors for some library functions?
A: Some semistandard functions have been renamed or replaced over
the years; see the full list for details.
13.25: I get errors due to library functions being undefined even
though I #include the right header files.
A: You may have to explicitly ask for the correct libraries to be
searched.
13.26: I'm still getting errors due to library functions being
undefined, even though I'm requesting the right libraries.
A: Library search order is significant; usually, you must search
the libraries last.
13.28: What does it mean when the linker says that _end is undefined?
A: You generally get that message only when other symbols are
undefined, too.
Section 14. Floating Point
14.1: When I set a float variable to 3.1, why is printf printing it as
3.0999999?
A: Most computers use base 2 for floating-point numbers, and many
fractions (including 0.1 decimal) are not exactly representable
in base 2.
14.2: Why is sqrt(144.) giving me crazy numbers?
A: Make sure that you have #included, and correctly
declared other functions returning double.
14.3: I keep getting "undefined: sin" compilation errors.
A: Make sure you're actually linking with the math library.
14.4: My floating-point calculations are acting strangely and giving
me different answers on different machines.
A: First, see question 14.2 above. If the problem isn't that
simple, see the full list for a brief explanation, or any good
programming book for a better one.
14.5: What's a good way to check for "close enough" floating-point
equality?
A: The best way is to use an accuracy threshold which is relative
to the magnitude of the numbers being compared.
14.6: How do I round numbers?
A: For positive numbers, try (int)(x + 0.5) .
14.7: Where is C's exponentiation operator?
A: Try using the pow() function.
14.8: The predefined constant M_PI seems to be missing from.
A: That constant is not standard.
14.9: How do I test for IEEE NaN and other special values?
A: There is not yet a portable way, but see the full list for
ideas.
14.11: What's a good way to implement complex numbers in C?
A: It is straightforward to define a simple structure and some
arithmetic functions to manipulate them.
14.12: I'm looking for some mathematical library code.
A: See Ajay Shah's index of free numerical software at
ftp://ftp.math.psu.edu/pub/FAQ/numcomp-free-c .
14.13: I'm having trouble with a Turbo C program which crashes and says
something like "floating point formats not linked."
A: You may have to insert a dummy call to a floating-point library
function to force loading of floating-point support.
Section 15. Variable-Length Argument Lists
15.1: I heard that you have to #include before calling
printf(). Why?
A: So that a proper prototype for printf() will be in scope.
15.2: How can %f be used for both float and double arguments in
printf()?
A: In variable-length argument lists, types char and short int are
promoted to int, and float is promoted to double.
15.3: Why don't function prototypes guard against mismatches in
printf's arguments?
A: Function prototypes do not provide any information about the
number and types of variable arguments.
15.4: How can I write a function that takes a variable number of
arguments?
A: Use the header.
15.5: How can I write a function that takes a format string and a
variable number of arguments, like printf(), and passes them to
printf() to do most of the work?
A: Use vprintf(), vfprintf(), or vsprintf().
15.6: How can I write a function analogous to scanf(), that calls
scanf() to do most of the work?
A: C9X will support vscanf().
15.7: I have a pre-ANSI compiler, without. What can I do?
A: There's an older header,, which offers about the
same functionality.
15.8: How can I discover how many arguments a function was actually
called with?
A: Any function which takes a variable number of arguments must be
able to determine *from the arguments' values* how many of them
there are.
15.9: My compiler isn't letting me declare a function that accepts
*only* variable arguments.
A: Standard C requires at least one fixed argument.
15.10: Why isn't "va_arg(argp, float)" working?
A: Because the "default argument promotions" apply in variable-
length argument lists, you should always use
va_arg(argp, double).
15.11: I can't get va_arg() to pull in an argument of type pointer-to-
function.
A: Use a typedef.
15.12: How can I write a function which takes a variable number of
arguments and passes them to some other function ?
A: In general, you cannot.
15.13: How can I call a function with an argument list built up at run
time?
A: You can't.
Section 16. Strange Problems
16.1b: I'm getting baffling syntax errors which make no sense at all,
and it seems like large chunks of my program aren't being
compiled.
A: Check for unclosed comments or mismatched preprocessing
directives.
16.1c: Why isn't my procedure call working?
A: Function calls always require parenthesized argument lists.
16.3: This program crashes before it even runs!
A: Look for very large, local arrays.
(See also questions 11.12b, 16.4, 16.5, and 18.4.)
16.4: I have a program that seems to run correctly, but then crashes
as it's exiting.
A: See the full list for ideas.
16.5: This program runs perfectly on one machine, but I get weird
results on another.
A: See the full list for a brief list of possibilities.
16.6: Why does the code "char *p = "hello, world!"; p[0] = 'H';"
crash?
A: String literals are not modifiable, except (in effect) when they
are used as array initializers.
16.8: What does "Segmentation violation" mean?
A: It generally means that your program tried to access memory it
shouldn't have, invariably as a result of stack corruption or
improper pointer use.
Section 17. Style
17.1: What's the best style for code layout in C?
A: There is no one "best style," but see the full list for a few
suggestions.
17.3: Is the code "if(!strcmp(s1, s2))" good style?
A: Not particularly.
17.4: Why do some people write if(0 == x) instead of if(x == 0)?
A: It's a trick to guard against the common error of writing
if(x = 0) .
17.5: I came across some code that puts a (void) cast before each call
to printf(). Why?
A: To suppress warnings about otherwise discarded return values.
17.8: What is "Hungarian Notation"?
A: It's a naming convention which encodes information about a
variable's type in its name.
17.9: Where can I get the "Indian Hill Style Guide" and other coding
standards?
A: See the unabridged list.
17.10: Some people say that goto's are evil and that I should never use
them. Isn't that a bit extreme?
A: Yes. Absolute rules are an imperfect approach to good
programming style.
Section 18. Tools and Resources
18.1: I'm looking for C development tools (cross-reference generators,
code beautifiers, etc.).
A: See the full list for a few names.
18.2: How can I track down these pesky malloc problems?
A: See the full list for a list of tools.
18.3: What's a free or cheap C compiler I can use?
A: See the full list for a brief catalog.
18.4: I just typed in this program, and it's acting strangely. Can
you see anything wrong with it?
A: See if you can run lint first.
18.5: How can I shut off the "warning: possible pointer alignment
problem" message which lint gives me for each call to malloc()?
A: It may be easier simply to ignore the message, perhaps in an
automated way with grep -v.
18.7: Where can I get an ANSI-compatible lint?
A: See the unabridged list for two commercial products.
18.8: Don't ANSI function prototypes render lint obsolete?
A: No. A good compiler may match most of lint's diagnostics; few
provide all.
18.9: Are there any C tutorials or other resources on the net?
A: There are several of them.
18.10: What's a good book for learning C?
A: There are far too many books on C to list here; the full list
contains a few pointers.
18.13: Where can I find the sources of the standard C libraries?
A: Several possibilites are listed in the full list.
18.13b: Is there an on-line C reference manual?
A: Two possibilities are
http://www.cs.man.ac.uk/standard_c/_index.html and
http://www.dinkumware.com/htm_cl/index.html .
18.13c: Where can I get a copy of the ANSI/ISO C Standard?
A: See question 11.2.
18.14: I need code to parse and evaluate expressions.
A: Several available packages are mentioned in the full list.
18.15: Where can I get a BNF or YACC grammar for C?
A: See the ANSI Standard, or the unabridged list.
18.15b: Does anyone have a C compiler test suite I can use?
A: See the full list for several sources.
18.15c: Where are some collections of useful code fragments and
examples?
A: See the full list for a few sources.
18.15d: I need code for performing multiple precision arithmetic.
A: See the full list for a few ideas.
18.16: Where and how can I get copies of all these freely distributable
programs?
A: See the regular postings in the comp.sources.unix and
comp.sources.misc newsgroups, or the full version of this list,
for information.
Section 19. System Dependencies
19.1: How can I read a single character from the keyboard without
waiting for the RETURN key?
A: Alas, there is no standard or portable way to do this sort of
thing in C.
19.2: How can I find out how many characters are available for
reading, or do a non-blocking read?
A: These, too, are entirely operating-system-specific.
19.3: How can I display a percentage-done indication that updates
itself in place, or show one of those "twirling baton" progress
indicators?
A: The character '\r' is a carriage return, and '\b' is a
backspace.
19.4: How can I clear the screen, or print text in color, or move the
cursor?
A: The only halfway-portable solution is the curses library.
19.5: How do I read the arrow keys? What about function keys?
A: Such things depend on the keyboard, operating system, and
library you're using.
19.6: How do I read the mouse?
A: What system are you using?
19.7: How can I do serial ("comm") port I/O?
A: It's system-dependent.
19.8: How can I direct output to the printer?
A: See the full list for ideas.
19.9: How do I send escape sequences to control a terminal or other
device?
A: By sending them. ESC is '\033' in ASCII.
19.10: How can I do graphics?
A: There is no portable way.
19.11: How can I check whether a file exists?
A: You can try the access() or stat() functions. Otherwise, the
only guaranteed and portable way is to try opening the file.
19.12: How can I find out the size of a file, prior to reading it in?
A: You might be able to get an estimate using stat() or fseek/ftell
(but see the full list for caveats).
19.12b: How can I find the modification date of a file?
A: Try stat().
19.13: How can a file be shortened in-place without completely clearing
or rewriting it?
A: There are various ways to do this, but there is no portable
solution.
19.14: How can I insert or delete a line in the middle of a file?
A: Short of rewriting the file, you probably can't.
19.15: How can I recover the file name given an open file descriptor?
A: This problem is, in general, insoluble. It is best to remember
the names of files yourself as you open them
19.16: How can I delete a file?
A: The Standard C Library function is remove().
19.16b: How do I copy files?
A: Open the source and destination files and copy a character or
block at a time, or see question 19.27.
19.17: What's wrong with the call fopen("c:\newdir\file.dat", "r")?
A: You probably need to double those backslashes.
19.18: How can I increase the allowable number of simultaneously open
files?
A: Check your system documentation.
19.20: How can I read a directory in a C program?
A: See if you can use the opendir() and readdir() functions.
19.22: How can I find out how much memory is available?
A: Your operating system may provide a routine which returns this
information.
19.23: How can I allocate arrays or structures bigger than 64K?
A: Some operating systems won't let you.
19.24: What does the error message "DGROUP exceeds 64K" mean?
A: It means that you have too much static data.
19.25: How can I access memory located at a certain address?
A: Set a pointer to the absolute address.
19.27: How can I invoke another program from within a C program?
A: Use system().
19.30: How can I invoke another program and trap its output?
A: Unix and some other systems provide a popen() function.
19.31: How can my program discover the complete pathname to the
executable from which it was invoked?
A: argv[0] may contain all or part of the pathname. You may be
able to duplicate the command language interpreter's search path
logic to locate the executable.
19.32: How can I automatically locate a program's configuration files
in the same directory as the executable?
A: It's hard; see also question 19.31 above.
19.33: How can a process change an environment variable in its caller?
A: If it's possible to do so at all, it's system dependent.
19.36: How can I read in an object file and jump to locations in it?
A: You want a dynamic linker or loader.
19.37: How can I implement a delay, or time a user's response, with sub-
second resolution?
A: Unfortunately, there is no portable way.
19.38: How can I trap or ignore keyboard interrupts like control-C?
A: Use signal().
19.39: How can I handle floating-point exceptions gracefully?
A: Take a look at matherr() and signal(SIGFPE).
19.40: How do I... Use sockets? Do networking? Write client/server
applications?
A: These questions have more to do with the networking facilities
you have available than they do with C.
19.40b: How do I... Use BIOS calls? Write ISR's? Create TSR's?
A: These are very particular to a particular system.
19.40c: I'm trying to compile a program in which "union REGS" and
int86() are undefined.
A: Those have to do with MS-DOS interrupt programming.
19.41: But I can't use all these nonstandard, system-dependent
functions, because my program has to be ANSI compatible!
A: That's an impossible requirement. Any real program requires at
least a few services which ANSI doesn't define.
Section 20. Miscellaneous
20.1: How can I return multiple values from a function?
A: Either pass pointers to several locations which the function can
fill in, or have the function return a structure containing the
desired values.
20.3: How do I access command-line arguments?
A: Via main()'s argv parameter.
20.5: How can I write data files which can be read on other machines
with different data formats?
A: The most portable solution is to use text files.
20.6: How can I call a function, given its name as a string?
A: The most straightforward thing to do is to maintain a
correspondence table of names and function pointers.
20.8: How can I implement sets or arrays of bits?
A: Use arrays of char or int, with a few macros to access the
desired bit at the proper index.
20.9: How can I determine whether a machine's byte order is big-endian
or little-endian?
A: The usual tricks involve pointers or unions.
20.10: How can I convert integers to binary or hexadecimal?
A: Internally, integers are already in binary. During I/O, you may
be able to select a base.
20.11: Can I use base-2 constants (something like 0b101010)?
Is there a printf() format for binary?
A: No, on both counts.
20.12: What is the most efficient way to count the number of bits which
are set in an integer?
A: Many "bit-fiddling" problems like this one can be sped up and
streamlined using lookup tables.
20.13: What's the best way of making my program efficient?
A: By picking good algorithms and implementing them carefully.
20.14: Are pointers really faster than arrays? How much do function
calls slow things down?
A: Precise answers to these and many similar questions depend on
the processor and compiler in use.
20.15b: People claim that optimizing compilers are good, but mine can't
even replace i/=2 with a shift.
A: Was i signed or unsigned?
20.15c: How can I swap two values without using a temporary?
A: The "clever" trick is a ^= b; b ^= a; a ^= b; see also question
3.3b.
20.17: Is there a way to switch on strings?
A: Not directly.
20.18: Is there a way to have non-constant case labels (i.e. ranges or
arbitrary expressions)?
A: No.
20.19: Are the outer parentheses in return statements really optional?
A: Yes.
20.20: Why don't C comments nest? Are they legal inside quoted
strings?
A: C comments don't nest because PL/I's comments don't either. The
character sequences /* and */ are not special within double-
quoted strings.
20.20b: What does a+++++b mean ?
A: Nothing. It's interpreted as "a ++ ++ + b", and cannot be
parsed.
20.24: Why doesn't C have nested functions?
A: They were deliberately left out of C as a simplification.
20.24b: What is assert()?
A: It is a macro which documents an assumption being made by the
programmer; it terminates the program if the assumption is
violated.
20.25: How can I call FORTRAN (C++, BASIC, Pascal, Ada, LISP) functions
from C?
A: The answer is entirely dependent on the machine and the specific
calling sequences of the various compilers in use.
20.26: Does anyone know of a program for converting Pascal or FORTRAN
to C?
A: Several freely distributable programs are available, namely
ptoc, p2c, and f2c. See the full list for details.
20.27: Can I use a C++ compiler to compile C code?
A: Not necessarily; C++ is not a strict superset of C.
20.28: I need to compare two strings for close, but not necessarily
exact, equality.
A: See the full list for ideas.
20.29: What is hashing?
A: A mapping of strings (or other data structures) to integers, for
easier searching.
20.31: How can I find the day of the week given the date?
A: Use mktime(), Zeller's congruence, or some code in the full
list.
20.32: Will 2000 be a leap year?
A: Yes.
20.34: How do you write a program which produces its own source code as
output?
A: Here's one:
char*s="char*s=%c%s%c;main(){printf(s,34,s,34);}";
main(){printf(s,34,s,34);}
20.35: What is "Duff's Device"?
A: It's a devastatingly deviously unrolled byte-copying loop. See
the full list for details.
20.36: When will the next Obfuscated C Code Contest be held?
How can I get a copy of previous winning entries?
A: See the full list, or http://www.ioccc.org/index.html .
20.37: What was the entry keyword mentioned in K&R1?
A: It was reserved to allow functions with multiple, differently-
named entry points, but it has been withdrawn.
20.38: Where does the name "C" come from, anyway?
A: C was derived from B, which was inspired by BCPL, which was a
simplification of CPL.
20.39: How do you pronounce "char"?
A: Like the English words "char," "care," or "car" (your choice).
20.39b: What do "lvalue" and "rvalue" mean?
A: An "lvalue" denotes an object that has a location; an "rvalue"
is any expression that has a value.
20.40: Where can I get extra copies of this list?
A: An up-to-date copy may be obtained from ftp.eskimo.com in
directory u/s/scs/C-faq/. You can also just pull it off the
net; the unabridged version is normally posted on the first of
each month, with an Expires: line which should keep it around
all month. It is also posted to the newsgroups comp.answers and
news.answers . Several sites archive news.answers postings and
other FAQ lists, including this one; two sites are rtfm.mit.edu
(directory pub/usenet), and ftp.uu.net (directory usenet).
A hypertext version of this FAQ list is available at
http://www.eskimo.com/~scs/C-faq/top.html .
An extended version has been published by Addison-Wesley
as _C Programming FAQs: Frequently Asked Questions_
(ISBN 0-201-84519-9).
Steve Summit
scs@eskimo.com
1.1: How do you decide which integer type to use?
A: If you might need large values (tens of thousands), use long.
Otherwise, if space is very important, use short. Otherwise,
use int.
1.4: What should the 64-bit type on a machine that can support it?
A: C9X specifies long long.
1.7: What's the best way to declare and define global variables?
A: The best arrangement is to place each definition in some
relevant .c file, with an external declaration in a header file.
1.11: What does extern mean in a function declaration?
A: Nothing, really; the keyword extern is optional here.
1.12: What's the auto keyword good for?
A: Nothing.
1.14: I can't seem to define a linked list node which contains a
pointer to itself.
A: Structures in C can certainly contain pointers to themselves;
the discussion and example in section 6.5 of K&R make this
clear. Problems arise if an attempt is made to define (and use)
a typedef in the midst of such a declaration; avoid this.
1.21: How do I declare an array of N pointers to functions returning
pointers to functions returning pointers to characters?
A: char *(*(*a[N])())();
Using a chain of typedefs, or the cdecl program, makes these
declarations easier.
1.22: How can I declare a function that returns a pointer to a
function of its own type?
A: You can't quite do it directly. Use a cast, or wrap a struct
around the pointer and return that.
1.25: My compiler is complaining about an invalid redeclaration of a
function, but I only define it once.
A: Calling an undeclared function declares it implicitly as
returning int.
1.25b: What's the right declaration for main()?
A: See questions 11.12a to 11.15.
1.30: What am I allowed to assume about the initial values
of variables which are not explicitly initialized?
A: Uninitialized variables with "static" duration start out as 0,
as if the programmer had initialized them. Variables with
"automatic" duration, and dynamically-allocated memory, start
out containing garbage (with the exception of calloc).
1.31: Why can't I initialize a local array with a string?
A: Perhaps you have a pre-ANSI compiler.
1.31b: What's wrong with "char *p = malloc(10);" ?
A: Function calls are not allowed in initializers for global or
static variables.
1.32: What is the difference between char a[] = "string"; and
char *p = "string"; ?
A: The first declares an initialized and modifiable array; the
second declares a pointer initialized to a not-necessarily-
modifiable constant string.
1.34: How do I initialize a pointer to a function?
A: Use something like "extern int func(); int (*fp)() = func;" .
Section 2. Structures, Unions, and Enumerations
2.1: What's the difference between struct x1 { ... }; and
typedef struct { ... } x2; ?
A: The first structure is named by a tag, the second by a typedef
name.
2.2: Why doesn't "struct x { ... }; x thestruct;" work?
A: C is not C++.
2.3: Can a structure contain a pointer to itself?
A: See question 1.14.
2.4: What's the best way of implementing opaque (abstract) data types
in C?
A: One good way is to use structure pointers which point to
structure types which are not publicly defined.
2.6: I came across some code that declared a structure with the last
member an array of one element, and then did some tricky
allocation to make it act like the array had several elements.
Is this legal or portable?
A: An official interpretation has deemed that it is not strictly
conforming with the C Standard.
2.7: I heard that structures could be assigned to variables and
passed to and from functions, but K&R1 says not.
A: These operations are supported by all modern compilers.
2.8: Is there a way to compare structures automatically?
A: No.
2.10: Can I pass constant values to functions which accept structure
arguments?
A: Not yet. As of this writing, C has no way of generating
anonymous structure values.
2.11: How can I read/write structures from/to data files?
A: It is relatively straightforward to use fread and fwrite.
2.12: How can I turn off structure padding?
A: There is no standard method.
2.13: Why does sizeof report a larger size than I expect for a
structure type?
A: The alignment of arrays of structures must be preserved.
2.14: How can I determine the byte offset of a field within a
structure?
A: ANSI C defines the offsetof() macro, which should be used if
available.
2.15: How can I access structure fields by name at run time?
A: Build a table of names and offsets, using the offsetof() macro.
2.18: I have a program which works correctly, but dumps core after it
finishes. Why?
A: Check to see if a structure type declaration just before main()
is missing its trailing semicolon, causing main() to be declared
as returning a structure. See also questions 10.9 and 16.4.
2.20: Can I initialize unions?
A: The current C Standard allows an initializer for the first-named
member.
2.22: What is the difference between an enumeration and a set of
preprocessor #defines?
A: At the present time, there is little difference. The C Standard
states that enumerations are compatible with integral types.
2.24: Is there an easy way to print enumeration values symbolically?
A: No.
Section 3. Expressions
3.1: Why doesn't the code "a[i] = i++;" work?
A: The variable i is both referenced and modified in the same
expression.
3.2: Under my compiler, the code "int i = 7;
printf("%d\n", i++ * i++);" prints 49. Regardless of the order
of evaluation, shouldn't it print 56?
A: The operations implied by the postincrement and postdecrement
operators ++ and -- are performed at some time after the
operand's former values are yielded and before the end of the
expression, but not necessarily immediately after, or before
other parts of the expression are evaluated.
3.3: What should the code "int i = 3; i = i++;" do?
A: The expression is undefined.
3.3b: Here's a slick expression: "a ^= b ^= a ^= b". It swaps a and b
without using a temporary.
A: Not portably; its behavior is undefined.
3.4: Don't precedence and parentheses dictate order of evaluation?
A: Operator precedence and explicit parentheses impose only a
partial ordering on the evaluation of an expression, which does
not generally include the order of side effects.
3.5: But what about the && and || operators?
A: There is a special exception for those operators: left-to-right
evaluation is guaranteed.
3.8: What's a "sequence point"?
A: A point (at the end of a full expression, or at the ||, &&, ?:,
or comma operators, or just before a function call) at which all
side effects are guaranteed to be complete.
3.9: So given a[i] = i++; we don't know which cell of a[] gets
written to, but i does get incremented by one, right?
A: *No*. Once an expression or program becomes undefined, *all*
aspects of it become undefined.
3.12: If I'm not using the value of the expression, should I use i++
or ++i to increment a variable?
A: Since the two forms differ only in the value yielded, they are
entirely equivalent when only their side effect is needed.
3.14: Why doesn't the code "int a = 1000, b = 1000;
long int c = a * b;" work?
A: You must manually cast one of the operands to (long).
3.16: Can I use ?: on the left-hand side of an assignment expression?
A: No.
Section 4. Pointers
4.2: What's wrong with "char *p; *p = malloc(10);"?
A: The pointer you declared is p, not *p.
4.3: Does *p++ increment p, or what it points to?
A: *p++ increments p. To increment the value pointed to by p, use
(*p)++ .
4.5: I want to use a char * pointer to step over some ints. Why
doesn't "((int *)p)++;" work?
A: In C, a cast operator is a conversion operator, and by
definition it yields an rvalue, which cannot be assigned to, or
incremented with ++.
4.8: I have a function which accepts, and is supposed to initialize,
a pointer, but the pointer in the caller remains unchanged.
A: The called function probably altered only the passed copy of the
pointer.
4.9: Can I use a void ** pointer as a parameter so that a function
can accept a generic pointer by reference?
A: Not portably.
4.10: I have a function which accepts a pointer to an int. How can I
pass a constant like 5 to it?
A: You will have to declare a temporary variable.
4.11: Does C even have "pass by reference"?
A: Not really, though it can be simulated.
4.12: I've seen different methods used for calling functions via
pointers.
A: The extra parentheses and explicit * are now officially
optional, although some older implementations require them.
Section 5. Null Pointers
5.1: What is this infamous null pointer, anyway?
A: For each pointer type, there is a special value -- the "null
pointer" -- which is distinguishable from all other pointer
values and which is not the address of any object or function.
5.2: How do I get a null pointer in my programs?
A: A constant 0 in a pointer context is converted into a null
pointer at compile time. A "pointer context" is an
initialization, assignment, or comparison with one side a
variable or expression of pointer type, and (in ANSI standard C)
a function argument which has a prototype in scope declaring a
certain parameter as being of pointer type. In other contexts
(function arguments without prototypes, or in the variable part
of variadic function calls) a constant 0 with an appropriate
explicit cast is required.
5.3: Is the abbreviated pointer comparison "if(p)" to test for non-
null pointers valid?
A: Yes. The construction "if(p)" works, regardless of the internal
representation of null pointers, because the compiler
essentially rewrites it as "if(p != 0)" and goes on to convert 0
into the correct null pointer.
5.4: What is NULL and how is it #defined?
A: NULL is simply a preprocessor macro, #defined as 0 (or
((void *)0)), which is used (as a stylistic convention, in
preference to unadorned 0's) to generate null pointers.
5.5: How should NULL be defined on a machine which uses a nonzero bit
pattern as the internal representation of a null pointer?
A: The same as on any other machine: as 0. (The compiler makes the
translation, upon seeing a 0, not the preprocessor; see also
question 5.4.)
5.6: If NULL were defined as "((char *)0)," wouldn't that make
function calls which pass an uncast NULL work?
A: Not in general. The complication is that there are machines
which use different internal representations for pointers to
different types of data. A cast is still required to tell the
compiler which kind of null pointer is required, since it may be
different from (char *)0.
5.9: If NULL and 0 are equivalent as null pointer constants, which
should I use?
A: Either; the distinction is entirely stylistic.
5.10: But wouldn't it be better to use NULL, in case the value of NULL
changes?
A: No. NULL is a constant zero, so a constant zero is equally
sufficient.
5.12: I use the preprocessor macro "#define Nullptr(type) (type *)0"
to help me build null pointers of the correct type.
A: This trick, though valid, does not buy much.
5.13: This is strange. NULL is guaranteed to be 0, but the null
pointer is not?
A: A "null pointer" is a language concept whose particular internal
value does not matter. A null pointer is requested in source
code with the character "0". "NULL" is a preprocessor macro,
which is always #defined as 0 (or ((void *)0)).
5.14: Why is there so much confusion surrounding null pointers?
A: The fact that null pointers are represented both in source code,
and internally to most machines, as zero invites unwarranted
assumptions. The use of a preprocessor macro (NULL) may seem to
suggest that the value could change some day, or on some weird
machine.
5.15: I'm confused. I just can't understand all this null pointer
stuff.
A: A simple rule is, "Always use `0' or `NULL' for null pointers,
and always cast them when they are used as arguments in function
calls."
5.16: Given all the confusion surrounding null pointers, wouldn't it
be easier simply to require them to be represented internally by
zeroes?
A: Such a requirement would accomplish little.
5.17: Seriously, have any actual machines really used nonzero null
pointers?
A: Machines manufactured by Prime, Honeywell-Bull, and CDC, as well
as Symbolics Lisp Machines, have done so.
5.20: What does a run-time "null pointer assignment" error mean?
A: It means that you've written, via a null pointer, to an invalid
location. (See also question 16.8.)
Section 6. Arrays and Pointers
6.1: I had the definition char a[6] in one source file, and in
another I declared extern char *a. Why didn't it work?
A: The declaration extern char *a simply does not match the actual
definition. Use extern char a[].
6.2: But I heard that char a[] was identical to char *a.
A: Not at all. Arrays are not pointers. A reference like x[3]
generates different code depending on whether x is an array or a
pointer.
6.3: So what is meant by the "equivalence of pointers and arrays" in
C?
A: An lvalue of type array-of-T which appears in an expression
decays into a pointer to its first element; the type of the
resultant pointer is pointer-to-T. So for an array a and
pointer p, you can say "p = a;" and then p[3] and a[3] will
access the same element.
6.4: Why are array and pointer declarations interchangeable as
function formal parameters?
A: It's supposed to be a convenience.
6.7: How can an array be an lvalue, if you can't assign to it?
A: An array is not a "modifiable lvalue."
6.8: What is the real difference between arrays and pointers?
A: Arrays automatically allocate space which is fixed in size and
location; pointers are dynamic.
6.9: Someone explained to me that arrays were really just constant
pointers.
A: An array name is "constant" in that it cannot be assigned to,
but an array is *not* a pointer.
6.11: I came across some "joke" code containing the "expression"
5["abcdef"] . How can this be legal C?
A: Yes, array subscripting is commutative in C. The array
subscripting operation a[e] is defined as being identical to
*((a)+(e)).
6.12: What's the difference between array and &array?
A: The type.
6.13: How do I declare a pointer to an array?
A: Usually, you don't want to. Consider using a pointer to one of
the array's elements instead.
6.14: How can I set an array's size at run time?
A: It's straightforward to use malloc() and a pointer.
6.15: How can I declare local arrays of a size matching a passed-in
array?
A: Until recently, you couldn't; array dimensions had to be compile-
time constants. C9X will fix this.
6.16: How can I dynamically allocate a multidimensional array?
A: The traditional solution is to allocate an array of pointers,
and then initialize each pointer to a dynamically-allocated
"row." See the full list for code samples.
6.17: Can I simulate a non-0-based array with a pointer?
A: Not if the pointer points outside of the block of memory it is
intended to access.
6.18: My compiler complained when I passed a two-dimensional array to
a function expecting a pointer to a pointer.
A: The rule by which arrays decay into pointers is not applied
recursively. An array of arrays (i.e. a two-dimensional array
in C) decays into a pointer to an array, not a pointer to a
pointer.
6.19: How do I write functions which accept two-dimensional arrays
when the width is not known at compile time?
A: It's not always particularly easy.
6.20: How can I use statically- and dynamically-allocated
multidimensional arrays interchangeably when passing them to
functions?
A: There is no single perfect method, but see the full list for
some ideas.
6.21: Why doesn't sizeof properly report the size of an array which is
a parameter to a function?
A: The sizeof operator reports the size of the pointer parameter
which the function actually receives.
Section 7. Memory Allocation
7.1: Why doesn't the code "char *answer; gets(answer);" work?
A: The pointer variable answer has not been set to point to any
valid storage. The simplest way to correct this fragment is to
use a local array, instead of a pointer.
7.2: I can't get strcat() to work. I tried "char *s3 =
strcat(s1, s2);" but I got strange results.
A: Again, the main problem here is that space for the concatenated
result is not properly allocated.
7.3: But the man page for strcat() says that it takes two char *'s as
arguments. How am I supposed to know to allocate things?
A: In general, when using pointers you *always* have to consider
memory allocation, if only to make sure that the compiler is
doing it for you.
7.3b: I just tried the code "char *p; strcpy(p, "abc");" and it
worked. Why didn't it crash?
A: You got "lucky".
7.3c: How much memory does a pointer variable allocate?
A: Only enough memory to hold the pointer itself, not any memory
for the pointer to point to.
7.5a: I have a function that is supposed to return a string, but when
it returns to its caller, the returned string is garbage.
A: Make sure that the pointed-to memory is properly (i.e. not
locally) allocated.
7.5b: So what's the right way to return a string?
A: Return a pointer to a statically-allocated buffer, a buffer
passed in by the caller, or memory obtained with malloc().
7.6: Why am I getting "warning: assignment of pointer from integer
lacks a cast" for calls to malloc()?
A: Have you #included
7.7: Why does some code carefully cast the values returned by malloc
to the pointer type being allocated?
A: Before ANSI/ISO C, these casts were required to silence certain
warnings.
7.8: Why does so much code leave out the multiplication by
sizeof(char) when allocating strings?
A: Because sizeof(char) is, by definition, exactly 1.
7.14: I've heard that some operating systems don't actually allocate
malloc'ed memory until the program tries to use it. Is this
legal?
A: It's hard to say.
7.16: I'm allocating a large array for some numeric work, but malloc()
is acting strangely.
A: Make sure the number you're trying to pass to malloc() isn't
bigger than a size_t can hold.
7.17: I've got 8 meg of memory in my PC. Why can I only seem to
malloc 640K or so?
A: Under the segmented architecture of PC compatibles, it can be
difficult to use more than 640K with any degree of transparency.
See also question 19.23.
7.19: My program is crashing, apparently somewhere down inside malloc.
A: Make sure you aren't using more memory than you malloc'ed,
especially for strings (which need strlen(str) + 1 bytes).
7.20: You can't use dynamically-allocated memory after you free it,
can you?
A: No. Some early documentation implied otherwise, but the claim
is no longer valid.
7.21: Why isn't a pointer null after calling free()?
A: C's pass-by-value semantics mean that called functions can never
permanently change the values of their arguments.
7.22: When I call malloc() to allocate memory for a local pointer, do
I have to explicitly free() it?
A: Yes.
7.23: When I free a dynamically-allocated structure containing
pointers, do I also have to free each subsidiary pointer?
A: Yes.
7.24: Must I free allocated memory before the program exits?
A: You shouldn't have to.
7.25: Why doesn't my program's memory usage go down when I free
memory?
A: Most implementations of malloc/free do not return freed memory
to the operating system.
7.26: How does free() know how many bytes to free?
A: The malloc/free implementation remembers the size of each block
as it is allocated.
7.27: So can I query the malloc package to find out how big an
allocated block is?
A: Not portably.
7.30: Is it legal to pass a null pointer as the first argument to
realloc()?
A: ANSI C sanctions this usage, although several earlier
implementations do not support it.
7.31: What's the difference between calloc() and malloc()?
A: calloc() takes two arguments, and initializes the allocated
memory to all-bits-0.
7.32: What is alloca() and why is its use discouraged?
A: alloca() allocates memory which is automatically freed when the
function which called alloca() returns. alloca() cannot be
written portably, is difficult to implement on machines without
a stack, and fails under certain conditions if implemented
simply.
Section 8. Characters and Strings
8.1: Why doesn't "strcat(string, '!');" work?
A: strcat() concatenates *strings*, not characters.
8.2: Why won't the test if(string == "value") correctly compare
string against the value?
A: It's comparing pointers. To compare two strings, use strcmp().
8.3: Why can't I assign strings to character arrays?
A: Strings are arrays, and you can't assign arrays directly. Use
strcpy() instead.
8.6: How can I get the numeric (character set) value corresponding to
a character?
A: In C, if you have the character, you have its value.
8.9: Why is sizeof('a') not 1?
A: Character constants in C are of type int.
Section 9. Boolean Expressions and Variables
9.1: What is the right type to use for Boolean values in C?
A: There's no one right answer; see the full list for some
discussion.
9.2: What if a built-in logical or relational operator "returns"
something other than 1?
A: When a Boolean value is generated by a built-in operator, it is
guaranteed to be 1 or 0. (This is *not* true for some library
routines such as isalpha.)
9.3: Is if(p), where p is a pointer, valid?
A: Yes. See question 5.3.
Section 10. C Preprocessor
10.2: I've got some cute preprocessor macros that let me write C code
that looks more like Pascal. What do y'all think?
A: Bleah.
10.3: How can I write a generic macro to swap two values?
A: There is no good answer to this question. The best all-around
solution is probably to forget about using a macro.
10.4: What's the best way to write a multi-statement macro?
A: #define Func() do {stmt1; stmt2; ... } while(0) /* (no trailing ;) */
10.6: What are .h files and what should I put in them?
A: Header files (also called ".h files") should generally contain
common declarations and macro, structure, and typedef
definitions, but not variable or function definitions.
10.7: Is it acceptable for one header file to #include another?
A: It's a question of style, and thus receives considerable debate.
10.8a: What's the difference between #include <> and #include "" ?
A: Roughly speaking, the <> syntax is for Standard headers and ""
is for project headers.
10.8b: What are the complete rules for header file searching?
A: The exact behavior is implementation-defined; see the full list
for some discussion.
10.9: I'm getting strange syntax errors on the very first declaration
in a file, but it looks fine.
A: Perhaps there's a missing semicolon at the end of the last
declaration in the last header file you're #including.
10.10b: I'm #including the header file for a function, but the linker
keeps saying it's undefined.
A: See question 13.25.
10.11: Where can I get a copy of a missing header file?
A: Contact your vendor, or see question 18.16 or the full list.
10.12: How can I construct preprocessor #if expressions which compare
strings?
A: You can't do it directly; try #defining several manifest
constants and implementing conditionals on those.
10.13: Does the sizeof operator work in preprocessor #if directives?
A: No.
10.14: Can I use an #ifdef in a #define line, to define something two
different ways?
A: No.
10.15: Is there anything like an #ifdef for typedefs?
A: Unfortunately, no.
10.16: How can I use a preprocessor #if expression to detect
endianness?
A: You probably can't.
10.18: How can I preprocess some code to remove selected conditional
compilations, without preprocessing everything?
A: Look for a program called unifdef, rmifdef, or scpp.
10.19: How can I list all of the predefined identifiers?
A: If the compiler documentation is unhelpful, try extracting
printable strings from the compiler or preprocessor executable.
10.20: I have some old code that tries to construct identifiers with a
macro like "#define Paste(a, b) a/**/b", but it doesn't work any
more.
A: Try the ANSI token-pasting operator ##.
10.22: What does the message "warning: macro replacement within a
string literal" mean?
A: See question 11.18.
10.23-4: I'm having trouble using macro arguments inside string
literals, using the `#' operator.
A: See questions 11.17 and 11.18.
10.25: I've got this tricky preprocessing I want to do and I can't
figure out a way to do it.
A: Consider writing your own little special-purpose preprocessing
tool, instead.
10.26: How can I write a macro which takes a variable number of
arguments?
A: Here is one popular trick. Note that the parentheses around
printf's argument list are in the macro call, not the
definition.
#define DEBUG(args) (printf("DEBUG: "), printf args)
if(n != 0) DEBUG(("n is %d\n", n));
Section 11. ANSI/ISO Standard C
11.1: What is the "ANSI C Standard?"
A: In 1983, the American National Standards Institute (ANSI)
commissioned a committee to standardize the C language. Their
work was ratified as ANS X3.159-1989, and has since been adopted
as ISO/IEC 9899:1990, and later amended.
11.2: How can I get a copy of the Standard?
A: Copies are available from ANSI in New York, or from Global
Engineering Documents in Englewood, CO, or from any national
standards body, or from ISO in Geneva, or republished within one
or more books. See the unabridged list for details.
11.2b: Where can I get information about updates to the Standard?
A: See the full list for pointers.
11.3: My ANSI compiler is complaining about prototype mismatches for
parameters declared float.
A: You have mixed the new-style prototype declaration
"extern int func(float);" with the old-style definition
"int func(x) float x;". "Narrow" types are treated differently
according to which syntax is used. This problem can be fixed by
avoiding narrow types, or by using either new-style (prototype)
or old-style syntax consistently.
11.4: Can you mix old-style and new-style function syntax?
A: Doing so is currently legal, for most argument types
(see question 11.3).
11.5: Why does the declaration "extern int f(struct x *p);" give me a
warning message?
A: A structure declared (or even mentioned) for the first time
within a prototype cannot be compatible with other structures
declared in the same source file.
11.8: Why can't I use const values in initializers and array
dimensions?
A: The value of a const-qualified object is *not* a constant
expression in the full sense of the term.
11.9: What's the difference between "const char *p" and
"char * const p"?
A: The former declares a pointer to a constant character; the
latter declares a constant pointer to a character.
11.10: Why can't I pass a char ** to a function which expects a
const char **?
A: The rule which permits slight mismatches in qualified pointer
assignments is not applied recursively.
11.12a: What's the correct declaration of main()?
A: int main(int argc, char *argv[]) .
11.12b: Can I declare main() as void, to shut off these annoying "main
returns no value" messages?
A: No.
11.13: But what about main's third argument, envp?
A: It's a non-standard (though common) extension.
11.14: I believe that declaring void main() can't fail, since I'm
calling exit() instead of returning.
A: It doesn't matter whether main() returns or not, the problem is
that its caller may not even be able to *call* it correctly.
11.15: The book I've been using always uses void main().
A: It's wrong.
11.16: Is exit(status) truly equivalent to returning the same status
from main()?
A: Yes and no. (See the full list for details.)
11.17: How do I get the ANSI "stringizing" preprocessing operator `#'
to stringize the macro's value instead of its name?
A: You can use a two-step #definition to force a macro to be
expanded as well as stringized.
11.18: What does the message "warning: macro replacement within a
string literal" mean?
A: Some pre-ANSI compilers/preprocessors expanded macro parameters
even inside string literals and character constants.
11.19: I'm getting strange syntax errors inside lines I've #ifdeffed
out.
A: Under ANSI C, #ifdeffed-out text must still consist of "valid
preprocessing tokens." This means that there must be no
newlines inside quotes, and no unterminated comments or quotes
(i.e. no single apostrophes).
11.20: What are #pragmas ?
A: The #pragma directive provides a single, well-defined "escape
hatch" which can be used for extensions.
11.21: What does "#pragma once" mean?
A: It is an extension implemented by some preprocessors to help
make header files idempotent.
11.22: Is char a[3] = "abc"; legal?
A: Yes, in ANSI C.
11.24: Why can't I perform arithmetic on a void * pointer?
A: The compiler doesn't know the size of the pointed-to objects.
11.25: What's the difference between memcpy() and memmove()?
A: memmove() offers guaranteed behavior if the source and
destination arguments overlap.
11.26: What should malloc(0) do?
A: The behavior is implementation-defined.
11.27: Why does the ANSI Standard not guarantee more than six case-
insensitive characters of external identifier significance?
A: The problem is older linkers which cannot be forced (by mere
words in a Standard) to upgrade.
11.29: My compiler is rejecting the simplest possible test programs,
with all kinds of syntax errors.
A: Perhaps it is a pre-ANSI compiler.
11.30: Why are some ANSI/ISO Standard library functions showing up as
undefined, even though I've got an ANSI compiler?
A: Perhaps you don't have ANSI-compatible headers and libraries.
11.31: Does anyone have a tool for converting old-style C programs to
ANSI C, or for automatically generating prototypes?
A: See the full list for details.
11.32: Why won't frobozz-cc, which claims to be ANSI compliant, accept
this code?
A: Are you sure that the code being rejected doesn't rely on some
non-Standard extension?
11.33: What's the difference between implementation-defined,
unspecified, and undefined behavior?
A: If you're writing portable code, ignore the distinctions.
Otherwise, see the full list.
11.34: I'm appalled that the ANSI Standard leaves so many issues
undefined.
A: In most of these cases, the Standard is simply codifying
existing practice.
11.35: I just tried some allegedly-undefined code on an ANSI-conforming
compiler, and got the results I expected.
A: A compiler may do anything it likes when faced with undefined
behavior, including doing what you expect.
Section 12. Stdio
12.1: What's wrong with the code "char c; while((c = getchar()) !=
EOF) ..."?
A: The variable to hold getchar's return value must be an int.
12.2: Why won't the code "while(!feof(infp)) {
fgets(buf, MAXLINE, infp); fputs(buf, outfp); }" work?
A: EOF is only indicated *after* an input routine fails.
12.4: My program's prompts and intermediate output don't always show
up on the screen.
A: It's best to use an explicit fflush(stdout) whenever output
should definitely be visible.
12.5: How can I read one character at a time, without waiting for the
RETURN key?
A: See question 19.1.
12.6: How can I print a '%' character with printf?
A: "%%".
12.9: How can printf() use %f for type double, if scanf() requires
%lf?
A: C's "default argument promotions" mean that values of type float
are promoted to double.
12.9b: What printf format should I use for a typedef when I don't know
the underlying type?
A: Use a cast to convert the value to a known type, then use the
printf format matching that type.
12.10: How can I implement a variable field width with printf?
A: Use printf("%*d", width, x).
12.11: How can I print numbers with commas separating the thousands?
A: There is no standard routine (but see
12.12: Why doesn't the call scanf("%d", i) work?
A: The arguments you pass to scanf() must always be pointers.
12.13: Why doesn't the code "double d; scanf("%f", &d);" work?
A: Unlike printf(), scanf() uses %lf for double, and %f for float.
12.15: How can I specify a variable width in a scanf() format string?
A: You can't.
12.17: When I read numbers from the keyboard with scanf "%d\n", it
seems to hang until I type one extra line of input.
A: Try using "%d" instead of "%d\n".
12.18: I'm reading a number with scanf %d and then a string with
gets(), but the compiler seems to be skipping the call to
gets()!
A: scanf() and gets() do not work well together.
12.19: I'm re-prompting the user if scanf() fails, but sometimes it
seems to go into an infinite loop.
A: scanf() tends to "jam" on bad input since it does not discard
it.
12.20: Why does everyone say not to use scanf()? What should I use
instead?
A: scanf() has a number of problems. Usually, it's easier to read
entire lines and then interpret them.
12.21: How can I tell how much destination buffer space I'll need for
an arbitrary sprintf call? How can I avoid overflowing the
destination buffer with sprintf()?
A: Use the new snprintf() function, if you can.
12.23: Why does everyone say not to use gets()?
A: It cannot be prevented from overflowing the input buffer.
12.24: Why does errno contain ENOTTY after a call to printf()?
A: Don't worry about it. It is only meaningful for a program to
inspect the contents of errno after an error has been reported.
12.25: What's the difference between fgetpos/fsetpos and ftell/fseek?
A: fgetpos() and fsetpos() use a special typedef which may allow
them to work with larger files than ftell() and fseek().
12.26: Will fflush(stdin) flush unread characters from the standard
input stream?
A: No.
12.30: I'm trying to update a file in place, by using fopen mode "r+",
but it's not working.
A: Be sure to call fseek between reading and writing.
12.33: How can I redirect stdin or stdout from within a program?
A: Use freopen().
12.34: Once I've used freopen(), how can I get the original stream
back?
A: There isn't a good way. Try avoiding freopen.
12.36b: How can I arrange to have output go two places at once?
A: You could write your own printf variant which printed everything
twice. See question 15.5.
12.38: How can I read a binary data file properly?
A: Be sure to specify "rb" mode when calling fopen().
Section 13. Library Functions
13.1: How can I convert numbers to strings?
A: Just use sprintf().
13.2: Why does strncpy() not always write a '\0'?
A: For mildly-interesting historical reasons.
13.5: Why do some versions of toupper() act strangely if given an
upper-case letter?
A: Older versions of toupper() and tolower() did not always work as
expected in this regard.
13.6: How can I split up a string into whitespace-separated fields?
A: Try strtok().
13.7: I need some code to do regular expression and wildcard matching.
A: regexp libraries abound; see the full list for details.
13.8: I'm trying to sort an array of strings with qsort(), using
strcmp() as the comparison function, but it's not working.
A: You'll have to write a "helper" comparison function which takes
two generic pointer arguments, converts them to char **, and
dereferences them, yielding char *'s which can be usefully
compared.
13.9: Now I'm trying to sort an array of structures, but the compiler
is complaining that the function is of the wrong type for
qsort().
A: The comparison function must be declared as accepting "generic
pointers" (const void *) which it then converts to structure
pointers.
13.10: How can I sort a linked list?
A: Algorithms like insertion sort and merge sort work well, or you
can keep the list in order as you build it.
13.11: How can I sort more data than will fit in memory?
A: You want an "external sort"; see the full list for details.
13.12: How can I get the time of day in a C program?
A: Just use the time(), ctime(), localtime() and/or strftime()
functions.
13.13: How can I convert a struct tm or a string into a time_t?
A: The ANSI mktime() function converts a struct tm to a time_t. No
standard routine exists to parse strings.
13.14: How can I perform calendar manipulations?
A: The ANSI/ISO Standard C mktime() and difftime() functions
provide some support for both problems.
13.14b: Does C have any Year 2000 problems?
A: No, although poorly-written C programs do. Make sure you know
that tm_year holds the value of the year minus 1900.
13.15: I need a random number generator.
A: The Standard C library has one: rand().
13.16: How can I get random integers in a certain range?
A: One method is something like
(int)((double)rand() / ((double)RAND_MAX + 1) * N)
13.17: Each time I run my program, I get the same sequence of numbers
back from rand().
A: You can call srand() to seed the pseudo-random number generator
with a truly random initial value.
13.18: I need a random true/false value, so I'm just taking rand() % 2,
but it's alternating 0, 1, 0, 1, 0...
A: Try using the higher-order bits: see question 13.16.
13.20: How can I generate random numbers with a normal or Gaussian
distribution?
A: See the longer versions of this list for ideas.
13.24: I'm trying to port this old program. Why do I get "undefined
external" errors for some library functions?
A: Some semistandard functions have been renamed or replaced over
the years; see the full list for details.
13.25: I get errors due to library functions being undefined even
though I #include the right header files.
A: You may have to explicitly ask for the correct libraries to be
searched.
13.26: I'm still getting errors due to library functions being
undefined, even though I'm requesting the right libraries.
A: Library search order is significant; usually, you must search
the libraries last.
13.28: What does it mean when the linker says that _end is undefined?
A: You generally get that message only when other symbols are
undefined, too.
Section 14. Floating Point
14.1: When I set a float variable to 3.1, why is printf printing it as
3.0999999?
A: Most computers use base 2 for floating-point numbers, and many
fractions (including 0.1 decimal) are not exactly representable
in base 2.
14.2: Why is sqrt(144.) giving me crazy numbers?
A: Make sure that you have #included
declared other functions returning double.
14.3: I keep getting "undefined: sin" compilation errors.
A: Make sure you're actually linking with the math library.
14.4: My floating-point calculations are acting strangely and giving
me different answers on different machines.
A: First, see question 14.2 above. If the problem isn't that
simple, see the full list for a brief explanation, or any good
programming book for a better one.
14.5: What's a good way to check for "close enough" floating-point
equality?
A: The best way is to use an accuracy threshold which is relative
to the magnitude of the numbers being compared.
14.6: How do I round numbers?
A: For positive numbers, try (int)(x + 0.5) .
14.7: Where is C's exponentiation operator?
A: Try using the pow() function.
14.8: The predefined constant M_PI seems to be missing from
A: That constant is not standard.
14.9: How do I test for IEEE NaN and other special values?
A: There is not yet a portable way, but see the full list for
ideas.
14.11: What's a good way to implement complex numbers in C?
A: It is straightforward to define a simple structure and some
arithmetic functions to manipulate them.
14.12: I'm looking for some mathematical library code.
A: See Ajay Shah's index of free numerical software at
ftp://ftp.math.psu.edu/pub/FAQ/numcomp-free-c .
14.13: I'm having trouble with a Turbo C program which crashes and says
something like "floating point formats not linked."
A: You may have to insert a dummy call to a floating-point library
function to force loading of floating-point support.
Section 15. Variable-Length Argument Lists
15.1: I heard that you have to #include
printf(). Why?
A: So that a proper prototype for printf() will be in scope.
15.2: How can %f be used for both float and double arguments in
printf()?
A: In variable-length argument lists, types char and short int are
promoted to int, and float is promoted to double.
15.3: Why don't function prototypes guard against mismatches in
printf's arguments?
A: Function prototypes do not provide any information about the
number and types of variable arguments.
15.4: How can I write a function that takes a variable number of
arguments?
A: Use the
15.5: How can I write a function that takes a format string and a
variable number of arguments, like printf(), and passes them to
printf() to do most of the work?
A: Use vprintf(), vfprintf(), or vsprintf().
15.6: How can I write a function analogous to scanf(), that calls
scanf() to do most of the work?
A: C9X will support vscanf().
15.7: I have a pre-ANSI compiler, without
A: There's an older header,
same functionality.
15.8: How can I discover how many arguments a function was actually
called with?
A: Any function which takes a variable number of arguments must be
able to determine *from the arguments' values* how many of them
there are.
15.9: My compiler isn't letting me declare a function that accepts
*only* variable arguments.
A: Standard C requires at least one fixed argument.
15.10: Why isn't "va_arg(argp, float)" working?
A: Because the "default argument promotions" apply in variable-
length argument lists, you should always use
va_arg(argp, double).
15.11: I can't get va_arg() to pull in an argument of type pointer-to-
function.
A: Use a typedef.
15.12: How can I write a function which takes a variable number of
arguments and passes them to some other function ?
A: In general, you cannot.
15.13: How can I call a function with an argument list built up at run
time?
A: You can't.
Section 16. Strange Problems
16.1b: I'm getting baffling syntax errors which make no sense at all,
and it seems like large chunks of my program aren't being
compiled.
A: Check for unclosed comments or mismatched preprocessing
directives.
16.1c: Why isn't my procedure call working?
A: Function calls always require parenthesized argument lists.
16.3: This program crashes before it even runs!
A: Look for very large, local arrays.
(See also questions 11.12b, 16.4, 16.5, and 18.4.)
16.4: I have a program that seems to run correctly, but then crashes
as it's exiting.
A: See the full list for ideas.
16.5: This program runs perfectly on one machine, but I get weird
results on another.
A: See the full list for a brief list of possibilities.
16.6: Why does the code "char *p = "hello, world!"; p[0] = 'H';"
crash?
A: String literals are not modifiable, except (in effect) when they
are used as array initializers.
16.8: What does "Segmentation violation" mean?
A: It generally means that your program tried to access memory it
shouldn't have, invariably as a result of stack corruption or
improper pointer use.
Section 17. Style
17.1: What's the best style for code layout in C?
A: There is no one "best style," but see the full list for a few
suggestions.
17.3: Is the code "if(!strcmp(s1, s2))" good style?
A: Not particularly.
17.4: Why do some people write if(0 == x) instead of if(x == 0)?
A: It's a trick to guard against the common error of writing
if(x = 0) .
17.5: I came across some code that puts a (void) cast before each call
to printf(). Why?
A: To suppress warnings about otherwise discarded return values.
17.8: What is "Hungarian Notation"?
A: It's a naming convention which encodes information about a
variable's type in its name.
17.9: Where can I get the "Indian Hill Style Guide" and other coding
standards?
A: See the unabridged list.
17.10: Some people say that goto's are evil and that I should never use
them. Isn't that a bit extreme?
A: Yes. Absolute rules are an imperfect approach to good
programming style.
Section 18. Tools and Resources
18.1: I'm looking for C development tools (cross-reference generators,
code beautifiers, etc.).
A: See the full list for a few names.
18.2: How can I track down these pesky malloc problems?
A: See the full list for a list of tools.
18.3: What's a free or cheap C compiler I can use?
A: See the full list for a brief catalog.
18.4: I just typed in this program, and it's acting strangely. Can
you see anything wrong with it?
A: See if you can run lint first.
18.5: How can I shut off the "warning: possible pointer alignment
problem" message which lint gives me for each call to malloc()?
A: It may be easier simply to ignore the message, perhaps in an
automated way with grep -v.
18.7: Where can I get an ANSI-compatible lint?
A: See the unabridged list for two commercial products.
18.8: Don't ANSI function prototypes render lint obsolete?
A: No. A good compiler may match most of lint's diagnostics; few
provide all.
18.9: Are there any C tutorials or other resources on the net?
A: There are several of them.
18.10: What's a good book for learning C?
A: There are far too many books on C to list here; the full list
contains a few pointers.
18.13: Where can I find the sources of the standard C libraries?
A: Several possibilites are listed in the full list.
18.13b: Is there an on-line C reference manual?
A: Two possibilities are
http://www.cs.man.ac.uk/standard_c/_index.html and
http://www.dinkumware.com/htm_cl/index.html .
18.13c: Where can I get a copy of the ANSI/ISO C Standard?
A: See question 11.2.
18.14: I need code to parse and evaluate expressions.
A: Several available packages are mentioned in the full list.
18.15: Where can I get a BNF or YACC grammar for C?
A: See the ANSI Standard, or the unabridged list.
18.15b: Does anyone have a C compiler test suite I can use?
A: See the full list for several sources.
18.15c: Where are some collections of useful code fragments and
examples?
A: See the full list for a few sources.
18.15d: I need code for performing multiple precision arithmetic.
A: See the full list for a few ideas.
18.16: Where and how can I get copies of all these freely distributable
programs?
A: See the regular postings in the comp.sources.unix and
comp.sources.misc newsgroups, or the full version of this list,
for information.
Section 19. System Dependencies
19.1: How can I read a single character from the keyboard without
waiting for the RETURN key?
A: Alas, there is no standard or portable way to do this sort of
thing in C.
19.2: How can I find out how many characters are available for
reading, or do a non-blocking read?
A: These, too, are entirely operating-system-specific.
19.3: How can I display a percentage-done indication that updates
itself in place, or show one of those "twirling baton" progress
indicators?
A: The character '\r' is a carriage return, and '\b' is a
backspace.
19.4: How can I clear the screen, or print text in color, or move the
cursor?
A: The only halfway-portable solution is the curses library.
19.5: How do I read the arrow keys? What about function keys?
A: Such things depend on the keyboard, operating system, and
library you're using.
19.6: How do I read the mouse?
A: What system are you using?
19.7: How can I do serial ("comm") port I/O?
A: It's system-dependent.
19.8: How can I direct output to the printer?
A: See the full list for ideas.
19.9: How do I send escape sequences to control a terminal or other
device?
A: By sending them. ESC is '\033' in ASCII.
19.10: How can I do graphics?
A: There is no portable way.
19.11: How can I check whether a file exists?
A: You can try the access() or stat() functions. Otherwise, the
only guaranteed and portable way is to try opening the file.
19.12: How can I find out the size of a file, prior to reading it in?
A: You might be able to get an estimate using stat() or fseek/ftell
(but see the full list for caveats).
19.12b: How can I find the modification date of a file?
A: Try stat().
19.13: How can a file be shortened in-place without completely clearing
or rewriting it?
A: There are various ways to do this, but there is no portable
solution.
19.14: How can I insert or delete a line in the middle of a file?
A: Short of rewriting the file, you probably can't.
19.15: How can I recover the file name given an open file descriptor?
A: This problem is, in general, insoluble. It is best to remember
the names of files yourself as you open them
19.16: How can I delete a file?
A: The Standard C Library function is remove().
19.16b: How do I copy files?
A: Open the source and destination files and copy a character or
block at a time, or see question 19.27.
19.17: What's wrong with the call fopen("c:\newdir\file.dat", "r")?
A: You probably need to double those backslashes.
19.18: How can I increase the allowable number of simultaneously open
files?
A: Check your system documentation.
19.20: How can I read a directory in a C program?
A: See if you can use the opendir() and readdir() functions.
19.22: How can I find out how much memory is available?
A: Your operating system may provide a routine which returns this
information.
19.23: How can I allocate arrays or structures bigger than 64K?
A: Some operating systems won't let you.
19.24: What does the error message "DGROUP exceeds 64K" mean?
A: It means that you have too much static data.
19.25: How can I access memory located at a certain address?
A: Set a pointer to the absolute address.
19.27: How can I invoke another program from within a C program?
A: Use system().
19.30: How can I invoke another program and trap its output?
A: Unix and some other systems provide a popen() function.
19.31: How can my program discover the complete pathname to the
executable from which it was invoked?
A: argv[0] may contain all or part of the pathname. You may be
able to duplicate the command language interpreter's search path
logic to locate the executable.
19.32: How can I automatically locate a program's configuration files
in the same directory as the executable?
A: It's hard; see also question 19.31 above.
19.33: How can a process change an environment variable in its caller?
A: If it's possible to do so at all, it's system dependent.
19.36: How can I read in an object file and jump to locations in it?
A: You want a dynamic linker or loader.
19.37: How can I implement a delay, or time a user's response, with sub-
second resolution?
A: Unfortunately, there is no portable way.
19.38: How can I trap or ignore keyboard interrupts like control-C?
A: Use signal().
19.39: How can I handle floating-point exceptions gracefully?
A: Take a look at matherr() and signal(SIGFPE).
19.40: How do I... Use sockets? Do networking? Write client/server
applications?
A: These questions have more to do with the networking facilities
you have available than they do with C.
19.40b: How do I... Use BIOS calls? Write ISR's? Create TSR's?
A: These are very particular to a particular system.
19.40c: I'm trying to compile a program in which "union REGS" and
int86() are undefined.
A: Those have to do with MS-DOS interrupt programming.
19.41: But I can't use all these nonstandard, system-dependent
functions, because my program has to be ANSI compatible!
A: That's an impossible requirement. Any real program requires at
least a few services which ANSI doesn't define.
Section 20. Miscellaneous
20.1: How can I return multiple values from a function?
A: Either pass pointers to several locations which the function can
fill in, or have the function return a structure containing the
desired values.
20.3: How do I access command-line arguments?
A: Via main()'s argv parameter.
20.5: How can I write data files which can be read on other machines
with different data formats?
A: The most portable solution is to use text files.
20.6: How can I call a function, given its name as a string?
A: The most straightforward thing to do is to maintain a
correspondence table of names and function pointers.
20.8: How can I implement sets or arrays of bits?
A: Use arrays of char or int, with a few macros to access the
desired bit at the proper index.
20.9: How can I determine whether a machine's byte order is big-endian
or little-endian?
A: The usual tricks involve pointers or unions.
20.10: How can I convert integers to binary or hexadecimal?
A: Internally, integers are already in binary. During I/O, you may
be able to select a base.
20.11: Can I use base-2 constants (something like 0b101010)?
Is there a printf() format for binary?
A: No, on both counts.
20.12: What is the most efficient way to count the number of bits which
are set in an integer?
A: Many "bit-fiddling" problems like this one can be sped up and
streamlined using lookup tables.
20.13: What's the best way of making my program efficient?
A: By picking good algorithms and implementing them carefully.
20.14: Are pointers really faster than arrays? How much do function
calls slow things down?
A: Precise answers to these and many similar questions depend on
the processor and compiler in use.
20.15b: People claim that optimizing compilers are good, but mine can't
even replace i/=2 with a shift.
A: Was i signed or unsigned?
20.15c: How can I swap two values without using a temporary?
A: The "clever" trick is a ^= b; b ^= a; a ^= b; see also question
3.3b.
20.17: Is there a way to switch on strings?
A: Not directly.
20.18: Is there a way to have non-constant case labels (i.e. ranges or
arbitrary expressions)?
A: No.
20.19: Are the outer parentheses in return statements really optional?
A: Yes.
20.20: Why don't C comments nest? Are they legal inside quoted
strings?
A: C comments don't nest because PL/I's comments don't either. The
character sequences /* and */ are not special within double-
quoted strings.
20.20b: What does a+++++b mean ?
A: Nothing. It's interpreted as "a ++ ++ + b", and cannot be
parsed.
20.24: Why doesn't C have nested functions?
A: They were deliberately left out of C as a simplification.
20.24b: What is assert()?
A: It is a macro which documents an assumption being made by the
programmer; it terminates the program if the assumption is
violated.
20.25: How can I call FORTRAN (C++, BASIC, Pascal, Ada, LISP) functions
from C?
A: The answer is entirely dependent on the machine and the specific
calling sequences of the various compilers in use.
20.26: Does anyone know of a program for converting Pascal or FORTRAN
to C?
A: Several freely distributable programs are available, namely
ptoc, p2c, and f2c. See the full list for details.
20.27: Can I use a C++ compiler to compile C code?
A: Not necessarily; C++ is not a strict superset of C.
20.28: I need to compare two strings for close, but not necessarily
exact, equality.
A: See the full list for ideas.
20.29: What is hashing?
A: A mapping of strings (or other data structures) to integers, for
easier searching.
20.31: How can I find the day of the week given the date?
A: Use mktime(), Zeller's congruence, or some code in the full
list.
20.32: Will 2000 be a leap year?
A: Yes.
20.34: How do you write a program which produces its own source code as
output?
A: Here's one:
char*s="char*s=%c%s%c;main(){printf(s,34,s,34);}";
main(){printf(s,34,s,34);}
20.35: What is "Duff's Device"?
A: It's a devastatingly deviously unrolled byte-copying loop. See
the full list for details.
20.36: When will the next Obfuscated C Code Contest be held?
How can I get a copy of previous winning entries?
A: See the full list, or http://www.ioccc.org/index.html .
20.37: What was the entry keyword mentioned in K&R1?
A: It was reserved to allow functions with multiple, differently-
named entry points, but it has been withdrawn.
20.38: Where does the name "C" come from, anyway?
A: C was derived from B, which was inspired by BCPL, which was a
simplification of CPL.
20.39: How do you pronounce "char"?
A: Like the English words "char," "care," or "car" (your choice).
20.39b: What do "lvalue" and "rvalue" mean?
A: An "lvalue" denotes an object that has a location; an "rvalue"
is any expression that has a value.
20.40: Where can I get extra copies of this list?
A: An up-to-date copy may be obtained from ftp.eskimo.com in
directory u/s/scs/C-faq/. You can also just pull it off the
net; the unabridged version is normally posted on the first of
each month, with an Expires: line which should keep it around
all month. It is also posted to the newsgroups comp.answers and
news.answers . Several sites archive news.answers postings and
other FAQ lists, including this one; two sites are rtfm.mit.edu
(directory pub/usenet), and ftp.uu.net (directory usenet).
A hypertext version of this FAQ list is available at
http://www.eskimo.com/~scs/C-faq/top.html .
An extended version has been published by Addison-Wesley
as _C Programming FAQs: Frequently Asked Questions_
(ISBN 0-201-84519-9).
Steve Summit
scs@eskimo.com
Monday, September 05, 2005
nice links on patterns etc
http://www.carfield.com.hk/document/software_design/pattern101.pdf
this one is on taming threads by holub.http://www.holub.com/publications/notes_and_slides/taming.java.threads.pdf
a non tech link for world atlas.http://www.worldatlas.com/aatlas/world.htm
notes onjava 1.5
http://www.holub.com/publications/notes_and_slides/tiger_release.pdf
design based documentation
http://www.carfield.com.hk/document/software_design
this one is on taming threads by holub.http://www.holub.com/publications/notes_and_slides/taming.java.threads.pdf
a non tech link for world atlas.http://www.worldatlas.com/aatlas/world.htm
notes onjava 1.5
http://www.holub.com/publications/notes_and_slides/tiger_release.pdf
design based documentation
http://www.carfield.com.hk/document/software_design
Saturday, September 03, 2005
Java Job Interview Questions & Answers
Java Job Interview Questions & Answers
The site is : http://www.javacamp.org/jobinterview.html if u have any more doughts regarding this go through the site ok
The rule is that not the best qualified candidates get job. Your on-site performance plays a big role. Here are some easily forgettable points.
• 90% interviewing questions raised based on your own resume.
• eye-to-eye contact, smiling all the way. don't miss anyone in the corner.
• asking easier and relevant questions back to the interviewers occasionally.
• be honest to answer technical questions, you are not expert to know everything.
• don't let your boss feel you might be a threat to take his position.
• don't be critical, focus on what you can do.
• try to be humor to show your smartness.
• don't act in a superior way.
• find right time to raise questions AND answer those questions to show your strength.
• aggressively to get candidacy info back after interviewing.
________________________________________
1. For more tips, go to this special tips page
2. Tell me about yourself?
The first is focusing on the needs of the organization. The second is focusing on the needs of the people within that organization. Don't talk so much about strong points about yourself because your resume has already brought you at the interview site.
3. How to deal with a question that is inappropriate?
o Briefly answer the question and move to a new topic.
o Ignore the question and redirect the discussion toward a different topic.
o If the question is blatant and offensive, you have every right to terminate the interview and walk out.
o Don't answer the question, but answer the intent behind the question.
For instance, if the interviewer asks, "Who is going to take care of your children when you have to travel?" You might answer, "I can meet the travel and work schedule that this job requires." Or if he/she asks, "Are you planning a family in the future?" You might say, "Right now I am focused on my career and as a family is always an option, it is not a priority right now."
4. What lessons have you learnt from "Apprentice" show?
At least 8 lessons:
1. Have a Strategy
2. Find Out What the Boss/Client Wants and Give it to Them
3. Deal With the Person in Charge
4. Be Positive
5. Have the Courage to Speak Your Mind
6. Stand Up For Yourself
7. Be Flexible
8. There's Life After Being Fired
Return to top
________________________________________
Java Language
Note: only the most important questions are listed below and they are not categorized, since your interviewing questions will not be categorized either.
1. More Java related interview questions.
2. Can a private method of a superclass be declared within a subclass?
Sure. A private field or method or inner class belongs to its declared class and hides from its subclasses. There is no way for private stuff to have a runtime overloading or overriding (polymorphism) features.
3. Why Java does not support multiple inheritence ?
Java DOES support multiple inheritance via interface implementation.
4. What is the difference between final, finally and finalize?
o final - declare constant
o finally - handles exception
o finalize - helps in garbage collection
5. Where and how can you use a private constuctor.
Private constructor can be used if you do not want any other class to instanstiate the object , the instantiation is done from a static public method, this method is used when dealing with the factory method pattern when the designer wants only one controller (fatory method ) to create the object .
6. In System.out.println(),what is System,out and println,pls explain?
System is a predefined final class,out is a PrintStream object and println is a built-in overloaded method in the out object.
7. What is meant by "Abstract Interface"?
First, an interface is abstract. That means you cannot have any implementation in an interface. All the methods declared in an interface are abstract methods or signatures of the methods.
8. Can you make an instance of an abstract class? For example - java.util.Calender is an abstract class with a method getInstance() which returns an instance of the Calender class.
No! You cannot make an instance of an abstract class. An abstract class has to be sub-classed. If you have an abstract class and you want to use a method which has been implemented, you may need to subclass that abstract class, instantiate your subclass and then call that method.
9. What is the output of x When this kind of question has been asked, find the problems you think is necessary to ask before you give an answer. Ask if variables a and b have been declared or initialized. If the answer is yes. You can say that the syntax is wrong. If the statement is rewritten as: x 10. What is the difference between Swing and AWT components?
AWT components are heavy-weight, whereas Swing components are lightweight. Heavy weight components depend on the local windowing toolkit. For example, java.awt.Button is a heavy weight component, when it is running on the Java platform for Unix platform, it maps to a real Motif button.
11. Why Java does not support pointers?
Because pointers are unsafe. Java uses reference types to hide pointers and programmers feel easier to deal with reference types without pointers. This is why Java and C# shine.
12. Parsers? DOM vs SAX parser
parsers are fundamental xml components, a bridge between XML documents and applications that process that XML. The parser is responsible for handling xml syntax, checking the contents of the document against constraints established in a DTD or Schema.
DOM SAX
----------------------------------------------------------------
1. Tree of nodes 1.Sequence of events
2.Memory: Occupies more memory, 2.does'nt use any memory
preffered for small XML documents preferred for large documents
3.Slower at runtime 3. Faster at runtime
4.stored as objects 4. objects are to be created
5.Programmatically easy, since objects 5.Need to write code for creating objects
are to reffered
6.Ease of navigation 6.backward navigation is not possible as it sequentially processes the document
Return to top
Java Language Questions
________________________________________
1. What is a platform?
A platform is the hardware or software environment in which a program runs. Most platforms can be described as a combination of the operating system and hardware, like Windows 2000/XP, Linux, Solaris, and MacOS.
________________________________________
2. What is the main difference between Java platform and other platforms?
The Java platform differs from most other platforms in that it's a software-only platform that runs on top of other hardware-based platforms.
The Java platform has two components:
1. The Java Virtual Machine (Java VM)
2. The Java Application Programming Interface (Java API)
________________________________________
3. What is the Java Virtual Machine?
The Java Virtual Machine is a software that can be ported onto various hardware-based platforms.
________________________________________
4. What is the Java API?
The Java API is a large collection of ready-made software components that provide many useful capabilities, such as graphical user interface (GUI) widgets.
________________________________________
5. What is the package?
The package is a Java namespace or part of Java libraries. The Java API is grouped into libraries of related classes and interfaces; these libraries are known as packages.
________________________________________
6. What is native code?
The native code is code that after you compile it, the compiled code runs on a specific hardware platform.
________________________________________
7. Is Java code slower than native code?
Not really. As a platform-independent environment, the Java platform can be a bit slower than native code. However, smart compilers, well-tuned interpreters, and just-in-time bytecode compilers can bring performance close to that of native code without threatening portability.
________________________________________
8. What is the serialization?
The serialization is a kind of mechanism that makes a class or a bean persistence by having its properties or fields and state information saved and restored to and from storage.
________________________________________
9. How to make a class or a bean serializable?
By implementing either the java.io.Serializable interface, or the java.io.Externalizable interface. As long as one class in a class's inheritance hierarchy implements Serializable or Externalizable, that class is serializable.
________________________________________
10. How many methods in the Serializable interface?
There is no method in the Serializable interface. The Serializable interface acts as a marker, telling the object serialization tools that your class is serializable.
________________________________________
11. How many methods in the Externalizable interface?
There are two methods in the Externalizable interface. You have to implement these two methods in order to make your class externalizable. These two methods are readExternal() and writeExternal().
________________________________________
12. What is the difference between Serializalble and Externalizable interface?
When you use Serializable interface, your class is serialized automatically by default. But you can override writeObject() and readObject() two methods to control more complex object serailization process. When you use Externalizable interface, you have a complete control over your class's serialization process.
________________________________________
13. What is a transient variable?
A transient variable is a variable that may not be serialized. If you don't want some field to be serialized, you can mark that field transient or static.
________________________________________
14. Which containers use a border layout as their default layout?
The Window, Frame and Dialog classes use a border layout as their default layout.
________________________________________
15. How are Observer and Observable used?
Objects that subclass the Observable class maintain a list of observers. When an Observable object is updated it invokes the update() method of each of its observers to notify the observers that it has changed state. The Observer interface is implemented by objects that observe Observable objects.
________________________________________
16. What is synchronization and why is it important?
With respect to multithreading, synchronization is the capability to control the access of multiple threads to shared resources. Without synchronization, it is possible for one thread to modify a shared object while another thread is in the process of using or updating that object's value. This often causes dirty data and leads to significant errors.
________________________________________
17. What are synchronized methods and synchronized statements?
Synchronized methods are methods that are used to control access to an object. A thread only executes a synchronized method after it has acquired the lock for the method's object or class. Synchronized statements are similar to synchronized methods. A synchronized statement can only be executed after a thread has acquired the lock for the object or class referenced in the synchronized statement.
________________________________________
18. What are three ways in which a thread can enter the waiting state?
A thread can enter the waiting state by invoking its sleep() method, by blocking on I/O, by unsuccessfully attempting to acquire an object's lock, or by invoking an object's wait() method. It can also enter the waiting state by invoking its (deprecated) suspend() method.
________________________________________
19. Can a lock be acquired on a class?
Yes, a lock can be acquired on a class. This lock is acquired on the class's Class object.
________________________________________
20. What's new with the stop(), suspend() and resume() methods in JDK 1.2?
The stop(), suspend() and resume() methods have been deprecated in JDK 1.2.
________________________________________
21. What is the preferred size of a component?
The preferred size of a component is the minimum component size that will allow the component to display normally.
________________________________________
22. What method is used to specify a container's layout?
The setLayout() method is used to specify a container's layout.
________________________________________
23. Which containers use a FlowLayout as their default layout?
The Panel and Applet classes use the FlowLayout as their default layout.
________________________________________
24. What is thread?
A thread is an independent path of execution in a system.
________________________________________
25. What is multithreading?
Multithreading means various threads that run in a system.
________________________________________
26. How does multithreading take place on a computer with a single CPU?
The operating system's task scheduler allocates execution time to multiple tasks. By quickly switching between executing tasks, it creates the impression that tasks execute sequentially.
________________________________________
27. How to create multithread in a program?
You have two ways to do so. First, making your class "extends" Thread class. Second, making your class "implements" Runnable interface. Put jobs in a run() method and call start() method to start the thread.
________________________________________
28. Can Java object be locked down for exclusive use by a given thread?
Yes. You can lock an object by putting it in a "synchronized" block. The locked object is inaccessible to any thread other than the one that explicitly claimed it.
________________________________________
29. Can each Java object keep track of all the threads that want to exclusively access to it?
Yes.
________________________________________
30. What state does a thread enter when it terminates its processing?
When a thread terminates its processing, it enters the dead state.
________________________________________
31. What invokes a thread's run() method?
After a thread is started, via its start() method of the Thread class, the JVM invokes the thread's run() method when the thread is initially executed.
________________________________________
32. What is the purpose of the wait(), notify(), and notifyAll() methods?
The wait(),notify(), and notifyAll() methods are used to provide an efficient way for threads to communicate each other.
________________________________________
33. What are the high-level thread states?
The high-level thread states are ready, running, waiting, and dead.
________________________________________
34. What is the Collections API?
The Collections API is a set of classes and interfaces that support operations on collections of objects.
________________________________________
35. What is the List interface?
The List interface provides support for ordered collections of objects.
________________________________________
36. How does Java handle integer overflows and underflows?
It uses those low order bytes of the result that can fit into the size of the type allowed by the operation.
________________________________________
37. What is the Vector class?
The Vector class provides the capability to implement a growable array of objects
________________________________________
38. What modifiers may be used with an inner class that is a member of an outer class?
A (non-local) inner class may be declared as public, protected, private, static, final, or abstract.
________________________________________
39. If a method is declared as protected, where may the method be accessed?
A protected method may only be accessed by classes or interfaces of the same package or by subclasses of the class in which it is declared.
________________________________________
40. What is an Iterator interface?
The Iterator interface is used to step through the elements of a Collection.
________________________________________
41. How many bits are used to represent Unicode, ASCII, UTF-16, and UTF-8 characters?
Unicode requires 16 bits and ASCII require 7 bits. Although the ASCII character set uses only 7 bits, it is usually represented as 8 bits. UTF-8 represents characters using 8, 16, and 18 bit patterns. UTF-16 uses 16-bit and larger bit patterns.
________________________________________
42. What is the difference between yielding and sleeping?
When a task invokes its yield() method, it returns to the ready state. When a task invokes its sleep() method, it returns to the waiting state.
________________________________________
43. Is sizeof a keyword?
The sizeof operator is not a keyword in Java.
________________________________________
44. What are wrapped classes?
Wrapped classes are classes that allow primitive types to be accessed as objects.
________________________________________
45. Does garbage collection guarantee that a program will not run out of memory?
No, it doesn't. It is possible for programs to use up memory resources faster than they are garbage collected. It is also possible for programs to create objects that are not subject to garbage collection
________________________________________
46. What is the difference between preemptive scheduling and time slicing?
Under preemptive scheduling, the highest priority task executes until it enters the waiting or dead states or a higher priority task comes into existence. Under time slicing, a task executes for a predefined slice of time and then reenters the pool of ready tasks. The scheduler then determines which task should execute next, based on priority and other factors.
________________________________________
47. Name Component subclasses that support painting.
The Canvas, Frame, Panel, and Applet classes support painting.
________________________________________
48. What is a native method?
A native method is a method that is implemented in a language other than Java.
________________________________________
49. How can you write a loop indefinitely?
for(;;)--for loop; while(true)--always true, etc.
________________________________________
50. Can an anonymous class be declared as implementing an interface and extending a class?
An anonymous class may implement an interface or extend a superclass, but may not be declared to do both.
________________________________________
51. What is the purpose of finalization?
The purpose of finalization is to give an unreachable object the opportunity to perform any cleanup processing before the object is garbage collected.
________________________________________
52. Which class is the superclass for every class.
Object
________________________________________
53. What is the difference between the Boolean & operator and the && operator?
If an expression involving the Boolean & operator is evaluated, both operands are evaluated. Then the & operator is applied to the operand. When an expression involving the && operator is evaluated, the first operand is evaluated. If the first operand returns a value of true then the second operand is evaluated. The && operator is then applied to the first and second operands. If the first operand evaluates to false, the evaluation of the second operand is skipped.
Operator & has no chance to skip both sides evaluation and && operator does. If asked why, give details as above.
________________________________________
54. What is the GregorianCalendar class?
The GregorianCalendar provides support for traditional Western calendars.
________________________________________
55. What is the SimpleTimeZone class?
The SimpleTimeZone class provides support for a Gregorian calendar.
________________________________________
56. Which Container method is used to cause a container to be laid out and redisplayed?
validate()
________________________________________
57. What is the Properties class?
The properties class is a subclass of Hashtable that can be read from or written to a stream. It also provides the capability to specify a set of default values to be used.
________________________________________
58. What is the purpose of the Runtime class?
The purpose of the Runtime class is to provide access to the Java runtime system.
________________________________________
59. What is the purpose of the System class?
The purpose of the System class is to provide access to system resources.
________________________________________
60. What is the purpose of the finally clause of a try-catch-finally statement?
The finally clause is used to provide the capability to execute code no matter whether or not an exception is thrown or caught.
________________________________________
61. What is the Locale class?
The Locale class is used to tailor program output to the conventions of a particular geographic, political, or cultural region.
________________________________________
62. What must a class do to implement an interface?
It must provide all of the methods in the interface and identify the interface in its implements clause.
________________________________________
63. What is an abstract method?
An abstract method is a method whose implementation is deferred to a subclass. Or, a method that has no implementation (an interface of a method).
________________________________________
64. What is a static method?
A static method is a method that belongs to the class rather than any object of the class and doesn't apply to an object or even require that any objects of the class have been instantiated.
________________________________________
65. What is a protected method?
A protected method is a method that can be accessed by any method in its package and inherited by any subclass of its class.
________________________________________
66. What is the difference between a static and a non-static inner class?
A non-static inner class may have object instances that are associated with instances of the class's outer class. A static inner class does not have any object instances.
________________________________________
67. What is an object's lock and which object's have locks?
An object's lock is a mechanism that is used by multiple threads to obtain synchronized access to the object. A thread may execute a synchronized method of an object only after it has acquired the object's lock. All objects and classes have locks. A class's lock is acquired on the class's Class object.
________________________________________
68. When can an object reference be cast to an interface reference?
An object reference be cast to an interface reference when the object implements the referenced interface.
________________________________________
69. What is the difference between a Window and a Frame?
The Frame class extends Window to define a main application window that can have a menu bar.
________________________________________
70. What do heavy weight components mean?
Heavy weight components like Abstract Window Toolkit (AWT), depend on the local windowing toolkit. For example, java.awt.Button is a heavy weight component, when it is running on the Java platform for Unix platform, it maps to a real Motif button. In this relationship, the Motif button is called the peer to the java.awt.Button. If you create two Buttons, two peers and hence two Motif Buttons are also created. The Java platform communicates with the Motif Buttons using the Java Native Interface. For each and every component added to the application, there is an additional overhead tied to the local windowing system, which is why these components are called heavy weight.
________________________________________
71. Which package has light weight components?
javax.Swing package. All components in Swing, except JApplet, JDialog, JFrame and JWindow are lightweight components.
________________________________________
72. What are peerless components?
The peerless components are called light weight components.
________________________________________
73. What is the difference between the Font and FontMetrics classes?
The FontMetrics class is used to define implementation-specific properties, such as ascent and descent, of a Font object.
________________________________________
74. What happens when a thread cannot acquire a lock on an object?
If a thread attempts to execute a synchronized method or synchronized statement and is unable to acquire an object's lock, it enters the waiting state until the lock becomes available.
________________________________________
75. What is the difference between the Reader/Writer class hierarchy and the InputStream/OutputStream class hierarchy?
The Reader/Writer class hierarchy is character-oriented, and the InputStream/OutputStream class hierarchy is byte-oriented.
________________________________________
76. What classes of exceptions may be caught by a catch clause?
A catch clause can catch any exception that may be assigned to the Throwable type. This includes the Error and Exception types.
________________________________________
77. What is the difference between throw and throws keywords?
The throw keyword denotes a statement that causes an exception to be initiated. It takes the Exception object to be thrown as argument. The exception will be caught by an immediately encompassing try-catch construction or propagated further up the calling hierarchy.
The throws keyword is a modifier of a method that designates that exceptions may come out of the mehtod, either by virtue of the method throwing the exception itself or because it fails to catch such exceptions that a method it calls may throw.
________________________________________
78. If a class is declared without any access modifiers, where may the class be accessed?
A class that is declared without any access modifiers is said to have package or friendly access. This means that the class can only be accessed by other classes and interfaces that are defined within the same package.
________________________________________
79. What is the Map interface?
The Map interface replaces the JDK 1.1 Dictionary class and is used associate keys with values.
________________________________________
80. Does a class inherit the constructors of its superclass?
A class does not inherit constructors from any of its superclasses.
________________________________________
81. Name primitive Java types.
The primitive types are byte, char, short, int, long, float, double, and boolean.
________________________________________
82. Which class should you use to obtain design information about an object?
The Class class is used to obtain information about an object's design.
________________________________________
83. How can a GUI component handle its own events?
A component can handle its own events by implementing the required event-listener interface and adding itself as its own event listener.
________________________________________
84. How are the elements of a GridBagLayout organized?
The elements of a GridBagLayout are organized according to a grid. However, the elements are of different sizes and may occupy more than one row or column of the grid. In addition, the rows and columns may have different sizes.
________________________________________
85. What advantage do Java's layout managers provide over traditional windowing systems?
Java uses layout managers to lay out components in a consistent manner across all windowing platforms. Since Java's layout managers aren't tied to absolute sizing and positioning, they are able to accommodate platform-specific differences among windowing systems.
________________________________________
86. What are the problems faced by Java programmers who don't use layout managers?
Without layout managers, Java programmers are faced with determining how their GUI will be displayed across multiple windowing systems and finding a common sizing and positioning that will work within the constraints imposed by each windowing system.
________________________________________
87. What is the difference between static and non-static variables?
A static variable is associated with the class as a whole rather than with specific instances of a class. Non-static variables take on unique values with each object instance.
________________________________________
88. What is the difference between the paint() and repaint() methods?
The paint() method supports painting via a Graphics object. The repaint() method is used to cause paint() to be invoked by the AWT painting thread.
________________________________________
89. What is the purpose of the File class?
The File class is used to create objects that provide access to the files and directories of a local file system.
________________________________________
90. What restrictions are placed on method overloading?
Two methods may not have the same name and argument list but different return types.
________________________________________
91. What restrictions are placed on method overriding?
Overridden methods must have the same name, argument list, and return type. The overriding method may not limit the access of the method it overrides. The overriding method may not throw any exceptions that may not be thrown by the overridden method.
________________________________________
92. What is casting?
There are two types of casting, casting between primitive numeric types and casting between object references. Casting between numeric types is used to convert larger values, such as double values, to smaller values, such as byte values. Casting between object references is used to refer to an object by a compatible class, interface, or array type reference.
________________________________________
93. Name Container classes.
Window, Frame, Dialog, FileDialog, Panel, Applet, or ScrollPane
________________________________________
94. What class allows you to read objects directly from a stream?
The ObjectInputStream class supports the reading of objects from input streams.
________________________________________
95. How are this() and super() used with constructors?
this() is used to invoke a constructor of the same class. super() is used to invoke a superclass constructor.
________________________________________
96. How is it possible for two String objects with identical values not to be equal under the == operator?
The == operator compares two objects to determine if they are the same object in memory. It is possible for two String objects to have the same value, but located indifferent areas of memory.
________________________________________
97. What an I/O filter?
An I/O filter is an object that reads from one stream and writes to another, usually altering the data in some way as it is passed from one stream to another.
________________________________________
98. What is the Set interface?
The Set interface provides methods for accessing the elements of a finite mathematical set. Sets do not allow duplicate elements.
________________________________________
99. What is the List interface?
The List interface provides support for ordered collections of objects.
________________________________________
100. What is the purpose of the enableEvents() method?
The enableEvents() method is used to enable an event for a particular object. Normally, an event is enabled when a listener is added to an object for a particular event. The enableEvents() method is used by objects that handle events by overriding their event-dispatch methods.
________________________________________
101. What is the difference between the File and RandomAccessFile classes?
The File class encapsulates the files and directories of the local file system. The RandomAccessFile class provides the methods needed to directly access data contained in any part of a file.
________________________________________
102. What interface must an object implement before it can be written to a stream as an object?
An object must implement the Serializable or Externalizable interface before it can be written to a stream as an object.
________________________________________
103. What is the ResourceBundle class?
The ResourceBundle class is used to store locale-specific resources that can be loaded by a program to tailor the program's appearance to the particular locale in which it is being run.
________________________________________
104. What is the difference between a Scrollbar and a ScrollPane?
A Scrollbar is a Component, but not a Container. A ScrollPane is a Container. A ScrollPane handles its own events and performs its own scrolling.
________________________________________
105. What is a Java package and how is it used?
A Java package is a naming context for classes and interfaces. A package is used to create a separate name space for groups of classes and interfaces. Packages are also used to organize related classes and interfaces into a single API unit and to control accessibility to these classes and interfaces.
________________________________________
106. What are the Object and Class classes used for?
The Object class is the highest-level class in the Java class hierarchy. The Class class is used to represent the classes and interfaces that are loaded by a Java program.
________________________________________
107. What is Serialization and deserialization?
Serialization is the process of writing the state of an object to a byte stream.
Deserialization is the process of restoring these objects.
________________________________________
108. what is tunnelling?
Tunnelling is a route to somewhere. For example, RMI tunnelling is a way to make RMI application get through firewall. In CS world, tunnelling means a way to transfer data.
________________________________________
109. Does the code in finally block get executed if there is an exception and a return statement in a catch block?
If an exception occurs and there is a return statement in catch block, the finally block is still executed. The finally block will not be executed when the System.exit(1) statement is executed earlier or the system shut down earlier or the memory is used up earlier before the thread goes to finally block.
________________________________________
110. How you restrict a user to cut and paste from the html page?
Using javaScript to lock keyboard keys. It is one of solutions.
________________________________________
111. Is Java a super set of JavaScript?
No. They are completely different. Some syntax may be similar.
________________________________________
112. What is a Container in a GUI?
A Container contains and arranges other components (including other containers) through the use of layout managers, which use specific layout policies to determine where components should go as a function of the size of the container.
________________________________________
113. How the object oriented approach helps us keep complexity of software development under control?
We can discuss such issue from the following aspects:
o Objects allow procedures to be encapsulated with their data to reduce potential interference.
o Inheritance allows well-tested procedures to be reused and enables changes to make once and have effect in all relevant places.
o The well-defined separations of interface and implementation allows constraints to be imposed on inheriting classes while still allowing the flexibility of overriding and overloading.
________________________________________
114. What is polymorphism?
Polymorphism allows methods to be written that needn't be concerned about the specifics of the objects they will be applied to. That is, the method can be specified at a higher level of abstraction and can be counted on to work even on objects of yet unconceived classes.
________________________________________
115. What is design by contract?
The design by contract specifies the obligations of a method to any other methods that may use its services and also theirs to it. For example, the preconditions specify what the method required to be true when the method is called. Hence making sure that preconditions are. Similarly, postconditions specify what must be true when the method is finished, thus the called method has the responsibility of satisfying the post conditions.
In Java, the exception handling facilities support the use of design by contract, especially in the case of checked exceptions. The assert keyword can be used to make such contracts.
________________________________________
116. What are use cases?
A use case describes a situation that a program might encounter and what behavior the program should exhibit in that circumstance. It is part of the analysis of a program. The collection of use cases should, ideally, anticipate all the standard circumstances and many of the extraordinary circumstances possible so that the program will be robust.
________________________________________
117. What is the difference between interface and abstract class?
o interface contains methods that must be abstract; abstract class may contain concrete methods.
o interface contains variables that must be static and final; abstract class may contain non-final and final variables.
o members in an interface are public by default, abstract class may contain non-public members.
o interface is used to "implements"; whereas abstract class is used to "extends".
o interface can be used to achieve multiple inheritance; abstract class can be used as a single inheritance.
o interface can "extends" another interface, abstract class can "extends" another class and "implements" multiple interfaces.
o interface is absolutely abstract; abstract class can be invoked if a main() exists.
o interface is more flexible than abstract class because one class can only "extends" one super class, but "implements" multiple interfaces.
o If given a choice, use interface instead of abstract class.
________________________________________
________________________________________
Networking
1. More networking questions
2. What two protocols are used in Java RMI technology?
Java Object Serialization and HTTP. The Object Serialization protocol is used to marshal call and return data. The HTTP protocol is used to "POST" a remote method invocation and obtain return data when circumstances warrant.
3. What is difference between Swing and JSF?
The key difference is that JSF runs on the server in a standard Java servlet container like Tomcat or WebLogic and display HTML or some other markup to the client.
4. What is JSF?
JSF stands for JavaServer Faces, or simply Faces. It is a framework for building Web-based user interfaces in Java. Like Swing, it provides a set of standard widgets such as buttons, hyperlinks, checkboxes, ans so on.
Return to top
Networking Questions
________________________________________
1. What is the difference between URL instance and URLConnection instance?
A URL instance represents the location of a resource, and a URLConnection instance represents a link for accessing or communicating with the resource at the location.
________________________________________
2. How do I make a connection to URL?
You obtain a URL instance and then invoke openConnection on it. URLConnection is an abstract class, which means you can't directly create instances of it using a constructor. We have to invoke openConnection method on a URL instance, to get the right kind of connection for your URL. Eg. URL url;
URLConnection connection;
try{ url = new URL("...");
connection = url.openConnection();
}catch (MalFormedURLException e) { }
________________________________________
3. What Is a Socket?
A socket is one end-point of a two-way communication link between two programs running on the network. A socket is bound to a port number so that the TCP layer can identify the application that data is destined to be sent. Socket classes are used to represent the connection between a client program and a server program. The java.net package provides two classes--Socket and ServerSocket--which implement the client side of the connection and the server side of the connection, respectively.
________________________________________
4. What information is needed to create a TCP Socket?
The Local System?s IP Address and Port Number. And the Remote System's IPAddress and Port Number.
________________________________________
5. What are the two important TCP Socket classes?
Socket and ServerSocket. ServerSocket is used for normal two-way socket communication. Socket class allows us to read and write through the sockets. getInputStream() and getOutputStream() are the two methods available in Socket class.
________________________________________
6. When MalformedURLException and UnknownHostException throws?
When the specified URL is not connected then the URL throw MalformedURLException and If InetAddress? methods getByName and getLocalHost are unable to resolve the host name they throw an UnknownHostException.
________________________________________
7. What does RMI stand for?
It stands for Remote Method Invocation.
________________________________________
8. What is RMI?
RMI is a set of APIs that allows to build distributed applications. RMI uses interfaces to define remote objects to turn local method invocations into remote method invocations.
________________________________________
XML
1. More XML questions
XML FAQS
________________________________________
1. What Is XML?
XML stands for Extensible Markup Language. It is a text-based meta-markup language defined by the World Wide Web Consortium. It has become the standard for data interchange on the Web.
2. Why do we need to learn XML?
Because XML is a meta-markup language, it lets you create your own markup language.
It is easy for data exchange, customization, self-describing, structured and integrated.
3. What does XML look like?
4.
5.
6.
7. Hello guys!
8.
9.
10. What is the difference between HTML and XML?
HTML and XML both are based on Standard Generalized Markup Language(SGML), but
o HTML uses predefined tags, whereas XML uses user-defined tags which can be used to identify data relationships like hierarchical structure(elements, subelements, subsubelements,and so on.)
o HTML specifies its representation, whereas XML identifies the content for the data.
o Unlike HTML, XML tags are well-formed. XML data is searchable, format-free and reusable.
11. What is XML attribute?
Attribute is an additional information attached to a tag. For example
subject="Discuss XML issues">
here we go
The "to", "from" and "subject" are attributes of "message" tag.
12. How to deal with double quotes in attribute assignment?
Use a single quote to enclose a double quotes, for example,
13. What is an empty tag?
Empty tag is a tag with ending "/>" and used to mark something in your well-formed tags. It doesn't contain any content, so it is called "empty tag". It has two forms:
Note: not
or
or
14. What comments should be used in XML?
Comments are ignored by XML parsers. A program will never see them in fact, unless you activate special settings in the parser. XML comments are very much like HTML comments.
It is worth noting that Comments must not come before an XML declaration or inside markups. You cannot use "--" between your comments. You can use comments to hide or remove parts of documents as long as the enclosed parts do not themselves contain any comments.
15. How to deal with special characters in XML like < or &, etc.?
Like HTML, you should use entity reference to replace them, even if in embeded JavaScript code.
16. What is XML Prolog?
Prologs come at the very beginning of XML documents. Like HTML's tag , XML prolog is a declaration that is used to indicate the start of XML file like the following:
or
or
It contains some or all of three attributes:
o version -- not optional
o encoding -- default UTF-8
o standalone -- "yes" or "no"
It is a good practice to include XML prolog whenever you create an XML file, though it is optional.
Return to top
________________________________________
17. What is Unicode?
Unicode uses 2 bytes to represent characters, extending from 0 to 65,535. ASCII(American Standard Code for Information Interchange) code uses 1 byte to represent characters, extending from 0 to 255. The Unicodes 0 to 255 correspond to the ASCII 0 to 255 codes. Therefore, Unicode can include many of the symbols commonly used in worldwide character and ideograph sets.
UTF-8 means using a compressed version of Unicode that uses 8 bits to represent characters. UTF-16 is a special encoding that represent UCS(Universal Character System) symbols using 2 bytes to represent characters.
18. How to write XML processing instructions?
The XML processing instructions give commands or information to an application that is processing the XML data; it is application specific. It has the following format:
where is the end of procession instruction, the "target" is the name of the application that is expected to do the processing, and "instructions" is a string of characters that embodies the information or commands for the application to process. Note: there cannot be any space between the initial
An XML file may have multiple processing instructions to tell different applications to do similar things.
19. How XML treats with whitespace?
The spaces, carriage returns, line feeds and tabs are all treated as whitespace in XML. XML document uses the UNIX convention for line endings, which means that lines are ended with a linefeed character only -- ASCII code 10(DOS file uses a pair of ASCII codes 13 and 10). When parsed, that is treated simply as a single linefeed.
If you want to preserve whitespace, use a special attribute xml:space or set attribute to default to indicate it in a element declaration.
20. Is XML tag case-sensitive?
Yes. XML tags are case-sensitive. The start and end tags should be matched exactly.
21. Why do people say that XML is portable?
There are several reasons. First, it is written in a text format, which is readable by both human beings and text-editing software. Second, applications can parse and process XML documents, and human beings can also read them in case there is an error in processing. Third, XML document does not include formatting instructions, it can be displayed in various ways. Keeping data separate from formatting instructions means that the same data can be published to different media.
22. How to let browser display XML file?
There are two ways to do so:
o Use a style sheet to indicate to a browser how you want the content of the elements to be displayed, like Cascading Style Sheet(CSS) or Extensible Style Sheet Language(XSL).
o use a programming language to handle the XML document in programming code,like Java or JavaScript.
23. Which is better to store data using elements or using attributes?
There is no clear-cut to say which is better. It depends on the case. But it is worth noting that too many attributes make documents hard to read and attribute names must be unique. If more than 4 attributes in a tag are used, think about breaking up the tag into a number of enclosed tags.
Return to top
________________________________________
24. How to use JavaScript to display XML document?
To illustrate it, we use a simple XML document hello.xml as follows:
Hello guys!
In an HTML file called getxml.html:
Here comes:
Here is the display in your browser. Click the button to see what happens? Press the "F5" button on your keyboard to refresh the display.
________________________________________
Get data from XML document
Here comes:
________________________________________
25. What is DTD tag?
A DTD tag is a tag used in DTD definition file. It starts with . It tells parser how to handle xml file.
26. What is CDATA?
A CDATA is a section mark which works like
27. What is the basic syntax for the document type declaration?
The basic syntax:
where the is part of a document's prolog; the root-name is the name of root tag; the DTD is a document type definition. It can be internal or external.
The document type declaration may have the following forms:
28. How the internal DTD looks like?
29.
30. 31.
32.
33. ]>
34.
35.
36. ....
37.
38. What is the syntax of element declaration?
39.
where name is the name of the element; CONTENT_MODEL can be set to EMPTY or ANY, or it can hold mixed content or child elements.
40. What is the meaning of the following statement?
41.
This is a DTD tag definition. The notation says that a slideshow element consists of one or more slide elements. If there is no plus sign after slide, it says that a slideshow has only one slide element. If the plus sign is replaced with question mark "?", it says there may be zero or one slide. If the plus sign is replaced with asterisk "*", it say that there may be zero or more slide elements.
42. What syntax should be used to describe a more children elements?
For example, if a and b represent child elements:
o a+ -- one or more occurences of a
o a* -- zero or more occurences of a
o a? -- a or nothing
o a, b -- a followed by b
o a | b -- a or b, but not both
o (expression) -- a unit may have more of above expressions
43. What the following tells us in a dtd file?
44. 1.
45. 2.
46. 3.
47. 4.
48. 5.
The first line says that a slideshow element contains one or more slide elements. The second line says that a slide element consists of a title followed by zero or more item elements. The third line says that a title element consists entirely of parsed character data(PCDATA). The "#" sign that precedes PCDATA indicates that what follows is a special word. The fourth line says the item element is either PCDATA or an item. The asterisk at the end says that either one can occur zero or more times in succession. The fifth line says that content is a parameter entity reference.
49. What is mixed-content model?
The content of a tag in the xml file can be #PCDATA or any number of item elements like the fourth line above.
50. Is DTD definition hierarchical?
No. The DTD definition is not hierarchical. But you can work around to make your xml tags hierarchical. For example, if you have a title for slideshow and a title for each slide, you can use slide-title to represent the title in slide and make a definition for slide-title. It is so called "hyphenation hierarchy. Otherwise, the title definition will work for every title in xml file.
51. What is special element value and how to use it?
There are two special values: ANY or EMPTY. The "ANY" notation says that the element may contain any other defined element, or PCDATA. The "EMPTY" notation says that the element contains no contents. For example an empty tag contains no contents.
52. How to reference a DTD file?
If the DTD definition is in a separate file from the XML document, you have to write something to reference it from the XML document. For example, if your slideshow.dtd is ready for use, then, in your xml document file, after the xml declaration, write:
The above statement says that the element slideshow tag will use definition in slideshow.dtd. The SYSTEM identifier specifies the location of the DTD file and the path is relative to the location of the xml document. You may use http:// or file:/ to indicate the path of the DTD file.
Or you can reference a definition within the XML document by using a square brackets like the following, rather than referring to an external DTD file.
...local subset definitions here...
]>
53. How to declare a public DTD?
Replace SYSTEM to PUBLIC and give url to that dtd.
"http://www.somewhere.com/someones/slideshow1.dtd" >
54. What is the meaning of ATTLIST? What do the following statements tell us?
ATTLIST means attribute list. The name that follows ATTLIST specifies the element for which the attributes are being defined. For example, you have a slideshow tag with title, date and author attributes, you may code as:
title CDATA #REQUIRED
date CDATA #IMPLIED
author CDATA "unknown"
>
The DTD tag ATTLIST begins the series of attribute definitions. The slideshow element has three attributes. The title, date and author are the names of attributes of slideshow. CDATA is a type of the attribute; it means unparsed charater data or a text string.
The #REQUIRED means the attribute value must be specified in the document. The #IMPLIED means the value need not be specified in the document.
55. What does the & sign mean in dtd file?
The & sign means an entity variable name. Note it should be ended with semicolon ";" sign. For example:
...
]>
...
©right; ...
Wherever the ©right; is parsed, it will be replaced with entity copyright sign ©.
56. How to declare a parameter entity reference?
Use to declare it and use an & as start and ; as end to enclose the parameter entity reference. For example, TODAY is a parameter entity reference.
]>
HELLO FROM HTML
WELCOME TO THE WILD WORLD
&TODAY;
Save above file as greeting.xml, use your browser to look at it. You may get a similar display, except that the tag will display "NOV 1, 2003".
Note: It is possible that your browser may not support XML. If you use MS IE 5.5 above, or NS 5.0 above, you may be able to see it.
57. How to declare an image tag in a DTD file?
You can declare an image tag in the following form:
1.
2. alt CDATA #IMPLIED
src CDATA #REQUIRED
type CDATA "image/gif"
>
3.
4.
The line one declares image as an optional element. The line 2 declares attributes of an image tag. For the moment, you can not declare an image tag like type ("image/gif", "image/jpeg"). The line 3 declares a notation named GIF that stands for the image/gif MIME type. The line 4 creates an external unparsed entity named some to refer to the external image file, image.gif.
58. What is conditional section?
Conditional section is a way to let XML document to choose which dtd should be "included" or "ignored". Use as an end. For example, you want to use a different versions of a DTD for xml document or sgml document, you may code as follows:
... XML-only definitions
]]>
... SGML-only definitions
]]>
... common definitions
59. How many entities are catagorized in dtd?
o Internal entity: An entity that is referenced in its own document content.
o External entity: An entity that is referenced in another file.
o General entity: including internal or external entity
o Parameter entity: An entity that contains DTD specifications that are referenced from within the DTD.
o Parsed entity: An entity that contains XML(text and markup) and is therefore parsed.
o Unparsed entity: An entity that contains binary data(like images)
Return to top
________________________________________
60. What is xmlns?
The xmlns stands for XML NameSpace. It is an attribute for a tag. It is used in DTD to prevent conflicts. For example, the following tells us the title element will use designated DTD.
xmlns CDATA #FIXED "http://www.example.com/slideshow">
...
or
Overview
or
...>
...
or
...>
...
Overview
...
or
xmlns:xhtml='urn:...'>
...
Here we use "http:", you may use "urn:" instead.
61. What is xsi?
The "xsi" stands for XML Schema Instance like:
xsi:noNamespaceSchemaLocation='YourSchemaDefinition.xsd'
The line specifies the schema to use for elements in the document that do not have a namespace prefix.
62. Where to use XML?
XML can be used in many places:
o Data representation in Web, especially for Java client/server web.
o Data interchange in all sorts of transactions as long as both sides agree on.
o Document-Driven Programming(DDP)
o Binding
o Archiving
63. What is JAXP?
JAXP stands for Java APIs for XML, which let you write your Web application entirely in the Java programming language. There are two broad categories:
o Document-oriented -- processes XML documents using various parsers.
o Procedure-oriented -- including JAX-RPC, JAXM, and JAXR.
64. What is RELAX NG?
RELAX NG stands for Regular Language description for XML. It is simpler than XML structure schema and an emerging standard under the auspices of OASIS. NG stands for Next Generation. For more information on RELAX NG, see www.oasis-open.org/committees/relax-ng/
65. What is XML schema
XML Schema is a large, complex standard that has two parts. One part specifies structure relationships. (This is the largest and most complex part.) The other part specifies mechanisms for validating the content of XML elements by specifying a (potentially very sophisticated) datatype for each element. For more information on XML schema, visit www.w3c.org/XML/Schema
66. What is JAXM?
JAXM stands for Java APIs for XML Messaging. It provides a standard way to send XML documents over the internet form the Java platform. It is based on the SOAP 1.1 and SOAP with Attaqchements specifications which define a basic framework for exchanging XML messages. It can make one-way (asynchronous) messaging, rout of a message to more than one party and guarantee the delivery, whereas the JAX-RPC cannot.
67. How to get a Point-to-Point connection via JAXM?
All JAXM connections are created by using connection factory methods.
SOAPConnectionFactory factory = SOAPConnectionFactory.newInstance();
SOAPConnection con = factory.createConnection();
68. How to get a connection to the Messaging Provider via JAXM?
There are two ways to obtain this connection.
ProviderConnectionFactory pcFactory = ProviderConnectionFactory.newInstance();
ProviderConnection pcCon = pcFactory.createConnection();
or
Context ctx = getInitialContext();
ProviderConnectionFactory pcFactory = (ProviderConnectionFactory)ctx.lookup("SomeMsgProvider");
ProviderConnection con = pcFactory.createConnection();
69. How XML is related with other technologies?
There are many XML related technologies directly or non-directly:
o SAX -- Simple API for XML: reads and writes XML data in a server.
o DOM -- Document Object Model: converts an XML document into a collection of objects.
o JDOM -- Java DOM: processes more data-oriented structures.
o dom4j -- DOM for Java: a factory-based implementation, easier to modify for complex, special-purpose apps.
o DTD -- Document Type Definition: specifies the kinds of tags that can be included in XML document.
o Namespace -- writes an XML document that uses two or more sets of XML tags in modular fashion.
o XSL -- Extensible Stylesheet Language: specifies how to identify data, not how to display it.
o XSLT -- Extensible Stylesheet Language for Transformations: specifies what to convert an XML tag into.
o XSL-FO -- Extensible Stylesheet Language for Formatting Objects: specifies how to link multiple areas on a page.
o SAAJ -- SOAP with Attachments API for Java.
o JAXR -- Java API for XML Registries, used to look and find web services.
o TREX -- Tree Regular Expressions for XML, part of RELAX NG
o SOX -- Schema for Object-Oriented XML
o Schematron -- Schema for Object-Oriented XML, an assetion based schema by www.ascc.net.
o ebXML -- Electronic Business with XML developed by UN/CEFACT and OASIS
o cxml -- Commerce XML, more info at www.rosettanet.org
o etc.
70. What is the difference between SAX and DOM?
The Simple API for XML(SAX) and the Document Object Model(DOM) are both defined by the W3C. Unlike a SAX parser, a DOM parser allows random access to particular pieces of data in an XML document. Another difference is that with a SAX parser, you can only read an XML document, but with a DOM parser, you can build an object representation of the document and manipulate it in memory, adding a new element or deleting an existing one.
71. How to transform a DOM tree to an XML document?
Use the following code:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse("xxxList.xml");
Node rootNode = document.getDocumentElement();
NodeList list = document.getElementsByTagName("xxxx");
//add node
Text tnNode = document.createTextNode("yyyy");
newNameNode.appendChild(tnNode);
....
TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer transformer = transFactory.newTransformer();
DOMSource source = new DOMSource(document);
File newXML = new File("newXML.xml");
FileOutputStream os = new FileOutputStream(newXML);
StreamResult result = new StreamResult(os);
transformer.transform(source, result);
72. How to transform an XML document to an HTML document?
To perform the transformation, you need to obtain an XSLT transformer and use it to apply the style sheet to the XML data. The following code fragment obtains a transformer by instantiating a TransformerFactory object, reading in the style sheet and XML files, creating a file for the HTML output, and then finally obtaining the Transformer object transformer from the TransformerFactory object tFactory.
TransformerFactory tFactory = TransformerFactory.newInstance();
String stylesheet = "xxx.xsl";
String sourceId = "newXML.xml";
File yyyHTML = new File("yyyHTML.html");
FileOutputStream os = new FileOutputStream(yyyHTML);
Transformer transformer = tFactory.newTransformer(new StreamSource(stylesheet));
transformer.transform(new StreamSource(sourceId), new StreamResult(os));
73. What are major subcomponents of XSL?
The XML Stylesheet Language (XSL) has three major subcomponents:
1. XSL-FO -- The largest subcomponent. It describes font sizes, page layouts, and how information "flows" from one page to another.
2. XSLT -- A transformation language that lets you define a transformation from XML into some other format. Like producing HTML, a different XML structure, a plain text or other document format.
3. XPath -- A specification that lets you specify a path to an element.
74. What is transformation language in XSL?
Extensible Styles Language(XSL) has two parts:
a transformation language(XSLT) and a formatting language.
The transformation language lets you transform documents into different forms, while the formatting language actually formats and styles documents in various ways.
75. What is JAX-RPC?
JAX-RPC stands for Java API for XML-based RPC(Remote Procedure Call). It is an API for building Web services and clients that use RPC and XML.
In JAX-RPC, a remote procedure call is represented by an XML-based protocol such as SOAP. The SOAP specification defines the envelope structure, encoding rules, and convention for representing remote procedure calls and responses. These calls and responses are transmitted as SOAP messages (XML files) over HTTP.
With JAX-RPC, the developer does not generate or parse SOAP messages. It is the JAX-RPC runtime system that converts the API calls and responses to and from SOAP messages.
76. What is value type?
A value type is a class whose state may be passed between a client and remote service as a method parameter or return value. For example, an account class may have account number, account owner and amount field. These information may be passed between client and server as a method deposit parameter and a return value of method account query.
77. What kind of rules do the value type must follow?
To be supported by JAX-RPC, a value type must conform to the following rules:
o It must have a public default constructor.
o It must not implement (either directly or indirectly) the java.rmi.Remote interface.
o Its fields must be supported JAX-RPC types.
o The value type may contain public, private, or protected fields. The field of a value type must meet these requirements:
A public field cannot be final or transient.
A non-public field must have corresponding getter and setter methods.
Return to top
________________________________________
78. What is SAAJ?
SAAJ stands for SOAP(Simple Object Access Protocal) with Attachments API for Java. SAAJ is used mainly for the SOAP messaging that goes on behind the scenes in JAX-RPC and JAXR implementations.
Secondarily, it is an API that developers can use when they choose to write SOAP messaging applications directly rather than using JAX-RPC.
79. What is XML Registry?
An XML registry is an infrastructure that enables the building, deployment, and discovery of Web services. It is a neutral third party that facilitates dynamic and loosely coupled business-to-business (B2B) interactions. A registry is available to organizations as a shared resource, often in the form of a Web-based service.
There are many kinds of specifications for XML registries, including ebXML Registry and Repository and The Universal Description, Discovery, and Integration (UDDI).
80. What is JAXR?
JAXR stands for Java API for XML Registries. It enables Java software programmers to use an API to access a variety of XML registries. The current version of the JAXR specification can be found at http://java.sun.com/xml/downloads/jaxr.html
81. What is XHTML?
XHTML is an application of XML that tries to make XML documents look and act like HTML documents. The XHTML specification is a reformulation of HTML 4.0 into XML. The following is code of XHTML.
1.
2. 3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4.
5.Welcome to see xhtml
6.
7.
8.
9.
The following is the display on your browser.
________________________________________
Here we display data from XML
Name:
Customer ID:
Department:
Purchase Date: 11/10/2003
Product: XML Book
<<<>>>
If the above example is not functional well in your browser, please check this independent html file to see the features.
________________________________________
82. How to display data from XML file in a tabular format?
83. Let's use the customer.xml above as a source file and use table tags to
84. display it.
85.
86.Here we display data from XML
87.
88.
89.
90.
91.
92.
93.
123.
124.
125.
126.
127.
128. The following is the display of the above html file. If you cannot see the
129. correct result from this page, it is probably that your browser may not accept
130. that, please copy the above code, save it to a separate file and see the
result.
________________________________________
Here we display data from XML
Name Customer ID Purchase Department Product
Aaron 12345 11/10/2003 Education XML Book
Betty 23456 10/12/2003 Travel Trip to Haiwaii
Cathy 34567 10/13/2003 Toys Game II Machine
Dan 45678 10/14/2003 IT DownloadWizard software
If you cannot see the data in this display on your browser, please click this independent html file
________________________________________
131. How to use XML DSO applet to connect XML file?
132. Use above customer.xml file as an example. Use applet tag to make a
133. connection as follows:
134. replace xml tags
135.
136.
137. with
138.
139. 140. code="com.ms.xml.dso.XMLDSO.class"
141. id="customers"
142. width="0" height="0"
143. mayscript="true">
144.
145.
Make sure the com.ms.xml.dso.XMLDSO.class is available for loading.
Return to top
________________________________________
JDBC
1. More JDBC questions
Return to top
Link shows these questions
JDBC Questions
________________________________________
1. What is JDBC?
JDBC may stand for Java Database Connectivity. It is also a trade mark. JDBC is a layer of abstraction that allows users to choose between databases. It allows you to change to a different database engine and to write to a single API. JDBC allows you to write database applications in Java without having to concern yourself with the underlying details of a particular database.
________________________________________
2. What are the two major components of JDBC?
One implementation interface for database manufacturers, the other implementation interface for application and applet writers.
________________________________________
3. What is JDBC Driver interface?
The JDBC Driver interface provides vendor-specific implementations of the abstract classes provided by the JDBC API. Each vendors driver must provide implementations of the java.sql.Connection,Statement,PreparedStatement, CallableStatement, ResultSet and Driver.
________________________________________
4. What are the common tasks of JDBC?
o Create an instance of a JDBC driver or load JDBC drivers through jdbc.drivers
o Register a driver
o Specify a database
o Open a database connection
o Submit a query
o Receive results
________________________________________
5. How to use JDBC to connect Microsoft Access?
Please see this page for detailed information.
________________________________________
6. What are four types of JDBC driver?
1. Type 1 Drivers
Bridge drivers such as the jdbc-odbc bridge. They rely on an intermediary such as ODBC to transfer the SQL calls to the database and also often rely on native code.
2. Type 2 Drivers
Use the existing database API to communicate with the database on the client. Faster than Type 1, but need native code and require additional permissions to work in an applet. Good for client-side connection.
3. Type 3 Drivers
Call the database API on the server.Flexible. Pure Java and no native code.
4. Type 4 Drivers
The hightest level of driver reimplements the database network API in Java. No native code.
7. ________________________________________
8. What packages are used by JDBC?
There are at least 8 packages:
0. java.sql.Driver
1. Connection
2. Statement
3. PreparedStatement
4. CallableStatement
5. ResultSet
6. ResultSetMetaData
7. DatabaseMetaData
________________________________________
9. There are three basic types of SQL statements, what are they?
0. Statement
1. callableStatement
2. PreparedStatement
________________________________________
10. What are the flow statements of JDBC?
A URL string -->getConnection-->DriverManager-->Driver-->Connection-->Statement-->executeQuery-->ResultSet.
________________________________________
11. What are the steps involved in establishing a connection?
This involves two steps: (1) loading the driver and (2) making the connection.
________________________________________
12. How can you load the drivers?
Loading the driver or drivers you want to use is very simple and involves just one line of code. If, for example, you want to use the JDBC-ODBC Bridge driver, the following code will load it:
Eg.
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Your driver documentation will give you the class name to use. For instance, if the class name is jdbc.DriverXYZ , you would load the driver with the following line of code:
E.g.
Class.forName("jdbc.DriverXYZ");
________________________________________
13. What Class.forName will do while loading drivers?
It is used to create an instance of a driver and register it with the DriverManager. When you have loaded a driver, it is available for making a connection with a DBMS.
________________________________________
14. How can you make the connection?
In establishing a connection is to have the appropriate driver connect to the DBMS. The following line of code illustrates the general idea:
E.g.
String url = "jdbc:odbc:Fred";
Connection con = DriverManager.getConnection(url, "Fernanda", "J8");
________________________________________
15. How can you create JDBC statements?
A Statement object is what sends your SQL statement to the DBMS. You simply create a Statement object and then execute it, supplying the appropriate execute method with the SQL statement you want to send. For a SELECT statement, the method to use is executeQuery. For statements that create or modify tables, the method to use is executeUpdate. E.g. It takes an instance of an active connection to create a Statement object. In the following example, we use our Connection object con to create the Statement object stmt :
Statement stmt = con.createStatement();
________________________________________
16. How to make a query?
Create a Statement object and calls the Statement.executeQuery method to select data from the database. The results of the query are returned in a ResultSet object.
Statement stmt = con.createStatement();
ResultSet results = stmt.executeQuery("SELECT data FROM aDatabase ");
________________________________________
17. How can you retrieve data from the ResultSet?
Use get methods to retrieve data from returned ResultSet object.
ResultSet rs = stmt.executeQuery("SELECT COF_NAME, PRICE FROM COFFEES");
String s = rs.getString("COF_NAME");
The method getString is invoked on the ResultSet object rs , so getString will retrieve (get) the value stored in the column COF_NAME in the current row of rs
________________________________________
18. How to navigate the ResultSet?
By default the result set cursor points to the row before the first row of the result set. A call to next() retrieves the first result set row. The cursor can also be moved by calling one of the following ResultSet methods:
o beforeFirst(): Default position. Puts cursor before the first row of the result set.
o first(): Puts cursor on the first row of the result set.
o last(): Puts cursor before the last row of the result set.
o afterLast() Puts cursor beyond last row of the result set. Calls to previous moves backwards through the ResultSet.
o absolute(pos): Puts cursor at the row number position where absolute(1) is the first row and absolute(-1) is the last row.
o relative(pos): Puts cursor at a row relative to its current position where relative(1) moves row cursor one row forward.
________________________________________
19. What are the different types of Statements?
0. Statement (use createStatement method)
1. Prepared Statement (Use prepareStatement method)
2. Callable Statement (Use prepareCall)
________________________________________
20. If you want to use the percent sign (%) as the percent sign and not have it interpreted as the SQL wildcard used in SQL LIKE queries, how to do that?
Use escape keyword. For example:
stmt.executeQuery("select tax from sales where tax like '10\%' {escape '\'}");
________________________________________
21. How to escape ' symbol found in the input line?
You may use a method to do so:
static public String escapeLine(String s) {
String retvalue = s;
if (s.indexOf ("'") != -1 ) {
StringBuffer hold = new StringBuffer();
char c;
for(int i=0; i < s.length(); i++ ) {
if ((c=s.charAt(i)) == '\'' ) {
hold.append ("''");
}else {
hold.append(c);
}
}
retvalue = hold.toString();
}
return retvalue;
}
Note that such method can be extended to escape any other characters that the database driver may interprete another way.
________________________________________
22. How to make an update?
Creates a Statement object and calls the Statement.executeUpdate method.
String updateString = "INSERT INTO aDatabase VALUES (some text)";
int count = stmt.executeUpdate(updateString);
________________________________________
23. How to update a ResultSet?
You can update a value in a result set by calling the ResultSet.update method on the row where the cursor is positioned. The type value here is the same used when retrieving a value from the result set, for example, updateString updates a String value and updateDouble updates a double value in the result set.
rs.first();
updateDouble("balance", rs.getDouble("balance") - 5.00);
The update applies only to the result set until the call to rs.updateRow(), which updates the underlying database.
To delete the current row, use rs.deleteRow().
To insert a new row, use rs.moveToInsertRow().
________________________________________
24. How can you use PreparedStatement?
This special type of statement is derived from the more general class, Statement. If you want to execute a Statement object many times, it will normally reduce execution time to use a PreparedStatement object instead. The advantage to this is that in most cases, this SQL statement will be sent to the DBMS right away, where it will be compiled. As a result, the PreparedStatement object contains not just an SQL statement, but an SQL statement that has been precompiled. This means that when the PreparedStatement is executed, the DBMS can just run the PreparedStatement 's SQL statement without having to compile it first.
PreparedStatement updateSales = con.prepareStatement("UPDATE COFFEES SET SALES = ? WHERE COF_NAME LIKE ?");
________________________________________
25. How to call a Stored Procedure from JDBC?
The first step is to create a CallableStatement object. As with Statement an and PreparedStatement objects, this is done with an open Connection object. A CallableStatement object contains a call to a stored procedure;
E.g.
CallableStatement cs = con.prepareCall("{call SHOW_SUPPLIERS}");
ResultSet rs = cs.executeQuery();
________________________________________
26. How to Retrieve Warnings?
SQLWarning objects are a subclass of SQLException that deal with database access warnings. Warnings do not stop the execution of an application, as exceptions do; they simply alert the user that something did not happen as planned. A warning can be reported on a Connection object, a Statement object (including PreparedStatement and CallableStatement objects), or a ResultSet object. Each of these classes has a getWarnings method, which you must invoke in order to see the first warning reported on the calling object
SQLWarning warning = stmt.getWarnings();
if (warning != null) {
while (warning != null) {
System.out.println("Message: " + warning.getMessage());
System.out.println("SQLState: " + warning.getSQLState());
System.out.print("Vendor error code: ");
System.out.println(warning.getErrorCode());
warning = warning.getNextWarning();
}
}
________________________________________
27. How to Make Updates to Update ResultSets?
Another new feature in the JDBC 2.0 API is the ability to update rows in a result set using methods in the Java programming language rather than having to send an SQL command. But before you can take advantage of this capability, you need to create a ResultSet object that is updatable. In order to do this, you supply the ResultSet constant CONCUR_UPDATABLE to the createStatement method.
Connection con = DriverManager.getConnection("jdbc:mySubprotocol:mySubName");
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
ResultSet uprs = ("SELECT COF_NAME, PRICE FROM COFFEES");
________________________________________
28. How to set a scroll type?
Both Statements and PreparedStatements have an additional constructor that accepts a scroll type and an update type parameter. The scroll type value can be one of the following values:
o ResultSet.TYPE_FORWARD_ONLY Default behavior in JDBC 1.0, application can only call next() on the result set.
o ResultSet.SCROLL_SENSITIVE ResultSet is fully navigable and updates are reflected in the result set as they occur.
o ResultSet.SCROLL_INSENSITIVE Result set is fully navigable, but updates are only visible after the result set is closed. You need to create a new result set to see the results.
________________________________________
29. How to set update type parameter?
In the constructors of Statements and PreparedStatements, you may use
o ResultSet.CONCUR_READ_ONLY The result set is read only.
o ResultSet.CONCUR_UPDATABLE The result set can be updated.
You may verify that your database supports these types by calling con.getMetaData().supportsResultSetConcurrency(ResultSet.SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
________________________________________
30. How to do a batch job?
By default, every JDBC statement is sent to the database individually. To send multiple statements at one time , use addBatch() method to append statements to the original statement and call executeBatch() method to submit entire statement.
Statement stmt = con.createStatement();
stmt.addBatch("update registration set balance=balance-5.00 where theuser="+theuser);
stmt.addBatch("insert into auctionitems(description, startprice) values("+description+","+startprice+")");
...
int[] results = stmt.executeBatch();
The return result of the addBatch() method is an array of row counts affected for each statement executed in the batch job. If a problem occurred, a java.sql.BatchUpdateException is thrown. An incomplete array of row counts can be obtained from BatchUpdateException by calling its getUpdateCounts() method.
31. How to store and retrieve an image?
To store an image, you may use the code:
int itemnumber=400456;
File file = new File(itemnumber+".jpg");
FileInputStream fis = new FileInputStream(file);
PreparedStatement pstmt = con.prepareStatement("update auctionitems set theimage=? where id= ?");
pstmt.setBinaryStream(1, fis, (int)file.length()):
pstmt.setInt(2, itemnumber);
pstmt.executeUpdate();
pstmt.close();
fis.close();
To retrieve an image:
int itemnumber=400456;
byte[] imageBytes;//hold an image bytes to pass to createImage().
PreparedStatement pstmt = con.prepareStatement("select theimage from auctionitems where id= ?");
pstmt.setInt(1, itemnumber);
ResultSet rs=pstmt.executeQuery();
if(rs.next()) {
imageBytes = rs.getBytes(1);
}
pstmt.close();
rs.close();
Image auctionimage = Toolkit.getDefaultToolkit().createImage(imageBytes);
________________________________________
32. How to store and retrive an object?
A class can be serialized to a binary database field in much the same way as the image. You may use the code above to store and retrive an object.
________________________________________
33. How to use meta data to check a column type?
Use getMetaData().getColumnType() method to check data type. For example to retrieve an Integer, you may check it first:
int count=0;
Connection con=getConnection();
Statement stmt= con.createStatement();
stmt.executeQuery("select counter from aTable");
ResultSet rs = stmt.getResultSet();
if(rs.next()) {
if(rs.getMetaData().getColumnType(1) == Types.INTEGER) {
Integer i=(Integer)rs.getObject(1);
count=i.intValue();
}
}
rs.close();
________________________________________
34. Why cannot java.util.Date match with java.sql.Date?
Because java.util.Date represents both date and time. SQL has three types to represent date and time.
o java.sql.Date -- (00/00/00)
o java.sql.Time -- (00:00:00)
o java.sql.Timestamp -- in nanoseconds
Note that they are subclasses of java.util.Date.
________________________________________
35. How to convert java.util.Date value to java.sql.Date?
Use the code below:
Calendar currenttime=Calendar.getInstance();
java.sql.Date startdate= new java.sql.Date((currenttime.getTime()).getTime());
or
SimpleDateFormat template = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date enddate = new java.util.Date("10/31/99");
java.sql.Date sqlDate = java.sql.Date.valueOf(template.format(enddate));
________________________________________
Note: Most of sample codes are cited from Sun's JDBC tutorials.
________________________________________
JSP
1. More JSP questions
2. What is a JSP and what is it used for?
Java Server Pages (JSP) is a platform independent presentation layer technology that comes with SUN’s J2EE platform. JSPs are normal HTML pages with Java code pieces embedded in them. JSP pages are saved to *.jsp files. A JSP compiler is used in the background to generate a Servlet from the JSP page.
3. What is difference between custom JSP tags and beans?
Custom JSP tag is a tag you defined. You define how a tag, its attributes and its body are interpreted, and then group your tags into collections called tag libraries that can be used in any number of JSP files. To use custom JSP tags, you need to define three separate components:
1. the tag handler class that defines the tag's behavior
2. the tag library descriptor file that maps the XML element names to the tag implementations
3. the JSP file that uses the tag library
When the first two components are done, you can use the tag by using taglib directive:
<%@ taglib uri="xxx.tld" prefix="..." %>
Then you are ready to use the tags you defined. Let's say the tag prefix is test:
MyJSPTag or
JavaBeans are Java utility classes you defined. Beans have a standard format for Java classes. You use tags
to declare a bean and use
to set value of the bean class and use
<%=identifier.getclassField() %>
to get value of the bean class.
Custom tags and beans accomplish the same goals -- encapsulating complex behavior into simple and accessible forms. There are several differences:
o Custom tags can manipulate JSP content; beans cannot.
o Complex operations can be reduced to a significantly simpler form with custom tags than with beans.
o Custom tags require quite a bit more work to set up than do beans.
o Custom tags usually define relatively self-contained behavior, whereas beans are often defined in one servlet and used in a different servlet or JSP page.
o Custom tags are available only in JSP 1.1 and later, but beans can be used in all JSP 1.x versions.
4. what are the two kinds of comments in JSP and whats the difference between them
<%-- JSP Comment --%>
JSP Questions
________________________________________
1. What is JSP technology?
Java Server Page is a standard Java extension that is defined on top of the servlet Extensions. The goal of JSP is the simplified creation and management of dynamic Web pages. JSPs are secure, platform-independent, and best of all, make use of Java as a server-side scripting language.
________________________________________
2. What is JSP page?
A JSP page is a text-based document that contains two types of text: static template data, which can be expressed in any text-based format such as HTML, SVG, WML, and XML, and JSP elements, which construct dynamic content.
________________________________________
3. What are the implicit objects?
Implicit objects are objects that are created by the web container and contain information related to a particular request, page, or application. They are:
o request
o response
o pageContext
o session
o application
o out
o config
o page
o exception
________________________________________
4. How many JSP scripting elements and what are they?
There are three scripting language elements:
1. declarations
2. scriptlets
3. expressions
________________________________________
5. Why are JSP pages the preferred API for creating a web-based client program?
Because no plug-ins or security policy files are needed on the client systems(applet does). Also, JSP pages enable cleaner and more module application design because they provide a way to separate applications programming from web page design. This means personnel involved in web page design do not need to understand Java programming language syntax to do their jobs.
________________________________________
6. Is JSP technology extensible?
YES. JSP technology is extensible through the development of custom actions, or tags, which are encapsulated in tag libraries.
________________________________________
7. What are the two kinds of comments in JSP and what's the difference between them?
<%-- JSP Comment --%>
________________________________________
8. In the Servlet 2.4 specification SingleThreadModel has been deprecates, why?
Because it is not practical to have such model. Whether you set isThreadSafe to true or false, you should take care of concurrent client requests to the JSP page by synchronizing access to any shared objects defined at the page level.
________________________________________
9. What is difference between custom JSP tags and beans?
Custom JSP tag is a tag you defined. You define how a tag, its attributes and its body are interpreted, and then group your tags into collections called tag libraries that can be used in any number of JSP files. To use custom JSP tags, you need to define three separate components:
0. the tag handler class that defines the tag's behavior
1. the tag library descriptor file that maps the XML element names to the tag implementations
2. the JSP file that uses the tag library
When the first two components are done, you can use the tag by using taglib directive:
<%@ taglib uri="xxx.tld" prefix="..." %>
Then you are ready to use the tags you defined. Let's say the tag prefix is test:
MyJSPTag or
JavaBeans are Java utility classes you defined. Beans have a standard format for Java classes. You use tags
to declare a bean and use
to set value of the bean class and use
<%=identifier.getclassField() %>
to get value of the bean class.
Custom tags and beans accomplish the same goals -- encapsulating complex behavior into simple and accessible forms. There are several differences:
o Custom tags can manipulate JSP content; beans cannot.
o Complex operations can be reduced to a significantly simpler form with custom tags than with beans.
o Custom tags require quite a bit more work to set up than do beans.
o Custom tags usually define relatively self-contained behavior, whereas beans are often defined in one servlet and used in a different servlet or JSP page.
o Custom tags are available only in JSP 1.1 and later, but beans can be used in all JSP 1.x versions.
Return to top
________________________________________
Servlet
1. More Servlet questions
2. What mechanisms are used by a Servlet Container to maintain session information?
Cookies, URL rewriting, and HTTPS protocol information are used to maintain session information
3. Difference between GET and POST
In GET, your entire form submission can be encapsulated in one URL, like a hyperlink. query length is limited to 260 characters, not secure, faster, quick and easy.
In POST, your name/value pairs inside the body of the HTTP request, which makes for a cleaner URL and imposes no size limitations on the form's output. It is used to send a chunk of data to the server to be processed, more versatile, most secure.
4. What is session?
The session is an object used by a servlet to track a user's interaction with a Web application across multiple HTTP requests.
5. What is servlet mapping?
The servlet mapping defines an association between a URL pattern and a servlet. The mapping is used to map requests to servlets.
6. What is servlet context ?
The servlet context is an object that contains a servlet's view of the Web application within which the servlet is running. Using the context, a servlet can log events, obtain URL references to resources, and set and store attributes that other servlets in the context can use. (answer supplied by Sun's tutorial).
7. Which interface must be implemented by all servlets?
Servlet interface.
Servlet Questions
________________________________________
1. What is the servlet?
Servlets are modules that extend request/response-oriented servers, such as Java-enabled web servers. For example, a servlet may be responsible for taking data in an HTML order-entry form and applying the business logic used to update a company's order database.
2. What's the difference between servlets and applets?
Servlets are to servers; applets are to browsers. Unlike applets, however, servlets have no graphical user interface.
3. What's the advantages using servlets than using CGI?
Servlets provide a way to generate dynamic documents that is both easier to write and faster to run. It is efficient, convenient, powerful, portable, secure and inexpensive. Servlets also address the problem of doing server-side programming with platform-specific APIs: they are developed with Java Servlet API, a standard Java extension.
4. What are the uses of Servlets?
A servlet can handle multiple requests concurrently, and can synchronize requests. This allows servlets to support systems such as on-line conferencing. Servlets can forward requests to other servers and servlets. Thus servlets can be used to balance load among several servers that mirror the same content, and to partition a single logical service over several servers, according to task type or organizational boundaries.
5. What's the Servlet Interface?
The central abstraction in the Servlet API is the Servlet interface. All servlets implement this interface, either directly or, more commonly, by extending a class that implements it such as HttpServlet.
Servlets-->Generic Servlet-->HttpServlet-->MyServlet.
The Servlet interface declares, but does not implement, methods that manage the servlet and its communications with clients. Servlet writers provide some or all of these methods when developing a servlet.
6. When a servlet accepts a call from a client, it receives two objects. What are they?
ServeltRequest: which encapsulates the communication from the client to the server.
ServletResponse: which encapsulates the communication from the servlet back to the client.
ServletRequest and ServletResponse are interfaces defined by the javax.servlet package.
7. What information that the ServletRequest interface allows the servlet access to?
Information such as the names of the parameters passed in by the client, the protocol (scheme) being used by the client, and the names of the remote host that made the request and the server that received it. The input stream, ServletInputStream.Servlets use the input stream to get data from clients that use application protocols such as the HTTP POST and PUT methods.
8. What information that the ServletResponse interface gives the servlet methods for replying to the client?
It Allows the servlet to set the content length and MIME type of the reply. Provides an output stream, ServletOutputStream and a Writer through which the servlet can send the reply data.
9. If you want a servlet to take the same action for both GET and POST request, what should you do?
Simply have doGet call doPost, or vice versa.
10. What is the servlet life cycle?
Each servlet has the same life cycle:
A server loads and initializes the servlet (init())
The servlet handles zero or more client requests (service())
The server removes the servlet (destroy()) (some servers do this step only when they shut down)
11. Which code line must be set before any of the lines that use the PrintWriter?
setContentType() method must be set before transmitting the actual document.
12. How HTTP Servlet handles client requests?
An HTTP Servlet handles client requests through its service method. The service method supports standard HTTP client requests by dispatching each request to a method designed to handle that request.
13. When using servlets to build the HTML, you build a DOCTYPE line, why do you do that?
I know all major browsers ignore it even though the HTML 3.2 and 4.0 specifications require it. But building a DOCTYPE line tells HTML validators which version of HTML you are using so they know which specification to check your document against. These validators are valuable debugging services, helping you catch HTML syntax errors.
http://validator.w3.org and
http://www.htmlhelp.com/tools/validator/
are two major online validators.
Return to top
________________________________________
Struts
1. More Struts questions
2. What is Struts?
Struts is a web page development framework and an open source software that helps developers build web applications quickly and easily. Struts combines Java Servlets, Java Server Pages, custom tags, and message resources into a unified framework. It is a cooperative, synergistic platform, suitable for development teams, independent developers, and everyone between.
Struts Questions
________________________________________
1. What is Struts?
Struts is a web page development framework and an open source software that helps developers build web applications quickly and easily. Struts combines Java Servlets, Java Server Pages, custom tags, and message resources into a unified framework. It is a cooperative, synergistic platform, suitable for development teams, independent developers, and everyone between.
2. Who makes the Struts?
Struts is hosted by the Apache Software Foundation(ASF) as part of its Jakarta project, like Tomcat, Ant and Velocity.
3. Why it called Struts?
Because the designers want to remind us of the invisible underpinnings that hold up our houses, buildings, bridges, and ourselves when we are on stilts. This excellent description of Struts reflect the role the Struts plays in developing web applications.
4. Do we need to pay the Struts if being used in commercial purpose?
No. Struts is available for commercial use at no charge under the Apache Software License. You can also integrate the Struts components into your own framework just as if they were writtern in house without any red tape, fees, or other hassles.
5. What are the core classes of Struts?
Action, ActionForm, ActionServlet, ActionMapping, ActionForward are basic classes of Structs.
6. What is the design role played by Struts?
The role played by Structs is controller in Model/View/Controller(MVC) style. The View is played by JSP and Model is played by JDBC or generic data source classes. The Struts controller is a set of programmable components that allow developers to define exactly how the application interacts with the user.
7. How Struts control data flow?
Struts implements the MVC/Layers pattern through the use of ActionForwards and ActionMappings to keep control-flow decisions out of presentation layer.
8. What configuration files are used in Struts?
1. ApplicationResourcesl.properties
2. struts-config.xml
These two files are used to bridge the gap between the Controller and the Model.
9. What helpers in the form of JSP pages are provided in Struts framework?
o struts-html.tld
o struts-bean.tld
o struts-logic.tld
10. Is Struts efficient?
o The Struts is not only thread-safe but thread-dependent(instantiates each Action once and allows other requests to be threaded through the original object.
o ActionForm beans minimize subclass code and shorten subclass hierarchies
o The Struts tag libraries provide general-purpose functionality
o The Struts components are reusable by the application
o The Struts localization strategies reduce the need for redundant JSPs
o The Struts is designed with an open architecture--subclass available
o The Struts is lightweight (5 core packages, 5 tag libraries)
o The Struts is open source and well documented (code to be examined easily)
o The Struts is model neutral
________________________________________
Return to top
________________________________________
EJB
1. More EJB questions
2. What is session Facade
Session Facade is a design pattern to access the Entity bean through local interface than acessing directly. It increases the performance over the network. In this case we call session bean which on turn call entity bean
3. what is the difference between session and entity bean?
Session beans are business data and have not any persistance. Entity beans are Data Objects and have more persistance.
EJB Questions
________________________________________
1. What is EJB?
EJB stands for Enterprise JavaBean and is the widely-adopted server side component architecture for J2EE. it enables rapid development of mission-critical application that are versatile, reusable and portable across middleware while protecting IT investment and preventing vendor lock-in.
2. What is EJB role in J2EE?
EJB technology is the core of J2EE. It enables developers to write reusable and portable server-side business logic for the J2EE platform.
3. What is the difference between EJB and Java beans?
EJB is a specification for J2EE server, not a product; Java beans may be a graphical component in IDE.
4. What are the key features of the EJB technology?
1. EJB components are server-side components written entirely in the Java programming language
2. EJB components contain business logic only - no system-level programming & services, such as transactions, security, life-cycle, threading, persistence, etc. are automatically managed for the EJB component by the EJB server.
3. EJB architecture is inherently transactional, distributed, portable multi-tier, scalable and secure.
4. EJB components are fully portable across any EJB server and any OS.
5. EJB architecture is wire-protocol neutral--any protocol can be utilized like IIOP,JRMP, HTTP, DCOM,etc.
5. What are the key benefits of the EJB technology?
o Rapid application development
o Broad industry adoption
o Application portability
o Protection of IT investment
6. How many enterprice beans?
There are three kinds of enterprise beans:
o session beans,
o entity beans, and
o message-driven beans.
7. What is message-driven bean?
A message-driven bean combines features of a session bean and a Java Message Service (JMS) message listener, allowing a business component to receive JMS. A message-driven bean enables asynchronous clients to access the business logic in the EJB tier.
8. What is Entity Bean and Session Bean ?
Entity Bean is a Java class which implements an Enterprise Bean interface and provides the implementation of the business methods. There are two types: Container Managed Persistence(CMP) and Bean-Managed Persistence(BMP).
Session Bean is used to represent a workflow on behalf of a client. There are two types: Stateless and Stateful. Stateless bean is the simplest bean. It doesn't maintain any conversational state with clients between method invocations. Stateful bean maintains state between invocations.
________________________________________
Return to top
________________________________________
J2EE
1. More J2EE questions
2. What is difference between J2EE 1.3 and J2EE 1.4?
J2EE 1.4 is an enhancement version of J2EE 1.3. It is the most complete Web services platform ever.
J2EE 1.4 includes:
o Java API for XML-Based RPC (JAX-RPC 1.1)
o SOAP with Attachments API for Java (SAAJ),
o Web Services for J2EE(JSR 921)
o J2EE Management Model(1.0)
o J2EE Deployment API(1.1)
o Java Management Extensions (JMX),
o Java Authorization Contract for Containers(JavaACC)
o Java API for XML Registries (JAXR)
o Servlet 2.4
o JSP 2.0
o EJB 2.1
o JMS 1.1
o J2EE Connector 1.5
The J2EE 1.4 features complete Web services support through the new JAX-RPC 1.1 API, which supports service endpoints based on servlets and enterprise beans. JAX-RPC 1.1 provides interoperability with Web services based on the WSDL and SOAP protocols.
The J2EE 1.4 platform also supports the Web Services for J2EE specification (JSR 921), which defines deployment requirements for Web services and utilizes the JAX-RPC programming model.
In addition to numerous Web services APIs, J2EE 1.4 platform also features support for the WS-I Basic Profile 1.0. This means that in addition to platform independence and complete Web services support, J2EE 1.4 offers platform Web services interoperability.
The J2EE 1.4 platform also introduces the J2EE Management 1.0 API, which defines the information model for J2EE management, including the standard Management EJB (MEJB). The J2EE Management 1.0 API uses the Java Management Extensions API (JMX).
The J2EE 1.4 platform also introduces the J2EE Deployment 1.1 API, which provides a standard API for deployment of J2EE applications.
The J2EE 1.4 platform includes security enhancements via the introduction of the Java Authorization Contract for Containers (JavaACC). The JavaACC API improves security by standardizing how authentication mechanisms are integrated into J2EE containers.
The J2EE platform now makes it easier to develop web front ends with enhancements to Java Servlet and JavaServer Pages (JSP) technologies. Servlets now support request listeners and enhanced filters. JSP technology has simplified the page and extension development models with the introduction of a simple expression language, tag files, and a simpler tag extension API, among other features. This makes it easier than ever for developers to build JSP-enabled pages, especially those who are familiar with scripting languages.
Other enhancements to the J2EE platform include the J2EE Connector Architecture, which provides incoming resource adapter and Java Message Service (JMS) pluggability. New features in Enterprise JavaBeans (EJB) technology include Web service endpoints, a timer service, and enhancements to EJB QL and message-driven beans.
The J2EE 1.4 platform also includes enhancements to deployment descriptors. They are now defined using XML Schema which can also be used by developers to validate their XML structures.
Note: The above information comes from SUN released notes.
3. Do you have to use design pattern in J2EE project?
Yes. If I do it, I will use it. Learning design pattern will boost my coding skill.
4. Is J2EE a super set of J2SE?
Yes
J2EE General Questions
________________________________________
1. What is J2EE?
J2EE is an environment for developing and deploying enterprise applications. The J2EE platform consists of a set of services, application programming interfaces (APIs), and protocols that provide the functionality for developing multitiered, web-based applications.
2. What is the J2EE module?
A J2EE module consists of one or more J2EE components for the same container type and one component deployment descriptor of that type.
3. What are the components of J2EE application?
A J2EE component is a self-contained functional software unit that is assembled into a J2EE application with its related classes and files and communicates with other components. The J2EE specification defines the following J2EE components:
o Application clients and applets are client components.
o Java Servlet and JavaServer PagesTM (JSPTM) technology components are web components.
o Enterprise JavaBeansTM (EJBTM) components (enterprise beans) are business components.
o Resource adapter components provided by EIS and tool vendors.
4. What are the four types of J2EE modules?
1. Application client module
2. Web module
3. Enterprise JavaBeans module
4. Resource adapter module
5. What does application client module contain?
The application client module contains:
o class files,
o an application client deployment descriptor.
Application client modules are packaged as JAR files with a .jar extension.
6. What does web module contain?
The web module contains:
o JSP files,
o class files for servlets,
o GIF and HTML files, and
o a Web deployment descriptor.
Web modules are packaged as JAR files with a .war (Web ARchive) extension.
7. What does Enterprise JavaBeans module contain?
The Enterprise JavaBeans module contains:
o class files for enterprise beans
o an EJB deployment descriptor.
EJB modules are packaged as JAR files with a .jar extension.
8. What does resource adapt module contain?
The resource adapt module contains:
o all Java interfaces,
o classes,
o native libraries,
o other documentation,
o a resource adapter deployment descriptor.
Resource adapter modules are packages as JAR files with a .rar (Resource adapter ARchive) extension.
9. How many development roles are involved in J2EE application?
There are at least 5 roles involved:
0. Enterprise Bean Developer
Writes and compiles the source code
Specifies the deployment descriptor
Bundles the .class files and deployment descriptor into an EJB JAR file
1. Web Component Developer
Writes and compiles servlet source code
Writes JSP and HTML files
Specifies the deployment descriptor for the Web component
Bundles the .class, .jsp, .html, and deployment descriptor files in the WAR file
2. J2EE Application Client Developer
Writes and compiles the source code
Specifies the deployment descriptor for the client
Bundles the .class files and deployment descriptor into the JAR file
3. Application Assembler The application assembler is the company or person who receives application component JAR files from component providers and assembles them into a J2EE application EAR file. The assembler or deployer can edit the deployment descriptor directly or use tools that correctly add XML tags according to interactive selections. A software developer performs the following tasks to deliver an EAR file containing the J2EE application:
Assembles EJB JAR and WAR files created in the previous phases into a J2EE application (EAR) file
Specifies the deployment descriptor for the J2EE application
Verifies that the contents of the EAR file are well formed and comply with the J2EE specification
4. Application Deployer and Administrator
Configures and deploys the J2EE application
Resolves external dependencies
Specifies security settings & attributes
Assigns transaction attributes and sets transaction controls
Specifies connections to databases
Deploys or installs the J2EE application EAR file into the J2EE server
Administers the computing and networking infrastructure where J2EE applications run
Oversees the runtime environment
But a developer role depends on the job assignment. For a small company, one developer may take these 5 roles altogether.
10. What APIs are available for developing a J2EE application?
o Enterprise JavaBeans Technology(3 beans: Session Beans, Entity Beans and Message-Driven Beans)
o JDBC API(application level interface and service provider interface or driver)
o Java Servlet Technology(Servlet)
o Java ServerPage Technology(JSP)
o Java Message Service(JMS)
o Java Naming and Directory Interface(JNDI)
o Java Transaction API(JTA)
o JavaMail API
o JavaBeans Activation Framework(JAF used by JavaMail)
o Java API for XML Processiong(JAXP,SAX, DOM, XSLT)
o Java API for XML Registries(JAXR)
o Java API for XML-Based RPC(JAX-RPC)-SOAP standard and HTTP
o SOAP with Attachments API for Java(SAAJ)-- low-level API upon which JAX-RPC depends
o J2EE Connector Architecture
o Java Authentication and Authorization Service(JAAS)
11. What is difference between J2EE 1.3 and J2EE 1.4?
J2EE 1.4 is an enhancement version of J2EE 1.3. It is the most complete Web services platform ever.
J2EE 1.4 includes:
o Java API for XML-Based RPC (JAX-RPC 1.1)
o SOAP with Attachments API for Java (SAAJ),
o Web Services for J2EE(JSR 921)
o J2EE Management Model(1.0)
o J2EE Deployment API(1.1)
o Java Management Extensions (JMX),
o Java Authorization Contract for Containers(JavaACC)
o Java API for XML Registries (JAXR)
o Servlet 2.4
o JSP 2.0
o EJB 2.1
o JMS 1.1
o J2EE Connector 1.5
The J2EE 1.4 features complete Web services support through the new JAX-RPC 1.1 API, which supports service endpoints based on servlets and enterprise beans. JAX-RPC 1.1 provides interoperability with Web services based on the WSDL and SOAP protocols.
The J2EE 1.4 platform also supports the Web Services for J2EE specification (JSR 921), which defines deployment requirements for Web services and utilizes the JAX-RPC programming model.
In addition to numerous Web services APIs, J2EE 1.4 platform also features support for the WS-I Basic Profile 1.0. This means that in addition to platform independence and complete Web services support, J2EE 1.4 offers platform Web services interoperability.
The J2EE 1.4 platform also introduces the J2EE Management 1.0 API, which defines the information model for J2EE management, including the standard Management EJB (MEJB). The J2EE Management 1.0 API uses the Java Management Extensions API (JMX).
The J2EE 1.4 platform also introduces the J2EE Deployment 1.1 API, which provides a standard API for deployment of J2EE applications.
The J2EE 1.4 platform includes security enhancements via the introduction of the Java Authorization Contract for Containers (JavaACC). The JavaACC API improves security by standardizing how authentication mechanisms are integrated into J2EE containers.
The J2EE platform now makes it easier to develop web front ends with enhancements to Java Servlet and JavaServer Pages (JSP) technologies. Servlets now support request listeners and enhanced filters. JSP technology has simplified the page and extension development models with the introduction of a simple expression language, tag files, and a simpler tag extension API, among other features. This makes it easier than ever for developers to build JSP-enabled pages, especially those who are familiar with scripting languages.
Other enhancements to the J2EE platform include the J2EE Connector Architecture, which provides incoming resource adapter and Java Message Service (JMS) pluggability. New features in Enterprise JavaBeans (EJB) technology include Web service endpoints, a timer service, and enhancements to EJB QL and message-driven beans.
The J2EE 1.4 platform also includes enhancements to deployment descriptors. They are now defined using XML Schema which can also be used by developers to validate their XML structures.
Note: The above information comes from SUN released notes.
12. Is J2EE application only a web-based?
NO. A J2EE application can be web-based or non-web-based. if an application client executes on the client machine, it is a non-web-based J2EE application. The J2EE application can provide a way for users to handle tasks such as J2EE system or application administration. It typically has a graphical user interface created from Swing or AWT APIs, or a command-line interface. When user request, it can open an HTTP connection to establish communication with a servlet running in the web tier.
13. Are JavaBeans J2EE components?
NO. JavaBeans components are not considered J2EE components by the J2EE specification. JavaBeans components written for the J2EE platform have instance variables and get and set methods for accessing the data in the instance variables. JavaBeans components used in this way are typically simple in design and implementation, but should conform to the naming and design conventions outlined in the JavaBeans component architecture.
14. Is HTML page a web component?
NO. Static HTML pages and applets are bundled with web components during application assembly, but are not considered web components by the J2EE specification. Even the server-side utility classes are not considered web components,either.
15. What is the container?
A container is a runtime support of a system-level entity. Containers provide components with services such as lifecycle management, security, deployment, and threading.
16. What is the web container?
Servlet and JSP containers are collectively referred to as Web containers.
17. What is the thin client?
A thin client is a lightweight interface to the application that does not have such operations like query databases, execute complex business rules, or connect to legacy applications.
18. What are types of J2EE clients?
o Applets
o Application clients
o Java Web Start-enabled rich clients, powered by Java Web Start technology.
o Wireless clients, based on Mobile Information Device Profile (MIDP) technology.
19. What is deployment descriptor?
A deployment descriptor is an Extensible Markup Language (XML) text-based file with an .xml extension that describes a component's deployment settings. A J2EE application and each of its modules has its own deployment descriptor.
20. What is the EAR file?
An EAR file is a standard JAR file with an .ear extension, named from Enterprice ARchive file. A J2EE application with all of its modules is delivered in EAR file.
21. What is JTA and JTS?
JTA is the abbreviation for the Java Transaction API. JTS is the abbreviation for the Jave Transaction Service. JTA provides a standard interface and allows you to demarcate transactions in a manner that is independent of the transaction manager implementation. The J2EE SDK implements the transaction manager with JTS. But your code doesn't call the JTS methods directly. Instead, it invokes the JTA methods, which then call the lower-level JTS routines.
Therefore, JTA is a high level transaction interface that your application uses to control transaction. and JTS is a low level transaction interface and ejb uses behind the scenes (client code doesn't directly interact with JTS. It is based on object transaction service(OTS) which is part of CORBA.
22. What is JAXP?
JAXP stands for Java API for XML. XML is a language for representing and describing text-based data which can be read and handled by any program or tool that uses XML APIs.
23. What is J2EE Connector?
The J2EE Connector API is used by J2EE tools vendors and system integrators to create resource adapters that support access to enterprise information systems that can be plugged into any J2EE product. Each type of database or EIS has a different resource adapter.
24. What is JAAP?
The Java Authentication and Authorization Service (JAAS) provides a way for a J2EE application to authenticate and authorize a specific user or group of users to run it. It is a standard Pluggable Authentication Module (PAM) framework that extends the Java 2 platform security architecture to support user-based authorization.
25. What is Model 1?
Using JSP technology alone to develop Web page. Such term is used in the earlier JSP specification. Model 1 architecture is suitable for applications that have very simple page flow, have little need for centralized security control or logging, and change little over time. Model 1 applications can often be refactored to Model 2 when application requirements change.
26. What is Model 2?
Using JSP and Servelet together to develop Web page. Model 2 applications are easier to maintain and extend, because views do not refer to each other directly.
27. What is Struts?
A Web page development framework. Struts combines Java Servlets, Java Server Pages, custom tags, and message resources into a unified framework. It is a cooperative, synergistic platform, suitable for development teams, independent developers, and everyone between.
28. How is the MVC design pattern used in Struts framework?
In the MVC design pattern, application flow is mediated by a central Controller. The Controller delegates requests to an appropriate handler. The handlers are tied to a Model, and each handler acts as an adapter between the request and the Model. The Model represents, or encapsulates, an application's business logic or state. Control is usually then forwarded back through the Controller to the appropriate View. The forwarding can be determined by consulting a set of mappings, usually loaded from a database or configuration file. This provides a loose coupling between the View and Model, which can make an application significantly easier to create and maintain.
Controller--Servlet controller which supplied by Struts itself; View --- what you can see on the screen, a JSP page and presentation components; Model --- System state and a business logic JavaBeans.
29. Do you have to use design pattern in J2EE project?
Yes. If I do it, I will use it. Learning design pattern will boost my coding skill.
30. Is J2EE a super set of J2SE?
Yes
Return to top
________________________________________
JMS
1. What is JMS?
Java Message Service is the new standard for interclient communication. It allows J2EE application components to create, send, receive, and read messages. It enables distributed communication that is loosely coupled, reliable, and asynchronous.
2. what type messaging is provided by JMS
Both synchronous and asynschronous
3. How may messaging models do JMS provide for and what are they?
JMS provide for two messaging models, publish-and-subscribe and point-to-point queuing
Return to top
________________________________________
Misc
1. What is Maven?
Maven is a Java project management and project comprehension tool developed by http://maven.apache.org. Maven is based on the concept of a project object model (POM) in that all the artifacts produced by Maven are a result of consulting a well defined model for your project. Builds, documentation, source metrics, source cross-references and a countless number of reports are all controlled by your POM. Maven has the following features.
o Making the build process easy
o Providing a uniform build system
o Providing quality project information
o Providing clear development process guidelines
o Providing guidelines for thorough testing practices
o Providing coherent visualization of project information
o Allowing transparent migration to new features
2. What is JPay? The JPay is Java payment API. It supports payments in an open, Web-like environment and allow Java applications to use a third-party payment service to charge users for using an application or accessing content. For more information, please visit this page
3. What is Jeson?
Jetson is an automation toolset designed to simplify and speed the development and deployment of J2EE applications. Jetson enables rapid Enterprise JavaBean (EJB)-based application generation; allows business rules to be exposed as Web services; supports most common databases; and features a security model that conforms to Java Authentication and Authorization Service (JAAS). More information can be found at http://www.JetsonJ2EE.com.
4. What is Jamaica?
Jamaica (like Jasmin) is an abstract assembly language for Java Virtual Machine(JVM). It uses Java language syntax to define class structures and uses mnemonics or symbolic names in instructions for variables, parameters, data fields, constants, and labels. JVM bytecode is hard to read and can be viewed via javap utility to decompile a class file. For example, you may view a compiled class file as follows:
javap -c anyCompiledClassName
You will see the decompiled JVM bytecode displayed on the screen. But when you use Jamaica to write code, it is easy to read. For example, the HelloWorld class may be written as follows.
public class HelloWorld {
public static void main(String[] args) {
%println "Hello, World!"
%println "Hello, World!"
%println "This is NOT an error!"
}
}
The %println is JVM macro. It needs Jamaica to compile and run
5. What is WML?
Wireless Markup Language (WML) page is delivered over Wireless Application Protocol (WAP) and the network configuration requires a gateway to translate WAP to HTTP and back again. It can be generated by a JSP page or servlet running on the J2EE server.
6. What software development methodologies are prevailing?
o Rational Unified Process(RUP) -- Model-driven architecture, design and development; customizable framework for scalable processes; developed and marketed by Rational company.
o Enterprise Unified Process(EUP) -- extension of RUP(add: production, retirement, operations,support and enterprise disciplines.)
o Personal Software Process(PSP) -- Self-calibration.
o Team Software Process(TSP) -- Extends PSP with specific roles.
o Agile Modeling (AM)-- Feature-driven, test often.
o Extreme Programming(XP) -- Effective pair-programming.
o Reuse -- Across multiple providers.
Architecture-driven reuse -- domain component
Artifact reuse -- use cases, standards docu, models, procesures, guidelines,etc.
Code reuse -- source code, across multiple applications, etc.
Component reuse -- fully-encapsulated, well tested components.
Framework reuse -- collections of classes with basic funtionality of a common tech or business domain.
Inheritance reuse -- taking advantagle of behavior implemented in existing classes.
Pattern reuse -- publicly documented approaches to solve common problems.
Template reuse -- common set of layouts for key development artifacts.
o Note: They are all iterative development methodologies.
7. What are orthogonal dimensions in software development?
There are several popular orthogonal dimensions listed as follows
o Top-down vs. bottom-up.
o Waterfall vs. incremental.
o Iterative vs. concurrent.
o Planned vs. mining.
o Same team vs. different team.
8. What is domain engineering(DE)?
Domain engineering(DE) is a process that produces reusable assets including components, web services, generators, frameworks, models and documents, for subsequent use in the development of applications or product line.
9. What is domain analysis(DA)?
Domain analysis(DA) is the front part of domain engineering(DE), which analyzes the anticipated applications, technology trends, standards,and existing assets to develop a model of commonality, variability and initial features into reusable assets.
10. What are alpha, beta or gamma version of a software?
o alpha -- the release contains some large section of new code that hasn't been 100% tested.
o beta -- all new code has been tested, no fatal bugs.
o gamma -- a beta that has been around a while and seems to work fine. Only minor fixes are added. The so-called a release.
11. What is the difference between component and class?
A component is a finished class, whereas a class is a design schema. A component is ready to be used as a member of a class and a class may consist of many components(classes). Component and class names may be exchangeble in context. For example, a Button is a component and also a class. MyWindow class may contain several buttons.
12. What is JUnit?
JUnit is a unit-testing framework. Unit-testing is a means of verifying the results you expect from your classes. If you write your test before hand and focus your code on passing the test you are more likely to end up with simple code that does what it should and nothing more. Unit-testing also assists in the refactoring process. If your code passes the unit-test after refactoring you will know that you haven't introduced any bugs to it.
13. What is the difference between Java and PL/SQL?
Java is a general programming language. PL/SQL is a database query languague, especially for Oracle database.
The site is : http://www.javacamp.org/jobinterview.html if u have any more doughts regarding this go through the site ok
The rule is that not the best qualified candidates get job. Your on-site performance plays a big role. Here are some easily forgettable points.
• 90% interviewing questions raised based on your own resume.
• eye-to-eye contact, smiling all the way. don't miss anyone in the corner.
• asking easier and relevant questions back to the interviewers occasionally.
• be honest to answer technical questions, you are not expert to know everything.
• don't let your boss feel you might be a threat to take his position.
• don't be critical, focus on what you can do.
• try to be humor to show your smartness.
• don't act in a superior way.
• find right time to raise questions AND answer those questions to show your strength.
• aggressively to get candidacy info back after interviewing.
________________________________________
1. For more tips, go to this special tips page
2. Tell me about yourself?
The first is focusing on the needs of the organization. The second is focusing on the needs of the people within that organization. Don't talk so much about strong points about yourself because your resume has already brought you at the interview site.
3. How to deal with a question that is inappropriate?
o Briefly answer the question and move to a new topic.
o Ignore the question and redirect the discussion toward a different topic.
o If the question is blatant and offensive, you have every right to terminate the interview and walk out.
o Don't answer the question, but answer the intent behind the question.
For instance, if the interviewer asks, "Who is going to take care of your children when you have to travel?" You might answer, "I can meet the travel and work schedule that this job requires." Or if he/she asks, "Are you planning a family in the future?" You might say, "Right now I am focused on my career and as a family is always an option, it is not a priority right now."
4. What lessons have you learnt from "Apprentice" show?
At least 8 lessons:
1. Have a Strategy
2. Find Out What the Boss/Client Wants and Give it to Them
3. Deal With the Person in Charge
4. Be Positive
5. Have the Courage to Speak Your Mind
6. Stand Up For Yourself
7. Be Flexible
8. There's Life After Being Fired
Return to top
________________________________________
Java Language
Note: only the most important questions are listed below and they are not categorized, since your interviewing questions will not be categorized either.
1. More Java related interview questions.
2. Can a private method of a superclass be declared within a subclass?
Sure. A private field or method or inner class belongs to its declared class and hides from its subclasses. There is no way for private stuff to have a runtime overloading or overriding (polymorphism) features.
3. Why Java does not support multiple inheritence ?
Java DOES support multiple inheritance via interface implementation.
4. What is the difference between final, finally and finalize?
o final - declare constant
o finally - handles exception
o finalize - helps in garbage collection
5. Where and how can you use a private constuctor.
Private constructor can be used if you do not want any other class to instanstiate the object , the instantiation is done from a static public method, this method is used when dealing with the factory method pattern when the designer wants only one controller (fatory method ) to create the object .
6. In System.out.println(),what is System,out and println,pls explain?
System is a predefined final class,out is a PrintStream object and println is a built-in overloaded method in the out object.
7. What is meant by "Abstract Interface"?
First, an interface is abstract. That means you cannot have any implementation in an interface. All the methods declared in an interface are abstract methods or signatures of the methods.
8. Can you make an instance of an abstract class? For example - java.util.Calender is an abstract class with a method getInstance() which returns an instance of the Calender class.
No! You cannot make an instance of an abstract class. An abstract class has to be sub-classed. If you have an abstract class and you want to use a method which has been implemented, you may need to subclass that abstract class, instantiate your subclass and then call that method.
9. What is the output of x
AWT components are heavy-weight, whereas Swing components are lightweight. Heavy weight components depend on the local windowing toolkit. For example, java.awt.Button is a heavy weight component, when it is running on the Java platform for Unix platform, it maps to a real Motif button.
11. Why Java does not support pointers?
Because pointers are unsafe. Java uses reference types to hide pointers and programmers feel easier to deal with reference types without pointers. This is why Java and C# shine.
12. Parsers? DOM vs SAX parser
parsers are fundamental xml components, a bridge between XML documents and applications that process that XML. The parser is responsible for handling xml syntax, checking the contents of the document against constraints established in a DTD or Schema.
DOM SAX
----------------------------------------------------------------
1. Tree of nodes 1.Sequence of events
2.Memory: Occupies more memory, 2.does'nt use any memory
preffered for small XML documents preferred for large documents
3.Slower at runtime 3. Faster at runtime
4.stored as objects 4. objects are to be created
5.Programmatically easy, since objects 5.Need to write code for creating objects
are to reffered
6.Ease of navigation 6.backward navigation is not possible as it sequentially processes the document
Return to top
Java Language Questions
________________________________________
1. What is a platform?
A platform is the hardware or software environment in which a program runs. Most platforms can be described as a combination of the operating system and hardware, like Windows 2000/XP, Linux, Solaris, and MacOS.
________________________________________
2. What is the main difference between Java platform and other platforms?
The Java platform differs from most other platforms in that it's a software-only platform that runs on top of other hardware-based platforms.
The Java platform has two components:
1. The Java Virtual Machine (Java VM)
2. The Java Application Programming Interface (Java API)
________________________________________
3. What is the Java Virtual Machine?
The Java Virtual Machine is a software that can be ported onto various hardware-based platforms.
________________________________________
4. What is the Java API?
The Java API is a large collection of ready-made software components that provide many useful capabilities, such as graphical user interface (GUI) widgets.
________________________________________
5. What is the package?
The package is a Java namespace or part of Java libraries. The Java API is grouped into libraries of related classes and interfaces; these libraries are known as packages.
________________________________________
6. What is native code?
The native code is code that after you compile it, the compiled code runs on a specific hardware platform.
________________________________________
7. Is Java code slower than native code?
Not really. As a platform-independent environment, the Java platform can be a bit slower than native code. However, smart compilers, well-tuned interpreters, and just-in-time bytecode compilers can bring performance close to that of native code without threatening portability.
________________________________________
8. What is the serialization?
The serialization is a kind of mechanism that makes a class or a bean persistence by having its properties or fields and state information saved and restored to and from storage.
________________________________________
9. How to make a class or a bean serializable?
By implementing either the java.io.Serializable interface, or the java.io.Externalizable interface. As long as one class in a class's inheritance hierarchy implements Serializable or Externalizable, that class is serializable.
________________________________________
10. How many methods in the Serializable interface?
There is no method in the Serializable interface. The Serializable interface acts as a marker, telling the object serialization tools that your class is serializable.
________________________________________
11. How many methods in the Externalizable interface?
There are two methods in the Externalizable interface. You have to implement these two methods in order to make your class externalizable. These two methods are readExternal() and writeExternal().
________________________________________
12. What is the difference between Serializalble and Externalizable interface?
When you use Serializable interface, your class is serialized automatically by default. But you can override writeObject() and readObject() two methods to control more complex object serailization process. When you use Externalizable interface, you have a complete control over your class's serialization process.
________________________________________
13. What is a transient variable?
A transient variable is a variable that may not be serialized. If you don't want some field to be serialized, you can mark that field transient or static.
________________________________________
14. Which containers use a border layout as their default layout?
The Window, Frame and Dialog classes use a border layout as their default layout.
________________________________________
15. How are Observer and Observable used?
Objects that subclass the Observable class maintain a list of observers. When an Observable object is updated it invokes the update() method of each of its observers to notify the observers that it has changed state. The Observer interface is implemented by objects that observe Observable objects.
________________________________________
16. What is synchronization and why is it important?
With respect to multithreading, synchronization is the capability to control the access of multiple threads to shared resources. Without synchronization, it is possible for one thread to modify a shared object while another thread is in the process of using or updating that object's value. This often causes dirty data and leads to significant errors.
________________________________________
17. What are synchronized methods and synchronized statements?
Synchronized methods are methods that are used to control access to an object. A thread only executes a synchronized method after it has acquired the lock for the method's object or class. Synchronized statements are similar to synchronized methods. A synchronized statement can only be executed after a thread has acquired the lock for the object or class referenced in the synchronized statement.
________________________________________
18. What are three ways in which a thread can enter the waiting state?
A thread can enter the waiting state by invoking its sleep() method, by blocking on I/O, by unsuccessfully attempting to acquire an object's lock, or by invoking an object's wait() method. It can also enter the waiting state by invoking its (deprecated) suspend() method.
________________________________________
19. Can a lock be acquired on a class?
Yes, a lock can be acquired on a class. This lock is acquired on the class's Class object.
________________________________________
20. What's new with the stop(), suspend() and resume() methods in JDK 1.2?
The stop(), suspend() and resume() methods have been deprecated in JDK 1.2.
________________________________________
21. What is the preferred size of a component?
The preferred size of a component is the minimum component size that will allow the component to display normally.
________________________________________
22. What method is used to specify a container's layout?
The setLayout() method is used to specify a container's layout.
________________________________________
23. Which containers use a FlowLayout as their default layout?
The Panel and Applet classes use the FlowLayout as their default layout.
________________________________________
24. What is thread?
A thread is an independent path of execution in a system.
________________________________________
25. What is multithreading?
Multithreading means various threads that run in a system.
________________________________________
26. How does multithreading take place on a computer with a single CPU?
The operating system's task scheduler allocates execution time to multiple tasks. By quickly switching between executing tasks, it creates the impression that tasks execute sequentially.
________________________________________
27. How to create multithread in a program?
You have two ways to do so. First, making your class "extends" Thread class. Second, making your class "implements" Runnable interface. Put jobs in a run() method and call start() method to start the thread.
________________________________________
28. Can Java object be locked down for exclusive use by a given thread?
Yes. You can lock an object by putting it in a "synchronized" block. The locked object is inaccessible to any thread other than the one that explicitly claimed it.
________________________________________
29. Can each Java object keep track of all the threads that want to exclusively access to it?
Yes.
________________________________________
30. What state does a thread enter when it terminates its processing?
When a thread terminates its processing, it enters the dead state.
________________________________________
31. What invokes a thread's run() method?
After a thread is started, via its start() method of the Thread class, the JVM invokes the thread's run() method when the thread is initially executed.
________________________________________
32. What is the purpose of the wait(), notify(), and notifyAll() methods?
The wait(),notify(), and notifyAll() methods are used to provide an efficient way for threads to communicate each other.
________________________________________
33. What are the high-level thread states?
The high-level thread states are ready, running, waiting, and dead.
________________________________________
34. What is the Collections API?
The Collections API is a set of classes and interfaces that support operations on collections of objects.
________________________________________
35. What is the List interface?
The List interface provides support for ordered collections of objects.
________________________________________
36. How does Java handle integer overflows and underflows?
It uses those low order bytes of the result that can fit into the size of the type allowed by the operation.
________________________________________
37. What is the Vector class?
The Vector class provides the capability to implement a growable array of objects
________________________________________
38. What modifiers may be used with an inner class that is a member of an outer class?
A (non-local) inner class may be declared as public, protected, private, static, final, or abstract.
________________________________________
39. If a method is declared as protected, where may the method be accessed?
A protected method may only be accessed by classes or interfaces of the same package or by subclasses of the class in which it is declared.
________________________________________
40. What is an Iterator interface?
The Iterator interface is used to step through the elements of a Collection.
________________________________________
41. How many bits are used to represent Unicode, ASCII, UTF-16, and UTF-8 characters?
Unicode requires 16 bits and ASCII require 7 bits. Although the ASCII character set uses only 7 bits, it is usually represented as 8 bits. UTF-8 represents characters using 8, 16, and 18 bit patterns. UTF-16 uses 16-bit and larger bit patterns.
________________________________________
42. What is the difference between yielding and sleeping?
When a task invokes its yield() method, it returns to the ready state. When a task invokes its sleep() method, it returns to the waiting state.
________________________________________
43. Is sizeof a keyword?
The sizeof operator is not a keyword in Java.
________________________________________
44. What are wrapped classes?
Wrapped classes are classes that allow primitive types to be accessed as objects.
________________________________________
45. Does garbage collection guarantee that a program will not run out of memory?
No, it doesn't. It is possible for programs to use up memory resources faster than they are garbage collected. It is also possible for programs to create objects that are not subject to garbage collection
________________________________________
46. What is the difference between preemptive scheduling and time slicing?
Under preemptive scheduling, the highest priority task executes until it enters the waiting or dead states or a higher priority task comes into existence. Under time slicing, a task executes for a predefined slice of time and then reenters the pool of ready tasks. The scheduler then determines which task should execute next, based on priority and other factors.
________________________________________
47. Name Component subclasses that support painting.
The Canvas, Frame, Panel, and Applet classes support painting.
________________________________________
48. What is a native method?
A native method is a method that is implemented in a language other than Java.
________________________________________
49. How can you write a loop indefinitely?
for(;;)--for loop; while(true)--always true, etc.
________________________________________
50. Can an anonymous class be declared as implementing an interface and extending a class?
An anonymous class may implement an interface or extend a superclass, but may not be declared to do both.
________________________________________
51. What is the purpose of finalization?
The purpose of finalization is to give an unreachable object the opportunity to perform any cleanup processing before the object is garbage collected.
________________________________________
52. Which class is the superclass for every class.
Object
________________________________________
53. What is the difference between the Boolean & operator and the && operator?
If an expression involving the Boolean & operator is evaluated, both operands are evaluated. Then the & operator is applied to the operand. When an expression involving the && operator is evaluated, the first operand is evaluated. If the first operand returns a value of true then the second operand is evaluated. The && operator is then applied to the first and second operands. If the first operand evaluates to false, the evaluation of the second operand is skipped.
Operator & has no chance to skip both sides evaluation and && operator does. If asked why, give details as above.
________________________________________
54. What is the GregorianCalendar class?
The GregorianCalendar provides support for traditional Western calendars.
________________________________________
55. What is the SimpleTimeZone class?
The SimpleTimeZone class provides support for a Gregorian calendar.
________________________________________
56. Which Container method is used to cause a container to be laid out and redisplayed?
validate()
________________________________________
57. What is the Properties class?
The properties class is a subclass of Hashtable that can be read from or written to a stream. It also provides the capability to specify a set of default values to be used.
________________________________________
58. What is the purpose of the Runtime class?
The purpose of the Runtime class is to provide access to the Java runtime system.
________________________________________
59. What is the purpose of the System class?
The purpose of the System class is to provide access to system resources.
________________________________________
60. What is the purpose of the finally clause of a try-catch-finally statement?
The finally clause is used to provide the capability to execute code no matter whether or not an exception is thrown or caught.
________________________________________
61. What is the Locale class?
The Locale class is used to tailor program output to the conventions of a particular geographic, political, or cultural region.
________________________________________
62. What must a class do to implement an interface?
It must provide all of the methods in the interface and identify the interface in its implements clause.
________________________________________
63. What is an abstract method?
An abstract method is a method whose implementation is deferred to a subclass. Or, a method that has no implementation (an interface of a method).
________________________________________
64. What is a static method?
A static method is a method that belongs to the class rather than any object of the class and doesn't apply to an object or even require that any objects of the class have been instantiated.
________________________________________
65. What is a protected method?
A protected method is a method that can be accessed by any method in its package and inherited by any subclass of its class.
________________________________________
66. What is the difference between a static and a non-static inner class?
A non-static inner class may have object instances that are associated with instances of the class's outer class. A static inner class does not have any object instances.
________________________________________
67. What is an object's lock and which object's have locks?
An object's lock is a mechanism that is used by multiple threads to obtain synchronized access to the object. A thread may execute a synchronized method of an object only after it has acquired the object's lock. All objects and classes have locks. A class's lock is acquired on the class's Class object.
________________________________________
68. When can an object reference be cast to an interface reference?
An object reference be cast to an interface reference when the object implements the referenced interface.
________________________________________
69. What is the difference between a Window and a Frame?
The Frame class extends Window to define a main application window that can have a menu bar.
________________________________________
70. What do heavy weight components mean?
Heavy weight components like Abstract Window Toolkit (AWT), depend on the local windowing toolkit. For example, java.awt.Button is a heavy weight component, when it is running on the Java platform for Unix platform, it maps to a real Motif button. In this relationship, the Motif button is called the peer to the java.awt.Button. If you create two Buttons, two peers and hence two Motif Buttons are also created. The Java platform communicates with the Motif Buttons using the Java Native Interface. For each and every component added to the application, there is an additional overhead tied to the local windowing system, which is why these components are called heavy weight.
________________________________________
71. Which package has light weight components?
javax.Swing package. All components in Swing, except JApplet, JDialog, JFrame and JWindow are lightweight components.
________________________________________
72. What are peerless components?
The peerless components are called light weight components.
________________________________________
73. What is the difference between the Font and FontMetrics classes?
The FontMetrics class is used to define implementation-specific properties, such as ascent and descent, of a Font object.
________________________________________
74. What happens when a thread cannot acquire a lock on an object?
If a thread attempts to execute a synchronized method or synchronized statement and is unable to acquire an object's lock, it enters the waiting state until the lock becomes available.
________________________________________
75. What is the difference between the Reader/Writer class hierarchy and the InputStream/OutputStream class hierarchy?
The Reader/Writer class hierarchy is character-oriented, and the InputStream/OutputStream class hierarchy is byte-oriented.
________________________________________
76. What classes of exceptions may be caught by a catch clause?
A catch clause can catch any exception that may be assigned to the Throwable type. This includes the Error and Exception types.
________________________________________
77. What is the difference between throw and throws keywords?
The throw keyword denotes a statement that causes an exception to be initiated. It takes the Exception object to be thrown as argument. The exception will be caught by an immediately encompassing try-catch construction or propagated further up the calling hierarchy.
The throws keyword is a modifier of a method that designates that exceptions may come out of the mehtod, either by virtue of the method throwing the exception itself or because it fails to catch such exceptions that a method it calls may throw.
________________________________________
78. If a class is declared without any access modifiers, where may the class be accessed?
A class that is declared without any access modifiers is said to have package or friendly access. This means that the class can only be accessed by other classes and interfaces that are defined within the same package.
________________________________________
79. What is the Map interface?
The Map interface replaces the JDK 1.1 Dictionary class and is used associate keys with values.
________________________________________
80. Does a class inherit the constructors of its superclass?
A class does not inherit constructors from any of its superclasses.
________________________________________
81. Name primitive Java types.
The primitive types are byte, char, short, int, long, float, double, and boolean.
________________________________________
82. Which class should you use to obtain design information about an object?
The Class class is used to obtain information about an object's design.
________________________________________
83. How can a GUI component handle its own events?
A component can handle its own events by implementing the required event-listener interface and adding itself as its own event listener.
________________________________________
84. How are the elements of a GridBagLayout organized?
The elements of a GridBagLayout are organized according to a grid. However, the elements are of different sizes and may occupy more than one row or column of the grid. In addition, the rows and columns may have different sizes.
________________________________________
85. What advantage do Java's layout managers provide over traditional windowing systems?
Java uses layout managers to lay out components in a consistent manner across all windowing platforms. Since Java's layout managers aren't tied to absolute sizing and positioning, they are able to accommodate platform-specific differences among windowing systems.
________________________________________
86. What are the problems faced by Java programmers who don't use layout managers?
Without layout managers, Java programmers are faced with determining how their GUI will be displayed across multiple windowing systems and finding a common sizing and positioning that will work within the constraints imposed by each windowing system.
________________________________________
87. What is the difference between static and non-static variables?
A static variable is associated with the class as a whole rather than with specific instances of a class. Non-static variables take on unique values with each object instance.
________________________________________
88. What is the difference between the paint() and repaint() methods?
The paint() method supports painting via a Graphics object. The repaint() method is used to cause paint() to be invoked by the AWT painting thread.
________________________________________
89. What is the purpose of the File class?
The File class is used to create objects that provide access to the files and directories of a local file system.
________________________________________
90. What restrictions are placed on method overloading?
Two methods may not have the same name and argument list but different return types.
________________________________________
91. What restrictions are placed on method overriding?
Overridden methods must have the same name, argument list, and return type. The overriding method may not limit the access of the method it overrides. The overriding method may not throw any exceptions that may not be thrown by the overridden method.
________________________________________
92. What is casting?
There are two types of casting, casting between primitive numeric types and casting between object references. Casting between numeric types is used to convert larger values, such as double values, to smaller values, such as byte values. Casting between object references is used to refer to an object by a compatible class, interface, or array type reference.
________________________________________
93. Name Container classes.
Window, Frame, Dialog, FileDialog, Panel, Applet, or ScrollPane
________________________________________
94. What class allows you to read objects directly from a stream?
The ObjectInputStream class supports the reading of objects from input streams.
________________________________________
95. How are this() and super() used with constructors?
this() is used to invoke a constructor of the same class. super() is used to invoke a superclass constructor.
________________________________________
96. How is it possible for two String objects with identical values not to be equal under the == operator?
The == operator compares two objects to determine if they are the same object in memory. It is possible for two String objects to have the same value, but located indifferent areas of memory.
________________________________________
97. What an I/O filter?
An I/O filter is an object that reads from one stream and writes to another, usually altering the data in some way as it is passed from one stream to another.
________________________________________
98. What is the Set interface?
The Set interface provides methods for accessing the elements of a finite mathematical set. Sets do not allow duplicate elements.
________________________________________
99. What is the List interface?
The List interface provides support for ordered collections of objects.
________________________________________
100. What is the purpose of the enableEvents() method?
The enableEvents() method is used to enable an event for a particular object. Normally, an event is enabled when a listener is added to an object for a particular event. The enableEvents() method is used by objects that handle events by overriding their event-dispatch methods.
________________________________________
101. What is the difference between the File and RandomAccessFile classes?
The File class encapsulates the files and directories of the local file system. The RandomAccessFile class provides the methods needed to directly access data contained in any part of a file.
________________________________________
102. What interface must an object implement before it can be written to a stream as an object?
An object must implement the Serializable or Externalizable interface before it can be written to a stream as an object.
________________________________________
103. What is the ResourceBundle class?
The ResourceBundle class is used to store locale-specific resources that can be loaded by a program to tailor the program's appearance to the particular locale in which it is being run.
________________________________________
104. What is the difference between a Scrollbar and a ScrollPane?
A Scrollbar is a Component, but not a Container. A ScrollPane is a Container. A ScrollPane handles its own events and performs its own scrolling.
________________________________________
105. What is a Java package and how is it used?
A Java package is a naming context for classes and interfaces. A package is used to create a separate name space for groups of classes and interfaces. Packages are also used to organize related classes and interfaces into a single API unit and to control accessibility to these classes and interfaces.
________________________________________
106. What are the Object and Class classes used for?
The Object class is the highest-level class in the Java class hierarchy. The Class class is used to represent the classes and interfaces that are loaded by a Java program.
________________________________________
107. What is Serialization and deserialization?
Serialization is the process of writing the state of an object to a byte stream.
Deserialization is the process of restoring these objects.
________________________________________
108. what is tunnelling?
Tunnelling is a route to somewhere. For example, RMI tunnelling is a way to make RMI application get through firewall. In CS world, tunnelling means a way to transfer data.
________________________________________
109. Does the code in finally block get executed if there is an exception and a return statement in a catch block?
If an exception occurs and there is a return statement in catch block, the finally block is still executed. The finally block will not be executed when the System.exit(1) statement is executed earlier or the system shut down earlier or the memory is used up earlier before the thread goes to finally block.
________________________________________
110. How you restrict a user to cut and paste from the html page?
Using javaScript to lock keyboard keys. It is one of solutions.
________________________________________
111. Is Java a super set of JavaScript?
No. They are completely different. Some syntax may be similar.
________________________________________
112. What is a Container in a GUI?
A Container contains and arranges other components (including other containers) through the use of layout managers, which use specific layout policies to determine where components should go as a function of the size of the container.
________________________________________
113. How the object oriented approach helps us keep complexity of software development under control?
We can discuss such issue from the following aspects:
o Objects allow procedures to be encapsulated with their data to reduce potential interference.
o Inheritance allows well-tested procedures to be reused and enables changes to make once and have effect in all relevant places.
o The well-defined separations of interface and implementation allows constraints to be imposed on inheriting classes while still allowing the flexibility of overriding and overloading.
________________________________________
114. What is polymorphism?
Polymorphism allows methods to be written that needn't be concerned about the specifics of the objects they will be applied to. That is, the method can be specified at a higher level of abstraction and can be counted on to work even on objects of yet unconceived classes.
________________________________________
115. What is design by contract?
The design by contract specifies the obligations of a method to any other methods that may use its services and also theirs to it. For example, the preconditions specify what the method required to be true when the method is called. Hence making sure that preconditions are. Similarly, postconditions specify what must be true when the method is finished, thus the called method has the responsibility of satisfying the post conditions.
In Java, the exception handling facilities support the use of design by contract, especially in the case of checked exceptions. The assert keyword can be used to make such contracts.
________________________________________
116. What are use cases?
A use case describes a situation that a program might encounter and what behavior the program should exhibit in that circumstance. It is part of the analysis of a program. The collection of use cases should, ideally, anticipate all the standard circumstances and many of the extraordinary circumstances possible so that the program will be robust.
________________________________________
117. What is the difference between interface and abstract class?
o interface contains methods that must be abstract; abstract class may contain concrete methods.
o interface contains variables that must be static and final; abstract class may contain non-final and final variables.
o members in an interface are public by default, abstract class may contain non-public members.
o interface is used to "implements"; whereas abstract class is used to "extends".
o interface can be used to achieve multiple inheritance; abstract class can be used as a single inheritance.
o interface can "extends" another interface, abstract class can "extends" another class and "implements" multiple interfaces.
o interface is absolutely abstract; abstract class can be invoked if a main() exists.
o interface is more flexible than abstract class because one class can only "extends" one super class, but "implements" multiple interfaces.
o If given a choice, use interface instead of abstract class.
________________________________________
________________________________________
Networking
1. More networking questions
2. What two protocols are used in Java RMI technology?
Java Object Serialization and HTTP. The Object Serialization protocol is used to marshal call and return data. The HTTP protocol is used to "POST" a remote method invocation and obtain return data when circumstances warrant.
3. What is difference between Swing and JSF?
The key difference is that JSF runs on the server in a standard Java servlet container like Tomcat or WebLogic and display HTML or some other markup to the client.
4. What is JSF?
JSF stands for JavaServer Faces, or simply Faces. It is a framework for building Web-based user interfaces in Java. Like Swing, it provides a set of standard widgets such as buttons, hyperlinks, checkboxes, ans so on.
Return to top
Networking Questions
________________________________________
1. What is the difference between URL instance and URLConnection instance?
A URL instance represents the location of a resource, and a URLConnection instance represents a link for accessing or communicating with the resource at the location.
________________________________________
2. How do I make a connection to URL?
You obtain a URL instance and then invoke openConnection on it. URLConnection is an abstract class, which means you can't directly create instances of it using a constructor. We have to invoke openConnection method on a URL instance, to get the right kind of connection for your URL. Eg. URL url;
URLConnection connection;
try{ url = new URL("...");
connection = url.openConnection();
}catch (MalFormedURLException e) { }
________________________________________
3. What Is a Socket?
A socket is one end-point of a two-way communication link between two programs running on the network. A socket is bound to a port number so that the TCP layer can identify the application that data is destined to be sent. Socket classes are used to represent the connection between a client program and a server program. The java.net package provides two classes--Socket and ServerSocket--which implement the client side of the connection and the server side of the connection, respectively.
________________________________________
4. What information is needed to create a TCP Socket?
The Local System?s IP Address and Port Number. And the Remote System's IPAddress and Port Number.
________________________________________
5. What are the two important TCP Socket classes?
Socket and ServerSocket. ServerSocket is used for normal two-way socket communication. Socket class allows us to read and write through the sockets. getInputStream() and getOutputStream() are the two methods available in Socket class.
________________________________________
6. When MalformedURLException and UnknownHostException throws?
When the specified URL is not connected then the URL throw MalformedURLException and If InetAddress? methods getByName and getLocalHost are unable to resolve the host name they throw an UnknownHostException.
________________________________________
7. What does RMI stand for?
It stands for Remote Method Invocation.
________________________________________
8. What is RMI?
RMI is a set of APIs that allows to build distributed applications. RMI uses interfaces to define remote objects to turn local method invocations into remote method invocations.
________________________________________
XML
1. More XML questions
XML FAQS
________________________________________
1. What Is XML?
XML stands for Extensible Markup Language. It is a text-based meta-markup language defined by the World Wide Web Consortium. It has become the standard for data interchange on the Web.
2. Why do we need to learn XML?
Because XML is a meta-markup language, it lets you create your own markup language.
It is easy for data exchange, customization, self-describing, structured and integrated.
3. What does XML look like?
4.
5.
6.
7. Hello guys!
8.
9.
10. What is the difference between HTML and XML?
HTML and XML both are based on Standard Generalized Markup Language(SGML), but
o HTML uses predefined tags, whereas XML uses user-defined tags which can be used to identify data relationships like hierarchical structure(elements, subelements, subsubelements,and so on.)
o HTML specifies its representation, whereas XML identifies the content for the data.
o Unlike HTML, XML tags are well-formed. XML data is searchable, format-free and reusable.
11. What is XML attribute?
Attribute is an additional information attached to a tag. For example
here we go
The "to", "from" and "subject" are attributes of "message" tag.
12. How to deal with double quotes in attribute assignment?
Use a single quote to enclose a double quotes, for example,
13. What is an empty tag?
Empty tag is a tag with ending "/>" and used to mark something in your well-formed tags. It doesn't contain any content, so it is called "empty tag". It has two forms:
Note: not
or
or
14. What comments should be used in XML?
Comments are ignored by XML parsers. A program will never see them in fact, unless you activate special settings in the parser. XML comments are very much like HTML comments.
It is worth noting that Comments must not come before an XML declaration or inside markups. You cannot use "--" between your comments. You can use comments to hide or remove parts of documents as long as the enclosed parts do not themselves contain any comments.
15. How to deal with special characters in XML like < or &, etc.?
Like HTML, you should use entity reference to replace them, even if in embeded JavaScript code.
16. What is XML Prolog?
Prologs come at the very beginning of XML documents. Like HTML's tag , XML prolog is a declaration that is used to indicate the start of XML file like the following:
or
or
It contains some or all of three attributes:
o version -- not optional
o encoding -- default UTF-8
o standalone -- "yes" or "no"
It is a good practice to include XML prolog whenever you create an XML file, though it is optional.
Return to top
________________________________________
17. What is Unicode?
Unicode uses 2 bytes to represent characters, extending from 0 to 65,535. ASCII(American Standard Code for Information Interchange) code uses 1 byte to represent characters, extending from 0 to 255. The Unicodes 0 to 255 correspond to the ASCII 0 to 255 codes. Therefore, Unicode can include many of the symbols commonly used in worldwide character and ideograph sets.
UTF-8 means using a compressed version of Unicode that uses 8 bits to represent characters. UTF-16 is a special encoding that represent UCS(Universal Character System) symbols using 2 bytes to represent characters.
18. How to write XML processing instructions?
The XML processing instructions give commands or information to an application that is processing the XML data; it is application specific. It has the following format:
where is the end of procession instruction, the "target" is the name of the application that is expected to do the processing, and "instructions" is a string of characters that embodies the information or commands for the application to process. Note: there cannot be any space between the initial
An XML file may have multiple processing instructions to tell different applications to do similar things.
19. How XML treats with whitespace?
The spaces, carriage returns, line feeds and tabs are all treated as whitespace in XML. XML document uses the UNIX convention for line endings, which means that lines are ended with a linefeed character only -- ASCII code 10(DOS file uses a pair of ASCII codes 13 and 10). When parsed, that is treated simply as a single linefeed.
If you want to preserve whitespace, use a special attribute xml:space or set attribute to default to indicate it in a element declaration.
20. Is XML tag case-sensitive?
Yes. XML tags are case-sensitive. The start and end tags should be matched exactly.
21. Why do people say that XML is portable?
There are several reasons. First, it is written in a text format, which is readable by both human beings and text-editing software. Second, applications can parse and process XML documents, and human beings can also read them in case there is an error in processing. Third, XML document does not include formatting instructions, it can be displayed in various ways. Keeping data separate from formatting instructions means that the same data can be published to different media.
22. How to let browser display XML file?
There are two ways to do so:
o Use a style sheet to indicate to a browser how you want the content of the elements to be displayed, like Cascading Style Sheet(CSS) or Extensible Style Sheet Language(XSL).
o use a programming language to handle the XML document in programming code,like Java or JavaScript.
23. Which is better to store data using elements or using attributes?
There is no clear-cut to say which is better. It depends on the case. But it is worth noting that too many attributes make documents hard to read and attribute names must be unique. If more than 4 attributes in a tag are used, think about breaking up the tag into a number of enclosed tags.
Return to top
________________________________________
24. How to use JavaScript to display XML document?
To illustrate it, we use a simple XML document hello.xml as follows:
Hello guys!
In an HTML file called getxml.html:
Get data from XML document
Here comes:
Here is the display in your browser. Click the button to see what happens? Press the "F5" button on your keyboard to refresh the display.
________________________________________
Get data from XML document
Here comes:
________________________________________
25. What is DTD tag?
A DTD tag is a tag used in DTD definition file. It starts with . It tells parser how to handle xml file.
26. What is CDATA?
A CDATA is a section mark which works like
...in HTML, only more so--all whitespace in a CDATA section is significant, and characters in it are not interpreted as XML. A CDATA section starts with . If you have a section which contains many & or <, you can mark it, so the XML processor will not parse it.
27. What is the basic syntax for the document type declaration?
The basic syntax:
where the is part of a document's prolog; the root-name is the name of root tag; the DTD is a document type definition. It can be internal or external.
The document type declaration may have the following forms:
28. How the internal DTD looks like?
29.
30. 31.
32.
33. ]>
34.
35.
36. ....
37.
38. What is the syntax of element declaration?
39.
where name is the name of the element; CONTENT_MODEL can be set to EMPTY or ANY, or it can hold mixed content or child elements.
40. What is the meaning of the following statement?
41.
This is a DTD tag definition. The notation says that a slideshow element consists of one or more slide elements. If there is no plus sign after slide, it says that a slideshow has only one slide element. If the plus sign is replaced with question mark "?", it says there may be zero or one slide. If the plus sign is replaced with asterisk "*", it say that there may be zero or more slide elements.
42. What syntax should be used to describe a more children elements?
For example, if a and b represent child elements:
o a+ -- one or more occurences of a
o a* -- zero or more occurences of a
o a? -- a or nothing
o a, b -- a followed by b
o a | b -- a or b, but not both
o (expression) -- a unit may have more of above expressions
43. What the following tells us in a dtd file?
44. 1.
45. 2.
46. 3.
47. 4.
48. 5.
The first line says that a slideshow element contains one or more slide elements. The second line says that a slide element consists of a title followed by zero or more item elements. The third line says that a title element consists entirely of parsed character data(PCDATA). The "#" sign that precedes PCDATA indicates that what follows is a special word. The fourth line says the item element is either PCDATA or an item. The asterisk at the end says that either one can occur zero or more times in succession. The fifth line says that content is a parameter entity reference.
49. What is mixed-content model?
The content of a tag in the xml file can be #PCDATA or any number of item elements like the fourth line above.
50. Is DTD definition hierarchical?
No. The DTD definition is not hierarchical. But you can work around to make your xml tags hierarchical. For example, if you have a title for slideshow and a title for each slide, you can use slide-title to represent the title in slide and make a definition for slide-title. It is so called "hyphenation hierarchy. Otherwise, the title definition will work for every title in xml file.
51. What is special element value and how to use it?
There are two special values: ANY or EMPTY. The "ANY" notation says that the element may contain any other defined element, or PCDATA. The "EMPTY" notation says that the element contains no contents. For example an empty tag contains no contents.
52. How to reference a DTD file?
If the DTD definition is in a separate file from the XML document, you have to write something to reference it from the XML document. For example, if your slideshow.dtd is ready for use, then, in your xml document file, after the xml declaration, write:
The above statement says that the element slideshow tag will use definition in slideshow.dtd. The SYSTEM identifier specifies the location of the DTD file and the path is relative to the location of the xml document. You may use http:// or file:/ to indicate the path of the DTD file.
Or you can reference a definition within the XML document by using a square brackets like the following, rather than referring to an external DTD file.
...local subset definitions here...
]>
53. How to declare a public DTD?
Replace SYSTEM to PUBLIC and give url to that dtd.
"http://www.somewhere.com/someones/slideshow1.dtd" >
54. What is the meaning of ATTLIST? What do the following statements tell us?
ATTLIST means attribute list. The name that follows ATTLIST specifies the element for which the attributes are being defined. For example, you have a slideshow tag with title, date and author attributes, you may code as:
title CDATA #REQUIRED
date CDATA #IMPLIED
author CDATA "unknown"
>
The DTD tag ATTLIST begins the series of attribute definitions. The slideshow element has three attributes. The title, date and author are the names of attributes of slideshow. CDATA is a type of the attribute; it means unparsed charater data or a text string.
The #REQUIRED means the attribute value must be specified in the document. The #IMPLIED means the value need not be specified in the document.
55. What does the & sign mean in dtd file?
The & sign means an entity variable name. Note it should be ended with semicolon ";" sign. For example:
...
]>
...
©right; ...
Wherever the ©right; is parsed, it will be replaced with entity copyright sign ©.
56. How to declare a parameter entity reference?
Use to declare it and use an & as start and ; as end to enclose the parameter entity reference. For example, TODAY is a parameter entity reference.
]>
HELLO FROM HTML
WELCOME TO THE WILD WORLD
Save above file as greeting.xml, use your browser to look at it. You may get a similar display, except that the
Note: It is possible that your browser may not support XML. If you use MS IE 5.5 above, or NS 5.0 above, you may be able to see it.
57. How to declare an image tag in a DTD file?
You can declare an image tag in the following form:
1.
2. alt CDATA #IMPLIED
src CDATA #REQUIRED
type CDATA "image/gif"
>
3.
4.
The line one declares image as an optional element. The line 2 declares attributes of an image tag. For the moment, you can not declare an image tag like type ("image/gif", "image/jpeg"). The line 3 declares a notation named GIF that stands for the image/gif MIME type. The line 4 creates an external unparsed entity named some to refer to the external image file, image.gif.
58. What is conditional section?
Conditional section is a way to let XML document to choose which dtd should be "included" or "ignored". Use as an end. For example, you want to use a different versions of a DTD for xml document or sgml document, you may code as follows:
... XML-only definitions
]]>
... SGML-only definitions
]]>
... common definitions
59. How many entities are catagorized in dtd?
o Internal entity: An entity that is referenced in its own document content.
o External entity: An entity that is referenced in another file.
o General entity: including internal or external entity
o Parameter entity: An entity that contains DTD specifications that are referenced from within the DTD.
o Parsed entity: An entity that contains XML(text and markup) and is therefore parsed.
o Unparsed entity: An entity that contains binary data(like images)
Return to top
________________________________________
60. What is xmlns?
The xmlns stands for XML NameSpace. It is an attribute for a tag. It is used in DTD to prevent conflicts. For example, the following tells us the title element will use designated DTD.
xmlns CDATA #FIXED "http://www.example.com/slideshow">
...
or
Overview
or
...
or
...
...
or
...
Here we use "http:", you may use "urn:" instead.
61. What is xsi?
The "xsi" stands for XML Schema Instance like:
xsi:noNamespaceSchemaLocation='YourSchemaDefinition.xsd'
The line specifies the schema to use for elements in the document that do not have a namespace prefix.
62. Where to use XML?
XML can be used in many places:
o Data representation in Web, especially for Java client/server web.
o Data interchange in all sorts of transactions as long as both sides agree on.
o Document-Driven Programming(DDP)
o Binding
o Archiving
63. What is JAXP?
JAXP stands for Java APIs for XML, which let you write your Web application entirely in the Java programming language. There are two broad categories:
o Document-oriented -- processes XML documents using various parsers.
o Procedure-oriented -- including JAX-RPC, JAXM, and JAXR.
64. What is RELAX NG?
RELAX NG stands for Regular Language description for XML. It is simpler than XML structure schema and an emerging standard under the auspices of OASIS. NG stands for Next Generation. For more information on RELAX NG, see www.oasis-open.org/committees/relax-ng/
65. What is XML schema
XML Schema is a large, complex standard that has two parts. One part specifies structure relationships. (This is the largest and most complex part.) The other part specifies mechanisms for validating the content of XML elements by specifying a (potentially very sophisticated) datatype for each element. For more information on XML schema, visit www.w3c.org/XML/Schema
66. What is JAXM?
JAXM stands for Java APIs for XML Messaging. It provides a standard way to send XML documents over the internet form the Java platform. It is based on the SOAP 1.1 and SOAP with Attaqchements specifications which define a basic framework for exchanging XML messages. It can make one-way (asynchronous) messaging, rout of a message to more than one party and guarantee the delivery, whereas the JAX-RPC cannot.
67. How to get a Point-to-Point connection via JAXM?
All JAXM connections are created by using connection factory methods.
SOAPConnectionFactory factory = SOAPConnectionFactory.newInstance();
SOAPConnection con = factory.createConnection();
68. How to get a connection to the Messaging Provider via JAXM?
There are two ways to obtain this connection.
ProviderConnectionFactory pcFactory = ProviderConnectionFactory.newInstance();
ProviderConnection pcCon = pcFactory.createConnection();
or
Context ctx = getInitialContext();
ProviderConnectionFactory pcFactory = (ProviderConnectionFactory)ctx.lookup("SomeMsgProvider");
ProviderConnection con = pcFactory.createConnection();
69. How XML is related with other technologies?
There are many XML related technologies directly or non-directly:
o SAX -- Simple API for XML: reads and writes XML data in a server.
o DOM -- Document Object Model: converts an XML document into a collection of objects.
o JDOM -- Java DOM: processes more data-oriented structures.
o dom4j -- DOM for Java: a factory-based implementation, easier to modify for complex, special-purpose apps.
o DTD -- Document Type Definition: specifies the kinds of tags that can be included in XML document.
o Namespace -- writes an XML document that uses two or more sets of XML tags in modular fashion.
o XSL -- Extensible Stylesheet Language: specifies how to identify data, not how to display it.
o XSLT -- Extensible Stylesheet Language for Transformations: specifies what to convert an XML tag into.
o XSL-FO -- Extensible Stylesheet Language for Formatting Objects: specifies how to link multiple areas on a page.
o SAAJ -- SOAP with Attachments API for Java.
o JAXR -- Java API for XML Registries, used to look and find web services.
o TREX -- Tree Regular Expressions for XML, part of RELAX NG
o SOX -- Schema for Object-Oriented XML
o Schematron -- Schema for Object-Oriented XML, an assetion based schema by www.ascc.net.
o ebXML -- Electronic Business with XML developed by UN/CEFACT and OASIS
o cxml -- Commerce XML, more info at www.rosettanet.org
o etc.
70. What is the difference between SAX and DOM?
The Simple API for XML(SAX) and the Document Object Model(DOM) are both defined by the W3C. Unlike a SAX parser, a DOM parser allows random access to particular pieces of data in an XML document. Another difference is that with a SAX parser, you can only read an XML document, but with a DOM parser, you can build an object representation of the document and manipulate it in memory, adding a new element or deleting an existing one.
71. How to transform a DOM tree to an XML document?
Use the following code:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse("xxxList.xml");
Node rootNode = document.getDocumentElement();
NodeList list = document.getElementsByTagName("xxxx");
//add node
Text tnNode = document.createTextNode("yyyy");
newNameNode.appendChild(tnNode);
....
TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer transformer = transFactory.newTransformer();
DOMSource source = new DOMSource(document);
File newXML = new File("newXML.xml");
FileOutputStream os = new FileOutputStream(newXML);
StreamResult result = new StreamResult(os);
transformer.transform(source, result);
72. How to transform an XML document to an HTML document?
To perform the transformation, you need to obtain an XSLT transformer and use it to apply the style sheet to the XML data. The following code fragment obtains a transformer by instantiating a TransformerFactory object, reading in the style sheet and XML files, creating a file for the HTML output, and then finally obtaining the Transformer object transformer from the TransformerFactory object tFactory.
TransformerFactory tFactory = TransformerFactory.newInstance();
String stylesheet = "xxx.xsl";
String sourceId = "newXML.xml";
File yyyHTML = new File("yyyHTML.html");
FileOutputStream os = new FileOutputStream(yyyHTML);
Transformer transformer = tFactory.newTransformer(new StreamSource(stylesheet));
transformer.transform(new StreamSource(sourceId), new StreamResult(os));
73. What are major subcomponents of XSL?
The XML Stylesheet Language (XSL) has three major subcomponents:
1. XSL-FO -- The largest subcomponent. It describes font sizes, page layouts, and how information "flows" from one page to another.
2. XSLT -- A transformation language that lets you define a transformation from XML into some other format. Like producing HTML, a different XML structure, a plain text or other document format.
3. XPath -- A specification that lets you specify a path to an element.
74. What is transformation language in XSL?
Extensible Styles Language(XSL) has two parts:
a transformation language(XSLT) and a formatting language.
The transformation language lets you transform documents into different forms, while the formatting language actually formats and styles documents in various ways.
75. What is JAX-RPC?
JAX-RPC stands for Java API for XML-based RPC(Remote Procedure Call). It is an API for building Web services and clients that use RPC and XML.
In JAX-RPC, a remote procedure call is represented by an XML-based protocol such as SOAP. The SOAP specification defines the envelope structure, encoding rules, and convention for representing remote procedure calls and responses. These calls and responses are transmitted as SOAP messages (XML files) over HTTP.
With JAX-RPC, the developer does not generate or parse SOAP messages. It is the JAX-RPC runtime system that converts the API calls and responses to and from SOAP messages.
76. What is value type?
A value type is a class whose state may be passed between a client and remote service as a method parameter or return value. For example, an account class may have account number, account owner and amount field. These information may be passed between client and server as a method deposit parameter and a return value of method account query.
77. What kind of rules do the value type must follow?
To be supported by JAX-RPC, a value type must conform to the following rules:
o It must have a public default constructor.
o It must not implement (either directly or indirectly) the java.rmi.Remote interface.
o Its fields must be supported JAX-RPC types.
o The value type may contain public, private, or protected fields. The field of a value type must meet these requirements:
A public field cannot be final or transient.
A non-public field must have corresponding getter and setter methods.
Return to top
________________________________________
78. What is SAAJ?
SAAJ stands for SOAP(Simple Object Access Protocal) with Attachments API for Java. SAAJ is used mainly for the SOAP messaging that goes on behind the scenes in JAX-RPC and JAXR implementations.
Secondarily, it is an API that developers can use when they choose to write SOAP messaging applications directly rather than using JAX-RPC.
79. What is XML Registry?
An XML registry is an infrastructure that enables the building, deployment, and discovery of Web services. It is a neutral third party that facilitates dynamic and loosely coupled business-to-business (B2B) interactions. A registry is available to organizations as a shared resource, often in the form of a Web-based service.
There are many kinds of specifications for XML registries, including ebXML Registry and Repository and The Universal Description, Discovery, and Integration (UDDI).
80. What is JAXR?
JAXR stands for Java API for XML Registries. It enables Java software programmers to use an API to access a variety of XML registries. The current version of the JAXR specification can be found at http://java.sun.com/xml/downloads/jaxr.html
81. What is XHTML?
XHTML is an application of XML that tries to make XML documents look and act like HTML documents. The XHTML specification is a reformulation of HTML 4.0 into XML. The following is code of XHTML.
1.
2. 3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4.
5.
6.
7.
Welcome to XHTML!
8.
9.
The following is the display on your browser.
________________________________________
Here we display data from XML
Name:
Customer ID:
Department:
Purchase Date: 11/10/2003
Product: XML Book
<<<>>>
If the above example is not functional well in your browser, please check this independent html file to see the features.
________________________________________
82. How to display data from XML file in a tabular format?
83. Let's use the customer.xml above as a source file and use table tags to
84. display it.
85.
86.
87.
88.
89.
90.
91.
Here we display data from XML
92.
93.
Name | Customer ID | Purchase | Department | Product |
---|---|---|---|---|
106. 107. | 109. 110. | 112. 113. | 115. 116. | 118. 119. |
123.
124.
125.
126.
127.
128. The following is the display of the above html file. If you cannot see the
129. correct result from this page, it is probably that your browser may not accept
130. that, please copy the above code, save it to a separate file and see the
result.
________________________________________
Here we display data from XML
Name Customer ID Purchase Department Product
Aaron 12345 11/10/2003 Education XML Book
Betty 23456 10/12/2003 Travel Trip to Haiwaii
Cathy 34567 10/13/2003 Toys Game II Machine
Dan 45678 10/14/2003 IT DownloadWizard software
If you cannot see the data in this display on your browser, please click this independent html file
________________________________________
131. How to use XML DSO applet to connect XML file?
132. Use above customer.xml file as an example. Use applet tag to make a
133. connection as follows:
134. replace xml tags
135.
136.
137. with
138.
139. 140. code="com.ms.xml.dso.XMLDSO.class"
141. id="customers"
142. width="0" height="0"
143. mayscript="true">
144.
145.
Make sure the com.ms.xml.dso.XMLDSO.class is available for loading.
Return to top
________________________________________
JDBC
1. More JDBC questions
Return to top
Link shows these questions
JDBC Questions
________________________________________
1. What is JDBC?
JDBC may stand for Java Database Connectivity. It is also a trade mark. JDBC is a layer of abstraction that allows users to choose between databases. It allows you to change to a different database engine and to write to a single API. JDBC allows you to write database applications in Java without having to concern yourself with the underlying details of a particular database.
________________________________________
2. What are the two major components of JDBC?
One implementation interface for database manufacturers, the other implementation interface for application and applet writers.
________________________________________
3. What is JDBC Driver interface?
The JDBC Driver interface provides vendor-specific implementations of the abstract classes provided by the JDBC API. Each vendors driver must provide implementations of the java.sql.Connection,Statement,PreparedStatement, CallableStatement, ResultSet and Driver.
________________________________________
4. What are the common tasks of JDBC?
o Create an instance of a JDBC driver or load JDBC drivers through jdbc.drivers
o Register a driver
o Specify a database
o Open a database connection
o Submit a query
o Receive results
________________________________________
5. How to use JDBC to connect Microsoft Access?
Please see this page for detailed information.
________________________________________
6. What are four types of JDBC driver?
1. Type 1 Drivers
Bridge drivers such as the jdbc-odbc bridge. They rely on an intermediary such as ODBC to transfer the SQL calls to the database and also often rely on native code.
2. Type 2 Drivers
Use the existing database API to communicate with the database on the client. Faster than Type 1, but need native code and require additional permissions to work in an applet. Good for client-side connection.
3. Type 3 Drivers
Call the database API on the server.Flexible. Pure Java and no native code.
4. Type 4 Drivers
The hightest level of driver reimplements the database network API in Java. No native code.
7. ________________________________________
8. What packages are used by JDBC?
There are at least 8 packages:
0. java.sql.Driver
1. Connection
2. Statement
3. PreparedStatement
4. CallableStatement
5. ResultSet
6. ResultSetMetaData
7. DatabaseMetaData
________________________________________
9. There are three basic types of SQL statements, what are they?
0. Statement
1. callableStatement
2. PreparedStatement
________________________________________
10. What are the flow statements of JDBC?
A URL string -->getConnection-->DriverManager-->Driver-->Connection-->Statement-->executeQuery-->ResultSet.
________________________________________
11. What are the steps involved in establishing a connection?
This involves two steps: (1) loading the driver and (2) making the connection.
________________________________________
12. How can you load the drivers?
Loading the driver or drivers you want to use is very simple and involves just one line of code. If, for example, you want to use the JDBC-ODBC Bridge driver, the following code will load it:
Eg.
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Your driver documentation will give you the class name to use. For instance, if the class name is jdbc.DriverXYZ , you would load the driver with the following line of code:
E.g.
Class.forName("jdbc.DriverXYZ");
________________________________________
13. What Class.forName will do while loading drivers?
It is used to create an instance of a driver and register it with the DriverManager. When you have loaded a driver, it is available for making a connection with a DBMS.
________________________________________
14. How can you make the connection?
In establishing a connection is to have the appropriate driver connect to the DBMS. The following line of code illustrates the general idea:
E.g.
String url = "jdbc:odbc:Fred";
Connection con = DriverManager.getConnection(url, "Fernanda", "J8");
________________________________________
15. How can you create JDBC statements?
A Statement object is what sends your SQL statement to the DBMS. You simply create a Statement object and then execute it, supplying the appropriate execute method with the SQL statement you want to send. For a SELECT statement, the method to use is executeQuery. For statements that create or modify tables, the method to use is executeUpdate. E.g. It takes an instance of an active connection to create a Statement object. In the following example, we use our Connection object con to create the Statement object stmt :
Statement stmt = con.createStatement();
________________________________________
16. How to make a query?
Create a Statement object and calls the Statement.executeQuery method to select data from the database. The results of the query are returned in a ResultSet object.
Statement stmt = con.createStatement();
ResultSet results = stmt.executeQuery("SELECT data FROM aDatabase ");
________________________________________
17. How can you retrieve data from the ResultSet?
Use get methods to retrieve data from returned ResultSet object.
ResultSet rs = stmt.executeQuery("SELECT COF_NAME, PRICE FROM COFFEES");
String s = rs.getString("COF_NAME");
The method getString is invoked on the ResultSet object rs , so getString will retrieve (get) the value stored in the column COF_NAME in the current row of rs
________________________________________
18. How to navigate the ResultSet?
By default the result set cursor points to the row before the first row of the result set. A call to next() retrieves the first result set row. The cursor can also be moved by calling one of the following ResultSet methods:
o beforeFirst(): Default position. Puts cursor before the first row of the result set.
o first(): Puts cursor on the first row of the result set.
o last(): Puts cursor before the last row of the result set.
o afterLast() Puts cursor beyond last row of the result set. Calls to previous moves backwards through the ResultSet.
o absolute(pos): Puts cursor at the row number position where absolute(1) is the first row and absolute(-1) is the last row.
o relative(pos): Puts cursor at a row relative to its current position where relative(1) moves row cursor one row forward.
________________________________________
19. What are the different types of Statements?
0. Statement (use createStatement method)
1. Prepared Statement (Use prepareStatement method)
2. Callable Statement (Use prepareCall)
________________________________________
20. If you want to use the percent sign (%) as the percent sign and not have it interpreted as the SQL wildcard used in SQL LIKE queries, how to do that?
Use escape keyword. For example:
stmt.executeQuery("select tax from sales where tax like '10\%' {escape '\'}");
________________________________________
21. How to escape ' symbol found in the input line?
You may use a method to do so:
static public String escapeLine(String s) {
String retvalue = s;
if (s.indexOf ("'") != -1 ) {
StringBuffer hold = new StringBuffer();
char c;
for(int i=0; i < s.length(); i++ ) {
if ((c=s.charAt(i)) == '\'' ) {
hold.append ("''");
}else {
hold.append(c);
}
}
retvalue = hold.toString();
}
return retvalue;
}
Note that such method can be extended to escape any other characters that the database driver may interprete another way.
________________________________________
22. How to make an update?
Creates a Statement object and calls the Statement.executeUpdate method.
String updateString = "INSERT INTO aDatabase VALUES (some text)";
int count = stmt.executeUpdate(updateString);
________________________________________
23. How to update a ResultSet?
You can update a value in a result set by calling the ResultSet.update method on the row where the cursor is positioned. The type value here is the same used when retrieving a value from the result set, for example, updateString updates a String value and updateDouble updates a double value in the result set.
rs.first();
updateDouble("balance", rs.getDouble("balance") - 5.00);
The update applies only to the result set until the call to rs.updateRow(), which updates the underlying database.
To delete the current row, use rs.deleteRow().
To insert a new row, use rs.moveToInsertRow().
________________________________________
24. How can you use PreparedStatement?
This special type of statement is derived from the more general class, Statement. If you want to execute a Statement object many times, it will normally reduce execution time to use a PreparedStatement object instead. The advantage to this is that in most cases, this SQL statement will be sent to the DBMS right away, where it will be compiled. As a result, the PreparedStatement object contains not just an SQL statement, but an SQL statement that has been precompiled. This means that when the PreparedStatement is executed, the DBMS can just run the PreparedStatement 's SQL statement without having to compile it first.
PreparedStatement updateSales = con.prepareStatement("UPDATE COFFEES SET SALES = ? WHERE COF_NAME LIKE ?");
________________________________________
25. How to call a Stored Procedure from JDBC?
The first step is to create a CallableStatement object. As with Statement an and PreparedStatement objects, this is done with an open Connection object. A CallableStatement object contains a call to a stored procedure;
E.g.
CallableStatement cs = con.prepareCall("{call SHOW_SUPPLIERS}");
ResultSet rs = cs.executeQuery();
________________________________________
26. How to Retrieve Warnings?
SQLWarning objects are a subclass of SQLException that deal with database access warnings. Warnings do not stop the execution of an application, as exceptions do; they simply alert the user that something did not happen as planned. A warning can be reported on a Connection object, a Statement object (including PreparedStatement and CallableStatement objects), or a ResultSet object. Each of these classes has a getWarnings method, which you must invoke in order to see the first warning reported on the calling object
SQLWarning warning = stmt.getWarnings();
if (warning != null) {
while (warning != null) {
System.out.println("Message: " + warning.getMessage());
System.out.println("SQLState: " + warning.getSQLState());
System.out.print("Vendor error code: ");
System.out.println(warning.getErrorCode());
warning = warning.getNextWarning();
}
}
________________________________________
27. How to Make Updates to Update ResultSets?
Another new feature in the JDBC 2.0 API is the ability to update rows in a result set using methods in the Java programming language rather than having to send an SQL command. But before you can take advantage of this capability, you need to create a ResultSet object that is updatable. In order to do this, you supply the ResultSet constant CONCUR_UPDATABLE to the createStatement method.
Connection con = DriverManager.getConnection("jdbc:mySubprotocol:mySubName");
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
ResultSet uprs = ("SELECT COF_NAME, PRICE FROM COFFEES");
________________________________________
28. How to set a scroll type?
Both Statements and PreparedStatements have an additional constructor that accepts a scroll type and an update type parameter. The scroll type value can be one of the following values:
o ResultSet.TYPE_FORWARD_ONLY Default behavior in JDBC 1.0, application can only call next() on the result set.
o ResultSet.SCROLL_SENSITIVE ResultSet is fully navigable and updates are reflected in the result set as they occur.
o ResultSet.SCROLL_INSENSITIVE Result set is fully navigable, but updates are only visible after the result set is closed. You need to create a new result set to see the results.
________________________________________
29. How to set update type parameter?
In the constructors of Statements and PreparedStatements, you may use
o ResultSet.CONCUR_READ_ONLY The result set is read only.
o ResultSet.CONCUR_UPDATABLE The result set can be updated.
You may verify that your database supports these types by calling con.getMetaData().supportsResultSetConcurrency(ResultSet.SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
________________________________________
30. How to do a batch job?
By default, every JDBC statement is sent to the database individually. To send multiple statements at one time , use addBatch() method to append statements to the original statement and call executeBatch() method to submit entire statement.
Statement stmt = con.createStatement();
stmt.addBatch("update registration set balance=balance-5.00 where theuser="+theuser);
stmt.addBatch("insert into auctionitems(description, startprice) values("+description+","+startprice+")");
...
int[] results = stmt.executeBatch();
The return result of the addBatch() method is an array of row counts affected for each statement executed in the batch job. If a problem occurred, a java.sql.BatchUpdateException is thrown. An incomplete array of row counts can be obtained from BatchUpdateException by calling its getUpdateCounts() method.
31. How to store and retrieve an image?
To store an image, you may use the code:
int itemnumber=400456;
File file = new File(itemnumber+".jpg");
FileInputStream fis = new FileInputStream(file);
PreparedStatement pstmt = con.prepareStatement("update auctionitems set theimage=? where id= ?");
pstmt.setBinaryStream(1, fis, (int)file.length()):
pstmt.setInt(2, itemnumber);
pstmt.executeUpdate();
pstmt.close();
fis.close();
To retrieve an image:
int itemnumber=400456;
byte[] imageBytes;//hold an image bytes to pass to createImage().
PreparedStatement pstmt = con.prepareStatement("select theimage from auctionitems where id= ?");
pstmt.setInt(1, itemnumber);
ResultSet rs=pstmt.executeQuery();
if(rs.next()) {
imageBytes = rs.getBytes(1);
}
pstmt.close();
rs.close();
Image auctionimage = Toolkit.getDefaultToolkit().createImage(imageBytes);
________________________________________
32. How to store and retrive an object?
A class can be serialized to a binary database field in much the same way as the image. You may use the code above to store and retrive an object.
________________________________________
33. How to use meta data to check a column type?
Use getMetaData().getColumnType() method to check data type. For example to retrieve an Integer, you may check it first:
int count=0;
Connection con=getConnection();
Statement stmt= con.createStatement();
stmt.executeQuery("select counter from aTable");
ResultSet rs = stmt.getResultSet();
if(rs.next()) {
if(rs.getMetaData().getColumnType(1) == Types.INTEGER) {
Integer i=(Integer)rs.getObject(1);
count=i.intValue();
}
}
rs.close();
________________________________________
34. Why cannot java.util.Date match with java.sql.Date?
Because java.util.Date represents both date and time. SQL has three types to represent date and time.
o java.sql.Date -- (00/00/00)
o java.sql.Time -- (00:00:00)
o java.sql.Timestamp -- in nanoseconds
Note that they are subclasses of java.util.Date.
________________________________________
35. How to convert java.util.Date value to java.sql.Date?
Use the code below:
Calendar currenttime=Calendar.getInstance();
java.sql.Date startdate= new java.sql.Date((currenttime.getTime()).getTime());
or
SimpleDateFormat template = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date enddate = new java.util.Date("10/31/99");
java.sql.Date sqlDate = java.sql.Date.valueOf(template.format(enddate));
________________________________________
Note: Most of sample codes are cited from Sun's JDBC tutorials.
________________________________________
JSP
1. More JSP questions
2. What is a JSP and what is it used for?
Java Server Pages (JSP) is a platform independent presentation layer technology that comes with SUN’s J2EE platform. JSPs are normal HTML pages with Java code pieces embedded in them. JSP pages are saved to *.jsp files. A JSP compiler is used in the background to generate a Servlet from the JSP page.
3. What is difference between custom JSP tags and beans?
Custom JSP tag is a tag you defined. You define how a tag, its attributes and its body are interpreted, and then group your tags into collections called tag libraries that can be used in any number of JSP files. To use custom JSP tags, you need to define three separate components:
1. the tag handler class that defines the tag's behavior
2. the tag library descriptor file that maps the XML element names to the tag implementations
3. the JSP file that uses the tag library
When the first two components are done, you can use the tag by using taglib directive:
<%@ taglib uri="xxx.tld" prefix="..." %>
Then you are ready to use the tags you defined. Let's say the tag prefix is test:
JavaBeans are Java utility classes you defined. Beans have a standard format for Java classes. You use tags
to declare a bean and use
to set value of the bean class and use
to get value of the bean class.
Custom tags and beans accomplish the same goals -- encapsulating complex behavior into simple and accessible forms. There are several differences:
o Custom tags can manipulate JSP content; beans cannot.
o Complex operations can be reduced to a significantly simpler form with custom tags than with beans.
o Custom tags require quite a bit more work to set up than do beans.
o Custom tags usually define relatively self-contained behavior, whereas beans are often defined in one servlet and used in a different servlet or JSP page.
o Custom tags are available only in JSP 1.1 and later, but beans can be used in all JSP 1.x versions.
4. what are the two kinds of comments in JSP and whats the difference between them
<%-- JSP Comment --%>
JSP Questions
________________________________________
1. What is JSP technology?
Java Server Page is a standard Java extension that is defined on top of the servlet Extensions. The goal of JSP is the simplified creation and management of dynamic Web pages. JSPs are secure, platform-independent, and best of all, make use of Java as a server-side scripting language.
________________________________________
2. What is JSP page?
A JSP page is a text-based document that contains two types of text: static template data, which can be expressed in any text-based format such as HTML, SVG, WML, and XML, and JSP elements, which construct dynamic content.
________________________________________
3. What are the implicit objects?
Implicit objects are objects that are created by the web container and contain information related to a particular request, page, or application. They are:
o request
o response
o pageContext
o session
o application
o out
o config
o page
o exception
________________________________________
4. How many JSP scripting elements and what are they?
There are three scripting language elements:
1. declarations
2. scriptlets
3. expressions
________________________________________
5. Why are JSP pages the preferred API for creating a web-based client program?
Because no plug-ins or security policy files are needed on the client systems(applet does). Also, JSP pages enable cleaner and more module application design because they provide a way to separate applications programming from web page design. This means personnel involved in web page design do not need to understand Java programming language syntax to do their jobs.
________________________________________
6. Is JSP technology extensible?
YES. JSP technology is extensible through the development of custom actions, or tags, which are encapsulated in tag libraries.
________________________________________
7. What are the two kinds of comments in JSP and what's the difference between them?
<%-- JSP Comment --%>
________________________________________
8. In the Servlet 2.4 specification SingleThreadModel has been deprecates, why?
Because it is not practical to have such model. Whether you set isThreadSafe to true or false, you should take care of concurrent client requests to the JSP page by synchronizing access to any shared objects defined at the page level.
________________________________________
9. What is difference between custom JSP tags and beans?
Custom JSP tag is a tag you defined. You define how a tag, its attributes and its body are interpreted, and then group your tags into collections called tag libraries that can be used in any number of JSP files. To use custom JSP tags, you need to define three separate components:
0. the tag handler class that defines the tag's behavior
1. the tag library descriptor file that maps the XML element names to the tag implementations
2. the JSP file that uses the tag library
When the first two components are done, you can use the tag by using taglib directive:
<%@ taglib uri="xxx.tld" prefix="..." %>
Then you are ready to use the tags you defined. Let's say the tag prefix is test:
JavaBeans are Java utility classes you defined. Beans have a standard format for Java classes. You use tags
to declare a bean and use
to set value of the bean class and use
to get value of the bean class.
Custom tags and beans accomplish the same goals -- encapsulating complex behavior into simple and accessible forms. There are several differences:
o Custom tags can manipulate JSP content; beans cannot.
o Complex operations can be reduced to a significantly simpler form with custom tags than with beans.
o Custom tags require quite a bit more work to set up than do beans.
o Custom tags usually define relatively self-contained behavior, whereas beans are often defined in one servlet and used in a different servlet or JSP page.
o Custom tags are available only in JSP 1.1 and later, but beans can be used in all JSP 1.x versions.
Return to top
________________________________________
Servlet
1. More Servlet questions
2. What mechanisms are used by a Servlet Container to maintain session information?
Cookies, URL rewriting, and HTTPS protocol information are used to maintain session information
3. Difference between GET and POST
In GET, your entire form submission can be encapsulated in one URL, like a hyperlink. query length is limited to 260 characters, not secure, faster, quick and easy.
In POST, your name/value pairs inside the body of the HTTP request, which makes for a cleaner URL and imposes no size limitations on the form's output. It is used to send a chunk of data to the server to be processed, more versatile, most secure.
4. What is session?
The session is an object used by a servlet to track a user's interaction with a Web application across multiple HTTP requests.
5. What is servlet mapping?
The servlet mapping defines an association between a URL pattern and a servlet. The mapping is used to map requests to servlets.
6. What is servlet context ?
The servlet context is an object that contains a servlet's view of the Web application within which the servlet is running. Using the context, a servlet can log events, obtain URL references to resources, and set and store attributes that other servlets in the context can use. (answer supplied by Sun's tutorial).
7. Which interface must be implemented by all servlets?
Servlet interface.
Servlet Questions
________________________________________
1. What is the servlet?
Servlets are modules that extend request/response-oriented servers, such as Java-enabled web servers. For example, a servlet may be responsible for taking data in an HTML order-entry form and applying the business logic used to update a company's order database.
2. What's the difference between servlets and applets?
Servlets are to servers; applets are to browsers. Unlike applets, however, servlets have no graphical user interface.
3. What's the advantages using servlets than using CGI?
Servlets provide a way to generate dynamic documents that is both easier to write and faster to run. It is efficient, convenient, powerful, portable, secure and inexpensive. Servlets also address the problem of doing server-side programming with platform-specific APIs: they are developed with Java Servlet API, a standard Java extension.
4. What are the uses of Servlets?
A servlet can handle multiple requests concurrently, and can synchronize requests. This allows servlets to support systems such as on-line conferencing. Servlets can forward requests to other servers and servlets. Thus servlets can be used to balance load among several servers that mirror the same content, and to partition a single logical service over several servers, according to task type or organizational boundaries.
5. What's the Servlet Interface?
The central abstraction in the Servlet API is the Servlet interface. All servlets implement this interface, either directly or, more commonly, by extending a class that implements it such as HttpServlet.
Servlets-->Generic Servlet-->HttpServlet-->MyServlet.
The Servlet interface declares, but does not implement, methods that manage the servlet and its communications with clients. Servlet writers provide some or all of these methods when developing a servlet.
6. When a servlet accepts a call from a client, it receives two objects. What are they?
ServeltRequest: which encapsulates the communication from the client to the server.
ServletResponse: which encapsulates the communication from the servlet back to the client.
ServletRequest and ServletResponse are interfaces defined by the javax.servlet package.
7. What information that the ServletRequest interface allows the servlet access to?
Information such as the names of the parameters passed in by the client, the protocol (scheme) being used by the client, and the names of the remote host that made the request and the server that received it. The input stream, ServletInputStream.Servlets use the input stream to get data from clients that use application protocols such as the HTTP POST and PUT methods.
8. What information that the ServletResponse interface gives the servlet methods for replying to the client?
It Allows the servlet to set the content length and MIME type of the reply. Provides an output stream, ServletOutputStream and a Writer through which the servlet can send the reply data.
9. If you want a servlet to take the same action for both GET and POST request, what should you do?
Simply have doGet call doPost, or vice versa.
10. What is the servlet life cycle?
Each servlet has the same life cycle:
A server loads and initializes the servlet (init())
The servlet handles zero or more client requests (service())
The server removes the servlet (destroy()) (some servers do this step only when they shut down)
11. Which code line must be set before any of the lines that use the PrintWriter?
setContentType() method must be set before transmitting the actual document.
12. How HTTP Servlet handles client requests?
An HTTP Servlet handles client requests through its service method. The service method supports standard HTTP client requests by dispatching each request to a method designed to handle that request.
13. When using servlets to build the HTML, you build a DOCTYPE line, why do you do that?
I know all major browsers ignore it even though the HTML 3.2 and 4.0 specifications require it. But building a DOCTYPE line tells HTML validators which version of HTML you are using so they know which specification to check your document against. These validators are valuable debugging services, helping you catch HTML syntax errors.
http://validator.w3.org and
http://www.htmlhelp.com/tools/validator/
are two major online validators.
Return to top
________________________________________
Struts
1. More Struts questions
2. What is Struts?
Struts is a web page development framework and an open source software that helps developers build web applications quickly and easily. Struts combines Java Servlets, Java Server Pages, custom tags, and message resources into a unified framework. It is a cooperative, synergistic platform, suitable for development teams, independent developers, and everyone between.
Struts Questions
________________________________________
1. What is Struts?
Struts is a web page development framework and an open source software that helps developers build web applications quickly and easily. Struts combines Java Servlets, Java Server Pages, custom tags, and message resources into a unified framework. It is a cooperative, synergistic platform, suitable for development teams, independent developers, and everyone between.
2. Who makes the Struts?
Struts is hosted by the Apache Software Foundation(ASF) as part of its Jakarta project, like Tomcat, Ant and Velocity.
3. Why it called Struts?
Because the designers want to remind us of the invisible underpinnings that hold up our houses, buildings, bridges, and ourselves when we are on stilts. This excellent description of Struts reflect the role the Struts plays in developing web applications.
4. Do we need to pay the Struts if being used in commercial purpose?
No. Struts is available for commercial use at no charge under the Apache Software License. You can also integrate the Struts components into your own framework just as if they were writtern in house without any red tape, fees, or other hassles.
5. What are the core classes of Struts?
Action, ActionForm, ActionServlet, ActionMapping, ActionForward are basic classes of Structs.
6. What is the design role played by Struts?
The role played by Structs is controller in Model/View/Controller(MVC) style. The View is played by JSP and Model is played by JDBC or generic data source classes. The Struts controller is a set of programmable components that allow developers to define exactly how the application interacts with the user.
7. How Struts control data flow?
Struts implements the MVC/Layers pattern through the use of ActionForwards and ActionMappings to keep control-flow decisions out of presentation layer.
8. What configuration files are used in Struts?
1. ApplicationResourcesl.properties
2. struts-config.xml
These two files are used to bridge the gap between the Controller and the Model.
9. What helpers in the form of JSP pages are provided in Struts framework?
o struts-html.tld
o struts-bean.tld
o struts-logic.tld
10. Is Struts efficient?
o The Struts is not only thread-safe but thread-dependent(instantiates each Action once and allows other requests to be threaded through the original object.
o ActionForm beans minimize subclass code and shorten subclass hierarchies
o The Struts tag libraries provide general-purpose functionality
o The Struts components are reusable by the application
o The Struts localization strategies reduce the need for redundant JSPs
o The Struts is designed with an open architecture--subclass available
o The Struts is lightweight (5 core packages, 5 tag libraries)
o The Struts is open source and well documented (code to be examined easily)
o The Struts is model neutral
________________________________________
Return to top
________________________________________
EJB
1. More EJB questions
2. What is session Facade
Session Facade is a design pattern to access the Entity bean through local interface than acessing directly. It increases the performance over the network. In this case we call session bean which on turn call entity bean
3. what is the difference between session and entity bean?
Session beans are business data and have not any persistance. Entity beans are Data Objects and have more persistance.
EJB Questions
________________________________________
1. What is EJB?
EJB stands for Enterprise JavaBean and is the widely-adopted server side component architecture for J2EE. it enables rapid development of mission-critical application that are versatile, reusable and portable across middleware while protecting IT investment and preventing vendor lock-in.
2. What is EJB role in J2EE?
EJB technology is the core of J2EE. It enables developers to write reusable and portable server-side business logic for the J2EE platform.
3. What is the difference between EJB and Java beans?
EJB is a specification for J2EE server, not a product; Java beans may be a graphical component in IDE.
4. What are the key features of the EJB technology?
1. EJB components are server-side components written entirely in the Java programming language
2. EJB components contain business logic only - no system-level programming & services, such as transactions, security, life-cycle, threading, persistence, etc. are automatically managed for the EJB component by the EJB server.
3. EJB architecture is inherently transactional, distributed, portable multi-tier, scalable and secure.
4. EJB components are fully portable across any EJB server and any OS.
5. EJB architecture is wire-protocol neutral--any protocol can be utilized like IIOP,JRMP, HTTP, DCOM,etc.
5. What are the key benefits of the EJB technology?
o Rapid application development
o Broad industry adoption
o Application portability
o Protection of IT investment
6. How many enterprice beans?
There are three kinds of enterprise beans:
o session beans,
o entity beans, and
o message-driven beans.
7. What is message-driven bean?
A message-driven bean combines features of a session bean and a Java Message Service (JMS) message listener, allowing a business component to receive JMS. A message-driven bean enables asynchronous clients to access the business logic in the EJB tier.
8. What is Entity Bean and Session Bean ?
Entity Bean is a Java class which implements an Enterprise Bean interface and provides the implementation of the business methods. There are two types: Container Managed Persistence(CMP) and Bean-Managed Persistence(BMP).
Session Bean is used to represent a workflow on behalf of a client. There are two types: Stateless and Stateful. Stateless bean is the simplest bean. It doesn't maintain any conversational state with clients between method invocations. Stateful bean maintains state between invocations.
________________________________________
Return to top
________________________________________
J2EE
1. More J2EE questions
2. What is difference between J2EE 1.3 and J2EE 1.4?
J2EE 1.4 is an enhancement version of J2EE 1.3. It is the most complete Web services platform ever.
J2EE 1.4 includes:
o Java API for XML-Based RPC (JAX-RPC 1.1)
o SOAP with Attachments API for Java (SAAJ),
o Web Services for J2EE(JSR 921)
o J2EE Management Model(1.0)
o J2EE Deployment API(1.1)
o Java Management Extensions (JMX),
o Java Authorization Contract for Containers(JavaACC)
o Java API for XML Registries (JAXR)
o Servlet 2.4
o JSP 2.0
o EJB 2.1
o JMS 1.1
o J2EE Connector 1.5
The J2EE 1.4 features complete Web services support through the new JAX-RPC 1.1 API, which supports service endpoints based on servlets and enterprise beans. JAX-RPC 1.1 provides interoperability with Web services based on the WSDL and SOAP protocols.
The J2EE 1.4 platform also supports the Web Services for J2EE specification (JSR 921), which defines deployment requirements for Web services and utilizes the JAX-RPC programming model.
In addition to numerous Web services APIs, J2EE 1.4 platform also features support for the WS-I Basic Profile 1.0. This means that in addition to platform independence and complete Web services support, J2EE 1.4 offers platform Web services interoperability.
The J2EE 1.4 platform also introduces the J2EE Management 1.0 API, which defines the information model for J2EE management, including the standard Management EJB (MEJB). The J2EE Management 1.0 API uses the Java Management Extensions API (JMX).
The J2EE 1.4 platform also introduces the J2EE Deployment 1.1 API, which provides a standard API for deployment of J2EE applications.
The J2EE 1.4 platform includes security enhancements via the introduction of the Java Authorization Contract for Containers (JavaACC). The JavaACC API improves security by standardizing how authentication mechanisms are integrated into J2EE containers.
The J2EE platform now makes it easier to develop web front ends with enhancements to Java Servlet and JavaServer Pages (JSP) technologies. Servlets now support request listeners and enhanced filters. JSP technology has simplified the page and extension development models with the introduction of a simple expression language, tag files, and a simpler tag extension API, among other features. This makes it easier than ever for developers to build JSP-enabled pages, especially those who are familiar with scripting languages.
Other enhancements to the J2EE platform include the J2EE Connector Architecture, which provides incoming resource adapter and Java Message Service (JMS) pluggability. New features in Enterprise JavaBeans (EJB) technology include Web service endpoints, a timer service, and enhancements to EJB QL and message-driven beans.
The J2EE 1.4 platform also includes enhancements to deployment descriptors. They are now defined using XML Schema which can also be used by developers to validate their XML structures.
Note: The above information comes from SUN released notes.
3. Do you have to use design pattern in J2EE project?
Yes. If I do it, I will use it. Learning design pattern will boost my coding skill.
4. Is J2EE a super set of J2SE?
Yes
J2EE General Questions
________________________________________
1. What is J2EE?
J2EE is an environment for developing and deploying enterprise applications. The J2EE platform consists of a set of services, application programming interfaces (APIs), and protocols that provide the functionality for developing multitiered, web-based applications.
2. What is the J2EE module?
A J2EE module consists of one or more J2EE components for the same container type and one component deployment descriptor of that type.
3. What are the components of J2EE application?
A J2EE component is a self-contained functional software unit that is assembled into a J2EE application with its related classes and files and communicates with other components. The J2EE specification defines the following J2EE components:
o Application clients and applets are client components.
o Java Servlet and JavaServer PagesTM (JSPTM) technology components are web components.
o Enterprise JavaBeansTM (EJBTM) components (enterprise beans) are business components.
o Resource adapter components provided by EIS and tool vendors.
4. What are the four types of J2EE modules?
1. Application client module
2. Web module
3. Enterprise JavaBeans module
4. Resource adapter module
5. What does application client module contain?
The application client module contains:
o class files,
o an application client deployment descriptor.
Application client modules are packaged as JAR files with a .jar extension.
6. What does web module contain?
The web module contains:
o JSP files,
o class files for servlets,
o GIF and HTML files, and
o a Web deployment descriptor.
Web modules are packaged as JAR files with a .war (Web ARchive) extension.
7. What does Enterprise JavaBeans module contain?
The Enterprise JavaBeans module contains:
o class files for enterprise beans
o an EJB deployment descriptor.
EJB modules are packaged as JAR files with a .jar extension.
8. What does resource adapt module contain?
The resource adapt module contains:
o all Java interfaces,
o classes,
o native libraries,
o other documentation,
o a resource adapter deployment descriptor.
Resource adapter modules are packages as JAR files with a .rar (Resource adapter ARchive) extension.
9. How many development roles are involved in J2EE application?
There are at least 5 roles involved:
0. Enterprise Bean Developer
Writes and compiles the source code
Specifies the deployment descriptor
Bundles the .class files and deployment descriptor into an EJB JAR file
1. Web Component Developer
Writes and compiles servlet source code
Writes JSP and HTML files
Specifies the deployment descriptor for the Web component
Bundles the .class, .jsp, .html, and deployment descriptor files in the WAR file
2. J2EE Application Client Developer
Writes and compiles the source code
Specifies the deployment descriptor for the client
Bundles the .class files and deployment descriptor into the JAR file
3. Application Assembler The application assembler is the company or person who receives application component JAR files from component providers and assembles them into a J2EE application EAR file. The assembler or deployer can edit the deployment descriptor directly or use tools that correctly add XML tags according to interactive selections. A software developer performs the following tasks to deliver an EAR file containing the J2EE application:
Assembles EJB JAR and WAR files created in the previous phases into a J2EE application (EAR) file
Specifies the deployment descriptor for the J2EE application
Verifies that the contents of the EAR file are well formed and comply with the J2EE specification
4. Application Deployer and Administrator
Configures and deploys the J2EE application
Resolves external dependencies
Specifies security settings & attributes
Assigns transaction attributes and sets transaction controls
Specifies connections to databases
Deploys or installs the J2EE application EAR file into the J2EE server
Administers the computing and networking infrastructure where J2EE applications run
Oversees the runtime environment
But a developer role depends on the job assignment. For a small company, one developer may take these 5 roles altogether.
10. What APIs are available for developing a J2EE application?
o Enterprise JavaBeans Technology(3 beans: Session Beans, Entity Beans and Message-Driven Beans)
o JDBC API(application level interface and service provider interface or driver)
o Java Servlet Technology(Servlet)
o Java ServerPage Technology(JSP)
o Java Message Service(JMS)
o Java Naming and Directory Interface(JNDI)
o Java Transaction API(JTA)
o JavaMail API
o JavaBeans Activation Framework(JAF used by JavaMail)
o Java API for XML Processiong(JAXP,SAX, DOM, XSLT)
o Java API for XML Registries(JAXR)
o Java API for XML-Based RPC(JAX-RPC)-SOAP standard and HTTP
o SOAP with Attachments API for Java(SAAJ)-- low-level API upon which JAX-RPC depends
o J2EE Connector Architecture
o Java Authentication and Authorization Service(JAAS)
11. What is difference between J2EE 1.3 and J2EE 1.4?
J2EE 1.4 is an enhancement version of J2EE 1.3. It is the most complete Web services platform ever.
J2EE 1.4 includes:
o Java API for XML-Based RPC (JAX-RPC 1.1)
o SOAP with Attachments API for Java (SAAJ),
o Web Services for J2EE(JSR 921)
o J2EE Management Model(1.0)
o J2EE Deployment API(1.1)
o Java Management Extensions (JMX),
o Java Authorization Contract for Containers(JavaACC)
o Java API for XML Registries (JAXR)
o Servlet 2.4
o JSP 2.0
o EJB 2.1
o JMS 1.1
o J2EE Connector 1.5
The J2EE 1.4 features complete Web services support through the new JAX-RPC 1.1 API, which supports service endpoints based on servlets and enterprise beans. JAX-RPC 1.1 provides interoperability with Web services based on the WSDL and SOAP protocols.
The J2EE 1.4 platform also supports the Web Services for J2EE specification (JSR 921), which defines deployment requirements for Web services and utilizes the JAX-RPC programming model.
In addition to numerous Web services APIs, J2EE 1.4 platform also features support for the WS-I Basic Profile 1.0. This means that in addition to platform independence and complete Web services support, J2EE 1.4 offers platform Web services interoperability.
The J2EE 1.4 platform also introduces the J2EE Management 1.0 API, which defines the information model for J2EE management, including the standard Management EJB (MEJB). The J2EE Management 1.0 API uses the Java Management Extensions API (JMX).
The J2EE 1.4 platform also introduces the J2EE Deployment 1.1 API, which provides a standard API for deployment of J2EE applications.
The J2EE 1.4 platform includes security enhancements via the introduction of the Java Authorization Contract for Containers (JavaACC). The JavaACC API improves security by standardizing how authentication mechanisms are integrated into J2EE containers.
The J2EE platform now makes it easier to develop web front ends with enhancements to Java Servlet and JavaServer Pages (JSP) technologies. Servlets now support request listeners and enhanced filters. JSP technology has simplified the page and extension development models with the introduction of a simple expression language, tag files, and a simpler tag extension API, among other features. This makes it easier than ever for developers to build JSP-enabled pages, especially those who are familiar with scripting languages.
Other enhancements to the J2EE platform include the J2EE Connector Architecture, which provides incoming resource adapter and Java Message Service (JMS) pluggability. New features in Enterprise JavaBeans (EJB) technology include Web service endpoints, a timer service, and enhancements to EJB QL and message-driven beans.
The J2EE 1.4 platform also includes enhancements to deployment descriptors. They are now defined using XML Schema which can also be used by developers to validate their XML structures.
Note: The above information comes from SUN released notes.
12. Is J2EE application only a web-based?
NO. A J2EE application can be web-based or non-web-based. if an application client executes on the client machine, it is a non-web-based J2EE application. The J2EE application can provide a way for users to handle tasks such as J2EE system or application administration. It typically has a graphical user interface created from Swing or AWT APIs, or a command-line interface. When user request, it can open an HTTP connection to establish communication with a servlet running in the web tier.
13. Are JavaBeans J2EE components?
NO. JavaBeans components are not considered J2EE components by the J2EE specification. JavaBeans components written for the J2EE platform have instance variables and get and set methods for accessing the data in the instance variables. JavaBeans components used in this way are typically simple in design and implementation, but should conform to the naming and design conventions outlined in the JavaBeans component architecture.
14. Is HTML page a web component?
NO. Static HTML pages and applets are bundled with web components during application assembly, but are not considered web components by the J2EE specification. Even the server-side utility classes are not considered web components,either.
15. What is the container?
A container is a runtime support of a system-level entity. Containers provide components with services such as lifecycle management, security, deployment, and threading.
16. What is the web container?
Servlet and JSP containers are collectively referred to as Web containers.
17. What is the thin client?
A thin client is a lightweight interface to the application that does not have such operations like query databases, execute complex business rules, or connect to legacy applications.
18. What are types of J2EE clients?
o Applets
o Application clients
o Java Web Start-enabled rich clients, powered by Java Web Start technology.
o Wireless clients, based on Mobile Information Device Profile (MIDP) technology.
19. What is deployment descriptor?
A deployment descriptor is an Extensible Markup Language (XML) text-based file with an .xml extension that describes a component's deployment settings. A J2EE application and each of its modules has its own deployment descriptor.
20. What is the EAR file?
An EAR file is a standard JAR file with an .ear extension, named from Enterprice ARchive file. A J2EE application with all of its modules is delivered in EAR file.
21. What is JTA and JTS?
JTA is the abbreviation for the Java Transaction API. JTS is the abbreviation for the Jave Transaction Service. JTA provides a standard interface and allows you to demarcate transactions in a manner that is independent of the transaction manager implementation. The J2EE SDK implements the transaction manager with JTS. But your code doesn't call the JTS methods directly. Instead, it invokes the JTA methods, which then call the lower-level JTS routines.
Therefore, JTA is a high level transaction interface that your application uses to control transaction. and JTS is a low level transaction interface and ejb uses behind the scenes (client code doesn't directly interact with JTS. It is based on object transaction service(OTS) which is part of CORBA.
22. What is JAXP?
JAXP stands for Java API for XML. XML is a language for representing and describing text-based data which can be read and handled by any program or tool that uses XML APIs.
23. What is J2EE Connector?
The J2EE Connector API is used by J2EE tools vendors and system integrators to create resource adapters that support access to enterprise information systems that can be plugged into any J2EE product. Each type of database or EIS has a different resource adapter.
24. What is JAAP?
The Java Authentication and Authorization Service (JAAS) provides a way for a J2EE application to authenticate and authorize a specific user or group of users to run it. It is a standard Pluggable Authentication Module (PAM) framework that extends the Java 2 platform security architecture to support user-based authorization.
25. What is Model 1?
Using JSP technology alone to develop Web page. Such term is used in the earlier JSP specification. Model 1 architecture is suitable for applications that have very simple page flow, have little need for centralized security control or logging, and change little over time. Model 1 applications can often be refactored to Model 2 when application requirements change.
26. What is Model 2?
Using JSP and Servelet together to develop Web page. Model 2 applications are easier to maintain and extend, because views do not refer to each other directly.
27. What is Struts?
A Web page development framework. Struts combines Java Servlets, Java Server Pages, custom tags, and message resources into a unified framework. It is a cooperative, synergistic platform, suitable for development teams, independent developers, and everyone between.
28. How is the MVC design pattern used in Struts framework?
In the MVC design pattern, application flow is mediated by a central Controller. The Controller delegates requests to an appropriate handler. The handlers are tied to a Model, and each handler acts as an adapter between the request and the Model. The Model represents, or encapsulates, an application's business logic or state. Control is usually then forwarded back through the Controller to the appropriate View. The forwarding can be determined by consulting a set of mappings, usually loaded from a database or configuration file. This provides a loose coupling between the View and Model, which can make an application significantly easier to create and maintain.
Controller--Servlet controller which supplied by Struts itself; View --- what you can see on the screen, a JSP page and presentation components; Model --- System state and a business logic JavaBeans.
29. Do you have to use design pattern in J2EE project?
Yes. If I do it, I will use it. Learning design pattern will boost my coding skill.
30. Is J2EE a super set of J2SE?
Yes
Return to top
________________________________________
JMS
1. What is JMS?
Java Message Service is the new standard for interclient communication. It allows J2EE application components to create, send, receive, and read messages. It enables distributed communication that is loosely coupled, reliable, and asynchronous.
2. what type messaging is provided by JMS
Both synchronous and asynschronous
3. How may messaging models do JMS provide for and what are they?
JMS provide for two messaging models, publish-and-subscribe and point-to-point queuing
Return to top
________________________________________
Misc
1. What is Maven?
Maven is a Java project management and project comprehension tool developed by http://maven.apache.org. Maven is based on the concept of a project object model (POM) in that all the artifacts produced by Maven are a result of consulting a well defined model for your project. Builds, documentation, source metrics, source cross-references and a countless number of reports are all controlled by your POM. Maven has the following features.
o Making the build process easy
o Providing a uniform build system
o Providing quality project information
o Providing clear development process guidelines
o Providing guidelines for thorough testing practices
o Providing coherent visualization of project information
o Allowing transparent migration to new features
2. What is JPay? The JPay is Java payment API. It supports payments in an open, Web-like environment and allow Java applications to use a third-party payment service to charge users for using an application or accessing content. For more information, please visit this page
3. What is Jeson?
Jetson is an automation toolset designed to simplify and speed the development and deployment of J2EE applications. Jetson enables rapid Enterprise JavaBean (EJB)-based application generation; allows business rules to be exposed as Web services; supports most common databases; and features a security model that conforms to Java Authentication and Authorization Service (JAAS). More information can be found at http://www.JetsonJ2EE.com.
4. What is Jamaica?
Jamaica (like Jasmin) is an abstract assembly language for Java Virtual Machine(JVM). It uses Java language syntax to define class structures and uses mnemonics or symbolic names in instructions for variables, parameters, data fields, constants, and labels. JVM bytecode is hard to read and can be viewed via javap utility to decompile a class file. For example, you may view a compiled class file as follows:
javap -c anyCompiledClassName
You will see the decompiled JVM bytecode displayed on the screen. But when you use Jamaica to write code, it is easy to read. For example, the HelloWorld class may be written as follows.
public class HelloWorld {
public static void main(String[] args) {
%println "Hello, World!"
%println "Hello, World!"
%println "This is NOT an error!"
}
}
The %println is JVM macro. It needs Jamaica to compile and run
5. What is WML?
Wireless Markup Language (WML) page is delivered over Wireless Application Protocol (WAP) and the network configuration requires a gateway to translate WAP to HTTP and back again. It can be generated by a JSP page or servlet running on the J2EE server.
6. What software development methodologies are prevailing?
o Rational Unified Process(RUP) -- Model-driven architecture, design and development; customizable framework for scalable processes; developed and marketed by Rational company.
o Enterprise Unified Process(EUP) -- extension of RUP(add: production, retirement, operations,support and enterprise disciplines.)
o Personal Software Process(PSP) -- Self-calibration.
o Team Software Process(TSP) -- Extends PSP with specific roles.
o Agile Modeling (AM)-- Feature-driven, test often.
o Extreme Programming(XP) -- Effective pair-programming.
o Reuse -- Across multiple providers.
Architecture-driven reuse -- domain component
Artifact reuse -- use cases, standards docu, models, procesures, guidelines,etc.
Code reuse -- source code, across multiple applications, etc.
Component reuse -- fully-encapsulated, well tested components.
Framework reuse -- collections of classes with basic funtionality of a common tech or business domain.
Inheritance reuse -- taking advantagle of behavior implemented in existing classes.
Pattern reuse -- publicly documented approaches to solve common problems.
Template reuse -- common set of layouts for key development artifacts.
o Note: They are all iterative development methodologies.
7. What are orthogonal dimensions in software development?
There are several popular orthogonal dimensions listed as follows
o Top-down vs. bottom-up.
o Waterfall vs. incremental.
o Iterative vs. concurrent.
o Planned vs. mining.
o Same team vs. different team.
8. What is domain engineering(DE)?
Domain engineering(DE) is a process that produces reusable assets including components, web services, generators, frameworks, models and documents, for subsequent use in the development of applications or product line.
9. What is domain analysis(DA)?
Domain analysis(DA) is the front part of domain engineering(DE), which analyzes the anticipated applications, technology trends, standards,and existing assets to develop a model of commonality, variability and initial features into reusable assets.
10. What are alpha, beta or gamma version of a software?
o alpha -- the release contains some large section of new code that hasn't been 100% tested.
o beta -- all new code has been tested, no fatal bugs.
o gamma -- a beta that has been around a while and seems to work fine. Only minor fixes are added. The so-called a release.
11. What is the difference between component and class?
A component is a finished class, whereas a class is a design schema. A component is ready to be used as a member of a class and a class may consist of many components(classes). Component and class names may be exchangeble in context. For example, a Button is a component and also a class. MyWindow class may contain several buttons.
12. What is JUnit?
JUnit is a unit-testing framework. Unit-testing is a means of verifying the results you expect from your classes. If you write your test before hand and focus your code on passing the test you are more likely to end up with simple code that does what it should and nothing more. Unit-testing also assists in the refactoring process. If your code passes the unit-test after refactoring you will know that you haven't introduced any bugs to it.
13. What is the difference between Java and PL/SQL?
Java is a general programming language. PL/SQL is a database query languague, especially for Oracle database.
Subscribe to:
Posts (Atom)