728x90
728x170
[1Z0-851][OCAJP] Dump 문제 1~10
문제 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.");
}
}
Q. 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. |
정답
D, E
해설/결과
End of method. run. Exception in thread "Thread-0" java.lang.RuntimeException: Problem at com.starrykss.Threads2.run(Threads2.java:6) at java.base/java.lang.Thread.run(Thread.java:833) |
문제 2
Q. 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 incorrently. |
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(). |
정답
A, F
해설/결과
A. 한번에 2개 이상의 스레드가 교착 상태에 빠질 수 있다.
B. JVM 구현은 여러 스레드가 교착 상태에 빠질 수 없도록 보증한다.
C. 교착 상태 스레드는 sleep() 메서드의 지속 기간이 만료되면 해제된다.
D. 교착 상태는 오직 wait(), notify() 및 notifyAll() 메서드가 잘못 사용될 때만 발생할 수 있다.
E. 동기화된 블록이 잘못 사용되면 단일 스레드 응용 프로그램이 교착 상태에 빠질 수 있다.
F. 코드의 일부분이 교착 상태에 빠질 수 있는 경우, Thread.yield() 호출을 삽입하여 교착 상태의 가능성을 제거할 수 없다.
문제 3
Given :
public class waitForSignal {
Object obj = new Object();
synchronized (Thread.currentThread()) {
obj.wait();
obj.notify();
}
}
Q. 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()". |
정답
B
해설/결과
- IllegalMonitorStateException 예외
- 스레드가 락을 부정적으로 점유하였을 때 발생하는 예외
- 문제 해설 : click
문제 4
Given :
public 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()); }
}
Q. 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 |
정답
B
해설/결과
15-1 15-2 16-1 16-2 |
실행 결과 a-1 a-2 b-1 b-2 형식으로 출력되는 것을 확인할 수 있었다.
문제 5
Given :
package com.starrykss;
public class Threads4 {
public static void main(String[] args) {
new Threads4().go();
}
public void go() {
Runnable r = new Runnable() {
public void run() {
System.out.println("foo");
}
};
Thread t = new Thread(r);
t.start();
t.start();
}
}
Q. 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. |
정답
B
해설/결과
Exception in thread "main" java.lang.IllegalThreadStateException at java.base/java.lang.Thread.start(Thread.java:793) at com.starrykss.Threads4.go(Threads4.java:17) at com.starrykss.Threads4.main(Threads4.java:6) foo Process finished with exit code 1 |
실행 결과 IllegalThreadStateException 예외가 발생하는 것을 확인할 수 있었다.
문제 6
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;
}
}
Q. 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 */ } } |
정답
B, E
해설/결과
// A
public class Circle implements Shape { // (!) Class 'Circle' must either be declared abstract or implement abstract method 'draw()' in '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(); // (!) Missing method body, or declare abstract
}
// D
public abstract class Circle implements Shape { // (!) Shape : Interface expected here
private int radius;
public void draw(); // (!) Missing method body, or declare abstract
}
// E
public class Circle extends Shape {
private int radius;
public void draw() { /* code here */ }
}
// F
public abstract class Circle implements Shape { // (!) Shape : Interface expected here
private int radius;
public void draw() { /* code here */ }
}
문제 7
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] + " ");
}
}
Q. What is the result? | |
A | hi hi |
B | hi world |
C | world world |
D | Compilation fails, |
E | An exception is thrown at runtime. |
정답
D
해설/결과
java: varargs parameter must be the last parameter |
- 실행 결과 컴파일 오류가 발생하는 것을 확인할 수 있었다.
- ※ String 타입의 가변 인수(Variable Argument)는 항상 매개변수의 마지막 자리에 위치해야 한다.
문제 8
Given :
public class Nav {
public enum Direction { NORTH, SOUTH, EAST, WEST }
}
public class Sprite {
// insert code here
}
Q. 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; |
정답
D
해설/결과
public class Sprite {
// insert code here
Direction d = NORTH; // (!) Cannot resolve symbol 'Direction', Cannot resolve symbol 'NORTH'
Nav.Direction d = NORTH; // (!) Cannot resolve symbol 'NORTH'
Direction d = Direction.NORTH; // (!) Cannot resolve symbol 'Direction', Cannot resolve symbol 'NORTH'
Nav.Direction d = Nav.Direction.NORTH;
}
문제 9
Given :
public interface A {
public void doSomething(String thing);
}
public class AImpl implements A {
public void doSomething(String msg) {} // line 2
}
public class B {
public A doit() {
// more code here
}
public String execute() {
// more code here
}
}
public class C extends B {
public AImpl doit() { // line 2
// more code here
}
public Object execute() { // line 6
// more code here
}
}
Q. Which statement is true about the classes and interfaces in the exhibit? | |
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. |
정답
C
해설/결과
'execute()' in 'com.starrykss.C' clashes with 'execute()' in 'com.starrykss.B'; attempting to use incompatible return type |
문제 10
Given :
public class Person {
String name = "No name";
public Person(String nm) { name = nm; }
}
public class Employee extends Person {
String empID = "0000";
public Employee(String id) { empID = id; } // line 18
}
public class EmployeeTest {
public static void main(String[] args) {
Employee e = new Employee("4321");
System.out.println(e.empID);
}
}
Q. What is the result? | |
A | 4321 |
B | 0000 |
C | An exception is thrown at runtime. |
D | Compilation fails because of an error in line 18. |
정답
D
해설/결과
There is no default constructor available in 'com.starrykss.Person' |
728x90
그리드형(광고전용)
'Certificate > OCAJP' 카테고리의 다른 글
[1Z0-808][OCAJP] Dump 문제 31~40 (0) | 2022.01.04 |
---|---|
[1Z0-808][OCAJP] Dump 문제 21~30 (0) | 2022.01.02 |
[1Z0-808][OCAJP] Dump 문제 11~20 (0) | 2022.01.02 |
[1Z0-808][OCAJP] Dump 문제 1~10 (2) | 2021.12.31 |
[1Z0-851E] Question 21~30 (0) | 2017.08.15 |
[1Z0-851E] Question 11~20 (0) | 2017.08.15 |
[1Z0-851E] Question 01~10 (0) | 2017.08.15 |
[1Z0-851D] Question 41~50 (0) | 2017.08.13 |