[문항 01] 소프트웨어 설계 / 데이터베이스
문제: 다음 중 데이터의 중복을 방지하고 이상 현상(Anomaly)을 해결하기 위해, 구조적 분해를 거치는 정규화(Normalization) 과정에 대한 설명으로 올바르지 않은 것은?
① 정규화를 진행할수록 데이터베이스의 일관성과 정확성이 향상된다.
② 정규화 수준이 높아질수록 조인(Join) 연산이 감소하여 조회 속도가 항상 향상된다.
③ 1정규형(1NF)은 원자값(Atomic Value)으로만 구성된 속성을 갖도록 만드는 과정이다.
④ 제3정규형(3NF)은 이행적 함수 종속성(Transitive Functional Dependency)을 제거하는 과정이다.
- 핵심 개념 및 전체 보기 분석:
- ① 일관성 향상: 테이블 분해를 통해 중복을 최소화하므로 데이터의 일관성과 정확성이 올라갑니다.
- ② 성능 저하 가능성 [정답]: 정규화를 할수록 하나의 테이블이 여러 개의 테이블로 쪼개집니다. 따라서 원하는 데이터를 조회할 때 조인(Join) 연산이 오히려 늘어나 조회 속도가 떨어질 수 있습니다. (이를 해결하기 위해 반정규화를 수행합니다.)
- ③ 1정규형(1NF): 모든 속성의 도메인이 원자값(더 이상 쪼갤 수 없는 값)으로 구성된 정규형입니다.
- ④ 제3정규형(3NF): 2정규형을 만족하면서 $A \rightarrow B$이고 $B \rightarrow C$인 이행적 함수 종속성을 제거한 정규형입니다.
[문항 02] 소프트웨어 개발 / 소프트웨어 공학
문제: 다음이 설명하는 블랙박스 테스트(Black-box Testing) 기법으로 가장 올바른 것은?
"입력 조건의 경계에 있는 값(최소, 최대, 경계 부근)을 테스트 케이스로 선정하여 오류를 찾아내는 기법이다. 예를 들어 '1 이상 100 이하의 정수' 조건일 때, 0, 1, 100, 101 등을 입력값으로 사용하는 방식이다."
① 동등 분할 파티셔닝 (Equivalence Partitioning)
② 경계값 분석 (Boundary Value Analysis)
③ 원인-결과 그래프 기법 (Cause-Effect Graphing)
④ 결정 테이블 테스트 (Decision Table Testing)
- 핵심 개념 및 전체 보기 분석:
- ① 동등 분할 파티셔닝: 입력값을 유효값과 무효값의 등가 집합으로 나눈 뒤, 각 집합에서 대표값을 하나씩 골라 테스트하는 기법입니다.
- ② 경계값 분석 [정답]: 오류가 주로 입력값의 경계선 근처에서 발생한다는 경험을 바탕으로 경계 근처의 값을 테스트 케이스로 선정하는 기법입니다.
- ③ 원인-결과 그래프 기법: 입력 조건(원인)과 출력 결과(결과) 간의 논리적 관계를 그래프로 표현한 후 테스트 케이스를 도출하는 기법입니다.
- ④ 결정 테이블 테스트: 조건과 동작을 조합한 논리적 정렬표(테이블)를 만들어 제어 흐름의 복잡한 조건들을 테스트하는 기법입니다.
[문항 03] 프로그래밍 언어 활용 (C언어 - 포인터와 배열)
문제: 다음 C언어 프로그램의 실행 결과로 올바른 선택지를 고르시오.
#include <stdio.h>
int main() {
int arr[4] = {10, 20, 30, 40};
int *p = arr;
p++;
printf("%d", *p + *(p + 2));
return 0;
}
① 40
② 50
③ 60
④ 70
- 코드 상세 분석:
- int *p = arr;: 포인터 p는 배열의 첫 번째 요소인 arr[0](값 10)을 가리킵니다.
- p++;: 포인터 위치가 오른쪽으로 1칸 이동하여 arr[1](값 20)을 가리킵니다.
- printf("%d", *p + *(p + 2));
- *p: 현재 p가 가리키는 arr[1]의 값 $\rightarrow$ 20
- *(p + 2): 현재 p(arr[1])에서 2칸 더 오른쪽인 arr[3]의 값 $\rightarrow$ 40
- 따라서 20 + 40 = 60이 출력됩니다.
[문항 04] 프로그래밍 언어 활용 (Java - 클래스/메서드 오버라이딩)
문제: 다음 Java 프로그램의 실행 결과로 올바른 선택지를 고르시오.
class A {
int n = 5;
void print() {
System.out.print("A ");
}
}
class B extends A {
int n = 10;
void print() {
System.out.print("B ");
}
}
public class Main {
public static void main(String[] args) {
A obj = new B();
obj.print();
System.out.print(obj.n);
}
}
① A 5
② A 10
③ B 5
④ B 10
- 코드 상세 분석:
- A obj = new B();: 겉태그(타입)는 부모 A, 실제 알맹이는 자식 B입니다.
- obj.print();: 함수(메서드)는 진짜 알맹이(B) 기준입니다! 자식의 print()가 오버라이딩되어 B 가 출력됩니다.
- System.out.print(obj.n);: 변수(값)는 겉태그(A) 기준입니다! 부모 A의 n 값인 5가 출력됩니다.
- 따라서 최종 출력 결과는 B 5가 됩니다.
[문항 05] 신기술 / 보안 / 네트워크
문제: 다음 설명이 나타내는 네트워크 기술로 가장 올바른 것은?
"물리적인 네트워크 인프라를 가상화하여, 소프트웨어 제어기(Controller)를 통해 중앙에서 네트워크 트래픽 및 장비를 유연하게 관리하고 제어할 수 있는 기술이다. 전달 계층(Data Plane)과 제어 계층(Control Plane)을 분리하는 것이 특징이다."
① SDN (Software Defined Networking)
② NFV (Network Functions Virtualization)
③ VPN (Virtual Private Network)
④ IoT (Internet of Things)
- 핵심 개념 및 전체 보기 분석:
- ① SDN (소프트웨어 정의 네트워크) [정답]: 네트워크의 제어 기능(Control Plane)과 트래픽 전달 기능(Data Plane)을 분리하여 중앙의 소프트웨어가 트래픽을 제어하는 기술입니다.
- ② NFV (네트워크 기능 가상화): 라우터, 방화벽 같은 하드웨어 기반의 네트워크 기능을 가상화된 소프트웨어 형태로 운영하는 기술입니다.
- ③ VPN (가상 사설망): 공용 네트워크를 통해 사설망처럼 암호화된 터널을 만들어 안전하게 접속하는 가상 네트워크입니다.
- ④ IoT (사물인터넷): 다양한 사물에 센서와 통신 기능을 내장하여 인터넷에 연결하는 기술입니다.
'Certificate Study > 정보처리기사' 카테고리의 다른 글
| 정처기 Day3 (0) | 2026.08.31 |
|---|---|
| 정처기 Day1 (0) | 2026.08.19 |