0) Q: Java and C ++
A: Some of
the similarities and differences are in the table:
Features Java
|
C/C++
|
Pointer No
|
Yes
|
Operator Overload No Typedef, Define,
|
Yes
|
Preprocessors No
|
Yes
|
Structures, Unions No
|
Yes
|
Enums No
|
Yes
|
Functions No (only methods within classes) Yes
Goto statement No Yes
Automatic CoercionsNo( types should
be converted explicitly) Yes
Global Variables No. Variable is
part of a class Yes
Templates No
Private, Protected, Public
|
Yes
|
Inheritance No
|
Yes
|
Default
parameters No
|
Yes
|
Garbage
Collection Yes
|
No
|
Multi-thread support Yes
|
No
|
Multiple Inheritance
Yes. Supports only interface inheritance
and not implementation inheritance!
Yes
Exception Handling
Yes. try/catch must be defined if
the function declares that it may throw an exception.
Yes. You may not include the try/catch even if the function throws an
exception.
Function Overload Yes Yes
Internationalization Yes Yes
Include of other Objects #import #include
Comments
"//","/* */,/** */ "//","/*
*/"
1) Q: What is the purpose of the toolkit in
the Abstract Window Toolkit (AWT)? How does AWT work ?
A: The AWT toolkit is an interface
between the abstract window layer and a specific windowing implementation.
2) Q: What is layout manager ? How does it
work ?
A: A layout manager is an object that positions and resizes
the components in a Container according to some algorithm; for example, the
FlowLayout layout manager lays out components from left to right until it runs
out of room and then continues laying out components below that row.
3) Q: Advantages and disadvantages of layout
manager ?
4) Q: Compare SWING components to standard
AWT.
A: Swing is an extension of,
and not a replacement for the AWT. There is some overlap between AWT and Swing
(for example a Swing JButton component might be viewed as an improved
functional replacement for an AWT Button component.) One of the advantages of
Swing components is that because the components are not rendered on the screen
by the operating system, the look and feel of a component does not change as
the application or applet is executed on different platforms running under
different operating systems. Furthermore, it is possible to cause Swing
components to mimic the look and feel of a specific platform no matter what
platform the program is running on. This is known as pluggable look and feel.
Swing components support the
JDK 1.1
Delegation
Event Model. From an event handling viewpoint, Swing components operate the
same as AWT components (except that Swing provides a number of new event
types). Many Swing components don't have an AWT counterpart. A number of new
and exciting components are included in the Swing library that don't exist in
the AWT (tooltips, progress bars, trees, etc.)
5) Q: What is Java Beans ?
A: According to JavaSoft, "A Java Bean is a reusable
software component that can be manipulated visually in a builder tool."
6) Q: What you know about Corba implementation
in Java ?
A: Java 1.2
promises full CORBA IDL support.
7) Q: What do you know about networking
support in Java ?
A: Java supports "low-level" and
"high-level" classes. "Low-level" classes provide support
for socket programming: Socket, DatagramSocket, and ServerSocket classes.
"High-level" classes provide "Web programming": URL,
URLEncoder, and URLConnection classes. Networking programming classes ease the
programming of network applications, but do not substitute your knowledge of
networking. Java networking like anything else in Java is platform-independent.
8) Q: What is it object serialization ?
A:
Serialization is a way to convert objects (including complex data structures such
as lists and trees) into a stream of bytes.
9) Q: How to make application thread-safe ?
A: You should use the word synchronized to mark the critical
section of code. You may also use other methods of thread synchronization
(see wait(), notify(), notifyAll() etc.
10) Q: What is it reflection
(introspection) ? Why is reflection
possible in the Java language?
A: Reflection
(introspection) is querying a class about its properties, and operating on
methods and fields by the name for a given object instance. Reflection is
possible in the Java language because of late binding.
11) Q: Why are Java ARchive (JAR) files
important?
A: JAR files bundle .class files and
optimize applet downloads.
Following
answer may not be correct
12) Describe what happens when an object is
created in Java
Several
things happen in a particular order to ensure the object is constructed
properly:
1. Memory
is allocated from heap to hold all instance variables and
implementation-specific data of the object and its superclasses.
Implemenation-specific data includes pointers to class and method data.
2. The
instance variables of the objects are initialized to their default values.
3. The
constructor for the most derived class is invoked. The first thing a
constructor does is call the consctructor for its superclasses. This process
continues until the constrcutor for java.lang.Object is called, as
java.lang.Object is the base class for all objects in java.
4. Before the
body of the constructor is executed, all instance variable initializers and
initialization blocks are executed. Then the body of the constructor is
executed. Thus, the constructor for the base class completes first and
constructor for the most derived class completes last.
13)
In Java, You can create a String object as below : String str =
"abc"; & String str = new String("abc");
Why cant a button object be created as : Button bt =
"abc" Why is it compulsory to
create a button object as: Button bt = new Button("abc"); Why this is
not compulsory in String's case.
The main reason you cannot
create a button by
Button bt1= "abc";
is because "abc" is a literal string (something
slightly different than a String object, by-the-way) and bt1 is a Button
object. That simple. The only object in Java that can be assigned a literal String
is java.lang.String. Important to not that you are NOT calling a
java.lang.String constuctor when you type String s = "abc";
For example
String x
= "abc";
String y
= "abc"; refer to the same object. While
String
x1 = new String("abc"); String
x2 = new String("abc"); refer
to two different objects.
14) What are the main differences between Java
and C++?
Everything is an object in Java( Single root hierarchy as
everything gets derived from java.lang.Object)
Java does not have all the complicated aspects of C++ ( For ex: Pointers, templates, unions, operator
overloading, structures etc..)
The Java language promoters initially said "No
pointers!", but when many programmers questioned how you can work without
pointers, the promoters began saying "Restricted pointers." You can
make up your mind whether it’s really a pointer or not. In any event, there’s
no pointer arithmetic.
There are no destructors in Java. (automatic garbage
collection)
Java does not support
conditional compile (#ifdef/#ifndef type). Thread support is built into java
but not in C++.
Java does not support default arguments. There’s no
scope resolution operator :: in Java. Java uses the dot for everything, but can
get away with it since you can define elements only within a class. Even the
method definitions must always occur within a class, so there is no need for
scope resolution there either.
There’s no "goto " statement in Java.
Java doesn’t provide multiple
inheritance (MI), at least not in the same sense that C++ does. Exception
handling in Java is different because there are no destructors.
Java has method overloading,
but no operator overloading. The String class does use the + and += operators
to concatenate strings and String expressions use automatic type conversion,
but that’s a special built-in case.
Java is interpreted for the most part and hence platform
independent.
15) What are interfaces?
Interfaces provide more
sophisticated ways to organize and control the objects in your system.
The interface keyword takes the abstract concept one step
further. You could think of it as a “pure” abstract class. It allows the
creator to establish the form for a class: method names, argument lists, and
return types, but no method bodies. An interface can also contain fields, but
The interface keyword takes the abstract concept one step further. You could
think of it as a “pure” abstract class. It allows the creator to establish the
form for a class: method names, argument lists, and return types, but no method
bodies. An interface can also contain fields, but
An interface says: “This is what
all classes that implement this particular interface will look like.” Thus, any
code that uses a particular interface knows what methods might be called for
that interface, and that’s all. So the interface is used to establish a
“protocol” between classes. (Some object-oriented programming languages have a
keyword called protocolto do the same thing.)
15) How can you achieve Multiple
Inheritance in Java?
Java's interface mechanism can be used to implement multiple
inheritance, with one important difference from c++ way of doing MI: the inherited interfaces must be abstract.
This obviates the need to choose between different implementations, as with
interfaces there are no implementations.
16)
What is the difference between StringBuffer and String class?
A string buffer implements a
mutable sequence of characters. A string buffer is like a String, but can be
modified. At any point in time it contains some particular sequence of
characters, but the length and content of the sequence can be changed through
certain method calls.
The String class represents character strings. All string
literals in Java programs, such as "abc" are constant and implemented
as instances of this class; their values cannot be changed after they are
created.
17) Describe, in general, how java's garbage
collector works?
The Java runtime environment
deletes objects when it determines that they are no longer being used. This
process is known as garbage collection.
The Java runtime environment supports a garbage collector
that periodically frees the memory used by objects that are no longer needed.
The Java garbage collector is a mark-sweep garbage collector that scans Java's
dynamic memory areas for objects, marking those that are referenced. After all
possible paths to objects are investigated, those objects that are not marked
(i.e. are not referenced) are known to be garbage and are collected.
18) What's the difference between == and equals
method?
The equals method can be
considered to perform a deep comparison of the value of an object, whereas the
== operator performs a shallow
comparison.
The equals() method compares the characters inside a string
object. == operator compares two object references to check whether they refer
to the same instances or not.
19) What are abstract classes, abstract
methods?
Simply
speaking a class or a method qualified with "abstract" keyword is an
abstract class or abstract method.
You create an abstract class
when you want to manipulate a set of classes through a common interface. All
derived-class methods that match the signature of the base-class declaration
will be called using the dynamic binding mechanism.
An abstract method is an incomplete method. It has only a
declaration and no method body. Here is the syntax for an abstract method
declaration: abstract void f();
20) How can you force all derived classes to
implement a method present in the base class?
Creating and implementing an
interface would be the best way for this situation. Just create an interface
with empty methods which forces a programmer to implement all the methods
present under it. Another way of achieving this task is to declare a class as
abstract with all its methods abstract.
21) What is the difference between an Applet
and an Application?
1.
Applets can be embedded in HTML pages and downloaded
over the Internet whereas Applications have no special support in HTML for
embedding or downloading.
2.
Applets can only be executed inside a java compatible
container, such as a browser or appletviewer whereas Applications are executed
at command line by java.exe or jview.exe.
3.
Applets execute under strict security limitations that
disallow certain operations(sandbox model security) whereas Applications have
no inherent security restrictions.
4.
Applets don't have the main() method as in
applications. Instead they operate on an entirely different mechanism where
they are initialized by init() ,started by start(),stopped by stop() or
destroyed by destroy ().