Wednesday, May 7, 2008

Java Interview Questions 22

106: What are some alternatives to inheritance?
A: Delegation is an alternative to inheritance. Delegation means that you
include an instance of another class as an instance variable, and forward messages
to the instance. It is often safer than inheritance because it forces you to think
about each message you forward, because the instance is of a known class, rather
than a new class, and because it doesn't force you to accept all the methods of the
super class: you can provide only the methods that really make sense. On the other
hand, it makes you write more code, and it is harder to re-use (because it is not a
subclass).

107: What does it mean that a method or field is "static"?
A: Static variables and methods are instantiated only once per class. In other
words they are class variables, not instance variables. If you change the value of
a static variable in a particular object, the value of that variable changes for
all instances of that class.
Static methods can be referenced with the name of the class rather than the name of
a particular object of the class (though that works too). That's how library
methods like System.out.println() work out is a static field in the
java.lang.System class.

108: What is the difference between preemptive scheduling and time slicing?
A: 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.

109: What is the catch or declare rule for method declarations?
A: If a checked exception may be thrown within the body of a method, the
method must either catch the exception or declare it in its throws clause.

110. Question: What is transient variable?
Answer: Transient variable can't be serialize. For example if a variable is
declared as transient in a Serializable class and the class is written to an
ObjectStream, the value of the variable can't be written to the stream instead when
the class is retrieved from the ObjectStream the value of the variable becomes
null.

No comments:

Useful Information