JQPlus
Tips and Study Notes for Sun Certified Java2 Programmer's Exam
Disclaimer
This document
is an outcome of our experiences in answering technical questions about
the SCJP2 exam. We have taken utmost care in providing an accurate information,
still no claims are made about the accuracy of this document and no responsibility
is taken for any errors.
If you find
something that is not correct please let us know at jqplus_t@hotmail.com
The Notes/Tips are arranged
according to the exam
objectives as stated by Sun Microsystems on their website.
Section
1 Declarations and Access Control
-
Write code that
declares, constructs, and initializes arrays of any base type using any
of the permitted forms both for declaration and for initialization.
-
Declare classes,
inner classes, methods, instance variables, static variables, and automatic
(method local) variables making appropriate use of all permitted modifiers
(such as public, final,static, abstract, and so forth). State the significance
of each of these modifiers both singly and in combination, and state the
effect of package relationships on declared items qualified by these modifiers.
-
For a given class,
determine if a default constructor will be created, and if so, state the
prototype of that constructor.
-
State the legal
return types for any method given the declarations of all related methods
in this or parent classes.
Section
2 FLOW CONTROL AND EXCEPTION HANDLING
-
Write code using
if and switch statements and identify legal argument types for these statements.
-
Write code using
all forms of loops including labeled and unlabeled use of break and continue,
and state the values taken by loop control variables during and after loop
execution.
-
Write code that
makes proper use of exceptions and exception handling clauses (try, catch,
finally) and declares methods and overriding methods that throw exceptions.
Section
3 Garbage Collection
-
State the behavior
that is guaranteed by the garbage collection system, and write code that
explicitly makes objects eligible for collection.
Section
4 Language Fundamentals
-
Identify correctly
constructed source files, package declarations, import statements, class
declarations (of all forms including inner classes), interface declarations
and implementations (for java.lang.Runnable or other interface described
in the test), method declarations (including the main method that is used
to start execution of a class), variable declarations and identifiers.
-
State the correspondence
between index values in the argument array passed to a main method and
command line arguments. Identify all Java Programming Language keywords
and correctly constructed identifiers.
-
State the effect
of using a variable or array element of any kind when no explicit assignment
has been made to it.
-
State the range
of all primitive data types and declare literal values for String and all
primitive types using all permitted formats, bases, and representations.
Section
5 Operators and assignments
-
Determine the
result of applying any operator, including assignment operators, instanceof,
and casts to operands of any type, class, scope, or accessibility, or any
combination of these.
-
Determine the
result of applying the boolean equals(Object) method to objects of any
combination of the classes java.lang.String, java.lang.Boolean, and java.lang.Object.
-
In an expression
involving the operators &, |, &&, ||, and variables of known
values state which operands are evaluated and the value of the expression.
-
Determine the
effect upon objects and primitive values of passing variables into methods
and performing assignments or other modifying operations in that method.
Section
6 Overloading, Overriding, Runtime Type, and Object Orientation
-
State the benefits
of encapsulation in object oriented design and write code that implements
tightly encapsulated classes and the relationships "is a" and "has a".
-
Write code to
invoke overridden or overloaded methods and parental or overloaded constructors;
and describe the effect of invoking these methods.
-
Write code to
construct instances of any concrete class including normal top level classes,
inner classes, static inner classes, and anonymous inner classes.
Section
7 Threads
-
Write code to
define, instantiate, and start new threads using both java.lang.Thread
and java.lang.Runnable.
-
Recognize conditions
that might prevent a thread from executing.
-
Write code using
synchronized, wait, notify, or notifyAll, to protect against concurrent
access problems and to communicate between threads. Define the interaction
between threads and between threads and object locks when executing synchronized,
wait, notify, or notifyAll.
Section 8 The
java.awt PACKAGE (Under Development)
-
Write code using
component, container, and LayoutManager classes of the java.awt package
to present a GUI with specified appearance and resize behavior, and distinguish
the responsibilities of layout managers from those of containers.
-
Write code to
implement listener classes and methods, and in listener methods, extract
information from the event to determine the affected component, mouse position,
nature, and time of the event. State the event classname for any specified
event listener interface in the java.awt.event package.
Section 9 The
java.lang PACKAGE (Under Development)
-
Write code using
the following methods of the java.lang.Math class: abs, ceil, floor, max,
min, random, round, sin, cos, tan, sqrt.
-
Describe the
significance of the immutability of String objects.
Section 10 The
java.util PACKAGE (Under Development)
-
Make appropriate
selection of collection classes/interfaces to suit specified behavior requirements.
Section 11 The
java.io PACKAGE (Under Development)
-
Write code that
uses objects of the file class to navigate a file system.
-
Write code that
uses objects of the classes InputStreamReader and OutputStreamWriter to
translate between Unicode and either platform default or ISO 8859-1 character
encoding and Distinguish between conditions under which platform default
encoding conversion should be used and conditions under which a specific
conversion should be used.
-
Select valid
constructor arguments for FilterInputStream and FilterOutputStream subclasses
from a list of classes in the java.io.package.
-
Write appropriate
code to read, write and update files using FileInputStream, FileOutputStream,
and RandomAccessFile objects.
-
Describe the
permanent effects on the file system of constructing and using FileInputStream,
FileOutputStream, and RandomAccessFile objects.