이번 문서의 목표: 이 문서를 다 읽으면 통합프로그래밍 4단계 시험이 어떤 평가영역을 어떤 비중으로, 어떤 문항 유형(실행 결과 추적·오류 찾기·빈칸 채우기)으로 묻는지 파악하고, 전체 범위를 아우르는 재구성 문제로 자신의 취약 영역을 점검할 수 있다.
이 문서의 문제는 실제 기출 문제를 그대로 옮긴 것이 아니다. 국가평생교육진흥원이 공개한 통합프로그래밍 평가영역(출제기준)을 근거로, 06~23편에서 다룬 개념 범위 안에서 새로 재구성한 연습 문제다. 연도별 실제 기출 문항 수·배점·난이도는 매 회차 공고로 반드시 다시 확인해야 한다.
01편에서 4단계 시험 방식(총점합격제·과목별합격제)과 평가영역 개관을 다뤘다. 이 편에서는 그 평가영역을 실제 문제 유형과 연결해 “어디에 시간을 더 써야 하는지”를 정리하고, 06~23편 전체 범위를 아우르는 재구성 문제로 마무리 점검을 한다.
평가영역별 출제 비중 감 잡기
쉽게 말하면: 통합프로그래밍은 한 과목처럼 보이지만 사실 C·Java·자료구조·DB·웹·네트워크 여섯 영역이 섞인 종합 시험이므로, 영역별로 공부 시간을 미리 배분해야 한다.
교재·합격 후기 자료를 종합하면, 통합프로그래밍은 대략 다음과 같은 비중으로 출제 영역이 나뉜다고 알려져 있다. 정확한 문항 수·배점은 회차 공고로 확인해야 하므로, 아래 비중은 “학습 시간 배분의 감”을 잡는 용도로만 참고한다.
| 평가영역(대분류) | 관련 편 | 체감 비중 | 대표 문항 유형 |
|---|---|---|---|
| C 언어(배열·포인터·구조체·파일 I/O) | 06–08, 22 | 높음 | 실행 결과 추적, 포인터 오류 찾기 |
| Java·객체지향(상속·다형성·예외·컬렉션) | 09–12, 23 | 높음 | 실행 결과 추적, 설계형 서술 |
| 자료구조·알고리즘(스택·큐·트리·그래프·정렬·탐색) | 13–15, 22 | 중간–높음 | 단계별 상태 추적, 복잡도 판단 |
| GUI·이벤트 처리 | 16 | 낮음 | 개념 확인형 객관식 |
| 데이터베이스·JDBC | 17–18, 23 | 중간 | SQL 결과 예측, 코드 빈칸 채우기 |
| 웹 프로그래밍(HTML/CSS/JS·JSP/Servlet) | 19–20, 23 | 중간 | 흐름 순서 배열, 개념 비교 |
| 네트워크 프로그래밍(소켓) | 21, 23 | 낮음–중간 | 개념 비교, 코드 빈칸 채우기 |
이 표에서 “높음”으로 표시된 C·Java·자료구조 영역이 사실상 시험의 근간이다. 22·23편의 통합 실습이 바로 이 영역들을 조합한 문제 유형을 미리 연습하도록 설계된 이유이기도 하다.
문항 유형 네 갈래
쉽게 말하면: 통합프로그래밍은 지식을 묻기보다 “코드를 읽고 무슨 일이 일어나는지” 묻는 시험이다.
- 실행 결과 추적형: 코드를 주고 최종 출력(또는 특정 시점의 변수 값)을 묻는다. 이 문서와 22·23편에서 계속 연습한 “변수 값 표”가 그대로 풀이 도구가 된다.
- 오류 찾기·수정형: 의도한 동작과 다르게 동작하는 코드를 주고 원인과 수정 방법을 묻는다. call by value/포인터 혼동, 검사 예외 미처리, 인덱스 범위 초과가 단골 소재다.
- 빈칸 채우기형: 코드 일부를 비워 두고 문맥상 들어갈 코드·값을 추론하게 한다. 앞뒤 코드의 자료형·조건을 근거로 답을 좁혀 나가야 한다.
- 개념 비교·서술형: “A와 B의 차이”, “이 상황에서 어떤 개념이 적용되는가”를 묻는다. 객관식으로 나올 수도, 주관식 서술로 나올 수도 있다.
난이도 흐름 읽기
시험 전체를 놓고 보면 난이도는 대체로 다음 순서로 올라간다고 알려져 있다.
학습 순서(06~23편)와 시험장에서의 풀이 순서를 다르게 가져가는 것도 전략이 된다. 즉 공부는 개념부터 통합까지 순서대로 하되, 실제 시험에서는 자신 있는 영역의 문제부터 먼저 풀어 확실한 점수를 확보하는 방식이 합격 후기에서 자주 언급된다.
재구성 연습 문제
아래 문제들은 06~23편에서 다룬 개념을 영역별로 골고루 재구성한 것이다. 정답 위치는 모두 최종 검토 시 옵션 배열의 실제 순서와 대조해 확인했다.
마무리 복습
class A {
void show() {
System.out.println("부모");
}
}
class B extends A {
void show() {
System.out.println("자식");
}
}
A obj = new B();
obj.show();int[] arr = new int[3];
System.out.println(arr[3]);