재구성 출제 고지: 이 문제집은 국가평생교육진흥원 독학학위제 3단계 객체지향프로그래밍 출제기준(평가영역) 전체 범위를 바탕으로 새로 구성한 재구성 문항입니다. 실제 기출 문항을 그대로 옮긴 것이 아닙니다. 회차별 정확한 문항 수·시험 시간·배점은 시행처 공고를 확인해야 하며, 여기서는 25문항을 표준 분량으로 구성했습니다.
시험 보듯 풀고 오답 노트 작성하기
실전처럼 시간을 정해 두고(예: 25문항을 40분 이내) 끝까지 풀어 본 뒤 채점하는 것을 권한다. 채점 후에는 다음 방식으로 오답 노트를 작성하면 같은 실수를 반복하지 않는 데 도움이 된다.
- 틀린 문제의 코드를 다시 손으로 한 줄씩 따라간다. 어느 줄에서 자신의 예상과 실제 동작이 갈렸는지 정확히 표시한다.
- 틀린 이유를 개념 이름으로 못박는다. “실수로 잘못 봤다”가 아니라 “정적 바인딩과 동적 바인딩을 헷갈렸다”, “checked 예외 처리 규칙을 놓쳤다”처럼 구체적인 개념 이름으로 적는다.
- 같은 개념을 다루는 다른 편의 문제를 찾아 한 번 더 풀어 본다. 23편의 오개념 패턴 표를 참고하면 관련 문제를 빠르게 찾을 수 있다.
- 오답 노트에 옳은 설명과 틀린 설명을 나란히 적는다. 보기 하나하나가 왜 맞는지, 왜 틀렸는지를 한 줄씩 적어 두면 다음에 비슷한 보기를 만났을 때 바로 판단할 수 있다.
문제 1
문제 14지선다
다음 설명에 해당하는 객체지향 특성으로 옳은 것은: 서로 관련된 데이터와 메서드를 하나로 묶고, 외부에는 필요한 부분만 공개하는 특성
문제 2
문제 24지선다
공통적인 특징을 추출해 불필요한 세부사항은 감추고 핵심만 표현하는 객체지향 특성은?
문제 3
class Box {
int value;
}
public class Main {
public static void main(String[] args) {
Box a = new Box();
a.value = 10;
Box b = a;
b.value = 20;
System.out.println(a.value);
}
}문제 34지선다
위 코드를 실행했을 때 출력되는 값으로 옳은 것은?
문제 4
문제 44지선다
생성자 오버로딩에 대한 설명으로 옳지 않은 것은?
문제 5
문제 54지선다
필드를 private으로 선언하지 않고 public으로 그대로 노출했을 때 발생할 수 있는 문제로 가장 적절한 것은?
문제 6
문제 64지선다
서로 다른 두 패키지에 이름이 같은 클래스가 각각 존재하여 한 파일에서 동시에 사용해야 할 때 처리 방법으로 가장 적절한 것은?
문제 7
문제 74지선다
상속 관계 설계에 대한 설명으로 옳지 않은 것은?
문제 8
class Parent {
static void show() {
System.out.println("Parent static");
}
}
class Child extends Parent {
static void show() {
System.out.println("Child static");
}
public static void main(String[] args) {
Parent p = new Child();
p.show();
}
}문제 84지선다
위 코드를 실행했을 때 출력되는 결과로 옳은 것은?
문제 9
abstract class Game {
abstract void play();
void start() {
System.out.println("게임 준비");
play();
System.out.println("게임 종료");
}
}
class Chess extends Game {
@Override
void play() {
System.out.println("체스를 둔다");
}
public static void main(String[] args) {
Game g = new Chess();
g.start();
}
}문제 94지선다
위 코드를 실행했을 때 출력 순서로 옳은 것은?
문제 10
문제 104지선다
인터페이스에 선언된 필드에 대한 설명으로 옳은 것은?
문제 11
문제 114지선다
다형성을 활용하지 않고 상속만으로 여러 하위 클래스 객체를 처리하려 할 때 나타날 수 있는 한계로 가장 적절한 것은?
문제 12
문제 124지선다
다음 중 unchecked 예외(런타임 예외)에 해당하는 것은?
문제 13
class NegativeNumberException extends Exception {
NegativeNumberException(String message) {
super(message);
}
}
public class Main {
static void checkPositive(int n) throws NegativeNumberException {
if (n < 0) {
throw new NegativeNumberException("음수는 허용되지 않습니다: " + n);
}
System.out.println(n + "은(는) 유효한 값입니다");
}
public static void main(String[] args) {
try {
checkPositive(-5);
} catch (NegativeNumberException e) {
System.out.println("예외 발생: " + e.getMessage());
} catch (Exception e) {
System.out.println("일반 예외 처리");
}
}
}문제 134지선다
위 코드를 실행했을 때 출력되는 결과로 옳은 것은?
문제 14
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<String, Integer> ages = new HashMap<>();
ages.put("민수", 20);
ages.put("지연", 22);
int sum = 0;
for (int age : ages.values()) {
sum += age;
}
System.out.println(sum);
}
}문제 144지선다
위 코드를 실행했을 때 출력되는 값으로 옳은 것은?
문제 15
문제 154지선다
키를 기준으로 항상 정렬된 순서를 유지해야 하는 Map 구현체로 가장 적절한 것은?
문제 16
문제 164지선다
텍스트 파일을 한 줄씩 효율적으로 읽기 위해 자주 함께 사용되는 클래스 조합으로 가장 적절한 것은?
문제 17
class Worker implements Runnable {
@Override
public void run() {
System.out.println("작업 실행");
}
}
public class Main {
public static void main(String[] args) {
Thread t = new Thread(new Worker());
t.start();
}
}문제 174지선다
위 코드를 실행했을 때 나타나는 현상으로 가장 적절한 것은?
문제 18
문제 184지선다
여러 스레드가 공유 계좌 객체의 잔액을 동시에 변경해 잔액이 꼬이는 문제를 해결하려고 할 때 가장 적절한 조치는?
문제 19
문제 194지선다
UML 클래스 다이어그램에서 두 클래스 사이의 연관 관계에 다중성을 표기하는 이유로 가장 적절한 것은?
문제 20
문제 204지선다
독학사 학위취득종합시험 3단계의 평가 수준에 대한 설명으로 가장 적절한 것은?(정확한 회차별 공고는 별도 확인이 필요하다)
문제 21
class BankAccount {
private int balance;
BankAccount(int balance) {
this.balance = balance;
}
void withdraw(int amount) {
if (amount > balance) {
throw new IllegalArgumentException("잔액 초과");
}
balance -= amount;
}
int getBalance() {
return balance;
}
}
class SavingsAccount extends BankAccount {
SavingsAccount(int balance) {
super(balance);
}
@Override
void withdraw(int amount) {
System.out.println("적금 계좌는 출금 시 수수료가 부과됩니다");
super.withdraw(amount + 100);
}
}
public class Main {
public static void main(String[] args) {
SavingsAccount acc = new SavingsAccount(1000);
acc.withdraw(500);
System.out.println(acc.getBalance());
}
}문제 214지선다
위 코드를 실행했을 때 출력되는 결과로 옳은 것은?
문제 22
interface Payable {
double calculatePay();
}
class Employee implements Payable {
double baseSalary;
Employee(double baseSalary) {
this.baseSalary = baseSalary;
}
@Override
public double calculatePay() {
return baseSalary;
}
}
class Manager extends Employee {
double bonus;
Manager(double baseSalary, double bonus) {
super(baseSalary);
this.bonus = bonus;
}
@Override
public double calculatePay() {
return super.calculatePay() + bonus;
}
}
public class Main {
public static void main(String[] args) {
Payable[] staff = { new Employee(2000), new Manager(3000, 500) };
double total = 0;
for (Payable p : staff) {
total += p.calculatePay();
}
System.out.println(total);
}
}문제 224지선다
위 코드를 실행했을 때 출력되는 값으로 옳은 것은?
문제 23
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<>();
for (int i = 1; i <= 5; i++) {
numbers.add(i * i);
}
int total = 0;
for (int n : numbers) {
if (n % 2 == 0) {
total += n;
}
}
System.out.println(total);
}
}문제 234지선다
위 코드를 실행했을 때 출력되는 값으로 옳은 것은?
문제 24
문제 244지선다
새로 생성한 스레드의 run 메서드 내부에서 처리되지 않은 예외가 발생했을 때 일어나는 일로 가장 적절한 것은?
문제 25
문제 254지선다
독학사 객체지향프로그래밍 시험에서 코드 추적형 문제의 오답 노트를 작성할 때 가장 효과적인 방법은?
참고 자료
- 국가평생교육진흥원 독학학위제 - 시험안내: https://bdes.nile.or.kr/nile/exam/nExam2_1.do
- 국가평생교육진흥원 독학학위제 - 과목별 평가영역: https://bdes.nile.or.kr/nile/study/nStudy2_1.do
- Oracle Java Tutorials - Learning the Java Language: https://docs.oracle.com/javase/tutorial/java/index.html
Last updated on