Sun Certified Programmer for the Java 2 Platform Exam Question And Answer
QUESTION: 1
Given:
public class
Threads2 implements Runnable {
public void
run() {
System.out.println("run.");
throw new
RuntimeException("Problem");
}
public
static void main(String[] args) {
Thread t = new
Thread(new Threads2());
t.start();
System.out.println("End
of method.");
}
}
Which two can be
results? (Choose two.)
A.
java.lang.RuntimeException: Problem
B. run.
java.lang.RuntimeException:
Problem
C. End of method.
java.lang.RuntimeException:
Problem
D. End of method.
run.
java.lang.RuntimeException:
Problem
E. run.
java.lang.RuntimeException:
Problem
End of method.
Answer: D, E
QUESTION: 2
Which two statements are true? (Choose two.)
A. It is possible
for more than two threads to deadlock at once.
B. The JVM
implementation guarantees that multiple threads cannot enter into a
deadlocked state.
C. Deadlocked
threads release once their sleep() method's sleep duration has expired.
D. Deadlocking can
occur only when the wait(), notify(), and notifyAll() methods are
used incorrectly.
E. It is possible
for a single-threaded application to deadlock if synchronized blocks are
used incorrectly.
F. If a piece of
code is capable of deadlocking, you cannot eliminate the possibility of
deadlocking by
inserting
invocations of
Thread.yield().
Answer: A, F
QUESTION: 3
Given:
void
waitForSignal() {
Object obj =
new Object();
synchronized
(Thread.currentThread()) {
obj.wait();
obj.notify();
}
}
Which statement is
true?
A. This code can
throw an InterruptedException.
B. This code can
throw an IllegalMonitorStateException.
C. This code can
throw a TimeoutException after ten minutes.
D. Reversing the
order of obj.wait() and obj.notify() might cause this method to complete
normally.
E. A call to
notify() or notifyAll() from another thread might cause this method to
complete normally.
F. This code does
NOT compile unless "obj.wait()" is replaced with "((Thread)
obj).wait()".
Answer: B
QUESTION: 4
What is the output if the main() method is run?
public class
Starter extends Thread{
private int k=2
public Static void
main(String[] args) throws Exception{
new
starter().makeItDo();
}
public Starter(){
k=5;
start();
}
public void
makeItDo() throws Exception{
join();
k=k-1;
System.out.println(k);
}
public void run(){
k*=2
}
}
A. 4
B. 5
C. 8
D. 9
E. Compilation
fails.
F. An exception is
thrown at runtime.
G. It is
impossible to determine for certain.
Answer: D
QUESTION: 5
Given:
class
PingPong2 {
synchronized
void hit(long n) {
for(int i =
1; i < 3; i++)
System.out.print(n
+ "-" + i + " ");
}
}
public class
Tester implements Runnable {
static
PingPong2 pp2 = new PingPong2();
public
static void main(String[] args) {
new
Thread(new Tester()).start();
new
Thread(new Tester()).start();
}
public void
run() { pp2.hit(Thread.currentThread().getId()); }
}
Which statement is
true?
A. The output
could be 5-1 6-1 6-2 5-2
B. The output
could be 6-1 6-2 5-1 5-2
C. The output
could be 6-1 5-2 6-2 5-1
D. The output
could be 6-1 6-2 5-1 7-1
Answer: B
QUESTION: 6
Given:
public class
Threads4 {
public
static void main (String[] args) {
new
Threads4().go();
}
public void go() {
Runnable r =
new Runnable() {
public void
run() {
System.out.print("foo");
}
};
Thread t =
new Thread(r);
t.start();
t.start();
}
}
What is the
result?
A. Compilation
fails.
B. An exception is
thrown at runtime.
C. The code
executes normally and prints "foo".
D. The code
executes normally, but nothing is printed.
Answer: B
QUESTION: 7
Given:
public
abstract class Shape {
private int
x;
private int
y;
public
abstract void draw();
public void
setAnchor(int x, int y) {
this.x = x;
this.y = y;
}
}
Which two classes
use the Shape class correctly? (Choose two.)
A. public class
Circle implements Shape {
private int
radius;
}
B. public abstract
class Circle extends Shape {
private int
radius;
}
C. public class
Circle extends Shape {
private int
radius;
public void
draw();
}
D. public abstract
class Circle implements Shape {
private int
radius;
public void
draw();
}
E. public class
Circle extends Shape {
private int
radius;
public void draw()
{/* code here */}
F. public abstract
class Circle implements Shape {
private int
radius;
public void draw()
{ /* code here */ }
Answer: B,E
QUESTION: 8
Given:
public class
Barn {
public static void
main(String[] args) {
new
Barn().go("hi", 1);
new
Barn().go("hi", "world", 2);
}
public void
go(String... y, int x) {
System.out.print(y[y.length
- 1] + " ");
}
}
What is the
result?
A. hi hi
B. hi world
C. world world
D. Compilation
fails.
E. An exception is
thrown at runtime.
Answer: D
QUESTION: 9
Given:
class Nav{
public enum
Direction { NORTH, SOUTH, EAST, WEST }
}
public class
Sprite{
// insert
code here
}
Which code,
inserted at line 14, allows the Sprite class to compile?
A. Direction d =
NORTH;
B. Nav.Direction d
= NORTH;
C. Direction d =
Direction.NORTH;
D. Nav.Direction d
= Nav.Direction.NORTH;
Answer: D
QUESTION:10
Public interface A{
Public void doSomething(String
thing)
}
Public class AImpl implements A{
Public void doSomething(String
msg){}
}
Public class B{
Public A doit(){
//More code here
}
Public String execute(){
//More code here
}
}
Public class C{
Public AImpl doit(){
//More code here
}
Public Object execute(){
//More code here
}
}
A. Compilation will succeed for all classes and interfaces.
B. Compilation of class C will fail because of an error in line 2.
C. Compilation of class C will fail because of an error in line 6.
D. Compilation of class AImpl will fail because of an error in
line 2.
Answer: C
QUESTION: 11
What is the result?
11.Class Person{
12.String name=”No name”;
13.Public Person(String nm){
Name=nm;
14.}
15.}
16.Class Employee extends person{
17.String empID=”0000”;
18.Public Employee(String
id){empID=id;
19.}
20.}
21.Public class EmployeeTest{
22.Public static void main(String[]
args){
23.Employee e=new Employee(“4321”);
24.System.out.println(e.empID);
25. }
26.}
A. 4321
B. 0000
C. An exception is thrown at runtime.
D. Compilation fails because of an error in line 18.
Answer: D
QUESTION: 12
Given:
11. public class Rainbow {
12. public enum MyColor {
13. RED(0xff0000), GREEN(0x00ff00), BLUE(0x0000ff);
14. private final int rgb;
15. MyColor(int rgb) { this.rgb = rgb; }
16. public int getRGB() { return rgb; }
17. };
18. public static void main(String[] args) {
19. // insert code here
20. }
21. }
Which code fragment, inserted at line 19, allows the Rainbow class
to compile?
A. MyColor skyColor = BLUE;
B. MyColor treeColor = MyColor.GREEN;
C. if(RED.getRGB() < BLUE.getRGB()) { }
D. Compilation fails due to other error(s) in the code.
E. MyColor purple = new MyColor(0xff00ff);
F. MyColor purple = MyColor.BLUE + MyColor.RED;
Answer: B
QUESTION: 13
Given:
11. class Mud {
12. // insert code here
13. System.out.println("hi");
}
}
And the following five fragments:
public static void main(String...a) {
public static void main(String.* a) {
public static void main(String... a) {
public static void main(String[]... a) {
public static void main(String...[] a) {
How many of the code fragments, inserted independently at line 12,
compile?
A. 0
B. 1
C. 2
D. 3
E. 4
F. 5
Answer: D
QUESTION: 14
Given:
5. class Atom {
6. Atom() { System.out.print("atom "); }
7. }
8. class Rock extends Atom {
9. Rock(String type) { System.out.print(type); }
10. }
11. public class Mountain extends Rock {
12. Mountain() {
13. super("granite ");
14. new Rock("granite ");
15. }
16. public static void main(String[] a) { new Mountain(); }
17. }
What is the result?
A. Compilation fails.
B. atom granite
C. granite granite
D. atom granite granite
E. An exception is thrown at runtime.
F. atom granite atom granite
Answer: F
QUESTION: 15
Given:
1. interface TestA { String toString(); }
2. public class Test {
3. public static void main(String[] args) {
4. System.out.println(new TestA() {
5. public String toString() { return "test"; }
6. });
7. }
8. }
What is the result?
A. test
B. null
C. An exception is thrown at runtime.
D. Compilation fails because of an error in line 1.
E. Compilation fails because of an error in line 4.
F. Compilation fails because of an error in line 5.
Answer: A
QUESTION: 16
Given:
11. public static void parse(String str) {
12. try {
13. float f = Float.parseFloat(str);
14. } catch (NumberFormatException nfe) {
15. f = 0;
16. } finally {
17. System.out.println(f);
18. }
19. }
20. public static void main(String[] args) {
21. parse("invalid");
22. }
What is the result?
A. 0.0
B. Compilation fails.
C. A ParseException is thrown by the parse method at runtime.
D. A NumberFormatException is thrown by the parse method at
runtime.
Answer: B
QUESTION: 17
Given:
1. public class Blip {
2. protected int blipvert(int x) { return 0; }
3. }
4. class Vert extends Blip {
5. // insert code here
6. }
Which five methods, inserted independently at line 5, will
compile? (Choose five.)
A. public int blipvert(int x) { return 0; }
B. private int blipvert(int x) { return 0; }
C. private int blipvert(long x) { return 0; }
D. protected long blipvert(int x) { return 0; }
E. protected int blipvert(long x) { return 0; }
F. protected long blipvert(long x) { return 0; }
G. protected long blipvert(int x, int y) { return 0; }
Answer: A,C,E,F,G
QUESTION: 18
Given:
1. class Super {
2. private int a;
3. protected Super(int a) { this.a = a; }
4. }
...
11. class Sub extends Super {
12. public Sub(int a) { super(a); }
13. public Sub() { this.a = 5; }
14. }
Which two, independently, will allow Sub to compile? (Choose two.)
A. Change line 2 to:
public int a;
B. Change line 2 to:
protected int a;
C. Change line 13 to:
public Sub() { this(5); }
D. Change line 13 to:
public Sub() { super(5); }
E. Change line 13 to:
public Sub() { super(a); }
Answer: C,D
QUESTION: 19
Which Man class properly represents the relationship "Man has
a best friend who is a
Dog"?
A. class Man extends Dog { }
B. class Man implements Dog { }
C. class Man { private BestFriend dog; }
D. class Man { private Dog bestFriend; }
E. class Man { private Dog<bestFriend>; }
F. class Man { private BestFriend<dog>; }
Answer: D
QUESTION: 20
Given:
1. package test;
2.
3. class Target {
4. public String name = "hello";
5. }
What can directly access and change the value of the variable
name?
A. any class
B. only the Target class
C. any class in the test package
D. any class that extends Target
Answer: C