Skip to Content
독학사독학사 3단계객체지향프로그래밍22. 독학사 3단계 객체지향프로그래밍 기출 패턴 분석

재구성 출제 고지: 이 문제집은 국가평생교육진흥원 독학학위제 3단계 객체지향프로그래밍 출제기준(평가영역) 전체 범위의 출제 경향을 분석해 새로 구성한 재구성 문항입니다. 실제 기출 문항을 그대로 옮긴 것이 아닙니다. 회차별 정확한 문항 수·시험 시간은 시행처 공고를 확인해야 하며, 여기서는 22문항을 표준 분량으로 구성했습니다.

반복되는 출제 패턴 개관

독학사 3단계 객체지향프로그래밍에서 되풀이해서 나타나는 출제 포인트를 정리하면 아래와 같다. 각 패턴 아래에 해당 패턴을 다루는 문제 번호를 표시해 두었으니, 틀린 문제가 있다면 같은 패턴의 다른 문제도 함께 다시 풀어 보는 것이 좋다.

오개념 패턴핵심 함정관련 문제
추상 클래스 vs 인터페이스생성자·다중 상속·기본 구현 가능 여부의 차이1–3
생성자 안에서 오버라이드된 메서드 호출자식 필드가 아직 초기화되지 않은 시점에 자식 메서드가 실행됨4
오버로딩과 오버라이딩의 혼동매개변수 타입이 다르면 오버라이딩이 아니라 별개의 오버로딩이 된다5
checked·unchecked 예외 계층Throwable 아래 Error와 Exception의 구분, RuntimeException의 위치6
접근 제어와 패키지의 결합default 접근 수준은 클래스 자체에도 적용된다7
컬렉션 구현체 선택순서 유지·중복 허용·정렬 여부 조건에 맞는 구현체 고르기8–9
정적 바인딩과 동적 바인딩필드·정적 메서드는 정적 바인딩, 오버라이딩된 인스턴스 메서드는 동적 바인딩10
다형성의 실무적 가치하위 타입 추가마다 기존 코드를 고쳐야 하는 문제를 다형성이 어떻게 줄이는가11
UML 표기 구분실선·점선, 속이 빈 삼각형·마름모의 조합이 서로 다른 관계를 뜻함12
finally와 return의 상호작용finally 안의 return이 try의 return 값을 덮어씀13
오버라이딩의 공변 반환 타입반환형이 하위 타입으로 바뀌는 것은 오버라이딩 규칙 위반이 아님14
객체와 클래스의 관계같은 클래스의 객체라도 필드 값은 서로 다를 수 있음15
synchronized 블록의 락 객체락으로 사용하는 객체가 스레드 간 공유되어야 동기화가 의미를 가짐16
제네릭 없이 사용하는 raw type문법적으로는 허용되지만 타입 안전성을 잃는다17
오버라이딩 시 접근 범위 확대좁히는 것은 금지되지만 넓히는 것은 허용됨18
this()와 super()의 동시 사용 금지한 생성자 안에서 둘 다 첫 문장 자리를 다툴 수 없음19
캡슐화의 설계 이점내부 구현 변경이 외부 코드에 미치는 영향을 최소화20
인터페이스의 추상 메서드 구현 강제구현하지 않으면 클래스 자체가 컴파일되지 않음21
checked 예외의 위임throws로 호출자에게 처리를 미룰 수 있음22

문제 1

문제 14지선다
추상 클래스와 인터페이스의 차이에 대한 설명으로 옳지 않은 것은?

문제 2

abstract class Shape { abstract double area(); } public class Main { public static void main(String[] args) { Shape s = new Shape(); } }
문제 24지선다
위 코드를 컴파일했을 때 결과로 옳은 것은?

문제 3

문제 34지선다
한 클래스가 서로 다른 두 인터페이스로부터 시그니처가 같은 default 메서드를 물려받을 때 처리 방법으로 옳은 것은?

문제 4

class Parent { Parent() { show(); } void show() { System.out.println("Parent show"); } } class Child extends Parent { int value = 10; @Override void show() { System.out.println("Child show, value = " + value); } public static void main(String[] args) { new Child(); } }
문제 44지선다
위 코드를 실행했을 때 출력되는 결과로 옳은 것은?

문제 5

class Animal { void makeSound(String sound) { System.out.println("동물이 소리를 낸다: " + sound); } } class Dog extends Animal { void makeSound(int volume) { System.out.println("개가 짖는다, 크기: " + volume); } public static void main(String[] args) { Animal a = new Dog(); a.makeSound("멍멍"); } }
문제 54지선다
위 코드를 실행했을 때 출력되는 결과로 옳은 것은?

문제 6

문제 64지선다
자바 예외 클래스 계층 구조에 대한 설명으로 옳은 것은?

문제 7

package pkgA; class Helper { void assist() { System.out.println("도움"); } }
문제 74지선다
Helper 클래스가 접근 제어자 없이 default로 선언되어 있을 때, 다른 패키지의 클래스에서 Helper를 사용하려고 하면 어떤 일이 발생하는가?

문제 8

문제 84지선다
검색·삽입·삭제가 잦고, 저장 순서를 유지할 필요는 없지만 중복은 허용하지 않아야 하는 자료를 저장하려 할 때 가장 적절한 컬렉션은?

문제 9

문제 94지선다
데이터를 삽입한 순서를 그대로 유지하면서 중복도 허용하지 않아야 할 때 사용할 수 있는 컬렉션으로 가장 적절한 것은?

문제 10

문제 104지선다
다음 중 동적 바인딩(dynamic binding)에 대한 설명으로 가장 정확한 것은?

문제 11

문제 114지선다
객체지향에서 다형성이 주는 이점에 대한 설명으로 가장 적절한 것은?

문제 12

문제 124지선다
UML 클래스 다이어그램에서 점선과 속이 빈 삼각형 화살표로 표현되는 관계는?

문제 13

public class Main { static int calc() { try { return 1; } finally { return 2; } } public static void main(String[] args) { System.out.println(calc()); } }
문제 134지선다
위 코드를 실행했을 때 출력되는 값으로 옳은 것은?

문제 14

class Animal {} class Dog extends Animal {} class AnimalShelter { Animal getAnimal() { return new Animal(); } } class DogShelter extends AnimalShelter { @Override Dog getAnimal() { return new Dog(); } } public class Main { public static void main(String[] args) { AnimalShelter shelter = new DogShelter(); Animal a = shelter.getAnimal(); System.out.println(a.getClass().getSimpleName()); } }
문제 144지선다
위 코드를 컴파일하고 실행했을 때 결과로 옳은 것은?

문제 15

문제 154지선다
클래스와 객체의 관계에 대한 설명으로 옳지 않은 것은?

문제 16

문제 164지선다
synchronized(lockObj) 형태의 블록에서 lockObj의 역할로 가장 적절한 것은?

문제 17

import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { List list = new ArrayList(); list.add("문자열"); list.add(100); for (Object o : list) { System.out.println(o); } } }
문제 174지선다
위 코드를 실행했을 때 나타나는 현상으로 가장 적절한 것은?

문제 18

문제 184지선다
오버라이딩 시 접근 제어자 변경 규칙에 대한 설명으로 옳은 것은?

문제 19

class Parent { Parent() { System.out.println("Parent()"); } } class Child extends Parent { Child() { super(); this(5); } Child(int x) { System.out.println("Child(int)"); } public static void main(String[] args) { new Child(); } }
문제 194지선다
위 코드를 컴파일했을 때 결과로 옳은 것은?

문제 20

문제 204지선다
캡슐화가 소프트웨어 설계에 주는 이점으로 가장 적절한 것은?

문제 21

interface Flyable { void fly(); } class Bird implements Flyable { public static void main(String[] args) { Bird b = new Bird(); } }
문제 214지선다
위 코드를 컴파일했을 때 결과로 옳은 것은?

문제 22

문제 224지선다
메서드 안에서 checked 예외를 처리하지 않고 호출한 쪽으로 넘기고 싶을 때 사용하는 방법으로 옳은 것은?

참고 자료

Last updated on