재구성 출제 고지: 이 문제집은 국가평생교육진흥원 독학학위제 3단계 객체지향프로그래밍 출제기준(컬렉션, 스레드, 입출력, UML 등 평가영역)의 범위와 문항 유형을 분석해 새로 구성한 재구성 문항입니다. 실제 기출 문항을 그대로 옮긴 것이 아닙니다. 회차별 정확한 문항 수·시험 시간은 시행처 공고를 확인해야 하며, 여기서는 24문항을 표준 분량으로 구성했습니다.
출제 범위와 문항 배분
| 영역 | 문항 수 | 문항 번호 | 관련 편 |
|---|---|---|---|
| 컬렉션 프레임워크 개관과 구현체 특성 | 7 | 1–7 | 15, 16 |
| 입출력(I/O) 기초 | 2 | 8–9 | 17 |
| 스레드와 동기화 | 7 | 10–16 | 18, 19 |
| UML 클래스·시퀀스 다이어그램 | 4 | 17–20 | 20 |
| 종합 응용 | 4 | 21–24 | 15–20 |
컬렉션 문제는 자료구조의 특성(순서 유지 여부, 중복 허용 여부, 정렬 여부, 검색 속도)을 기준으로 구현체를 고르는 유형이 반복되고, 스레드 문제는 동기화를 빠뜨렸을 때 어떤 문제가 생기는지를 묻는 유형이 반복됩니다. 각 문제를 풀 때 코드가 있다면 실행 순서를 먼저 따라가 보세요.
컬렉션 프레임워크 개관과 구현체 특성 (1–7)
문제 1
문제 14지선다
다음 중 Collection 인터페이스를 직접 상속하지 않는 것은?
문제 2
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("사과");
list.add("바나나");
list.add("사과");
System.out.println(list.size());
System.out.println(list);
}
}문제 24지선다
위 코드를 실행했을 때 출력되는 결과로 옳은 것은?
문제 3
import java.util.HashSet;
import java.util.Set;
public class Main {
public static void main(String[] args) {
Set<Integer> set = new HashSet<>();
set.add(10);
set.add(20);
set.add(10);
set.add(30);
System.out.println(set.size());
System.out.println(set.contains(20));
}
}문제 34지선다
위 코드를 실행했을 때 출력되는 결과로 옳은 것은?
문제 4
import java.util.TreeSet;
import java.util.Set;
public class Main {
public static void main(String[] args) {
Set<Integer> set = new TreeSet<>();
set.add(30);
set.add(10);
set.add(20);
System.out.println(set);
}
}문제 44지선다
위 코드를 실행했을 때 출력되는 결과로 옳은 것은?
문제 5
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<String, Integer> scores = new HashMap<>();
scores.put("철수", 90);
scores.put("영희", 85);
scores.put("철수", 95);
System.out.println(scores.get("철수"));
System.out.println(scores.size());
}
}문제 54지선다
위 코드를 실행했을 때 출력되는 결과로 옳은 것은?
문제 6
문제 64지선다
ArrayList와 LinkedList의 특성 비교로 옳지 않은 것은?
문제 7
문제 74지선다
List와 Set 인터페이스의 차이에 대한 설명으로 옳지 않은 것은?
입출력(I/O) 기초 (8–9)
문제 8
문제 84지선다
문자 스트림과 바이트 스트림에 대한 설명으로 옳은 것은?
문제 9
import java.io.FileReader;
public class Main {
public static void main(String[] args) {
FileReader reader = new FileReader("data.txt");
}
}문제 94지선다
위 코드를 컴파일했을 때 결과로 옳은 것은?
스레드와 동기화 (10–16)
문제 10
문제 104지선다
자바에서 스레드를 생성하는 방법에 대한 설명으로 옳지 않은 것은?
문제 11
public class Main {
public static void main(String[] args) {
Thread t = new Thread(() -> {
System.out.println("스레드 작업");
});
t.run();
System.out.println("메인 종료");
}
}문제 114지선다
위 코드를 실행했을 때 출력 순서로 옳은 것은?
문제 12
문제 124지선다
여러 스레드가 하나의 공유 변수를 동시에 수정할 때 synchronized 키워드를 사용하는 목적으로 가장 적절한 것은?
문제 13
문제 134지선다
교착 상태(deadlock)가 발생하는 상황에 대한 설명으로 가장 적절한 것은?
문제 14
문제 144지선다
자바의 synchronized 인스턴스 메서드에 대한 설명으로 옳은 것은?
문제 15
문제 154지선다
스레드의 생명주기 상태에 대한 설명으로 옳지 않은 것은?
문제 16
class Counter {
int count = 0;
void increment() {
count++;
}
}
public class Main {
public static void main(String[] args) throws InterruptedException {
Counter counter = new Counter();
Runnable task = () -> {
for (int i = 0; i < 1000; i++) {
counter.increment();
}
};
Thread t1 = new Thread(task);
Thread t2 = new Thread(task);
t1.start();
t2.start();
t1.join();
t2.join();
System.out.println(counter.count);
}
}문제 164지선다
위 코드를 실행했을 때 결과에 대한 설명으로 가장 적절한 것은?
UML 클래스·시퀀스 다이어그램 (17–20)
문제 17
문제 174지선다
UML 클래스 다이어그램에서 실선과 속이 빈 삼각형 화살표가 상위 클래스를 향하는 표기가 나타내는 관계는?
문제 18
문제 184지선다
UML에서 속이 빈 마름모와 속이 채워진 마름모의 차이에 대한 설명으로 옳은 것은?
문제 19
문제 194지선다
Library 클래스와 Book 클래스가 실선과 채워진 마름모로 연결되어 있고, 마름모가 Library 쪽에 있는 UML 다이어그램에 대응하는 자바 구현으로 가장 적절한 것은?
문제 20
문제 204지선다
UML 시퀀스 다이어그램에 대한 설명으로 옳은 것은?
종합 응용 (21–24)
문제 21
import java.util.LinkedList;
import java.util.Queue;
public class Main {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();
queue.offer("A");
queue.offer("B");
queue.offer("C");
System.out.println(queue.poll());
System.out.println(queue.peek());
System.out.println(queue.size());
}
}문제 214지선다
위 코드를 실행했을 때 출력되는 세 줄의 결과로 옳은 것은?
문제 22
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
for (String s : list) {
if (s.equals("B")) {
list.remove(s);
}
}
System.out.println(list);
}
}문제 224지선다
위 코드를 실행했을 때 나타나는 현상으로 가장 적절한 것은?
문제 23
문제 234지선다
try-with-resources 구문에 대한 설명으로 옳은 것은?
문제 24
문제 244지선다
여러 스레드가 동시에 접근할 가능성이 있는 상황에서 ArrayList 사용에 대한 설명으로 옳지 않은 것은?
참고 자료
- Oracle Java Tutorials - Collections Framework: https://docs.oracle.com/javase/tutorial/collections/index.html
- Oracle Java Tutorials - Concurrency (Threads): https://docs.oracle.com/javase/tutorial/essential/concurrency/index.html
- 국가평생교육진흥원 독학학위제 - 시험안내: https://bdes.nile.or.kr/nile/exam/nExam2_1.do
Last updated on