| 항목 | 일정 |
|---|---|
| 실기 시험 | 2026.07.19 |
| 합격 발표 | 2026.09.11 |
| 합격 기준 | 60점 이상 (100점 만점) |
| 문제 수 | 20문제 (단답형 + 서술형) |
결론: 기출만으로도 합격 가능성은 높지만, 전략적으로 풀어야 합니다.
| 순위 | 주제 | 출제 빈도 | 중요도 |
|---|---|---|---|
| 1 | C언어 출력 (포인터, 배열, 구조체) | 30회+ | 🔴🔴🔴 |
| 2 | Java 출력 (상속, 오버라이딩) | 25회+ | 🔴🔴🔴 |
| 3 | SQL (SELECT, DML, DDL) | 25회+ | 🔴🔴🔴 |
| 4 | 디자인 패턴 | 12회 | 🔴🔴 |
| 5 | 보안 공격/용어 | 12회 | 🔴🔴 |
| 6 | 테스트 기법/커버리지 | 12회 | 🔴🔴 |
| 7 | 결합도/응집도 | 10회 | 🔴🔴 |
| 8 | Python 출력 | 10회 | 🔴🔴 |
| 9 | 네트워크 프로토콜 | 10회 | 🔴🔴 |
| 10 | DB 정규화/이상현상 | 8회 | 🔴 |
아래 주제들은 2022년 이후 재출제되지 않았습니다. 시간이 부족하면 과감히 스킵하세요.
# 정처기 실기 요약노트
## Ⅰ. 소프트웨어공학
| 두문자 | 다이어그램 |
|---|---|
| 클 | 클래스 다이어그램 |
| 객 | 객체 다이어그램 |
| 컴 | 컴포넌트 다이어그램 |
| 배 | 배치 다이어그램 |
| 복 | 복합체 구조 다이어그램 |
| 패 | 패키지 다이어그램 |
시스템의 정적 구조(클래스/객체 간 관계, 물리적 배치)를 표현하는 다이어그램군입니다.
(참고 — 행위/동적 다이어그램 7종: 유스케이스, 순차, 커뮤니케이션, 상태, 활동, 타이밍, 상호작용개요)
낮을수록(느슨할수록) 좋은 설계입니다.
자료 < 스탬프 < 제어 < 외부 < 공통 < 내용 (낮음 → 높음)
높을수록 좋은 설계입니다.
우연적 < 논리적 < 시간적 < 절차적 < 통신적(교환적) < 순차적 < 기능적 (낮음 → 높음)
화이트박스 테스트 기법 — 기경제구
테스트 단계 — 단통시인(알베)
단위테스트 → 통합테스트 → 시스템테스트 → 인수테스트
## Ⅱ. 데이터베이스
요구조건분석 → 개념적 설계 → 논리적 설계 → 물리적 설계 → 구현
| 단계 | 두문자 | 제거 대상 |
|---|---|---|
| 1NF | 도 | 도메인이 원자값 (속성의 원자성 확보) |
| 2NF | 부 | 부분함수종속 제거 |
| 3NF | 이 | 이행함수종속 제거 |
| BCNF | 결 | 결정자이면서 후보키가 아닌 함수종속 제거 |
| 4NF | 다 | 다치종속 제거 |
| 5NF | 조 | 조인종속 제거 |
## Ⅲ. 보안
| 알고리즘 | 블록 크기 | 키 크기 | 구조/특징 |
|---|---|---|---|
| DES | 64비트 | 56비트 | Feistel 구조, 16라운드. 최초의 표준 블록암호(1977) |
| SEED | 128비트 | 128비트(또는 256) | Feistel 구조, 16라운드. KISA 개발 국산 표준 |
| AES | 128비트 고정 | 128/192/256비트 | SPN 구조. 라운드 수 10/12/14(키 길이에 비례). DES 대체 표준(2001) |
| ARIA | 128비트 | 128/192/256비트 | SPN 구조, 바이트 단위 연산 중심. 국정원·학계 공동개발 국산 표준 |
| IDEA | 64비트 | 128비트 | Feistel 변형, XOR/모듈러 연산 혼합. 스위스 개발(1991) |
| Skipjack | 64비트 | 80비트 | Feistel 구조, 32라운드. 美 NSA 개발, Clipper 칩에 하드웨어로 내장 |
> IDEA는 "128비트"가 키 크기이고 블록 크기는 64비트입니다. AES(블록 128비트)와 헷갈리기 쉬운 부분입니다.
임의 길이의 입력을 고정 길이 출력(다이제스트)으로 변환하는 단방향 함수입니다. 무결성 검증, 전자서명, 비밀번호 저장, JWT 서명 등에 쓰입니다.
## Ⅳ. 네트워크
| 계층 | 이름 | 주요 기능 | 대표 프로토콜/장비 |
|---|---|---|---|
| 7 | 응용(Application) | 사용자에게 직접 서비스 제공 | HTTP, FTP, SMTP, DNS |
| 6 | 표현(Presentation) | 데이터 형식 변환(인코딩), 압축, 암호화 | JPEG, MPEG |
| 5 | 세션(Session) | 통신 세션 연결 설정·유지·종료, 동기화 | NetBIOS, RPC |
| 4 | 전송(Transport) | 종단간(End-to-End) 신뢰성 있는 전달, 오류/흐름제어 | TCP, UDP |
| 3 | 네트워크(Network) | 논리주소(IP) 지정, 경로설정(라우팅) | IP, ICMP, 라우터 |
| 2 | 데이터링크(Data Link) | 물리주소(MAC) 지정, 프레임 단위 오류·흐름제어 | 이더넷, 스위치, 브리지 |
| 1 | 물리(Physical) | 비트 단위 전기적 신호 전송 | 케이블, 허브, 리피터 |
응표세전네데물은 7계층(응용)→1계층(물리) 순서, 반대로 외울 때는 물데네전세표응으로 외웁니다.
안녕하세요. 2020년 1회 정보처리기사 실기 기출문제를 정리해보았습니다.
기출문제이면서 보완설명을 덧붙여 정리하였으니 도움이 되었으면 좋겠습니다. (녹색은 답 / 파랑색은 해설입니다.)
정보처리기사 개편안인 2020년 시험부터 기출문제를 정리하였습니다.
1. 살충제 패러독스의 개념에 관해서 서술하시오.
동일한 테스트 케이스에 의한 반복적 테스트는 새로운 버그를 찾지 못한다는 테스트 원리
애플리케이션 테스트 : 애플리케이션에 잠재되어 있는 결함을 찾아내는 일련의 행위 또는 절차
절차 :
기본원리 :
-완벽한 테스트 불가능
: 애플리케이션 테스트는 소프트웨어의 잠재적 결함은 줄일 수 있지만 결함이 없다고 증명할 수는 없다.
- 결합 집중(Defect Clustering)
: 애플리케이션 결함은 대부분 개발자의 특성이나 애플리케이션 기능적 특징 때문에 모듈에 집중되어 있다.
- 파레토 법칙(Pareto Principle)
: 애플리케이션의 20%에 해당하는 코드에서 전체 결함의 80%가 발견된다.
- 살충제 패러독스(Pesticide Paradox)
: 동일한 테스트를 반복하면 더 이상 결함이 발견되지 않는 "살충제 패러독스" 현상이 발생. 지속적으로 테스트케이스 보안 개선
- 테스팅은 정황(Context) 의존
: 소프트웨어 특징, 테스트 환경, 테스터 역량 등 정황에 따라 테스트를 다르게 수행해야한다.
- 오류-부재의 궤변
: 소프트웨어 결함을 모두 제거해도, 결국 사용자의 요구사항을 만족시키지 못하면 해당 소프트웨어는 품질이 높지 않다
2. 데이터 마이닝의 개념에 관해서 서술하시오.
대규모로 저장된 데이터 안에서 체계적이고 자동적으로 통계적 규칙이나 패턴을 찾아내는 기술
3. 프로토콜의 기본 요소 3가지를 쓰시오.
구문(Syntax), 의미(Semantics) , 순서(Timing)
구문 : 데이터의 형식이나 부호화 및 신호 레벨 등을 규정
의미 : 전송의 조작이나 오류 제어를 위한 제어 정보에 대한 규정
순서 : 접속되어 있는 개체 간의 통신 속도의 조정이나 메세지의 순서 제어 등을 규정
4. 다음이 설명하는 용어는 무엇인지 쓰시오.
W3C(World wide Web Consortium)에서 개발되었고, 웹 브라우저 간 호환이 되지 않는 문제와 SGML(Standard Generalized Markup Language)의 복잡함을 해결하기 위해 개발된 다목적 마크업 언어이다.
XML (eXtensible Markup Language)
> 해설:
> XML(eXtensible Markup Language)은 W3C에서 고안한 특수 목적 마크업 언어입니다. 사용자가 직접 태그를 정의할 수 있어 확장성이 높으며, 이기종 시스템 간 데이터 교환에 널리 사용됩니다.
5. 속성-값(Attribute-value Pair)으로 이루어진 데이터 오프젝트를 전달하기 위해 사용하는 개방형 표준 포멧이다. Ajax(Asynchronous JavaScript and XML)에서 많이 사용되고 XML(eXtensible Markup Language)을 대체하는 주요 데이터 포맷이다. 언어 독립형 데이터 포맷으로 다양한 데이터 프로그래밍 언어에서 사용하고 있는 기술은 무엇인가?
JSON(JavaScript Object Notation)
> 해설:
> JSON(JavaScript Object Notation)은 속성-값 쌍(Attribute-value pair)으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷입니다. 비동기 통신인 AJAX에서 주로 데이터 교환 포맷으로 사용됩니다.
6. STUDENT 테이블에서 컴퓨터과 학생 50명, 인터넷과 학생 100명, 사무자동화과 학생 50명의 정보가 저장되어 있을 때, 다음 SQL문의 실행 결과에 따른 튜플의 수는? (단, DEPT 칼럼은 학과명이다.)
1) SELECT DERP FROM STUDENT;
2) SELECT DISTINCT DEPT FROM STUDENT;
3) SELECT COUNT(DISTINCT DEPT) FROM STUDENT WHERE DEPT = '컴퓨터과';
1. 200
2. 3
3. 1
> 해설:
> 1. SELECT DEPT FROM STUDENT;는 DEPT 열의 모든 값을 조회하므로 총 학생 수인 50+100+50 = 200튜플이 반환됩니다. (문제의 DERP는 DEPT의 오타로 간주)
> 2. SELECT DISTINCT DEPT FROM STUDENT;는 중복을 제거한 DEPT를 조회하므로 컴퓨터과, 인터넷과, 사무자동화과 총 3개의 튜플이 반환됩니다.
> 3. SELECT COUNT(DISTINCT DEPT) FROM STUDENT WHERE DEPT = '컴퓨터과';는 '컴퓨터과' 학과 이름 중 중복을 제거한 학과 개수이므로 1이 반환됩니다.
7. 스케줄링 방식에서 HRN(Highest Response ratio Next) 우선순위 계산식을 쓰시오.
(대기 시간 + 서비스 시간) / 서비스 시간
HRN 스케줄링 기법은 SJF 스케줄링 기법의 약점인 긴 작업과 짧은 작업 사이의 불평등을 보완하기 위한 방법으로, 위에 우선순위 계산식은 시스템 응답시간이 커질수록 우선순위가 높아진다는 의미 입니다.
위의 HRN를 비롯하여, SJF와 FIFO, 우선순위, 기반부는 비선점형 프로세스 스케줄링에 속합니다.
SJF(Shortest Job First) : 프로세스의 실행시간이 가장 적은 프로세스를 먼저 실행시키는 기법입니다.
FIFO(First In First Out)는 각 페이지가 주기억장치에 적재될 때마다 가장 먼저 들어왔던 페이지가 가장 오래 있었기 때문에 해당 페이지를 교체하는 기법입니다.
우선순위 : 미리 정의한 알고리즘대로 프로세스의 우선순위를 결정하는 방식기한부 : 프로세스마다 정해진 시간할당량만큼만 실행되도록 지정하는 방식
8. 트랜잭션의 특징 중, 일관성 지속성 외 2개의 특성을 쓰시오.
원자성, 독립성
원자성 : 트랜잭션이 데이터베이스에 모두 반영되던가, 전혀 반영되지 않아야 한다는 점
일관석 : 트랜잭션의 작업 처리 결과가 항상 일관성이 있어야 한다는 점
독립성 : 둘 이상의 트랜잭션이 동시에 실행되고 있을 경우, 어떤 하나의 트랜잭션이라도 다른 트랜잭션의 연산에 끼어들 수 없다는 점
지속성 : 트랜잭션이 성공적으로 완료되었을 경우, 결과는 영구적으로 반영되어야 한다는 점
9. 공격자가 패킷의 출발지 주소나 포트를 임의로 변경해 출발지와 목적지 주소를 동일하게 함으로써 공격 대상 컴퓨터의 실행속도를 느리게 하거나 동작을 마비시켜 서비스 거부 상태에 빠지도록 하는 공격 방법은 무엇인가?
랜드 어택 (Land Attack)
네트워크 공격 유형
서비스 거부 공격 (DOS - Denial of Service) :
표적이 되는 서비스 자원을 고갈시킬 목적으로 다수의 공격자 또는 시스템에서 대량의 데이터를 한 곳의 서버에 집중적으로 전송함으로써 표적이 되는 서버의 정상적인 기능을 방해하는 공격 방법으로, DDoS와의 차이점은 Attacker가 직접 공격을 수행
분산 서비스 거부 (DDoS -Distributed Denial of Service) :
Attacker가 여러 대의 컴퓨터를 감염시켜 동시에 한 타깃 시스템을 집중적으로 공격하는 방법으로써, 짧은 시간 안에 서버를 마비시킬 수 있으며 Dos보다 치명적이고 Dos와의 차이점은 실질적인 Attacker가 아닌 Attacker가 감염시킨 좀비 PC가 공격을 수행한다는 점
Ping of Death :
ping 명령을 전송할 때 패킷의 크기를 인터넷 프로토콜 허용 범위 이상으로 전송하여 네트워크를 마비시키는 공격 방법
Smurfing :IP또는 ICMP의 특성을 악용하여 엄청난 양의 데이터를 한 사이트에 집중적으로 보내냄으로써 네트워크 불능 상태로 만드는 공격
SYN Flooding : 공격자가 가상의 클라이언트로 위장하여 3-way-handshake 과정을 의도적으로 중단 시킴으로써 공격 대상자인 서버가 대기 상태에 놓여 정상적으로 서비스를 수행하지 못하게 하는 공격 방법
TearDrop :데이터의 송.수신 과정에서 패킷의 크기가 여러 개로 분할되어 전송할때 분할 순서를 변경시켜 수신측에서 패킷을 재조립할 때 오류로 인한 과부하를 발생시킴으로써 시스템이 다운되도록 하는 공격 방법Smurfing :IP또는 ICMP의 특성을 악용하여 엄청난 양의 데이터를 한 사이트에 집중적으로 보내냄으로써 네트워크 불능 상태로 만드는 공격
10. RFC 1321로 지정되어 있으며, 주로 프로그램이나 파일이 원본 그대로 인지를 확인하는 무결성 검사 등에 사용된다. 1991년 로널드 라이베스트가 예전에 쓰이던 MD4를 대체하기 위해 고안된 128비트 암호화 해시 함수는 무엇인가?
MD5
> 해설:
> MD5(Message-Digest algorithm 5)는 128비트 암호화 해시 함수로, 주로 프로그램이나 파일의 무결성 검사에 사용됩니다.
11. 다음은 공통 모듈 구현의 개념에 대한 설명이다. 괄호 ( ) 안에 알맞은 용어를 쓰시오.
1. 결합도
2. 응집도
> 해설:
> 소프트웨어 모듈의 독립성을 높이고 유지보수를 효과적으로 하려면, 모듈 간의 상호 의존성을 나타내는 결합도(Coupling)는 낮추고 모듈 내부 요소들의 연관성을 나타내는 응집도(Cohesion)는 높이는 방향으로 설계해야 합니다.
12. 다음은 C언어 소스 코드이다. 출력 결과를 쓰시오.
#include <stdio.h>
void main(){
int i,j;
int temp;
int a[5] = {75,95,85,100,50};
for(i=0; i<4; i++){
for(j=0; j<4-i; j++){
if(a[j] > a[j+1]){
temp=a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for(i=0; i<5; i++){
printf("%d", a[i]);
}
}
50758595100
> 해설:
> 버블 정렬(Bubble Sort)을 수행하여 배열을 오름차순으로 정렬하는 C 언어 코드입니다.
> - 초기 상태: a[5] = {75, 95, 85, 100, 50}
> - i = 0: j는 0부터 3까지 반복하며 인접한 두 값을 비교 및 교환합니다.
> - j=0: 75 < 95 (교환 X) -> {75, 95, 85, 100, 50}
> - j=1: 95 > 85 (교환 O) -> {75, 85, 95, 100, 50}
> - j=2: 95 < 100 (교환 X) -> {75, 85, 95, 100, 50}
> - j=3: 100 > 50 (교환 O) -> {75, 85, 95, 50, 100} (가장 큰 값 100이 끝으로 이동 완료)
> - i = 1: j는 0부터 2까지 반복합니다.
> - j=0: 75 < 85 (교환 X)
> - j=1: 85 < 95 (교환 X)
> - j=2: 95 > 50 (교환 O) -> {75, 85, 50, 95, 100}
> - i = 2: j는 0부터 1까지 반복합니다.
> - j=0: 75 < 85 (교환 X)
> - j=1: 85 > 50 (교환 O) -> {75, 50, 85, 95, 100}
> - i = 3: j는 0부터 0까지 반복합니다.
> - j=0: 75 > 50 (교환 O) -> {50, 75, 85, 95, 100}
> - 결과 출력: 배열의 모든 요소를 차례대로 출력하여 50758595100이 됩니다.
13. 다음은 자바 소스코드이다. 출력 결과를 쓰시오.
public class good {
public static void main(String[] args){
int i;
int[] a = {0,1,2,3};
for(i=0; i<4; i++){
System.out.print(a[i] + " ");
}
}
}
0 1 2 3
> 해설:
> 정수형 배열을 선언하고 반복문을 통해 모든 요소를 출력하는 자바 코드입니다.
> - 배열 a는 초기값 {0, 1, 2, 3}을 갖습니다.
> - for 루프에서 변수 i가 0부터 3까지 1씩 증가하며 반복 실행됩니다.
> - 루프 흐름:
> - i=0일 때 a[0]인 0을 출력하고 공백 추가 -> "0 "
> - i=1일 때 a[1]인 1을 출력하고 공백 추가 -> "0 1 "
> - i=2일 때 a[2]인 2를 출력하고 공백 추가 -> "0 1 2 "
> - i=3일 때 a[3]인 3을 출력하고 공백 추가 -> "0 1 2 3 "
> - 최종적으로 0 1 2 3 이 출력됩니다.
14. 다음은 자바 소스코드이다. 출력 결과를 쓰시오.
public class good {
public static void main(String[] args){
int i = 3;
int k = 1;
swich (i) {
case 0;
case 1;
case 2;
case 3 k = 0;
case 4 k += 3;
case 5 k -= 10;
default: k--;
}
system.out.print(k);
}
}
-8
switch case문에 break가 없는 점을 주의하셔야 합니다.
> 해설:
> switch 문에서 각 case 블록에 break; 명령이 없으면 일치하는 case부터 시작하여 아래로 계속 실행(Fall-through)됩니다.
> - 초기 상태: i = 3, k = 1
> - switch(i)에서 i 값이 3이므로 바로 case 3:으로 분기합니다.
> - 흐름 추적:
> - case 3: 실행 -> k = 0; (현재 k = 0)
> - case 4: 실행 -> k += 3; 즉 k = 0 + 3 = 3
> - case 5: 실행 -> k -= 10; 즉 k = 3 - 10 = -7
> - default: 실행 -> k--; 즉 k = -7 - 1 = -8
> - 최종적으로 변수 k의 값인 -8이 출력됩니다.
15. 다음이 설명하는 제품 패키지 릴리스 노트의 작성 항목은 무엇인가?
[보기]
문서 이름(릴리스 노트 이름), 제품 이름, 버전 번호, 릴리스 날짜, 참고 날짜, 노트 버전 등의 정보
해더
릴리스 노트 :
개발 과정에서 정리된 릴리스 정보를 소프트웨어의 최종 사용자인 고객과 공유하기 위한 문서입니다.
릴리스 노트 항목 :
해더, 개요, 목적, 문제요약, 재현항목, 수정/개선 내용, 사용자 영향도, SW지원 영향도, 노트, 면책조항, 연락처
릴리스 노트 작성 순서 :
모듈 식별 > 릴리스 정보 확인 > 릴리스 노트 개요 작성 > 영향도 체크 > 정식 릴리스 노트 작성 > 추가 개선 항목 식별
16. LoC(Line of Code)가 30,000라인이고, 개발자가 5명이며, 개발자가 월평균 300라인을 개발한다. 이때 프로젝트 개발 기간과 계산식을 쓰시오.
프로젝트 개발 기간 : 20개월
계산식 : (30,000라인 / 300라인) / 5명 = 20개월
17. 비정규화(De-Normalization)의 개념을 쓰시오
정규화된 엔티티, 속성, 관계에 대해 성능 향상과 개발 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터모델링 기법
18. OSI 계층 중 비트를 전송하는 계층은 무엇인가?
물리 계층 (Physical Layer)
> 해설:
> 물리 계층(Physical Layer)은 OSI 7계층 중 1계층으로, 전기적 기계적 특성을 이용해 통신 케이블로 비트 단위의 데이터를 전송하는 역할을 담당합니다.
19. 애플리케이션의 성능을 측정하기 위한 지표는 무엇인가?
| 지표 | 설명 |
| ( 1 ) | - 애플리케이션이 주어진 시간에 처리할 수 있는 트랜잭션의 수 - 웹 애플리케이션의 경우 시간당 페이지수로 표현 |
| ( 2 ) | - 사용자 입력이 끝난 후, 애플리케이션의 응답 출력이 개시될 때까지의 시간 - 애플리케이션의 경우 메뉴 클릭 시 해당 메뉴가 나타나기까지 걸리는 시간 |
| ( 3 ) | - 애플리케이션에 사용자가 요구를 입력한 시점부터 트랜잭션 처리 후 그 결과의 출력이 완료될 때까지 걸리는 시간 |
| 자원 사용률 | - 애플리케이션이 트랜잭션을 처리하는 동안 사용하는 CPU 사용량 , 메모리 사용량, 네트워크 사용량 |
1. 처리량
2. 응답 시간
3. 경과 시간
> 해설:
> 애플리케이션의 성능 측정 지표는 주로 다음과 같이 구분됩니다.
> - 처리량(Throughput): 단위 시간당 애플리케이션이 처리하는 작업의 수
> - 응답 시간(Response Time): 사용자 입력 직후, 응답 출력이 시작될 때까지 걸리는 시간
> - 경과 시간(Turnaround Time): 작업 요청부터 완전히 출력이 완료되어 종료될 때까지 걸리는 전체 시간
20. 다음은 모듈의 관계를 나타낸 다이어그램이다. fan-in 개수가 2 이상인 모듈 명칭을 쓰시오.

F,H
모듈에서 화살표가 나가는 경우 팬아웃이고 모듈에서 화살표가 들어오는 경우 팬인이라고 합니다.
---
안녕하세요. 2020년 2회 정보처리기사 실기 기출문제를 정리해보았습니다.
기출문제이면서 보완설명을 덧붙여 정리하였으니 도움이 되었으면 좋겠습니다. (녹색은 답 / 파랑색은 해설입니다.)
정보처리기사 개편안인 2020년 시험부터 기출문제를 정리하였습니다.
1. 정보시스템 운영 중 서버가 다운되거나 자연재해나 시스템 장애 등의 이유로 고객에게 서비스가 불가능한 경우가 종종 발생한다. 이와 같은 상황에서 비상사태 또는 업무중단 시정부터 업무가 복구되어 다시 정상 가동될때까지의 시간을 의미하는 용어가 무엇인지 쓰시오.
재해 복구 시간 or RTO(Recovery Time Objective)
재해복구시점 (RPO : Recovery Point Objective) : 재해 발생시, 데이터손실을 수용 손실 허용 시점
네트워크복구시간 (RCO : Recovery Communication Objective) : 주 영업점과 DR센터 간 네트워크 복구 수준
재해복구범위(RSO : Recovery Scope Objective) : 업무 중요도에 따른 복구 대상시스템 선정
2. 다음은 파이썬 코드이다. 출력 결과를 쓰시오.
a={'일본','중국','한국'}
a.add('베트남')
a.add('중국')
a.remove('일본')
a.update(['홍콩','한국','태국'])
print(a)
{'중국','한국','베트남','홍콩','태국'}
> 해설:
> 파이썬의 집합(Set) 자료형과 관련 메서드를 다루는 코드입니다. 집합은 중복된 값을 허용하지 않고, 요소의 순서가 보장되지 않는 특징이 있습니다.
> - a={'일본','중국','한국'}: 초기 집합 구성
> - a.add('베트남'): '베트남' 항목 추가 -> {'일본', '중국', '한국', '베트남'}
> - a.add('중국'): '중국'은 이미 존재하므로 무시 -> 집합 상태 변화 없음
> - a.remove('일본'): '일본' 항목 삭제 -> {'중국', '한국', '베트남'}
> - a.update(['홍콩','한국','태국']): 리스트의 항목들을 한꺼번에 추가합니다. 여기서 '한국'은 중복이므로 무시되고 나머지가 추가됨 -> {'중국', '한국', '베트남', '홍콩', '태국'}
> - print(a)를 통해 집합을 출력합니다. 요소의 나열 순서는 실행 환경에 따라 다를 수 있습니다.
3. 브라우저가 가지고 있는 XMLHttpRequest 객체를 이용해서 전체 페이지를 새로 고치지 않고도 페이지의 일부분만을 위한 데이터를 로드하는 기법이며, 하이퍼텍스트 표기 언어(HTML)만으로 어려운 다양한 작업을 웹 페이지에서 구현해 이용자가 웹 페이지와 자유롭게 상호작용할 수 있도록 하는 기술명을 쓰시오.
비동기 통신 기법 or AJAX(Asynchronous JavaScript and XML)
> 해설:
> AJAX는 자바스크립트의 XMLHttpRequest 객체를 사용하여 서버와 비동기적으로 통신하고, 응답받은 데이터를 통해 웹 페이지 전체를 새로고침하지 않고도 일부 화면의 내용을 동적으로 변경할 수 있게 해주는 기술입니다.
4. 절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속 적응적 경량 개발방법론으로, 개발 기간이 짧고 신속하며, 워터폴에 대비되는 방법론으로 최근 회사에서 각광받는 방법론은 무엇인가?
애자일 방법론
> 해설:
> 애자일(Agile) 방법론은 기존 폭포수(Waterfall) 모델의 경직성에 대비되는 방법론입니다. 철저한 계획보다는 작업 환경의 변화에 신속하게 적응하는 것을 강조하며, 실제 작동하는 소프트웨어를 빠른 주기로 개발하여 고객과 지속적으로 소통하는 경량 개발 방법론입니다. 대표적으로 스크럼(Scrum), XP(eXtreme Programming) 등이 있습니다.
5. 다음은 자바 코드이다. 다음 밑줄에 들어갈 키워드를 쓰시오.
class parent
public void show(){
system.out.println("Parent");
}
}
class Child extends Parent{
public void show(){
system.out.println("Child");
}
}
public class good{
public static void main(String[] args){
Parent pa = ____ Child();
pa.show();
}
}
new
> 해설:
> 자바에서 클래스를 통해 새로운 객체를 메모리에 생성하고 초기화하기 위해서는 new 키워드를 사용해야 합니다.
> Parent pa = new Child(); 문구는 자식 클래스인 Child의 인스턴스를 생성한 뒤, 다형성을 활용하여 부모 클래스인 Parent 타입의 참조 변수 pa에 대입하는 구조입니다. 이로 인해 pa.show()를 호출하면 오버라이딩된 Child의 show() 메서드가 실행됩니다.
6. 학생 테이블은 학번, 이름, 학년, 수강과목, 점수, 연락처를 속성으로 가진다. 아래 조건을 만족하는 SQL문을 작성하시오.
1) 학생 테이블에서 3,4학년인 학번, 이름을 조회한다.
2) IN 연산자 사용해야 한다.
[학생]
| 학번 | 이름 | 학년 | 수강과목 | 점수 | 연락처 |
| 1000 | 김이름 | 1 | 수학 | 90 | 010-1111-2222 |
| 2000 | 장이름 | 2 | 과학 | 95 | 010-2222-2222 |
| 3000 | 허이름 | 3 | 미술 | 90 | 010-3333-3333 |
| 4000 | 조이름 | 4 | 음악 | 95 | 010-4444-4444 |
SELECT 학번, 이름 FROM 학생 WHERE 학년 IN (3,4);
> 해설:
> 학생 테이블에서 조건에 부합하는 레코드(튜플)를 검색하는 SQL 질의문입니다.
> IN 연산자를 활용하여 학년이 '3' 이거나 '4' 인 경우를 한 번에 검사(학년 = 3 OR 학년 = 4와 동일)하고, 조회 대상 열로 학번과 이름을 프로젝션합니다.
7. 트랜잭션 Rollback에 대해 설명하시오.
트랜잭션 처리 중 오류가 발생했을 때, 오류 이전의 특징 시점(SAVEPOINT, CHECKPOINT) 상태로 되돌려주는 제어어(명령문)이다.
8. 무결성과 인증을 보장하는 인증해더(AH)와 기밀성을 보장하는 암호화(ESP)를 이용한 프로토콜로 네트워크 계층(Network Layer)인 인터넷 프로토콜(IP)에 보안성을 제공해주는 표준화된 기술에 대해 쓰시오.
IPSec(Internet Protocol Security)
> 해설:
> IPSec(IP Security)은 네트워크 계층(3계층)에서 IP 패킷 단위로 인증 및 암호화를 수행하여 보안성을 제공해주는 프로토콜 기반 보안 구조입니다. 메시지 인증을 보장하는 AH(Authentication Header)와 데이터 기밀성을 보장하는 ESP(Encapsulating Security Payload)를 활용합니다.
9. 애플리케이션을 실행하지 않고, 소스 코드에 대한 코딩 표준, 코딩 스타일, 코드 복잡도 및 남은 결함을 발견하기 위해 사용하는 도구는 무엇인지 쓰시오.
정적 분석 도구
> 해설:
> 정적 분석 도구(Static Analysis Tool)는 작성된 소스 코드를 실제로 실행해보지 않고, 문법이나 논리적 구조, 코딩 스타일 등을 분석하여 결함 및 보안 취약점을 사전에 찾아내는 도구입니다. 이와 반대로 실제 프로그램을 실행하면서 오류를 찾는 것은 동적 분석 도구라고 합니다.
10. 다음 보기가 설명하는 패턴을 쓰시오. (영문 Full-Name으로 작성하시오)
[보기]
한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들이 연락이 가고 자동으로 내용이 갱신되는 방법으로 일대 다의 의존성을 가지며 상호작용하는 객체 사이에서는 가능하면 느슨하게 결합하는 디자인을 사용해야 한다.
Observer Pattern
> 해설:
> 옵서버 패턴(Observer Pattern)은 상태 변화가 발생할 때마다, 이 객체(주제)를 관찰하고 있던 다른 의존 객체(옵서버)들에게 자동으로 변경 사항을 통보해주는 행위 디자인 패턴입니다. 주로 발행-구독(Publish-Subscribe) 모델을 구현할 때 사용되며 객체 간의 결합도를 낮출 수 있습니다.
11. Linux 운영체제 위에서 구동하며 휴대폰 전화를 비롯한 휴대용 장치를 위한 운영체제와 미들웨어, 사용자 인터페이스 그리고 표준 응용프로그램(웹 브라우저 등) 등을 포함하고 있는 소프트웨어 스택이자 리눅스 모바일 운영체제로 개발자들이 자바와 코틀린 언어로 응용 프로그램을 작성할 수 있게 했고, 컴파일 된 바이트 코드를 구동할 수 있는 런타임 라이브러리를 제공하는 운영체제는 무언인지 쓰시오.
안드로이드
> 해설:
> 안드로이드(Android)는 스마트폰, 태블릿 등 모바일 기기를 위해 구글에서 개발한 오픈 소스 기반의 운영체제입니다. 리눅스 커널 위에서 동작하며, 자바(Java) 및 코틀린(Kotlin) 언어를 통해 다양한 애플리케이션을 개발하고 가상 머신 위에서 동작시킬 수 있는 환경을 제공합니다.
12. 학생 테이블의 name속성에 IDX\_NAME 이름으로 인덱스 생성하는 SQL문을 작성하시오.
| STID | NAME | SCORE | DEPTID |
| 1000 | 김이름 | 90 | 1 |
| 2000 | 허이름 | 95 | 2 |
| 3000 | 조이름 | 90 | 3 |
| 4000 | 장이름 | 95 | 4 |
CREATE INDEX IDX\_NAME ON 학생(NAME);
> 해설:
> DDL을 사용하여 데이터베이스 인덱스를 생성하는 기본 구문은 CREATE INDEX 인덱스명 ON 테이블명(속성명); 입니다.
> 문제의 조건에 따라 이름은 IDX_NAME, 테이블은 학생, 적용할 속성명은 NAME으로 지정하여 구문을 완성합니다.
13. 다음 설명 중 빈칸에 들어갈 알맞는 용어를 작성하시오.
HTTP, HTTPS SMTP를 통해서 XML 기반의 데이터를 주고받는 프로토콜로 웹 서비스 방식에 HTTP기반의 ( ) 을/를 사용하여 송수신한다. ( ) 대신 레스트풀(RESTful) 프로토콜로 대체할 수 있다.
SOAP (Simple Object Access Protocol)
> 해설:
> SOAP은 네트워크 상에서 웹 서비스를 제공하기 위해 컴퓨터 간에 교환되는 메시지를 XML 형식으로 구성하는 프로토콜입니다. HTTP 등의 프로토콜을 통신 매체로 사용하여 구조화된 정보를 원격으로 송수신할 수 있도록 해줍니다.
14. SQL Injection이 무엇인지 서술하시오.
응용 프로그램의 보안 취약점을 이용해서 악의적인 SQL 구문을 삽입, 실행시켜서 데이터베이스의 접근을 통해 정보를 탈취하거나 조작 등의 행위를 하는 공격 기법
15. 사용자에게 읽기 / 쓰기 / 실행 권한을 부여하고 그룹에게는 읽기 / 실행을 부여하고 그 이외에는 실행 권한을 a.txt에 부여하는 명령어를 한줄로 작성하시오 (8진법을 사용하시오)
chmod 751 a.txt
> 해설:
> 유닉스/리눅스 환경에서 chmod 명령어를 통해 파일 및 디렉터리의 권한을 8진수로 설정하는 방법입니다.
> - 읽기(r)=4, 쓰기(w)=2, 실행(x)=1로 계산합니다.
> - 사용자(소유자) 권한: 읽기+쓰기+실행 = 4+2+1 = 7
> - 그룹 권한: 읽기+실행 = 4+0+1 = 5
> - 기타(그 외) 권한: 실행 = 0+0+1 = 1
> 따라서 751 이라는 권한 값을 a.txt 파일에 적용합니다.
16. UI 설계 원칙에서 정확하고 완벽하게 사용자의 목표가 달성될 수 있도록 제작할 수 있어야 한다. 다음 빈칸에 들어갈 특징은 무엇인가?
직관성 - 누구나 쉽게 이해하고 사용할 수 있어야 한다.
학습성 - 누구나 쉽게 배우고 익힐 수 있어야 한다.
유연성 - 사용자의 요구사항을 최대한 수용하며 오류를 최소화해야 한다.
( ) - 사용자의 목적을 정확하게 달성하여야 한다.
유효성
> 해설:
> UI 설계 4원칙은 직관성, 학습성, 유연성, 유효성으로 이루어집니다. 이 중 유효성(Effectiveness)은 사용자가 시스템을 통해 자신의 목적을 얼마나 정확하고 완벽하게 달성할 수 있는지를 의미하는 원칙입니다.
17. 전 세계 오픈된 정보를 하나로 묶는 방식으로 link data와 open data의 합성어가 무엇인지 쓰시오.
LOD (Linked Open Data)
> 해설:
> LOD(Linked Open Data)는 누구나 자유롭게 이용할 수 있는 개방형 데이터(Open Data)와 데이터의 연관관계를 웹 상에 연결(Linked Data)하여, 기계가 쉽게 이해하고 의미 파악을 할 수 있도록 제공하는 방식을 뜻합니다.
18. 다음은 데이터 모델링 절차이다. 절차에 맞도록 보기에서 찾아 채우시오.
[보기]
1. 물리적 데이터 모델링
2. 개념적 데이터 모델링
3. 논리적 데이터 모델링
요구사항 분석 > ( 1. ) > ( 2. ) > ( 3. )
1. 개념적 데이터 모델링
2. 논리적 데이터 모델링
3. 물리적 데이터 모델링
> 해설:
> 데이터베이스 설계는 일반적으로 아래의 4단계로 진행됩니다.
> - 요구조건 분석: 사용자의 요구사항 파악
> - 개념적 모델링: 요구사항을 토대로 개념적 스키마(E-R 다이어그램 등) 생성
> - 논리적 모델링: DBMS에 맞는 논리적 스키마 구조(관계형 모델 등)로 변환
> - 물리적 모델링: 실제 저장 장치에 맞도록 데이터 저장 구조 및 접근 경로 결정
19. 다음은 자바 코드이다. 출력 결과를 쓰시오.
class A{
private int a;
public A(int a){
this.a = a;
}
public void display(){
system.out.println("a=" + a);
}
}
class B extends A {
public B(int a){
super(a);
super.display();
}
}
public class good {
public static void main(String[] args){
B obj = new B(10);
}
}
a = 10
> 해설:
> 자바의 상속 및 super 키워드의 활용 과정을 묻는 문제입니다.
> - 객체 생성: B obj = new B(10); 코드가 실행되며 클래스 B의 생성자 B(int a)가 호출됩니다.
> - 부모 생성자 호출: B의 생성자 내부에서 super(10);이 가장 먼저 실행되어 부모 클래스인 A의 생성자 A(int a)를 호출합니다. 인수로 10이 전달됩니다.
> - 변수 초기화: 부모 생성자 A(int a) 내부에서 this.a = a; 가 실행되어 클래스 A의 private 멤버 변수 a에 10이 저장됩니다.
> - 부모 메서드 호출: 부모 생성자 실행이 완료된 후, 자식 생성자로 돌아와서 그 다음 줄인 super.display();를 실행합니다.
> - 출력 처리: 부모 클래스 A에 선언된 display() 메서드가 실행되어 저장된 값인 10과 함께 "a=" + a를 출력하게 됩니다.
> - 최종적으로 화면에는 a=10이 출력됩니다.
20. 소프트웨어 개발 과정에서 변경 사항을 관리하는 기법은 ( ) 기법이라고 하며, ( ) 기법을 활용한 도구로는 CVS, SVN, Git 등이 있다. 빈칸에 알맞은 용어를 쓰시오.
형상관리
> 해설:
> 형상 관리(Configuration Management)는 소프트웨어 개발 생명주기 전체에 걸쳐 생성되는 각종 산출물(소스 코드, 설계 문서 등)의 변경 사항을 체계적으로 추적하고 관리하여 가시성과 무결성을 확보하는 기법입니다.
---
안녕하세요. 2020년 3회 정보처리기사 실기 기출문제를 정리해보았습니다.
기출문제이면서 보완설명을 덧붙여 정리하였으니 도움이 되었으면 좋겠습니다. (녹색은 답 / 파랑색은 해설입니다.)
정보처리기사 개편안인 2020년 시험부터 기출문제를 정리하였습니다.
1. 리팩토링의 목적에 대하여 서술하시오.
복잡한 코드의 단순화, 소스의 가독성을 통해 유지보수성 향상, 유연한 시스템, 생산성 향상, 품질 향상이 있다.
2. 다음은 C언어 소스 코드이다. 출력 결과를 쓰시오.
#include <stdio.h>
void main(){
int i=0, c=0;
while (i<10){
i++;
c*=i;
}
printf("%d",c);
}
0
c가 0이므로 어떤수를 곱해도 0이 됩니다.
> 해설:
> C 언어의 while 반복문 제어 흐름에 관한 문제입니다.
> - 초기 상태: i = 0, c = 0
> - while (i < 10) 조건에 따라 i가 10이 될 때까지 블록 내부가 10번 반복 실행됩니다.
> - 첫 번째 루프:
> - i++ 실행 -> i = 1
> - c *= i는 c = c * i와 같으므로, c = 0 * 1 = 0이 되어 여전히 0입니다.
> - 이후 루프: i는 2, 3, 4... 10까지 증가하지만 매번 c = 0 * i가 수행되어 c 값은 영원히 0에 머무릅니다.
> - 결과 출력: while 문을 빠져나온 후 변수 c를 출력하므로 결과는 0입니다.
3. 대표적인 내부 라우팅 프로토콜로 다익스트라 알고리즘을 이용한 대규모 네트워크에 적합한 링크 상태 라우팅 프로토콜로 불리는 라우팅 프로토콜은 무엇인가?
OSPF(Open Shortest Path First)
OSPF(Open Shortest Path First)의 특징 :
다익스트라 알고리즘 사용 - 다익스트라 알고리즘 사용하는 내부 라우팅 프로토콜
라우팅 메트릭 지정 - 최소, 지연, 최대 처리량 등 관리자가 라우팅 메트릭 지정
AS분할 사용 - 자치 시스템을 지역으로 나누어 라우팅을 효과적으로 관리
홉 카운트 무제한 - 홉 카운트에 제한이 없다.
라우팅 : 어떤 네트워크 안에서 통신 데이터를 보낼 때 최적의 결로를 선택하는 과정입니다.
4. 형상 통제를 설명하시오.
형상 항목의 버전 관리를 위해서 변경 여부와 변경 활동을 통제하는 활동
형상 관리 절차 :
형상 식별 - 형상 관리 대상을 정의 및 식별하는 활동
형상 통제 - 형상 항목의 버전 관리를 위한 형상통제위원회 운영
형상 감사 - 소프트웨어 베이스라인의 무결성 평가
형상 기록 - 소프트웨어 현상 및 변경관리에 대한 각종 수행결과를 기록
5. 심리학자 톰 마릴은 컴퓨터가 메세지를 전달하고, 메세지가 제대로 도착했는지 확인하며, 도착하지 않았을 경우 메세지를 재전송하는 일련의 방법을 '기술적 은어'를 뜻하는 ( )이라는 용어로 정의했다. 괄호 ( ) 안에 들어갈 용어를 쓰시오.
프로토콜
프로토콜 : 서로 다른 시스템이나 기기들 간의 데이터 교환을 원할히 하기 위한 표준된 통신규약입니다.
프로토콜 기능 : 데이터 처리 기능 / 제어 기능 / 관리 기능
6. TCP/IP에서 오류가 발생하면 ( ) 메세지를 보내서 오류가 발생했음을 알린다. 괄호 ( )안에 들어갈 용어를 쓰시오.
ICMP(Internet Control Message Protocol)
ICMP : IP 패킷을 처리할 때 발생하는 문제를 알려주는 프로토콜로, 메세지 형식은 8바이트의 헤더와 가변 길이의 데이터 영역으로 분리되어 있다.
7. 다음 아래 제어 흐름 그래프가 분기 커버리지를 만족하기 위한 테스팅 순서를 쓰시오.

1234561, 124567 or 1234567, 124561
결정 커버리지는 결정 포인트 내의 전체 조건식이 적어도 한 번은 참과 거짓의 결과를 수행해야 하기 때문에 첫 번째 분기문도 참, 거짓이 와야 하고, 두 번째 분기도 참, 거짓이 한 번씩 와야 한다.
8. 다음 조건을 만족하면서, 과목별 점수의 평균이 90이 상인 과목이름, 최소점수, 최대점수를 구하는 SQL문을 작성하시오.
[성적]
| 과목코드 | 과목이름 | 학점 | 점수 |
| 1000 | 컴퓨터과학 | A+ | 95 |
| 2000 | 운영체제 | B+ | 85 |
| 1000 | 컴퓨터과학 | B+ | 85 |
| 2000 | 운영체제 | B | 80 |
[결과]
| 과목이름 | 최소점수 | 최대점수 |
| 컴퓨터과학 | 85 | 95 |
SELECT 과목이름, MIN(점수) AS 최소점수, MAX(점수) AS 최대점수 FROM 성적
GROUP BY 과목이름 HAVING AVG(점수) >= 90;
> 해설:
> GROUP BY와 HAVING을 사용하여 집계 데이터를 구하는 SQL 구문입니다.
> - GROUP BY 과목이름: 과목이름을 기준으로 데이터를 그룹화합니다.
> - HAVING AVG(점수) >= 90: 그룹화된 상태에서 그룹별 점수의 평균(AVG(점수))이 90 이상인 그룹(과목)만을 조건으로 걸러냅니다. WHERE절은 그룹화 이전에 행을 필터링하지만, 그룹화된 이후에 그룹 단위 조건을 적용하려면 HAVING을 써야 합니다.
> - MIN(점수) AS 최소점수, MAX(점수) AS 최대점수: 요구사항에 맞게 각 그룹의 최소값과 최대값을 집계하고 AS 예약어를 통해 별칭을 부여합니다.
9. 학생 테이블에서 이름이 민수인 튜플을 삭제하는 SQL문을 작성하시오
[학생]
| 학번 | 이름 | 점수 | 과목이름 |
| 1000 | 김정미 | 90 | 알고리즘 |
| 2000 | 강은미 | 95 | 데이터베이스 |
| 3000 | 홍길동 | 90 | 전산수학 |
| 4000 | 민수 | 95 | 운영체제 |
DELETE FROM 학생 WHERE 이름 = '민수';
> 해설:
> 데이터베이스의 데이터를 삭제할 때 사용하는 DML 질의어는 DELETE입니다.
> - 특정 조건을 만족하는 레코드를 삭제하는 기본 구문은 DELETE FROM 테이블명 WHERE 조건식; 입니다.
> - 문제에 따라 학생 테이블에서 이름이 '민수'인 행을 삭제하라는 조건을 걸어 완성할 수 있습니다.
10. 릴레이션 A, B가 있을 때 릴레이션 B 조건에 맞는 것들만 릴레이션 A에서 튜플을 꺼내 프로젝션하는 관계 대수의 기호는 무엇인가?
÷
순수관계연산자는 셀렉트(σ) / 프로젝트(π) / 조인(⋈) / 디비전(÷) 이 있습니다.
셀렉트 : 릴레이션에 존재하는 튜플들 중에서 특정 조건을 만족하는 튜플들의 부분집합을 구하여 새로운 릴레이션을 만듭니다.
프로젝트 : 주어진 릴레이션에서 속성 리스트에 제시된 속성 값만을 추출하여 새로운 릴레이션을 만듭니다.
(단 연산 결과에 중복이 발생하면 중복이 제거됩니다.)
조인 : 공통 속성을 중심으로 2개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만듭니다.
11. 다음 중 헝가리안 표기법(Hungarian Case)에 대해서 서술하시오.
헝가리안 표기법은 식별자 표기 시 접두어에 자료형을 붙이는 표기법
식별자 표기법 :
카멜 표기법 - 식별자 표기 시에 여러 단어가 이어지면 첫 단어 시작만 소문자로 표시하고, 각 단어의 첫 글자는 대문자로 지정하는 표기법 (ex : goodMan)
파스칼 표기법 - 식별자 표기 시에 여러 단어가 이어지면 각 단어의 첫 글자는 대문자로 지정하는 표기법
(ex : GoodMan)
스네이크 표기법 - 식별자 표기 시에 여러 단어가 이어지면 단어 사이에 언더 바를 넣는 표기법 (ex : good\_man)
헝가리안 표기법 - 식별자 표기 시, 접두어에 자료형을 붙이는 표기법
(ex : szGoodMan (sz는 String Zero로 약자로 문자열이 없다는 표기입니다.)
12. 테스트의 종류 중, 둥치분할 테스트, 경계값 분석 테스트 등의 종류가 있는 테스트 기법을 쓰시오.
블랙박스 테스트 (명세 기반 테스트)
블랙박스 테스트는 소프트웨어가 수행할 특정 기능을 알기 위해서 각 기능이 완전히 작동되는 것을 입증하는 테스트로 기능 테스트라고 불립니다.
동치 분할 검사 :
입력 자료에 초점을 맞춰 테스트 케이스를 만들고 검사하는 방법 (= 동등 분할 기법)
경계값 분석 :
입력 자료에만 치중한 동치 분할 기법을 보완한 기법으로, 입력 조건의 중간값보다 경계값에서 오류가 발생될 확률이 높다는 점을 이용하여 입력 조건의 경계값을 테스트 케이스로 선정하여 검사하는 기법
원인-효과 그래프 검사 :
입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음 효용성이 높은 테스트 케이스를 선정하여 검사하는 기법
오류 예측 검사 :
과거의 경험이나 확인자의 감각으로 테스트하는 기법으로, 다른 블랙박스 테스트 기법으로는 찾아낼 수 없는 오류를 찾아내는 일력의 보충적 검사 기법 (= 데이터 확인 검사)
비교 검사 :
여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 동일한 결과가 출력되는지 테스트하는 기법
13. 다음은 C언어 소스 코드이다. 출력 결과를 쓰시오.
#include <studio.h>
int r1(){
return 4;
}
int r10(){
return (30+r1());
}
int r100(){
return (200+r10());
}
int main(){
printf("%d\n", r100());
return 0;
}
234
> 해설:
> C 언어의 연쇄적인 함수 호출과 반환 값을 계산하는 문제입니다.
> - main() 함수에서 r100() 함수를 호출하여 반환값을 출력하도록 되어 있습니다.
> - r100() 실행: 200 + r10()을 반환해야 하므로 r10() 호출이 발생합니다.
> - r10() 실행: 30 + r1()을 반환해야 하므로 r1() 호출이 발생합니다.
> - r1() 실행: 이 함수는 상수 4를 반환합니다.
> - 결과값이 역순으로 다시 대입됩니다.
> - r10()은 30 + 4가 되어 34를 반환합니다.
> - r100()은 200 + 34가 되어 234를 반환합니다.
> - 최종적으로 printf 함수에 의해 234가 출력됩니다.
14. DB스키마에 대해서 서술하시오.
데이터베이스의 구조, 제약조건 등의 정보를 담고 있는 기본적인 구조
15. 다음은 자바 코드이다. 출력 결과를 쓰시오.
abstract class vehicle{
private String name;
abstract public String getName(String val);
public String getName(){
return "vehicle name:" + name;
}
public void setName(String val){
name = val;
}
}
class Car extends Vehicle{
public Car(String val){
setName(val);
}
public String getName(String val){
return "Car name : " + val;
}
public String getName(byte val[]){
return "Car name : " + val;
}
}
public class good {
public Static void main(String[] args){
Vehicle obj = new Car("Spark");
System.out.print(obj.getName());
}
}
Vehicle name : Spark
> 해설:
> 자바 객체지향의 다형성(Polymorphism)과 메서드 오버로딩(Overloading)의 함정을 파악하는 문제입니다.
> - 객체 생성: Vehicle obj = new Car("Spark");
> - 자식 객체 Car가 생성되어 부모 타입인 Vehicle 변수 obj에 담깁니다. (업캐스팅)
> - Car의 생성자가 "Spark"를 전달받아 setName("Spark")를 호출하고, 이는 부모 Vehicle에 있는 name 변수를 "Spark"로 변경시킵니다.
> - 메서드 호출: obj.getName()
> - 매개변수가 없는 getName()을 호출합니다. 자식 클래스인 Car에는 파라미터가 있는 getName(String val)과 getName(byte val[])만 정의되어 있으며, 매개변수가 없는 getName()은 오버라이딩(재정의) 되지 않았습니다.
> - 따라서 상속받은 부모 클래스 Vehicle의 getName()이 그대로 실행됩니다.
> - 출력 처리: 부모의 getName()이 "vehicle name:" + name을 반환하므로 최종 결과는 Vehicle name : Spark 가 됩니다.
16. UI 설계 원칙 중 직관성에 대해서 쓰시오.
누구나 쉽게 이해하고, 쉽게 사용할 수 있어야 하고,쉬운 검색, 쉬운 사용성, 일관성이 부특성을 가지고 있는 UI설계 원칙
17. 다음은 자바 코드이다. 출력 결과를 쓰시오.
public class good {
public static void main(String[] args){
int i=0;
int sum=0;
while (i<10){
i++;
if(i%2 ==1)
continue;
sum += i;
}
System.out.println(sum);
}
}
30
2+4+6+8+10=30이 됩니다.
> 해설:
> continue 제어문의 역할을 이해하고 조건을 판별해 누적합을 구하는 자바 코드 흐름 추적 문제입니다.
> - 초기 변수: i = 0, sum = 0
> - while(i < 10) 조건에 의해 i가 1부터 10까지 1씩 증가하며 반복됩니다.
> - 반복문 안에서 if(i % 2 == 1) continue; 조건을 만납니다. i를 2로 나눈 나머지가 1(즉, i가 홀수)일 경우에는 continue 명령어가 실행되어 바로 다음 반복 루프로 넘어가게 되고 아래의 sum += i;는 생략됩니다.
> - 반대로 i가 짝수일 때는 continue를 건너뛰고 sum += i 연산이 실행되어 누적됩니다.
> - 값 변화:
> - i=1 (홀수) -> continue
> - i=2 (짝수) -> sum = 0 + 2 = 2
> - i=3 (홀수) -> continue
> - i=4 (짝수) -> sum = 2 + 4 = 6
> - i=5 (홀수) -> continue
> - i=6 (짝수) -> sum = 6 + 6 = 12
> - i=7 (홀수) -> continue
> - i=8 (짝수) -> sum = 12 + 8 = 20
> - i=9 (홀수) -> continue
> - i=10 (짝수) -> sum = 20 + 10 = 30
> - 반복문 종료 후 변수 sum이 출력되므로 결과는 30입니다.
18. EAI 유형에는 메세지 버스(Message bus), 하이브리드(Hybrid), ( 1. ), ( 2. ) 4가지가 있다.
1. 포인트 투 포인트(Point-to-point)
2. 허브 앤 스포크(Hub & Spoke)
EAI (기업 내외부 정보시스템 통합)
EAI의 유형 (데이터 전송 모델)
메세지 버스 : 애플리케이션과 미들웨어간 웹서비스 인터페이스를 통해 전송
하이브리드 : 허브앤스포크와 메세지버스 혼합
포인트 투 포인트 : 1:1방식으로 애플리케이션 통합 수행
허브 앤 스포크 : 단일 접점인 허브시스템을 통해 데이터를 전송하는 중앙 집중 방식
19. C++에서 생성자란 무엇인지 쓰시오.
해당 클래스의 객체가 생성될 때 자동으로 호출되는 특수한 종류의 메서드
20. 학생 테이블에 주소 속성을 추가하는 SQL문을 작성하시오.
( 1. ) TABLE 학생 ( 2. ) 주소 VARCHAR(20);
1.ALTER
2.ADD
> 해설:
> 테이블의 구조를 변경할 때 사용하는 데이터 정의어(DDL) 명령어는 ALTER입니다.
> - 기존 테이블에 새로운 속성을 추가하는 명령어의 기본 골격은 ALTER TABLE 테이블명 ADD 속성명 데이터타입; 형태입니다.
> - 빈칸에 맞춰 넣으면 ALTER TABLE 학생 ADD 주소 VARCHAR(20);이 완성됩니다.
---
안녕하세요. 2020년 4회 정보처리기사 실기 기출문제를 정리해보았습니다.
기출문제이면서 보완설명을 덧붙여 정리하였으니 도움이 되었으면 좋겠습니다. (녹색은 답 / 파랑색은 해설입니다.)
정보처리기사 개편안인 2020년 시험부터 기출문제를 정리하였습니다.
1. 현재 IPv4의 확장형으로 IPv4가 가지고 있는 주소 고갈, 보안성, 이동성 지원 등의 문제점을 해결하기 위해서 개발된 128비트 주소체계를 갖는 차세대 인터넷 프로토콜은 무엇인가?
IPv6
> 해설:
> IPv6(Internet Protocol version 6)는 기존 IPv4의 32비트 주소 체계가 직면한 IP 주소 고갈 문제를 본질적으로 해결하기 위해 개발된 128비트 크기의 차세대 인터넷 주소 체계입니다. 보안성과 라우팅 효율성, 확장성이 뛰어납니다.
2. 목적에 따른 디자인 패턴의 유형에는 생성, 구조, ( ) 이/가 있다. 괄호 ( ) 안에 알맞는 유형을 쓰시오.
행위
디자인 패턴
목적 : 생성 / 구조 / 행위
범위 : 클래스 / 객체
3. 다음은 판매와 관련된 다이어그램이다. 해당 다이어그램의 명칭을 쓰시오.

패키지 다이어그램
UML(Unified Modeling Laguage)다이어그램 :
UML 다이어그램은 통합 모델링 언어를 사용하여 시스템 상호작용, 업무흐름, 시스템 구조, 컴포넌스 관계 등을 그린 도면입니다. 사용이유는 프로그래밍을 단순화 시켜 표현하여 의사소통하기 좋고, 대규모 프로젝트 구조의 로드맵을 만들거나 개발을 위한 시스템 구축에 기본을 마련합니다.
UML 다이어그램의 종류 :
클래스 다이어그램 / 객체 다이어그램 / 유스케이스 다이어그램 / 상태 다이어그램 / 시퀸스 다이어그램 /
활동 다이어그램 / 통신 다이어그램 / 컴포넌트 다이어그램 / 배포 다이어그램 / 복합체 구조 다이어그램 /
교류 개요 다이어그램 / 타이밍 다이어그램 / 패키지 다이어그램
패키지 다이어그램은 UML 다이어그램의 안에 속하는 다이어그램입니다.
폴더 모양의 패키지와 점섬으로 표시된 의존관계, import라는 스테레오 타입 표기를 통해 패키지 다이어그램인지 파악합니다.
4. 데이터베이스의 회복(Recovery) 기법 중 Rollback 시 Redo, Undo가 모두 실행되는 트랜잭션 처리법으로 트랜잭션 수행 중 갱신 결과를 바로 DB에 반영하는 기법은 무엇인가?
즉각 갱신 회복 기법
회복 기법 종류 :
로그 기반 회복 기법 - 지연 갱신 회복 기법 / 즉각 갱신 회복 기법
체크 포인트 회복 기법
그림자 페이징 회복 기법
미디어 회복 기법
지연 갱신 회복 기법 :
트랜잭션의 부분 완료 상태에선 변경 내용을 로그 파일에만 저장
체크 포인트 회복 기법 :
장애 발생 시, 검사점(checkpoint) 이전에 처리된 트랜잭션은 회복에서 제외하고 검사점 이후에 처리된 트랜잭션은 회복 작업 수행
그림자 페이징 회복 기법 :
트랜잭션이 실행되는 메모리상의 current page table과 하드디스크의 shadow page table이용
미디어 회복 기법 :
디스크와 같은 비휘발성 저장 장치가 손상되는 장애 발생을 대비한 회복 기법
5. 다음은 n이 10일 때, 10을 2진수로 변환하는 자바 소스 코드이다. 1,2에 알맞는 값을 적으시오.
[출력결과] : 00001010
class good {
public static void main (String[] args) {
int[]a = new int[8];
int i=0; int n=10;
while ( 1. ) {
a[i++] = ( 2. );
n /= 2;
}
for(i=7; i>=0; i--){
System.out.print(a[i]);
}
}
}
1. n > 0 or n >=1 or i < 8 or i <= 7
2. n%2 or n&1
> 해설:
> 10진수를 2진수로 변환하여 배열에 담은 후, 배열의 끝부분부터 역순으로 읽어 2진법 표현을 출력하는 자바 코드입니다.
> 10진수에서 2진수로 변환할 때, 변환하려는 수를 0이 될 때까지 계속 2로 나누면서 그 나머지들을 역순으로 취하는 원리를 이용합니다.
> - 초기 상태: int n = 10;, int i = 0;
> - 반복문 제어 (빈칸 1): 10진수 n을 2로 계속 나누어 몫을 취하므로, n은 점차 줄어들어 0이 됩니다. 더 이상 나눌 수 없을 때 루프가 끝나야 하므로 괄호 1에는 조건으로 n > 0 (또는 n >= 1)이 들어갑니다. (반복문 제어 변수로 i < 8을 써도 동작은 합니다.)
> - 나머지 도출 및 배열 저장 (빈칸 2): 나누기 과정에서 생기는 나머지를 저장하기 위해 n % 2 (비트 연산 n & 1도 동일 결과)를 괄호 2에 넣습니다.
> - 루프 내 흐름 추적:
> - 1회차 루프: a[0] = 10 % 2 = 0, n = 10 / 2 = 5
> - 2회차 루프: a[1] = 5 % 2 = 1, n = 5 / 2 = 2
> - 3회차 루프: a[2] = 2 % 2 = 0, n = 2 / 2 = 1
> - 4회차 루프: a[3] = 1 % 2 = 1, n = 1 / 2 = 0
> - 5회차 조건 불만족으로 종료됨.
> - 이때 8크기 배열 a의 상태는 앞쪽 4칸에만 값이 들어있고 [0, 1, 0, 1, 0, 0, 0, 0]의 형태입니다. 이를 뒷 인덱스부터 역순 출력하면 00001010이 나옵니다.
6. 다음은 자바 소스 코드이다. 출력 결과를 보고 , 1,2에 알맞는 값을 적으시오.
[출력 결과]
1 4 7 10 13
2 5 8 11 14
3 6 9 12 15
public class good {
public static void main(String[] args) {
int[][]a = new int[(1.)][(2.)];
for(int i = 0; i <3; i++){
for(int j=0; j < 5; j++){
a[i][j] = j*3+(i+1);
System.out.print(a[i][j]+"");
}
System.out.println();
}
}
}
1. 3
2. 5
> 해설:
> 2차원 배열의 행과 열 크기를 지정하여 메모리를 할당하는 자바 기본 문제입니다.
> - 결과를 살펴보면, 5개의 숫자가 한 줄을 이루고 총 3줄이 출력되는 것을 알 수 있습니다. 즉 행 크기가 3이고 열 크기가 5인 int[3][5] 크기의 2차원 배열 구조입니다.
> - 코드 내부의 이중 for 루프를 보아도 i 반복문이 행 인덱스(0~2까지 3회), j 반복문이 열 인덱스(0~4까지 5회)를 담당함을 쉽게 유추할 수 있습니다.
> - 따라서 배열 선언부에서 앞 괄호 (1)에는 행 크기 3, 뒤 괄호 (2)에는 열 크기 5가 들어갑니다.
7. 스니핑(Sniffing)에 대하여 서술하시오.
암호화되지 않은 패킷들을 수집하여 순서대로 재조합 후 ID, PW와 같은 중요한 정보를 유출하기 위한 수동적인 형태의 공격
네트워크 공격 기법
스니핑 / 네트워크 스캐너, 스니퍼 / 패스워드 크래킹 / IP 스푸핑 / ARP 스푸핑 / ICMP Redirect 공격 / 트로이 목마
IP스푸핑 : 발신지 IP나 목적지 IP를 위조하여 공격하는 기법
ARP스푸핑 : MAC 주소를 위조하여 랜상에서의 통신 흐름을 왜곡시키는 공격 기법
트로이 목마 : 사용자가 원하는 무언가로 변장해 시스템 방어망을 뚫고 들어가는 공격 기법
8. IP 패킷에서 외부의 공인 IP주소와 포트 주소에 해당하는 내부 IP주소를 재기록하여 라우터를 통해 네트워크 트래픽을 주고받는 기술은 무엇인가?
NAT(Network Address Transformation)
> 해설:
> NAT(Network Address Translation)는 한정된 공인 IP 주소 자원을 효율적으로 사용하기 위해 내부 네트워크에서 사용하는 사설 IP 주소를 라우터 등을 거쳐 외부 인터넷 통신 시 공인 IP 주소로 상호 변환해 주는 통신 기술입니다.
9. 다음은 파이썬 소스 코드이다. 출력 결과를 쓰시오.
lol = [[1,2,3],[4,5],[6,7,8,9]]
print(lol[0])
print(lol[2][1])
for sub in lol:
for item in sub:
print(item, end = '')
print()
[1,2,3]
7
123
45
6789
> 해설:
> 파이썬의 중첩 리스트(2차원 배열) 인덱싱 및 이중 for 문 흐름에 대한 문제입니다.
> - lol = [[1, 2, 3], [4, 5], [6, 7, 8, 9]]는 총 3개의 리스트 요소를 갖고 있는 2차원 리스트입니다.
> - print(lol[0]): 인덱스 0번에 있는 첫 번째 항목 [1, 2, 3]을 통째로 출력합니다.
> - print(lol[2][1]): 바깥 리스트의 인덱스 2번([6, 7, 8, 9]) 내부에서 다시 인덱스 1번에 위치한 값인 7을 출력합니다.
> - for 반복문 흐름:
> - 바깥 반복문 for sub in lol:은 요소로 들어있는 리스트들을 하나씩 sub 변수로 꺼냅니다.
> - sub가 [1, 2, 3]일 때: 내부 반복문이 각 항목을 순회하며 print(item, end='')를 통해 가로로 줄바꿈 없이 출력하여 123이 출력됩니다. 안쪽 루프가 끝난 뒤 print()가 실행되어 줄바꿈이 일어납니다.
> - sub가 [4, 5]일 때: 동일하게 안쪽 항목을 붙여서 45로 출력하고 줄바꿈합니다.
> - sub가 [6, 7, 8, 9]일 때: 안쪽 항목을 붙여 6789를 출력하고 종료됩니다.
10. 분산 컴퓨팅 기술 기반의 데이터 위변조 방지 기술로 P2P방식을 기반으로 하여 소규모 데이터들이 연결되어 형성된 '블록'이라는 분산 데이터 저장 환경에 관리 대상 데이터를 저장함으로써 누구도 임의로 수정할 수 없고 누구나 변경의 결과를 열람할 수 있게끔 만드는 기술은 무엇인가?
블록체인
> 해설:
> 블록체인(Blockchain)은 중앙 서버에 데이터를 보관하는 전통적인 방식에서 벗어나, P2P 분산 환경에서 거래 내역이 담긴 '블록'들을 사슬처럼 연결하여 네트워크 참여자 모두에게 복제하고 분산 저장하는 기술을 말합니다. 이로 인해 임의의 위변조가 사실상 불가능합니다.
11. 오픈 소스 기반으로 한 분산 컴퓨팅 플랫폼으로, 일반 PC급 컴퓨터들로 가상화된 대형 스토리지를 형성하고 그 안에 보관된 거대한 데이터 세트를 병렬로 처리할 수 있도록 개발된 자바 소프트웨어 프레임워크로 구글, 야후 등에 적용한 기술은 무엇인가?
하둡
> 해설:
> 하둡(Hadoop)은 방대한 빅데이터를 다수의 저렴한 컴퓨터 노드들에 분산 저장하고, 맵리듀스(MapReduce)라는 데이터 처리 기법을 활용해 병렬로 빠르게 처리하도록 지원하는 자바 기반의 오픈 소스 소프트웨어 프레임워크입니다.
12. 이상 현상의 종류 3가지를 쓰시오.
삽입 이상, 삭제 이상, 갱신 이상
데이터베이스의 이상현상 3가지
13. 다음은 프로세스 상태 전이도이다. 1,2,3에 알맞은 상태를 쓰시오.

1. 준비
2. 실행
3. 대기
> 해설:
> 프로세스 상태 전이도는 프로세스의 생명주기를 나타냅니다.
> - 메모리에 적재되어 CPU 할당을 기다리는 ( 1. 준비, Ready ) 상태
> - 디스패치(Dispatch) 되어 CPU를 점유하고 명령을 처리하는 ( 2. 실행, Running ) 상태
> - 입출력 요청이 발생하여 CPU를 반환하고 입출력 완료를 기다리는 ( 3. 대기, Block/Wait ) 상태로 나뉩니다. 입출력이 완료되면 다시 준비 상태 큐로 들어가게 됩니다.
14. 테스트 오라클 중 특정한 몇 개의 입력값에 대해서만 기대하는 결과를 제공해주는 오라클은 무엇인가?
샘플링 오라클
테스트 오라클은 테스트의 결과가 참인지 거짓인지를 판단하기 위해서 사전에 정의된 참값을 입력하여 비교하는 기법
테스트 오라클 유형 :
참 오라클 - 모든 입력값에 대하여 기대하는 결과를 생성하여 오류 검출
샘플링 오라클 - 특정한 몇 개의 입력값에 대해서만 기대하는 결과를 제공
휴리스틱 오라클 - 샘플링 오라클을 개선 / 특정 입력값에 올바른 결과를 제공하고 나머지 값은 휴리스틱(추정)으로 처리
일관성 검사 오라클 - 애플리케이션 변경이 있을 때, 수행 전과 후의 결괏값이 동일한지 확인
15. 점수에 따른 성적 부여가 잘 되었는지 테스트하고자 한다. 아래에 알맞는 테스트 기법은 무엇인가?
| 점수 | 성적 |
| 0 ~ 59 | 가 |
| 60 ~ 69 | 양 |
| 70 ~ 79 | 미 |
| 80 ~ 89 | 우 |
| 90 ~ 100 | 수 |
[테스트 값] : -10점 / 30점 / 65점 / 75점 / 85점 / 95점 / 110점
동등분할 테스트
동등분할 테스트는 입력 데이터의 영역을 유사한 도메인별로 유효 값 / 무효 값을 그룹핑하여 대푯값 테스트 케이스를 도출하여 테스트하는 기법 (블랙박스 테스트)
데이터 영역에 가까운 값이 아닌 영역 내에 있는 일반 값들로 테스트한다.
16. 다음 조건을 만족하면서 학과별로 튜플 수가 얼마인지 구하는 SQL문을 작성하시오.
[학생]
| 학과 | 학생 |
| 전기 | 이순신 |
| 컴퓨터 | 안중근 |
| 컴퓨터 | 윤봉길 |
| 전자 | 이봉창 |
| 전자 | 강우규 |
[결과]
| 학과 | 학과별튜플수 |
| 전기 | 1 |
| 컴퓨터 | 2 |
| 전자 | 2 |
SELECT 학과, COUNT(학과) AS 학과별튜플수 FROM 학생 GROUP BY 학과;
> 해설:
> 그룹화를 통해 특정 속성값 기준으로 튜플의 통계를 내는 SQL 명령어 구문입니다.
> - GROUP BY 학과: 학생 테이블의 레코드들을 학과 열 값에 따라 그룹으로 묶습니다.
> - COUNT(학과): 묶여진 각각의 학과 그룹 내부의 학생(튜플) 수를 셉니다. (테이블 전체 행 개수를 세는 의미인 COUNT(*)로 표현해도 무방합니다.)
> - 요구사항에 맞춰 집계 컬럼 이름을 지정하기 위해 AS 학과별튜플수 별칭을 적어줍니다.
17. 데니스 리치와 켄톰슨 등이 함께 벨 연구소를 통해 만든 운영체제이며, 90% 이상 C언어로 구현되어 있고, 시스템 프로그램이 모듈화되어 있어서 다른 하드웨어 기종으로 쉽게 이식 가능하며 계층적 트리 구조를 가짐으로써 통합적인 파일 관리가 용이한 운영체제는 무엇인가?
유닉스
유닉스 계열 운영체제의 특징 :
대화식 운영체제 기능 제공 / 다중 작업 기능 제공 / 다중 사용자 기능 제공 / 이식성 제공 / 계층적 트리 구조 파일 시스템 제공
18. 다음은 C언어 소스 코드이다. 출력값을 쓰시오.
#include <stdio.h>
void main(){
char *p = "KOREA"
printf("%s\n" , p);
printf("%s\n" , p+3);
printf("%c\n" , *p);
printf("%c\n" , *(p+3));
printf("%c\n" , *p+2);
KOREA
EA
K
E
M
> 해설:
> C 언어 포인터와 배열(문자열 상수) 연산에 관한 핵심 문제입니다.
> - char *p = "KOREA": 문자열 "KOREA"의 첫 번째 문자 'K'가 위치한 메모리 주소를 포인터 변수 p에 할당합니다. 내부적으로는 메모리에 K, O, R, E, A, \0(널 문자) 순서대로 할당되어 있습니다.
> - printf("%s\n", p);: 서식 지정자 %s는 시작 주소부터 널 문자를 만날 때까지 전체 문자열을 출력합니다. p의 주소인 'K'부터 끝까지 출력하므로 KOREA 입니다.
> - printf("%s\n", p+3);: 시작 주소 p에서 +3 만큼 이동한 주소, 즉 'E'를 가리킵니다. 여기서부터 널 문자를 만날 때까지 출력하므로 EA 입니다.
> - printf("%c\n", *p);: 서식 지정자 %c는 단일 문자를 출력합니다. *p는 포인터 p가 가리키고 있는 바로 그 위치의 값을 참조하므로 첫 번째 문자인 K가 출력됩니다.
> - printf("%c\n", *(p+3));: p의 주소에서 3칸 이동한 뒤 메모리 참조 연산자 *를 사용했으므로 인덱스 3에 위치한 값인 E가 출력됩니다.
> - printf("%c\n", *p+2);: 먼저 간접 참조 연산 *p가 우선하여 적용됩니다. *p의 값은 문자 'K'입니다. 문자 'K'의 아스키코드 값에 2를 더하게 되므로 알파벳 순서상 K에서 두 칸 뒤인 'M'의 값이 되고 %c에 의해 문자 M이 출력됩니다.
19. 다음은 자바 소스 코드이다. 출력 결과를 쓰시오.
class parent{
public int compute(int num){
if(num <=1) return num;
return compute(num-1) + compute(num-2);
}
}
class Child extends parent {
public int compute(int num){
if(num<=1) return num;
return compute(num-1) + compute(num-3);
}
}
class good{
public static void main (String[] args){
parent obj = new Child();
System.out.print(obj.compute(4));
}
}
1
> 해설:
> 다형성과 자바 메서드 오버라이딩, 재귀 호출 흐름을 종합적으로 묻는 문제입니다.
> - 객체 생성: parent obj = new Child();에 따라 자식 객체가 부모 타입으로 업캐스팅되었습니다.
> - 초기 호출: obj.compute(4);를 실행하면 오버라이딩의 원칙에 따라 실 객체인 Child 클래스의 compute(4)가 호출됩니다.
> - Child의 compute(int num) 재귀 흐름:
> - compute(4) 호출: num이 4이므로 if(num <= 1) 조건을 건너뜁니다. 반환식 compute(4-1) + compute(4-3)에 따라 compute(3)과 compute(1)을 재귀 호출합니다.
> - compute(1) 처리: num <= 1 조건에 부합하므로 곧바로 1을 반환합니다.
> - compute(3) 호출: 반환식 compute(3-1) + compute(3-3)에 따라 compute(2)와 compute(0)을 호출합니다.
> - compute(0) 처리: num <= 1 조건에 부합하므로 곧바로 0을 반환합니다.
> - compute(2) 호출: 반환식 compute(2-1) + compute(2-3)에 따라 compute(1)과 compute(-1)을 호출합니다.
> - compute(1)과 compute(-1) 처리: 둘 다 num <= 1 조건을 만족하므로 각각 1과 -1을 반환합니다.
> - 값 누적:
> - compute(2) 반환값 = 1 + (-1) = 0
> - compute(3) 반환값 = compute(2) + compute(0) = 0 + 0 = 0
> - compute(4) 반환값 = compute(3) + compute(1) = 0 + 1 = 1
> - 따라서 연산의 최종 결과인 1이 반환되어 출력됩니다.
20. 정보보안에서 가용성(Availablility) 에 대하여 서술하시오.
권한을 가진 사용자가 애플리케이션이 원하는 서비스를 지속 사용할 수 있도록 보장하는 특성
SW개발 보안의 3개 요소 : 기밀성 / 무결성 / 가용성
기밀성 : 인가되지 않은 개인 혹은 시스템 접근에 따라 정보 공개 및 노출을 차단하는 특성
무결성 : 정당한 방법을 따르지 않고선 데이터가 변경될 수 없으며, 데이터의 정확성 및 완정성과 고의/악의로 변경되거나 훼손 또는 파괴되지 않음을 보장하는 특성
---
안녕하세요. 2021년 1회 정보처리기사 실기 기출문제를 정리해보았습니다.
기출문제이면서 보완설명을 덧붙여 정리하였으니 도움이 되었으면 좋겠습니다. (녹색은 답 / 파랑색은 해설입니다.)
정보처리기사 개편안인 2020년 시험부터 기출문제를 정리하였습니다.
1. 물리 네트워크(MAC) 주소에 해당하는 IP 주소를 알려주는 프로토콜로 역순 주소 결정 프로토콜을 무엇이라고 하는지 쓰시오.
RARP (Reverse Address Resolution Protocol)
OSI 7계층은 국제표준화기구(International Standard Organization, ISO)에서 발표한 네트워크 표준 모델로써 네트워크 통신의 각 과정을 계층별로 개념화한 모델이기에 각 계층의 구간별로 데이터의 움직임을 알수 있고, 장치간의 데이터 통신을 설명하는데 유용하게 활용됩니다.
[1계층] 물리 계층 : 전선, 전파, 광섬유, 동축케이블, 도피관, PSTN, DSU, CSU, Modem
[2계층] 데이터 링크 계층 : Ethernet, ToKen Ring, PPP, HDLC, ISDN, ATM
[3계층] 네트워크 계층 : IP, ARP, RARP, ICMP, IGMP, 라우팅 프로토콜
[4계층] 전송 계층 : TCP, UDP, RTP, SCTP, SPX
[5계층] 세션 계층 : TLS, SSH, ISO 8327 / CCITTX225, RPC, NetBIOS
[6계층] 표현 계층 : JPEG, MPEG, XDR, ASN1, SMB, AFP
[7계층] 응용 계층 : HTTP, SMTP, SNMP, FTP, Telnet, SSH&SCP, NFS, RTSP
2. 다음은 DB 설계 절차에 관한 설명이다. 다음 빈칸에 들어갈 알맞은 용어를 쓰시오.
[보기] : 구현 / 개념적 설계 / 논리적 설계 / 요구사항 분석 / 물리적 설계
1. 물리적 설계
2. 개념적 설계
3. 논리적 설계
DB설계 절차 :
요구사항 분석 > 개념적 설계 > 논리적 설계 > 물리적 설계 > 구현
3. 다음은 요구사항의 분류에 대한 설명이다. 괄호 ( ) 안에 들어갈 요구사항의 유형에 대해서 쓰시오.
1. 기능적
2. 비기능적
요구사항이란 시스템 개발 분야에서 어떤 과제를 수행하기 위해, 필요한 조건이나 능력을 말합니다.
4. 웹 서비스명, 제공 위치, 메세지 포맷, 프로토콜 정보 등 웹 서비스에 대한 상세 정보가 기술된 XML 형식으로 구성된 언어를 무엇이라고 하는지 쓰시오.
WSDL
WSDL(Web Services Description Language의 약자)은 웹 서비스 기술언어 또는 기술된 정의 파일의 총칭으로 XML로 기술됩니다. 웹 서비스의 구체적 내용이 기술되어 있으며 서비스 제공 장소, 서비스 메시지 포맷, 프로토콜 등이 기술됩니다.
5. 다음은 파이썬 코드이다. 출력 결과를 쓰시오.
class good :
li = ["seoul", "kyeonggi","inchon","daejeon","daegu","pusan"]
g = good()
str01 = ''
for i in g.li:
str01 = str01 + i[0]
print(str01)
skiddp
각 단어들의 0번째(첫번째 글자) row 출력
> 해설:
g.li 리스트의 각 문자열 요소를 순회하며, 각 문자열의 첫 번째 문자(i[0])를 str01 변수에 이어 붙입니다.
최종적으로 skiddp가 출력됩니다.
6. 다음 SQL 실행 결과를 숫자만 쓰시오.
| EMPNO | SAL |
| 100 | 1000 |
| 200 | 3000 |
| 300 | 1500 |
SELECT COUNT(\*) FROM 급여
WHERE EMPNO > 100 AND SAL >= 3000 OR EMPNO = 200;
답 : 1
7. 다음 Java 프로그램 결과를 쓰시오.
public class good{
public static void main(String[] args){
int[][]arr = new int[][]{{45,50,75},{89}};
System.out.println(arr[0].length);
System.out.println(arr[1].length);
System.out.println(arr[0][0]);
System.out.println(arr[0][1]);
System.out.println(arr[1][0]);
3
1
45
50
89
> 해설:
2차원 배열 arr은 2개의 행을 가집니다. 첫 번째 행 arr[0]은 {45, 50, 75}로 길이가 3이고, 두 번째 행 arr[1]은 {89}로 길이가 1입니다.
8. 정규화된 엔티티, 속성, 관계에 대해 성능 향상과 개발 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법을 무엇이라고 하는지 쓰시오.
비정규화 or 반정규화 or 역정규화
반정규화 방법 :
테이블 통합, 테이블 분할, 중복 테이블 추가, 중복 속성 추가
9. 다음은 블랙박스 기법에 대한 예제이다. 블랙박스 기법 두 가지를 쓰시오.
예)
1. 0 <= x <= 10이면 -1 0 10 11 검사
2. 입력 데이터의 영역을 유사한 도메인별로 유횻값 / 무횻값을 그룹핑하여 나누어서 검사
1. 경곗값 분석
2. 동등분할 테스트
블랙박스 테스트 종류
동치 분할 검사(동등분할기법) :
입력 자료에 초점을 맞춰 테스트 케이스를 만들고 검사하는 방법
경계값 분석 :
동치 분할 기법을 보완한 기법으로 입력 조건의 중간값보다 경계값에서 오류가 발생될 확률이 높다는 점을 이용하여 입력 조건의 경계값을 테스트 케이스로 선정하여 검사하는 기법
원인-효과 그래프 검사 :
입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음, 효용성이 높은 테스트 케이스를 선정하여 검사하는 기법
오류 예측 검사 :
과거의 경험이나 확인자의 감각으로 테스트하는 기법
비교 검사 :
여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 동일한 결과가 출력되는지 확인하는 기법
10. 다음은 테스트 종류에 대한 설명이다. 빈칸에 들어갈 알맞은 용어를 보기에서 찾아 기호로 쓰시오.
[보기] : 시스템 테스트 / 인수 테스트 / 알파 테스트 / 단위 테스트 / 통합 테스트 / 회귀 테스트
1. 단위 테스트
2. 통합 테스트
시스템 테스트 :
구현된 시스템이 정해진 요건에 적합한지 여부를 평가하기 위해 실제 운용과 같은 환경에서 시스템 전체에 대해서 행하는 테스트
인수 테스트 :
계약상의 요구 사항이 만족되었는지 확인하기 위해, 설치 후 구입자의 현장에서 납품자도 참가하여 구입자에 의해 실시되는 시스템 또는 기능 단위 테스트
알파 테스트 :
특정 사용자들에 의해 개발자 관점에서 수행 (가장 자주 사용)
회귀 테스트 :
어플리케이션에 대하여 변경, 결함 수정 또는 기능개선 등과 같은 원인으로 프로그램 코드에 대하여 물리적인 변경이 발생했을 경우, 새로운 결함에 대비하여 이미 실시했던 테스트케이스를 재시험하는 테스트
11. 다음은 빈칸에 들어갈 알맞은 용어를 쓰시오.
1. 128
2. 8
12. 공유메모리, 소켓, 세마포어, 메세지 큐 등 프로세스 간 통신하는 기술을 무엇이라고 하는지 쓰시오.
IPC (Inter Process Communication)
13. 시스템 통합에 사용되는 솔루션으로 구축 유형에는 Point to Point, Hub & Spoke, Message Bus가 있다. 기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션 간의 정보를 전달, 연계 , 통합이 가능하도록 해주는 솔루션을 무엇이라고 하는지 쓰시오.
EAI (Enterprise Application integration)
EAI 구축 유형 :
포인트 투 포인트 - 가장 기초적인 애플리케이션 통합 방법 ( 1:1 단순 통합 방법) / 개발자간 대화를 통해 통합 가능
허브 앤 스포크 - 단일한 접점의 허브 시스템을 통하여 데이터를 전송하는 중앙 집중적 방식
메세지 버스 - 애플리케이션 사이 미들웨어를 두어 연계하는 통합 방식 / 뛰어난 확장성과 대용량 데이터 처리 가능
하이브리드 - 그룹 내는 허브 앤 스포크 방식 / 그룹 간에는 메세지 버스 방식 사용하는 통합 방식
14. 주어진 테이블의 Cardinality / Degree를 구하시오.
| 학번 | 이름 | 학년 | 학과 |
| 20202020 | 김제원 | 3 | 무역과 |
| 20202021 | 김한국 | 1 | 통신과 |
| 20202022 | 허달력 | 4 | 영어과 |
| 20202023 | 이소파 | 2 | 영어과 |
| 20202024 | 장가위 | 3 | 중국어과 |
Cardinality : 5
Degree : 4
Cardinality : 데이터의 행의 수
Degree : 속성의 수
15. 다음은 C언어 프로그램이다. 실행 결과를 쓰시오.
#include <stdio.h>
struct good {
char name[10];
int age;
};
void main(){
struct good s[] = {"Kim",28,"Lee",38,"Seo",50,"Park",35};
struct good *p;
p = s;
p++;
printf("%s\n", p-> name);
printf("%d\n", p-> age);
Lee
38
> 해설:
good 구조체 배열 s는 다음과 같이 초기화됩니다:
포인터 p는 처음에 s 배열의 첫 번째 요소 주소(&s[0])를 가리킵니다.
p++ 연산이 수행되면 포인터 p는 배열의 다음 요소 주소, 즉 &s[1]을 가리키게 됩니다.
따라서 p->name은 "Lee"가 되고, p->age는 38이 됩니다.
각각 출력 포맷에 따라 Lee와 38이 줄바꿈과 함께 출력됩니다.
16. 데이터 모델 구성요소 3가지를 쓰시오.
1.연산
2. 구조
3. 제약조건
17. 다음은 Java 프로그램이다. 실행 결과를 쓰시오.
public class good {
public static void main(String[] args){
int i, j;
for(j=0, i=0; i<=5; i++){
j+=i;
System.out.print(i);
if(i==5){
System.out.print("=");
System.out.print(j);
}else{
System.out.print("+");
}
}
}
}
0 + 1 + 2 + 3 + 4 + 5 = 15
> 해설:
변수 i와 j가 0으로 초기화되고, i가 5 이하일 때까지 반복합니다.
18. 시스템 객체의 접근을 개인 또는 그룹의 식별자에 기반을 둔 방법, 어떤 종류의 접근 권한을 가진 사용자가 다른 사용자에 자신의 판단에 따라 권한을 허용하는 접근제어 방식은 ?
임의적 접근 통제 or DAC (Discretionary Access Control)
접근 통제는 사람이나 프로세스가 시스템이나 파일에 접근 여부를 허가하거나 거부하는 기능을 말합니다.
서버 접근통제 유형 - 임의적 접근통제 / 강제적 접근통제 / 역할 기반 접근통제
임의적 접근 통제(DAC - Discretionary Access Control) : 시스템 객체에 대한 접근을 사용자나 그룹의 신분을 기준으로 제한하는 방법
강제적 접근 통제(MAC - Mandatory Access Control) : 미리 정해진 정책과 보안 등급에 의거하여 주체에게 허용된 접근 권한과 객체에게 부여된 허용 등급을 비교하여 접근을 통제하는 모델
역할기반 접근 통제(RBAC - Role Based Access Control) : DAC와 MAC의 단점을 보완한 방식으로 멀티 프로그래밍 환경에서의 보완 처리를 위해 제안되었으며 사용자에게 할당된 역할에 기반하여 접근을 통제하며 중앙에서 집중적으로 관리
19. 다음은 결합도에 대한 설명이다. 빈칸에 들어갈 알맞은 용어를 보기에서 찾아 기호로 쓰시오.
[보기] : 자료 결합도 / 스탬프 결합도 / 제어 결합도 / 공통 결합도 / 내용 결합도 / 외부 결합도
1. 내용 결합도
2. 스탬프 결합도
3. 공통 결합도
결합도와 품질(낮은 품질에서 좋은 품질 순) :
내용결합도 > 공통 결합도 > 외부 결합도 > 제어 결합도 > 스탬프 결합도 > 자료 결합도
외부 결합도 : 어떤 모듈에서 반환한 값을 다른 모듈에서 참조해서 사용하는 경우
제어 결합도 : 단순히 처리를 해야할 대상인 값만 전달되는게 아니라 어떻게 처리를 해야 한다는 제어요소가 전달
자료 결합도 : 모듈간의 인터페이스 전달되는 파라미터를 통해서만 모듈간의 상호 작용이 일어나는 경우
20. 괄호 안에 공통으로 들어갈 공격 기법을 적으시오.
세션 하이재킹
---
안녕하세요. 2021년 2회 정보처리기사 실기 기출문제를 정리해보았습니다.
기출문제이면서 보완설명을 덧붙여 정리하였으니 도움이 되었으면 좋겠습니다. (녹색은 답 / 파랑색은 해설입니다.)
정보처리기사 개편안인 2020년 시험부터 기출문제를 정리하였습니다.
1. 네트워크 장치를 필요로하지 않고 네트워크 토폴로지가 동적으로 변화되는 특징이 있으며 응용 분야로는 긴급 구조, 긴급 회의, 전쟁터에서의 군사 네트워크에 활용되는 네트워크는?
애드혹 네트워크(Ad-hoc Network)
무선 네트워크 구성 방식 :
애드혹 네트워크 - 센서망, 재난망에 사용되며 구성이 빠르고 모든 단말이 동등한 자격으로 망을 구성
Infrastructure 네트워크 - 이동통신망,Wi-Fi에 사용되며 중앙집중형 방식
메쉬 네트워크 - 무선백본망에 사용되며 신뢰성이 우수하고, 계층적인 구조를 가지고 있음
2. 다음 (1), (2)에 알맞는 답안을 쓰시오.
(1) 사람의 감정이나 경험을 나타내는 개념
(2) 사용자 인터페이스. 예로는 CLI이 있다.
(1) UX(User Experience) / (2) UI(User Interface)
3. 트랜잭션의 특징 중, 원자성에 대해 약술하십시오.
모두 반영되거나 아니면 전혀 반영되지 않아야 한다.
트랜젝션 특징 - 원자성, 일관성 , 독립성, 지속성
일관성 : 트랜잭션의 작업 처리 결과가 항상 일관성이 있어야 한다는 것
독립성 : 둘 이상의 트랜잭션이 동시에 실행되고 있을 경우, 어떤 하나의 트랜잭션이라도 다른 트랜잭션의 연산에 끼어 들 수 없다는 점
지속성 : 트랜잭션이 성공적으로 완료되었을 경우에 결과는 영구적으로 반영되어야 한다는 점
4. 다음은 제 ( ) 정규형으로써, 부분 함수적 종속성을 제거하여, 완전 함수적 종속을 만족하는 정규형은?

제 2 정규형
제 1정규형 : 도메인이 원자값
제 2정규형 : 부분 함수적 종속 제거
제 3정규형 : 이행적 함수 종속 제거
BCNF : 결정자이면서 후보키가 아닌 것 제거
제 4정규형 : 다치 종속 제거
제 5정규형 : 조인 종속 제거
5. 다음은 테이블을 수정할때의 상황입니다. SQL 보기에서 괄호안에 알맞는 문장을 작성하시오.
( 1 ) 테이블명 ( 2 ) 컬럼 = 값 WHERE 점수 >= 90;
1. UPDATE
2. SET
6. 다음 SQL 보기에서 JOIN할 경우 괄호안에 알맞는 문장을 작성하시오.
SELECT .... FROM 학생정보 a JOIN 학과정보 b ( 1 ) a.학과 = b.( 2 )
1. ON
2. 학과
7. 파이썬 비트 연산자 코드 결과
a = 100
result = 0
for i in range(1,3);
result = a >> i
result = result + 1
pirnt(result)
26
> 해설:
비트 연산자 >> (오른쪽 시프트)를 사용하는 반복문입니다. range(1, 3)은 i가 1, 2의 값을 가집니다.
a >> 1 수행. a(100)의 이진수는 1100100이며, 오른쪽으로 1비트 시프트하면 110010(50)이 됩니다.
result = 50 + 1 = 51
a >> 2 수행. a(100)를 오른쪽으로 2비트 시프트하면 11001(25)이 됩니다.
result = 25 + 1 = 26
최종적으로 print(result)에 의해 26이 출력됩니다.
8. 미국 국립 표준 기술연구소 (NIST), DES를 대체하며, 128 비트 블록 크기와 128,192,256비트 키 크기의 대칭 키 암호화 방식은?
AES (Advanced Encryption Standard)
대칭키 알고리즘 :
동일한 키를 사용하여 암호화와 복호화를 하는 것을 의미하며 가장많이 사용하는 알고리즘이 AES 입니다.
9. 화이트박스 테스트 검중 중에, 각 번호에 해당하는 단어 선택해주시오. (실제 시험문제에서는 보기가 주어집니다.)
1. 최소 한번은 모든 문장 수행
2. 결정(Decision) 검증기준이라고도 하며, 조건별 참 / 거짓
3. 2번과 달리 전체 조건식을 무시하며, 조건 상관없이 개별 조건 참 / 거짓
1. 문장
2. 결정
3. 조건
10. SQL문에서 괄호안에 알맞은 답안을 작성하시오. (실제 시험에는 결과 이미지가 있습니다.)
('이름'이란 컬럼에 '이'로 시작하는 문자열을 '내림차순'하는 쿼리 결과 내용입니다.)
SELECT .... FROM ... WHERE '이름' LIKE ( 1 ) ORDER BY '컬럼명' ( 2 )
1. 이%
2. DESC
11. 응집도 문제로써, 각 번호에 해당하는 응집도를 쓰시오. (실제 시험문제에서는 보기가 주어집니다.)
1. 입출력 간 연관성은 없으나, 순서에 따라 수행되는 것
2. 동일한 입력과 출력 사용
3. 하나의 기능에 모두 기어하고 밀접하게 연관되어 있는 것 (그룹화)
1. 절차적 응집도
2. 교환적 응집도
3. 기능적 응집도
응집도 순서 (낮은것부터 높은 순서)
우연적 > 논리적 > 시간적 > 절차적 > 교환적 > 순차적 > 기능적
우연적 응집도 : 모듈 내부의 각 구성요소들이 연관이 없을 경우
논리적 응집도 : 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우
시간적 응집도 : 연관된 기능이라기보단 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우
순차적 응집도 : 모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우
12. 패킷교환방식 중에서, 번호에 해당하는 방식을 적으시오.
1. 목적지 호스트와 미리 연결한 후, 통신하는 연결형 교환 방식
2. 헤더에 붙어서 개별적으로 전달하는 비연결형 교환 방식
1. 가상 회선 방식
2. 데이터그램 방식
패킷교환방식(저장 방식) : 패킷이라는 단위를 사용하여 데이터를 송신하고 수신합니다. 패킷이란 정보를 일정한 크기로 분할한 뒤 각각의 패킷에 송수신 주소 및 부가 정보를 입력한 것으로 현재 컴퓨터 네트워크에서 주로 사용하는 방식입니다. (EX : 인터넷)
\* 반대개념
회선 교환 방식(비 저장 방식) : 물리적 전용선을 활용하여 데이터 전달 경로가 정해진 후 동일 경로로만 전달이 됩니다. 데이터를 동시에 전송할 수 있는 양을 의미하는 대역폭이 고정되고 안정적인 전송률을 확보할 수 있습니다. (EX : 전화망)
13. 괄호 ( ) 안에 알맞는 단어를 쓰시오.
디자인 패턴 중에서 ( )패턴은 반복적으로 사용되는 객체들의 상호작용을 패턴화 한 것으로,
클래스나 객체들이 상호작용하는 방법이다. 알고리즘의 패턴에는 Interpreter, Observer, Command 가 있다.
행위(behavioral)
행위패턴은 객체나 클래스 간의 교류 방법에 대해 정의하는 방법을 제시합니다.
행위패턴 클래스 : Interpreter, Template
행위패턴 객체 : Chain of Responsibility, Command, Iterator, Mediator, Memento, Observer, State, Strategy, Visitor
14. 병행제어기법 중, 접근한 데이터에 대한 연산을 모두 마칠때까지 상호배제하는 기법을 무엇이라 하는지 작성하시오.
로킹
병행제어란 다중 프로그램이 이점을 활용하여 동시에 여러 개의 트랜잭션을 병행수행할 때, 동시에 실행되는 트랜잭션들이 데이터베이스의 일관성을 파괴하지 않도록 트랜잭션 간의 상호작용을 제어하는 것입니다.
병행제어기법 - 로킹, 타임 스탬프 순서, 최적 병행 수행, 다중 버전 기법
타임 스탬프 순서(Time Stamp Ordering) : 트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 대해 트랜잭션이 실행을 시작하기 전에 시간표(time stamp)를 부여하여 부여된 시간에 따라 작업을 수행하는 기법
최적 병행 수행(검증기법, 낙관적 기법) : 병행수행하고자 하는 대부분의 트랜잭션이 읽기 전용 트랜잭션일 경우, 트랜잭션 간의 충동률이 매우 낮아서 병행제어 기법을 사용하지 않고 실행되어도 이 중의 많은 트랜잭션은 시스템의 상태를 일관성 있게 유지한다는 점을 이용한 기법
다중 버전 기법 : 타임 스탬프의 개념을 이용한 기법으로 타임 스탬프는 트랜잭션 및 데이터들이 이용될 때의 시간을 시간표로 관리하지만 다중 버전 기법은 갱신될 때마다의 버전을 부여하여 관리하는 기법
15. 럼바우 데이터 모델링에 관한 설명으로써, 보기에 해당하는 답안을 작성하시오.
(실제 시험문제에서는 보기가 주어집니다.)
1. 입력값이 출력값일 때 ex) 자료 흐름도(DFD)
2. 시간에 따라 변하는 것 ex) 상태 다이어그램(상태도)
3. 객체들 간의 관계를 정의 ex) ER다이어그램(ERD)
1. Function Modeling
2. Dynamic Modeling
3. Object Modeling
럼바우 객체지향 분석 기법은 소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링하는 분석 기법입니다.
분석활동 : 객체 모델링(Object Modeling), 동적 모델링(Dynamic Modeling), 기능 모델링(Functional Modeling)
럼바우 객체지향 분석 기법의 절차 :
객체 모델링 > 동적 모델링 > 기능 모델링
16. 다음은 C언어에 관한 소스코드이다. 실행 결과값을 작성하시오.
int main(){
int res;
res = mp(2,10);
printf("%d",res);
return 0;
}
int mp(int base, int exp) {
int res = 1;
for(int i=0; i < exp; i++){
res = res * base;
}
return res;
}
1024
> 해설:
mp(2, 10) 함수를 호출하여 거듭제곱을 계산합니다. 매개변수 base는 2, exp는 10이 전달됩니다.
res는 1로 초기화되고 반복문이 10번(i=0부터 9까지) 실행됩니다.
즉, 2를 10번 곱하는 2^10 연산을 수행하므로 결과는 1024가 되며, 이 값이 반환되어 출력됩니다.
17. 클래스 내에서 객체 생성 없이 사용할 수 있는 메소드로써 출력 결과를 작성하시오.
public class Test {
public static void main(String[] args){
system.out.print(Test.check(1));
}
( ) String check (int num) {
return (num >= 0) ? "positive" : "negative";
}
}
[출력결과]
positive
static
> 해설:
main 메서드는 public static void로 선언되어 있습니다. main 안에서 객체 생성 없이 Test.check(1) 형식으로 클래스 이름을 통해 직접 check 메서 호출하고 있습니다.
클래스 레벨에서 객체 생성 없이 바로 호출할 수 있는 메서드는 static 키워드로 선언해야 합니다. 따라서 빈칸에 알맞은 제어자는 static입니다.
18. 다음은 C언어 문제이다. 출력값을 작성하시오.
int main(){
int ary[3];
int s = 0;
*(ary+0)=1;
ary[1] = *(ary+0)+2;
ary[2] = *ary+3;
for(int i=0; i<3; i++){
s=s+ary[i]
}
print("%d",s);
}
8
> 해설:
배열과 포인터 연산을 사용하는 코드입니다.
배열 ary의 상태는 {1, 3, 4}가 됩니다.
반복문은 배열의 모든 요소를 더합니다.
마지막으로 s의 값인 8이 출력됩니다.
19. 다음은 JAVA 관한 문제이다. 알맞는 출력값을 작성하시오.
public class ovr1 {
public static void main(String[] args){
ovr1 a1 = new ovr1();
ovr2 a2 = new ovr2();
System.out.println(a1.sun(3,2) + a2.sun(3,2));
}
int sun(int x, int y){
return x + y;
}
}
class ovr2 extends ovr1 {
int sun(int x, int y){
return x - y + super.sun(x,y);
}
}
11
> 해설:
상속과 메서드 오버라이딩에 대한 문제입니다.
x - y + super.sun(x, y) 연산을 수행하는데, super.sun(3, 2)는 부모 클래스인 ovr1의 메서드로 3 + 2 = 5를 반환합니다.
따라서 a2.sun(3, 2)의 결과는 3 - 2 + 5 = 6이 반환됩니다.
최종적으로 5 + 6 연산 결과인 11이 출력됩니다.
20. 다음 괄호 안에 알맞은 답안을 작성하시오.
스텁
테스트 하네스란 시스템 및 시스템 컴포넌트 시험하는 환경의 일부분으로 시험을 지원하는 목적 하에 생성된 코드와 데이터를 뜻합니다. 시험 드라이버라고도 하며, 일반적으로 단위 시험이나 모듈 시험에 사용하기 위해 코드 개발자가 만듭니다.
테스트 하네스 도구 구성 요소 :테스트 드라이버, 테스트 스텁, 테스트 슈트, 테스트 케이스, 테스트 스크립트, 목 오브젝트
---
안녕하세요. 2021년 3회 정보처리기사 실기 기출문제를 정리해보았습니다.
기출문제이면서 보완설명을 덧붙여 정리하였으니 도움이 되었으면 좋겠습니다. (녹색은 답 / 파랑색은 해설입니다.)
정보처리기사 개편안인 2020년 시험부터 기출문제를 정리하였습니다.
1. 다음 Java 코드에 대한 알맞는 출력값을 쓰시오.
class Connection {
private static Connection \_inst = null;
private int count = 0;
static public Connection get() {
if(\_inst == null) {
\_inst = new Connection();
return \_inst;
}
return \_inst;
}
public void count() { count ++; }
public int getCount() { return count; }
}
public class testcon {
public static void main(String[] args) {
Connection conn1 = Connection.get();
conn1.count();
Connection conn2 = Connection.get();
conn2.count();
Connection conn3 = Connection.get();
conn3.count();
System.out.print(conn1.getCount());
}
}
3
> 해설:
이 코드는 싱글톤(Singleton) 패턴을 구현한 예제입니다. Connection 객체는 프로그램 전체에서 오직 1개만 생성됩니다.
1. conn1 = Connection.get() 호출: _inst가 null이므로 새로운 객체를 생성하여 반환합니다. conn1.count()를 호출하면 객체의 count는 1이 됩니다.
2. conn2 = Connection.get() 호출: _inst가 이미 생성되어 null이 아니므로, 기존의 동일한 객체 주소를 반환합니다. conn2.count()를 호출하면 같은 객체의 count가 1 증가하여 2가 됩니다.
3. conn3 = Connection.get() 호출: 마찬가지로 같은 객체를 반환합니다. conn3.count()를 호출하면 count가 1 증가하여 3이 됩니다.
모든 변수(conn1, conn2, conn3)는 동일한 단일 객체를 가리키므로, conn1.getCount()의 결과는 최종 count 값인 3이 됩니다.
1.Authentication
2.Authorization
3.Accounting
AAA는 유무선 이동 및 인터넷 환경에서 가입자에 대한 안전하고,
신뢰성 있는 인증, 권한 검증 등의 기능을 체계적으로 제공하는 정보 보호 기술입니다.
신분을 확인하는 인증(authentication)
접근·허가를 결정하는 인가(authorization)
리소스 사용정보를 수집·관리하는 계정(accounting)
위의 3가지를 통합한 보안소프트웨어로 3A라고도 합니다.
3. Grant의 기능에 대해 간략하게 약술하시오.
사용자(User)에게 접속권한, 오브젝트 생성권한, DBA 권한 등을 부여할 수 있는 명령어
Grant는 사용자에게 접속권한, 오브젝트 생성권한, DBA 권한 등을 부여할 수 있는 명령어이며,
Revoke는 사용자에게 부여한 권한을 다시 회수하는 명령어입니다.
4. 다음 중, 설명에 대한괄호( ) 안에 들어가는 내용에 대해 작성하시오.
(설명과 함께 동작과정 이미지가 있습니다.)
( ) 스푸핑은 근거리 통신망 하에서 ( ) 메시지를 이용하여 상대방의 데이터 패킷을 중간에서 가로채는 중간자 공격 기법이다. 이 공격은 데이터 링크 상의 프로토콜인 ( )를 이용하기 때문에 근거리상의 통신에서만 사용할 수 있는 공격이다.
ARP
위 내용은 ARP 스푸핑에 대한 내용이고 ARP에 대해 알아보겠습니다.
ARP :
ARP는 (Address Resolution Protocol) 의 약자로 주소 결정 프로토콜이라 불립니다.
네트워크 상에서 IP주소를 물리적 네트워크 주소(이더넷)로
대응(bind)시키기 위해 사용되는 프로토콜이며,인터넷 계층에 속해있습니다.
5. 다음은 Coupling에 대한 설명이다. 설명에 대한 Coupling 종류를 영문으로 작성하시오.
어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어 신호를 이용하여 통신하는 경우의 결합도
하위 모듈에서 상위 모듈로 제어 신호가 이동하여 상위 모듈에게 처리 명령을 부여하는 권리 전도 현상이 발생
control
소프트웨어 공학에서 coupling이란 결합도를 의미합니다.
결합도는 약할수록 모듈의 독립성이 높아지는데,
내용 > 공통 > 외부 > 제어 > 스탬프 > 자료 결합도 순으로 결합도가 약해집니다.
영어용어의 출제가 빈번해지면서 영어용어도 같이 숙지할 필요가 있어보입니다.
내용 결합도(Content Coupling)
공통 결합도(Common Coupling)
외부 결합도(External Coupling)
제어 결합도(Control Coupling)
스탬프 결합도(Stamp Coupling)
자료 결합도(Data Coupling)
6. OSI 7 Layer의 설명으로 해당되는 설명의 답을 작성하시오.
1. 물리계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행할 수 있도록 도와주는 역할
2. 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능
3. 수신자에서 데이터의 압축을 풀수 있는 방식으로 된 데이터 압축
1. 데이터링크
2. 네트워크
3. 표현
OSI 7 Layer :
OSI 7 Layer란 네트워크에서 통신이 일어나는 과정을 단계별로 파악하기 위해 7단계로 나눈 것을 말합니다.
1 Layer - 물리계층(Physical Layer)
단순 데이터를 전기적인 신호로 변환(on/off)해서 주고받는 기능만 하며,
케이블, 리피터, 허브를 통해 데이터를 전송합니다.
2 Layer - 데이터 링크계층(DataLink Layer)
물리계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행하도록 역할합니다.
MAC주소를 가지고 통신을 합니다.
3 Layer - 네트워크 계층(NetWork Layer)
전송 데이터를 목적지까지 경로를 찾아 전송하는 계층입니다.주소(IP)를 정하고, 경로(route)를 선택하여 패킷을 전달하는 것이 핵심입니다.
4 Layer - 전송 계층(Transport)
데이터를 전송하고 전송 속도를 조절하며 오류가 발생된 부분은 다시 맞춰주며,
주로 TCP프로토콜을 사용합니다.
5 Layer - 세션 계층(Session)
네트워크의 양쪽 연결을 관리하고 지속적으로 연결을 시켜줍니다.
TCP/IP의 세션을 만들고 없애는 것을 반복합니다.
6 Layer - 표현 계층(Presentation)
응용계층으로부터 전달받거나 전송하는 데이터의 인코딩(언어처리) 및 디코딩이 이루어 집니다.
JPEG,TIFF,GIF 등의 다양한 포멧을 지원합니다.
7 Layer - 응용계층(Application)
사용자가 네트워크에 접근할 수 있도록 도와줍니다.
사용자에게 보이는 유일한 계층으로 메일전송/인터넷접속 등의 작업을 수행합니다.
7. 다음 중, 설명에 대한 괄호 ( ) 안에 들어갈 알맞는 보기를 고르시오.
(실제 기출문제에서는 답에 대한 영어용어의 보기가 주어집니다.)
눈에 보이지 않는 것을 개념적으로 표현하는 것이 '추상화'라하며,
이는 실세계의 복잡한 상황을 간결하고 명확하게 개념화(槪念化)하는 것이다.
( 1 )은 클래스들 사이의 전체 또는 부분 같은 관계를 나타내는 것이고,
( 2 )은 한 클래스가 다른 클래스를 포함하는 상위 개념일 때 IS-A관계라하며, 일반화 관계로 모델링한다.
1. Aggregation
2. Generalization
UML다이어그램의 구조 다이어그램안에 클래스 다이어그램에 대한 종류 문제입니다.
UML :
UML(Unified Modeling Language)는 통합 모델링 언어라 불리며,
시스템을 모델로 표현해주는 대표적인 모델링 언어입니다.
UML 다이어그램 종류
1. 구조 다이어그램 (Structure Diagram)
(1) 클래스 다이어그램 (이곳에 해당됩니다.)
(2) 객체 다이어그램
(3) 복합체 구조 다이어그램
(4) 배치 다이어그램
(5) 컴포넌트 다이어그램
(6) 패키지 다이어그램
2. 행위 다이어그램 (Behavior Diagram)
(1) 활동 다이어그램
(2) 상태 머신 다이어그램
(3) 유즈 케이스 다이어그램
(4) 상호작용 다이어그램
클래스 다이어그램 (Class Diagram) :
시간에 따라 변하지 않는 시스템의 정적인 면을 보여주는 대표적인 UML 구조 다이어그램이며,
시스템을 구성하는 클래스들 사이의 관계를 표현합니다.
UML에서 제공하는 클래스 사이의 관계 :
(1) 연관 관계 (association) : 클래스들이 개념상 서로 연결되어 있음을 나타냅니다.
(2) 일반화 관계 (generalization) : 상속 관계를 설명합니다. (위 문제 참조)
(3) 집합관계 :
1) 집약 관계(aggregation) : 클래스 사이의 전체 또는 부분 같은 관계를 나타냅니다. (객체 라이프 타임 : 독립적)
2) 합성 관계 (composition) : 클래스 사이의 전체 또는 부분 같은 관계를 나타냅니다. (객체 라이프 타임 : 의존적)
(4) 의존 관계 (dependency) : 연관 관계와 같이 한 클래스가 다른 클래스에서 제공하는 기능을 사용합니다.
(5) 실체화 관계 (realization) : 인터페이스와 구현 클래스 사이의 관계를 나타냅니다.
8. 다음은 테스트케이스의 구성요소에 대한 설명이다. 괄호 ( ) 안에 들어갈 알맞는 보기를 고르시오.
(실제 기출문제에서는 답에 대한 보기가 주어집니다.)

1. 테스트 조건
2. 테스트 데이터
3. 예상 결과
테스트 케이스란 특정 프로그램의 부분 및 경로를 실행해보거나,
요구사항에 준수하는지 확인하기 위해 개발된 입력 값, 조건, 예상된 결과 세트입니다.
케스트 케이스를 함으로써 오류감소 / 비용감소 / 의사소통의 효과가 나타납니다.
테스트 케이스의 설계 기법 종류로는
블랙박스 기법의 명세기반 / 경험기반 기법과
화이트박스 기법의 구조기반 기법이 있습니다.
9. 다음 중, 설명에 대한 괄호 ( ) 안에 들어갈 알맞는 보기를 고르시오.
(실제 기출문제에서는 답에 대한 보기 중, 영문 보기가 주어집니다.)
( ) 통해 요구사항 명세를 입력 조건과 출력 조건 간의 논리적 관계로 표현하고,
이를 기반으로 테스트케이스를 도출한다.
( )의 ‘원인(causes)’은 입력 조건을 의미하고 ‘결과(effects)’는 입력 조건의 결과를 의미하며,
원인과 결과 간의 논리적 관계를 AND, OR, NOT 같은 boolean 연산자를 사용하여 표현한다.
cause effect graph
동적 테스트(Dynamic Test)
• 명세 기반 테스트(Black Box Test)
1) 신택스 기법(Syntax Analysis)
2) 동등 분할 기법(Equivalence Partitioning Analysis)
3) 경계 값 분석 기법(Boundary Value Analysis)
4) 원인-결과 그래프 기법(Cause-Effect Graph Analysis)
5) 의사결정 테이블 기법(Decision Table Analysis)
• 구현 기반 테스트(White Box Test)
1) 문장 검증 기준(Statement Coverage)
2) 분기 검증 기준(Branch Coverage)
3) 조건 검증 기준(Condition Coverage)
4) 분기/조건 검증 기준(Branch/Condition Coverage)
5) 다중 조건 검증 기준(Multiple Condition Coverage)
6) 기본 경로 테스트(Basic Path Test)
10. 다음 중, 설명에 대한괄호 ( ) 안에 들어갈 알맞는 보기를 고르시오.
( )는 블록 암호의 일종으로, 미국 NBS (National Bureau of Standards, 현재 NIST)에서 국가 표준으로 정한 암호이다.
( )는 64비트 평문을 64비트 암호문으로 암호화하는 대칭키 암호 알고리즘이다.
( )의 키는 7비트마다 오류검출을 위한 정보가 1비트씩 들어가기 때문에 실질적으로는 56비트이다.
DES
DES(Data Encryption Standard)와 AES(Advanced Encryption Standard)는 대칭키 암호화 방식 중 하나입니다.
DES의 취약점을 보완하기 위해 만들어진 고급 암호 화 표준 방식이 AES입니다.
DES와 다르게 128비트 평문을 128비트로 암호화 하였으며,
10/12/14 라운드 수와 이에 대응해 128/192/256비트의 키길이를 갖습니다.(AES-128/AES-192/AES-256)
하기 때문에 안전하여 현재 보편적으로 사용되는 암호화 방식입니다.
11. 다음 Java 코드에 대한 알맞는 출력값을 쓰시오.
public class testco {
public static void main(String[] args) {
int a = 3, b = 4, c = 3, d = 5;
if((a == 2
7
> 해설:
조건식과 비트/논리 연산자의 실행 흐름을 추적합니다.
1. 첫 번째 조건 분석:
2. 내부 블록 실행:
3. 중첩 조건 분석:
> 해설:
조건식과 비트/논리 연산자의 실행 흐름을 추적합니다.
1. 첫 번째 if 조건 분석: (a == 2 | a == c) & !(c > d) & (1 == b ^ c != d)
2. 내부 블록 실행:
3. 중첩 if 조건 분석: 7 == b ^ c != a
조건이 참이므로 System.out.println(a);가 실행됩니다.
결과적으로 a의 값인 7이 출력됩니다.
12. 다음 C언어에 대한 알맞는 출력값을 쓰시오.
#include <stdio.h> int main(){
int \*arr[3];
int a = 12, b = 24, c = 36;
arr[0] = &a;
arr[1] = &b;
arr[2] = &c;
printf("%d\n", \*arr[1] + \*\*arr + 1);
}
37
> 해설:
> 해설:
포인터 배열의 역참조 연산 흐름을 추적합니다.
연산 수행: 24 + 12 + 1 = 37이 되어 출력됩니다.
연산 수행: 이 되어 출력됩니다.
13. 다음은, 테이블에서 조건값을 실행한 화면이다. 이에 대한 알맞는 결과값을 작성하시오.****

4
cross join은 join을 해서 나올 수 있는 모든 행의 조합을 보여주는 것으로 각 결과를 곱해주면 됩니다.
즉, S로 시작하는 A.NAME의 개수는 2개, T를 포함하는 A.NAME의 개수 또한 2개이므로 2\*2 = 4가 됩니다.
14. 다음 파이썬 코드이다. 알맞는 출력값을 쓰시오.
| 1 2 | a,b = 100, 200 print(a==b) | [cs](http://colorscripter.com/info#e) |
False
> 해설:
a에 100, b에 200이 할당됩니다.
a == b 연산자는 두 값이 같은지 비교합니다. 100과 200은 다르기 때문에 거짓을 의미하는 False가 출력됩니다. 파이썬에서는 boolean 자료형 표기 시 첫 글자를 반드시 대문자로 작성해야 합니다.
15. 다음 중, 설명에 대한괄호 ( ) 안에 들어갈 알맞는 답을 작성하시오.
( ) 다이어그램은 문제 해결을 위한 도메인 구조를 나타내어 보이지 않는 도메인 안의 개념과
같은 추상적인 개념을 기술하기 위해 나타낸 것이다.
또한 소프트웨어의 설계 혹은 완성된 소프트웨어의 구현 설명을 목적으로 사용할 수 있다.
( ) 다이어그램의 형식은 ( )를 포함하여 속성(attribute)과 메서드(method)가 있다.
클래스
UML(Unified Modeling Language)은 통합 모델링 언어라고 합니다.
UML를 사용하면
의미가 명확하고 소통이 원활해 지며,
전체 시스템 구조와 클래스 간의 의존성 파악도 쉬우며,
원활한 유지보수를 위한 문서 활용으로도 사용됩니다.
UML다이어그램은
구조 다이어그램 (Structure Diagram : 정적) 과
행위 다이어그램 (Behavior Diagram : 동적) 으로 나뉘는데
클래스 다이어그램은 구조 다이어그램에 속합니다.
16. 다음 중, 설명에 대한괄호 ( ) 안에 들어갈 알맞는 보기를 고르시오.
(실제 기출문제에서는 답에 대한 보기 중, 영문 보기가 주어집니다.)
( ) 패턴은 객체지향 디자인 패턴이다.
( )는 부모(상위) 클래스에 알려지지 않은 구체 클래스를 생성하는 패턴이며,
자식(하위) 클래스가 어떤 객체를 생성할지를 결정하도록 하는 패턴이기도 하다.
부모(상위) 클래스 코드에 구체 클래스 이름을 감추기 위한 방법으로도 사용한다.
Factory method
17. 다음 C언어에 대한 알맞는 출력값을 쓰시오.
#include <stdio.h> struct jsu {
char name[12];
int os, db, hab, hhab;
};
int main(){
struct jsu st[3] = {{"데이터1", 95, 88}, {"데이터2", 84, 91}, {"데이터3", 86, 75}};
struct jsu\* p;
p = &st[0];
(p + 1)->hab = (p + 1)->os + (p + 2)->db;
(p + 1)->hhab = (p+1)->hab + p->os + p->db;
printf("%d\n", (p+1)->hab + (p+1)->hhab);
}
> 해설:
구조체 배열과 포인터 연산의 흐름을 추적합니다. st 배열은 다음과 같이 초기화됩니다:
포인터 p는 &st[0]을 가리킵니다.
1. (p + 1)->hab = (p + 1)->os + (p + 2)->db;
2. (p + 1)->hhab = (p+1)->hab + p->os + p->db;
3. printf("%d\n", (p+1)->hab + (p+1)->hhab);
3.
18. 다음은, 파일 구조(File Structures)에 대한 설명이다. 괄호 ( ) 안에 들어갈 알맞는 답을 작성하시오.
파일구조는 파일을 구성하는 레코드들이 보조기억장치에 편성되는 방식으로 접근 방식에 따라 방식이 달라진다.
접근 방법중, 레코드들을 키-값 순으로 정렬하여 기록하고, 레코드의 키 항목만을 모은 ( )을 구성하여 편성하는 방식이 있으며, 레코드를 참조할 때는 ( ) 이 가르키는 주소를 사용하여 직접 참조할 수 있다. 파일 구조에는 순차 접근, ( ) 접근, 해싱 접근이 있다.
인덱스 (색인)
19. 다음 설명에 대한 알맞는 답을 영문약어로 작성하시오.
( )는 사용자가 그래픽을 통해 컴퓨터와 정보를 교환하는 환경을 말한다.
이전까지 사용자 인터페이스는 키보드를 통해 명령어로 작업을 수행시켰지만
( )에서는 키보드 뿐만 아니라 마우스 등을 이용하여 화면의 메뉴 중 하나를 선택하여 작업을 수행한다.
화면에 아이콘을 띄어 마우스를 이용하여 화면에 있는 아이콘을 클릭하여 작업을 수행하는 방식이다.
대표적으로는 마이크로소프트의 Windows, 애플의 Mac 운영체제 등이 있다.
GUI
20. 다음은 소프트웨어 통합 테스트에 대한 설명이다. 괄호 ( ) 안에 들어갈 알맞는 답을 작성하시오.
( 1. ) 방식은 이름에서도 알 수 있듯이, 하위 모듈부터 시작하여 상위 모듈로 테스트를 진행하는 방식이며,
이 방식을 사용하기 위해서는 ( 2. )가 필요하다.
( 2. )는 이미 존재하는 하위 모듈과 존재하지 않은 상위 모듈에 대한 인터페이스 역할을 한다.
1. 상향식
2. 테스트 드라이버
모듈을 통합하는 과정에서 모듈 간 호환성의 문제를 찾아내기 위해 수행되는 테스트입니다.
즉, 모듈 간의 인터페이스가 올바르게 작동하는지를 테스트하게 됩니다.
통합 테스트에는 아래와 같은 방식이 존재합니다.
1. 빅뱅(Big Bang) 접근법 : 모든 구성 요소들을 한꺼번에 통합된 후에 테스트 수행
2. 점증적(incremental) 접근법 : 논리적으로 연관된 두개 또는 그 이상의 모듈을 조합시켜서 수행
(1) 하향식(Top Down) 접근법 :
소프트웨어 시스템의 제어 흐름이 위에서 아래로 발생
(테스팅을 위해 스텁의 도움이 필요)
(2) 상향식(Bottom Up) 접근법 :
모든 모듈들이 테스트될 때까지 더 낮은 레벨에 있는 각 모듈은 더 위에 있는 모듈과 함께 테스트 수행
(테스팅을 위한 드라이버의 도움이 필요)
(3) 샌드위치 접근법 : 하향식과 상향식 접근법의 조합
---
안녕하세요. 2022년 1회 정보처리기사 실기 기출문제를 정리해보았습니다.
기출문제이면서 보완설명을 덧붙여 정리하였으니 도움이 되었으면 좋겠습니다.
정보처리기사 개편안인 2020년 시험부터 기출문제를 정리하였습니다.
1. 아래 설명에 맞는 RAID 단계를 숫자로 작성하시오.
0
2. 다음 설명을 확인하여 해당하는 항목을 보기에서 찾아 적으시오.
(실제 기출문제에서는 답의 보기가 주어집니다.(오답 중, rollback 등..))
1. 오류가 발생하기 전까지의 사항을 로그(log)로 기록해 놓고, 이전 상태로 되돌아간 후, 실패가 발생하기 전까지의 과정을 그대로 따라가는 현상
2. 작업을 취소하여 트랜잭션을 이전 상태로 되돌리는 것
1. redo
2. undo
3. 다음 자바 문법에 알맞는 출력 결과를 작성하시오.
class A {
int a;
int b;
}
public class Main {
static void func1(A m){
m.a \*= 10;
}
static void func2(A m){
m.a += m.b;
}
public static void main(String args[]){
A m = new A();
m.a = 100;
func1(m);
m.b = m.a;
func2(m);
System.out.printf("%d", m.a);
}
}
2000
> 해설:
> - A m = new A(); 객체 m을 생성합니다. 초기값 m.a=0, m.b=0.
> - m.a = 100; m.a의 값이 100이 됩니다.
> - func1(m); 호출: 객체의 참조가 전달됩니다(Call by Reference). m.a *= 10; 이 실행되어 m.a는 100 * 10 = 1000이 됩니다.
> - m.b = m.a; m.b에 1000을 대입합니다. 현재 m.a=1000, m.b=1000.
> - func2(m); 호출: m.a += m.b; 이 실행되어 m.a = 1000 + 1000 = 2000이 됩니다.
> - System.out.printf("%d", m.a); 최종적으로 m.a의 값인 2000을 출력합니다.
4. 다음 SQL 결과에 알맞는 쿼리을 작성하시오.

SELECT name, score FROM 성적 ( 1 ) BY ( 2 ) ( 3 )
1. ORDER
2. score
3. DESC
5. 데이터베이스의 이상현상 중, 삭제 이상에 대해 서술하시오.
데이터를 삭제할 경우 원하지 않는 다른 데이터도 삭제되어버리는 이상
6. 다음은 파이썬 코드에서 출력되는 a와 b의 값을 작성하시오.
| 1 2 3 | def exam(num1, num2=2): print('a=', num1, 'b=', num2) exam(20) | [cs](http://colorscripter.com/info#e) |
a= 20 b= 2
7. 다음 설명과 관련된 답을 보기에서 골라 작성하시오.
(실제 기출문제에서는 답의 보기가 주어집니다.(오답 중, remove, sort 등..))
1. 요소를 확장해준다는 의미를 가지고 있으며, 모든 항목을 하나의 요소로 추가
2. 리스트 내부 요소를 꺼내주는 함수로써, 그 요소는 리스트 안에서 삭제하고 그 값을 반환
3. 리스트 내부의 요소의 순서는 뒤집는 역할
1. extend
2. pop
3. reverse
8. 다음 아래 단어를 영어 약자로 작성하시오.
임시 키 무결성 프로토콜
TKIP (Temporal Key Integrity Protocol)
9. 다음 중, 설명에 대한 답을 영어 약자로 작성하시오.****
키보드나 마우스와 같은 장치 없이 말이나 행동 그리고 감정과 같은 인간의 자연스러운 표현으로 컴퓨터나 장치를 제어할 수 있는 환경
NUI
10. 다음은 분석도구에 대한 설명으로 보기에 알맞는 답을 작성하시오.
(실제 기출문제에서는 답의 보기가 주어집니다.(오답 중, running analysis 등..))
1. 소스 코드의 실행 없이, 코드의 의미를 분석해 결함을 찾아내는 원시적 코드 분석 기법
2. 소스 코드를 실행하여 프로그램 동작이나 반응을 추적하고 코드에 존재하는 메모리 누수, 스레드 결함 등을 분석
1. static
2. dynamic
11. 다음 Java 코드 중에서 밑줄에 들어갈 알맞는 코드를 작성하시오.
class Car implements Runnable{
int a;
public void run(){
system.out.println("message") }
}
public class Main{
public static void main(String args[]){
Thread t1 = new Thread(new \_\_\_());
t1.start();
}
}
Car
> 해설:
> Java에서 Thread를 생성하는 방법 중 하나는 Runnable 인터페이스를 구현한 클래스의 객체를 Thread 생성자에 전달하는 것입니다.
> Car 클래스는 Runnable을 implements하고 있으므로, Thread t1 = new Thread(new Car());와 같이 Car의 인스턴스를 전달해야 합니다.
12. 다음 설명에 대한 알맞는 단어를 작성하시오.
자바 프로그래밍 언어를 이용한 xUnit의 테스트 기법으로써 숨겨진 단위 테스트를 끌어내어 정형화시켜 단위 테스트를 쉽게 해주는 테스트용 Framework이다.
JUnit
13. 다음 보기 중에서 블랙박스 테스트 기법을 3가지 골라 작성하시오.

ㄷ, ㄹ, ㅂ
14. 다음 소스코드에서 입력값이 5가 들어왔을때 출력되는 값을 작성하시오.
| 1 2 3 4 5 6 7 8 9 10 11 12 | #include |
[cs](http://colorscripter.com/info#e) |
120
> 해설:
> 이 코드는 팩토리얼을 계산하는 재귀 함수입니다. 입력값 a로 5가 들어옵니다.
> 흐름 추적:
> - func(5) 호출: 5 <= 1이 거짓이므로 5 * func(4) 반환 대기.
> - func(4) 호출: 4 * func(3) 반환 대기.
> - func(3) 호출: 3 * func(2) 반환 대기.
> - func(2) 호출: 2 * func(1) 반환 대기.
> - func(1) 호출: 1 <= 1이 참이므로 1 반환.
> - 역순으로 계산: func(2)는 2 * 1 = 2, func(3)는 3 * 2 = 6, func(4)는 4 * 6 = 24, func(5)는 5 * 24 = 120.
> - 최종적으로 120이 출력됩니다.
15. 다음 중, 괄호 ( ) 안에 들어갈 연산자를 써서 정수를 역순으로 출력하는 알맞는 답을 작성하시오.
#include <stdio.h> int main() {
int number = 1234;
int div = 10;
int result = 0;
while (number ( 1 ) 0) {
result = result \* div;
result = result + number ( 2 ) div;
number = number ( 3 ) div;
}
printf("%d", result); return 0;
}
결과 : 4321
1. >
2. %
3. /
> 해설:
> number가 0보다 클 때까지 반복하며 정수를 역순으로 만듭니다.
> - 빈칸 1: while (number > 0)이 되어야 합니다.
> - 빈칸 2: number의 일의 자리를 구하려면 10으로 나눈 나머지(%)를 구해야 합니다. number % div.
> - 빈칸 3: number를 10으로 나눈 몫(/)을 취해 다음 자리를 처리합니다. number / div.
> 흐름 추적 (number=1234, div=10):
> 1. result = 0 * 10 = 0, result = 0 + (1234 % 10) = 4, number = 1234 / 10 = 123
> 2. result = 4 * 10 = 40, result = 40 + (123 % 10) = 43, number = 123 / 10 = 12
> 3. result = 43 * 10 = 430, result = 430 + (12 % 10) = 432, number = 12 / 10 = 1
> 4. result = 432 * 10 = 4320, result = 4320 + (1 % 10) = 4321, number = 1 / 10 = 0
> 반복문 종료 후 4321 출력.
16. 다음 설명에 대한 답을 영어 약자로 작성하시오.****
정보보호 관리체계의 영문 약자
ISMS (Information Security Management System)
17. 다음 설명 중, 괄호 ( ) 안에 들어가는 알맞는 답을 보기에서 선택하여 작성하시오.
(실제 기출문제에서는 답의 보기가 주어집니다.(오답 중, 참조성, 무결성 등..))
1. 슈퍼키는 ( 1 ) 의 속성을 갖는다.
2. 후보키는 ( 1 ) 와/과 ( 2 ) 의 속성을 갖는다.
1. 유일성
2. 최소성
18. 다음 설명과 관련된 답을 보기에 찾아서 작서하시오.
(실제 기출문제에서는 답의 보기가 주어집니다.(오답 중, Pharming, Ransomware등..))
이 공격은 APT 공격에서 주로 쓰이는 공격으로, 공격 대상이 방문할 가능성이 있는 합법적인 웹 사이트를 미리 감염시킨 뒤, 잠복하고 있다가 공격 대상이 방문하면 대상의 컴퓨터에 악성코드를 설치하는 방식
watering hole
19. 다음 소스코드가 실행할 때의 출력값을 작성하시오.****
#include <stdio.h> int isPrime(int number) {
int i;
for (i=2; i<number; i++) {
if (number % i == 0) return 0;
}
return 1;
}
int main(void) {
int number = 13195, max\_div=0, i;
for (i=2; i<number; i++) if (isPrime(i) == 1 && number % i == 0) max\_div = i;
printf("%d", max\_div);
return 0;
}
29
> 해설:
> 이 코드는 13195의 소인수(Prime factor) 중 가장 큰 값을 찾는 프로그램입니다.
> - isPrime(i) 함수: i가 소수이면 1을, 아니면 0을 반환합니다.
> - main 함수: i를 2부터 13194까지 증가시키면서, i가 소수이고(isPrime(i) == 1) number(13195)의 약수인(number % i == 0) 경우 max_div에 i를 저장합니다.
> - 13195의 소인수 분해: 5 * 7 * 13 * 29
> - i가 5, 7, 13, 29일 때 조건을 만족하여 max_div가 갱신됩니다.
> - 가장 마지막으로 저장되는 값은 29이며, 결과로 29가 출력됩니다.
20. 다음은 V모델에서의 테스트 단계에 대한 설명으로 괄호안에 들어갈 답을 작성하시오.****

1. 단위 테스트
2. 통합 테스트
3. 시스템 테스트
4. 인수 테스트
---
안녕하세요. 2022년 2회 정보처리기사 실기 기출문제를 정리해보았습니다.
해당 복원된 기출문제가 많은 분들에게 도움이 되었으면 좋겠습니다.
정보처리기사 개편안인 2020년 시험부터 기출문제를 정리하였습니다.
1. 다음은 관계 데이터 모델에 대한 설명이다. 괄호안에 들어가는 용어를 작성하시오.
( )은 /는 관계 데이터의 연산을 표현하는 방법으로, 원하는 정보를 정의할 때는 계산 수식을 사용한다.
수학의 predicate calculus에 기반을 두고 있으며, 관계 데이터 모델의 제안자인 codd가 수학에 가까운 기반을 두고 특별히 관계 데이터베이스를 위해 제안하여 탄생하였다.
( ) /은/는 원하는 정보가 무엇이라는 것만 정의하는 비절차적 특성을 지니며, 튜블 ( )와/과 도메인 ( ) 이/가 있다.
관계해석
2. 다음은 대칭 키 알고리즘에 대한 설명이다. 해당 설명에 맞는 용어를 보기에 골라 작성하시오.
1. Xuejia Lai와 James Messey 가 만든 알고리즘으로 PES(Proposed Encryption Standard)에서 IPES(Improved PES)로 변경되었다가, 1991년에 제작된 블록 암호 알고리즘으로 현재 국제 데이터 암호화 알고리즘으로 사용되고 있다. 64비트 블록을 128비트의 key를 이용하여 8개의 라운드로 구성되어 있다.
2. 미국의 NSA에서 개발한 Clipper 칩에 내장되는 블록 알고리즘이다. 전화기와 같은 음성을 암호화 하는데 주로 사용되며 64비트 입출력에 80비트의 키 총 32라운드를 가진다.
1.IDEA
2.SKIPJACK
3. H회사의 전체 제품 단가 보다 큰 제품 출력을 하고자 한다. 괄호안에 들어갈 알맞는 용어를 작성하시오.
[제품테이블]

SELECT 제조사, 제품명, 단가
FROM 제품
WHERE 단가 > ( ) (SELECT 단가 FROM 제품 WHERE 제조사='H')
ALL
4. 다음 SQL 결과에 알맞는 답을 작성하시오.
[TABLE]

SELECT count(col2)
FROM TABLE
WHERE col1 in(2,3) or col2 in(3,5);
4
5. 다음은 네트워크에 관련한 내용이다. 괄호안에 들어갈 알맞는 답을 작성하시오.
( )은/는 인터넷을 통해 디바이스 간에 사설 네트워크 연결을 생성하며, 퍼블릭 네트워크를 통해 데이터를 안전하게 익명으로 전송하는 데 사용된다.
또한 사용자 IP 주소를 마스킹하고 데이터를 암호화하여 수신 권한이 없는 사람이 읽을 수 없도록 한다.
VPN
6. 다음은 SOLID 원칙에 관한 내용이다. 괄호안에 알맞는 단어를 보기에서 고르시오.
(실제 기출문제에서는 답의 보기가 주어집니다.(오답 중, SRP, LSP 등..))
( ) 은/는 클라이언트가 자신이 이용하지 않는 메서드에 의존하지 않아야 한다는 원칙이다.
( ) 은/는 큰 덩어리의 인터페이스들을 구체적이고 작은 단위들로 분리시킴으로써 클라이언트들이 꼭 필요한 메서드들만 이용할 수 있게 한다.
예를 들어 하나의 복합기에 프린터와 복사기, 팩스 메서드가 있는데 이 세가지 메서드는 같은 파일에 존재하므로 프린터 로직만 바뀌어도 복사기와 팩스도 재컴파일을 해야한다.
그러므로 ( ) 을/를 적용하여 로직이 바뀌어도 다른 메서드는 영향을 받지 않도록 해야한다.
ISP (Interface segregation principle)
7. 다음 자바 코드에 알맞는 출력값을 작성하시오.
public static void main(String args[]){
int i = 3; int k = 1;
switch(i) {
case 1: k += 1;
case 2: k++;
case 3: k = 0;
case 4: k += 3;
case 5: k -= 10;
default: k--;
}
System.out.print(k);
}
-8
> 해설:
> switch 문에서 break가 없으므로 해당 case부터 시작하여 아래로 순차적으로 모든 실행문이 실행됩니다. (Fall-through 현상)
> 흐름 추적:
> - 초기값: i = 3, k = 1
> - case 3: 진입. k = 0; (k값 0)
> - case 4: 실행. k += 3; (k값 3)
> - case 5: 실행. k -= 10; (k값 -7)
> - default: 실행. k--; (k값 -8)
> - 최종적으로 k는 -8이 되어 출력됩니다.
8. 다음 소스코드에 대한 출력값을 작성하시오.
struct A{
int n, int g }
int main(){
A a = new A[2] for(i=0; i <2; i++) {
a[i].n = i, a[i].g=i+1 }
System.out.printf(a[0].n + a[1].g);
}
2
> 해설:
> 길이가 2인 객체 배열 a를 생성하여 초기화합니다. (의사코드 형태의 문제)
> 흐름 추적:
> - i = 0일 때: a[0].n = 0, a[0].g = 0 + 1 = 1
> - i = 1일 때: a[1].n = 1, a[1].g = 1 + 1 = 2
> - 출력문에서 a[0].n + a[1].g를 계산합니다.
> - a[0].n은 0이고, a[1].g는 2이므로, 0 + 2 = 2가 출력됩니다.
9. IP 주소가 139.127.19.132이고 서브넷마스크 255.255.255.192일 때 아래의 답을 작성하시오.
(10진수로 표기)
(1) 괄호안에 들어갈 네트워크 주소 : 139.127.19.( )
(2) 해당 네트워크 주소와 브로드캐스트 주소를 제외한 호스트 개수
128 , 62
10. 다음 설명에 대한 괄호안에 알맞는 단어를 작성하시오.
1. ( ) 테스트는 하드웨어나 소프트웨어의 개발 단계에서 상용화하기 전에 실시하는 제품 검사 작업. 제품의 결함 여부, 제품으로서의 가치 등을 평가하기 위해 실시한다. 선발된 잠재 고객으로 하여금 일정 기간 무료로 사용하게 한 후에 나타난 여러 가지 오류를 수정, 보완한다. 공식적인 제품으로 발매하기 이전에 최종적으로 실시하는 검사 작업이다.
2. ( ) 테스트는 새로운 제품 개발 과정에서 이루어지는 첫 번째 테스트. 즉, 시제품이 운영되는 동안의 신제품 연구와 개발 과정 단계에서 초기 작동의 결과를 평가하는 수단이며 개발 회사 내부에서 이루어지는 테스트로서 단위 테스트, 구성 테스트, 시스템 테스트 등을 포함한다.
베타, 알파
11. 다음 설명에 알맞는 테스트 용어를 보기에서 골라 작성하시오.
(실제 기출문제에서는 답의 보기가 주어집니다.(오답 중, Iterating등..))
오류를 제거하거나 수정한 시스템이나 시스템 컴포넌트 또는 프로그램이 오류 제거와 수정에 의해 새로이 유입된 오류가 없는지를 확인하는 일종의 반복 시험이다.
반복적인 시험이 필요한 이유는 오류가 제거·수정되는 상당수의 시스템이 의도치 않았던 오동작이나 새로운 형태의 오류를 일으키기 때문이다.
결국, 수정·변경된 시스템이나 시스템 컴포넌트 또는 프로그램이 명세된 요구 사항을 충족시키는지를 확인하는 시험의 한 형태이다.
Regression
12. 다음 테이블에서 πTTL(employee)에 대한 연산 결과 값을 작성하시오.
[employee테이블]

1. TTL
2. 부장
3. 대리
4. 과장
5. 차장
13. 다음은 파이썬 코드이다. 알맞는 출력값을 작성하시오.
| 1 2 3 4 | a = "REMEMBER NOVEMBER" b = a[:3] + a[12:16]; c = "R AND %s" % "STR"; print(b+c); | [cs](http://colorscripter.com/info#e) |
REMEMBER AND STR
14. 다음 설명에 대해 보기에 주어진 답을 골라 작성하시오.
(실제 기출문제에서는 답의 보기가 주어집니다.(오답 중, ARP, RARP 등..))
1. 라우터로 상호 접속이 되어있는 여러 개의 네트워크 집합으로 도메인 혹은 자율시스템(Autonomous System, AS)이라고 한다.
같은 도메인 내에 존재하는 라우터는 도메인 내부 라우터가 되고 도메인 외부에 존재하는 라우터는 도메인 외부 라우터가 되는데, 여기서 도메인 내부 경로 설정을 가르킨다.
2. 시스템 사이에 경로 설정 정보 등을 교환하기 위해 사용하는 프로토콜로써,
다른 도메인 사이에 라우팅 시 정리된 관리가 거의 없고 많은 경우에 신용도가 매우 낮아 빠른 수행보다는 보안과 제어가 본래의 목적이다.
3. IP 라우팅 프로토콜의 한 종류로써 RIP(routing information protocol)보다 규모가 큰 네트워크에서도 사용할 수 있다.
규모가 크고 복잡한 TCP/IP 네트워크에서 RIP의 단점을 개선한 라우팅 프로토콜로써 RIP에 비해 자세한 제어가 가능하고, 관리 정보의 트래픽도 줄일 수 있다.
4. 서로 다른 자율 시스템(AS)의 라우터 간에 라우팅 정보를 교환하는 데 사용되는 외부 게이트웨이 프로토콜(EGP)이다.
각 목적지에 대한 전체 경로가 포함되며, 다른 시스템과 교환하는 네트워크 도달 가능성 정보의 데이터베이스를 유지한다.
네트워크 도달 가능성 정보를 사용하여 AS 연결 그래프를 구성하며, 이를 통해 라우팅 루프를 제거하고 AS 수준에서 정책 결정을 실행할 수 있다.
1. IGP
2. EGP
3. OSPF
4. BGP
15. 다음 C언어에서 출력에 대한 알맞은 답을 작성하시오.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include |
[cs](http://colorscripter.com/info#e) |
10
> 해설:
> len 함수는 문자열 포인터 p를 받아 NULL 문자('\0')가 나올 때까지 포인터를 이동하며 길이를 셉니다. (즉, 문자열의 길이를 반환)
> 흐름 추적:
> - p1 = "2022", 길이는 4. 따라서 a = len(p1) 실행 시 문자 4개를 세고 반환하여 a = 4.
> - p2 = "202207", 길이는 6. 따라서 b = len(p2) 실행 시 문자 6개를 세고 반환하여 b = 6.
> - a + b = 4 + 6 = 10이 되어 최종적으로 10이 출력됩니다.
16.다음 C언어 코드에서 알맞는 출력값을 작성하시오.
#include <stdio.h> int main(int argc, char \*argv[]) {
int a[4] = {0, 2, 4, 8};
int b[3] = {};
int i = 1;
int sum = 0;
int \*p1;
for (i; i < 4; i++) {
p1 = a + i;
b[i-1] = \*p1 - a[i-1];
sum = sum + b[i-1] + a[i];
}
printf("%d", sum);
return 0;
}
22
> 해설:
> 흐름 추적:
> - a[4] = {0, 2, 4, 8}, b[3] = {0, 0, 0}, sum = 0.
> - 포인터 p1 = a + i는 배열 a의 i번째 원소 a[i]를 가리키므로, *p1은 a[i]와 같습니다.
> - 반복문(i = 1 ~ 3):
> - i = 1일 때: p1 = a + 1 (*p1 = a[1] = 2). b[0] = a[1] - a[0] = 2 - 0 = 2. sum = 0 + b[0] + a[1] = 0 + 2 + 2 = 4.
> - i = 2일 때: p1 = a + 2 (*p1 = a[2] = 4). b[1] = a[2] - a[1] = 4 - 2 = 2. sum = 4 + b[1] + a[2] = 4 + 2 + 4 = 10.
> - i = 3일 때: p1 = a + 3 (*p1 = a[3] = 8). b[2] = a[3] - a[2] = 8 - 4 = 4. sum = 10 + b[2] + a[3] = 10 + 4 + 8 = 22.
> - 반복이 끝나고 sum의 값 22가 출력됩니다.
17. 다음 자바코드에서 알맞는 출력값을 작성하시오.
public class Conv{
public Conv(int a) {
this.a = a;
}
int func() {
int b =1;
for (int i=1; i<a; i++){
b = a \* i + b }
return a +b;
}
int a;
}
public static void main(String[] args){
Conv obj = new Conv(3);
obj.a=5;
int b = obj.func();
system.out.print(obj.a + b);
i }
61
> 해설:
> 흐름 추적:
> - Conv obj = new Conv(3); 호출로 obj.a는 초기값 3을 가집니다.
> - obj.a = 5; 실행으로 obj.a는 5로 변경됩니다.
> - obj.func(); 호출: a = 5인 상태에서 실행됩니다. 초기 b = 1.
> - 반복문(i = 1 ~ 4):
> - i = 1일 때: b = 5 * 1 + 1 = 6.
> - i = 2일 때: b = 5 * 2 + 6 = 16.
> - i = 3일 때: b = 5 * 3 + 16 = 31.
> - i = 4일 때: b = 5 * 4 + 31 = 51.
> - 반복문 종료 후 return a + b; 실행으로 5 + 51 = 56 반환. 따라서 main에서 b = 56.
> - System.out.print(obj.a + b);를 통해 5 + 56 = 61이 출력됩니다.
18. 다음은 함수 종속성에 대한 설명이다. 해당 문제에 대한 알맞는 답을 보기에서 골라 작성하시오.
(실제 기출문제에서는 답의 보기가 주어집니다.(오답 중, union 등..))

1. 성적은 {학생,학과}에 대해서 ( ) Functional Dependency이다.
2. 성적은 학과만 알아도 식별이 가능하므로, 이 경우에는 성적 속성은 기본키에 ( ) Functional Dependency이다.
3. 릴레이션에서 X, Y, Z라는 3 개의 속성이 있을 때 X→Y, Y→Z 이란 종속 관계가 있을 경우, X→Z가 성립될 경우
1. Full
2. Partial
3. Transitive
19.다음 설명에 대한 알맞는 답을 보기에서 고르시오.
(실제 기출문제에서는 답의 보기가 주어집니다.(오답 중, ajax, 등..))
1. 인터넷에서, 웹 서버와 사용자의 인터넷 브라우저 사이에 문서를 전송하기 위해 사용되는 통신 규약을 말한다.
인터넷에서 하이퍼텍스트(hypertext) 문서를 교환하기 위하여 사용되는 통신규약이다.
이 규약에 맞춰 개발해서 서로 정보를 교환할 수 있게 되었다.
2. 문자, 그래픽, 음성 및 영상을 하나의 연상 거미집(Web of Association)과 같이 서로 연결시켜, 제시된 순서에 관계없이 이용자가 관련된 정보를 검색할 수 있도록 하는 정보 제공 방법이다.
즉, 한 페이지에서 링크된 순서에 상관없이 사용자들이 원하는 정보를 클릭함으로써 원하는 정보에 쉽게 접근하는 방식을 말한다.
3. 웹 페이지 표시를 위해 개발된 지배적인 마크업 언어다.
또한, 제목, 단락, 목록 등과 같은 본문을 위한 구조적 의미를 나타내는 것뿐만 아니라 링크, 인용과 그 밖의 항목으로 구조적 문서를 만들 수 있는 방법을 제공한다.
ㅇ. HTTP
ㄹ. Hypertext
ㅂ. HTML
20.다음 모듈 F에 대한 Fan-in과 Fan-out을 작성하시오.

Fan-in : 3
Fan-out : 2
---
안녕하세요. 2022년 3회 정보처리기사 실기 기출문제를 정리해보았습니다.
해당 복원된 기출문제가 많은 분들에게 도움이 되었으면 좋겠습니다.
정보처리기사 개편안인 2020년 시험부터 기출문제를 정리하였습니다.
1. 아래는 C언어의 2차원 배열 형태이다. field의 경우 2차원 배열 형태는 예시처럼 출력되므로, 이를 참고하여 mines의 2차원 배열 형태를 작성하시오.
void main{
field {{0,1,0,1},{0,0,0,1},{1,1,1,0},{0,1,1,1}};
mines {{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};
int w = 4, h = 4;
for(y=0; y<h; y++) {
for(x=0; x<w; x++) {
if(field[y][x] == 0) continue;
for(i=y-1; i<=y+1; i++) {
for(j=x-1; j<=x+1; j++) {
if(calculate(w,h,j,i) == 1) {
mines[i][j] += 1;
}
}
}
}
}
for(y=0; y<h; y++){
for(x=0; x<w; x++) printf("%d", mines[y][x]);
printf("\n");
}
}
int calculate(w,h,j,i) {
if (i >= 0 && i < h && j >= 0 && j < w) return 1;
return 0;
}

1, 1, 3, 2
3, 4, 5, 3
3, 5, 6, 4
3, 5, 5, 3
> 해설:
> 지뢰찾기에서 주변 지뢰 개수를 누적하는 코드입니다. field 배열에서 값이 1(지뢰)인 모든 위치 주변 3x3 영역의 mines 배열 원소를 1씩 증가시킵니다.
> 흐름 추적 (field 배열 상태):
> 0 1 0 1
> 0 0 0 1
> 1 1 1 0
> 0 1 1 1
> - y=0, x=1 (1): 주변 (0,0), (0,1), (0,2), (1,0), (1,1), (1,2)에 +1
> - y=0, x=3 (1): 주변 (0,2), (0,3), (1,2), (1,3)에 +1
> - y=1, x=3 (1): 주변 (0,2), (0,3), (1,2), (1,3), (2,2), (2,3)에 +1
> - y=2, x=0 (1): 주변 (1,0), (1,1), (2,0), (2,1), (3,0), (3,1)에 +1
> - y=2, x=1 (1): 주변 8방향에 +1
> - y=2, x=2 (1): 주변 8방향에 +1
> - y=3, x=1 (1): 주변 (2,0), (2,1), (2,2), (3,0), (3,1), (3,2)에 +1
> - y=3, x=2 (1): 주변 (2,1), (2,2), (2,3), (3,1), (3,2), (3,3)에 +1
> - y=3, x=3 (1): 주변 (2,2), (2,3), (3,2), (3,3)에 +1
> 이를 모든 지뢰에 대해 중첩해서 더하면, 각 칸별로 자신을 포함한 8방향 이웃의 지뢰 개수 합이 됩니다.
> 계산된 mines 배열:
> 1 1 3 2
> 3 4 5 3
> 3 5 6 4
> 3 5 5 3
2. 아래 예시를 보고 관계 대수에 대한 기호를 작성하시오.

U, -, X, π, ⋈
3. 다음은 디자인 패턴에 대한 설명이다. 괄호안에 알맞는 답을 작성하시오.
(기호식 보기가 있습니다. ex: Abstract Factory, Mediator 등)
( 1 )은/는 기능을 처리하는 클래스와 구현을 담당하는 추상 클래스로 구별한다.
구현뿐 아니라 추상화도 독립적 변경이 필요할 때 브리지 패턴을 사용한다.
기존 시스템에 부수적인 새로운 기능들을 지속적으로 추가할 때 사용하면 유용하며,
새로운 인터페이스를 정의하여 기존 프로그램의 변경 없이 기능을 확장할 수 있다.
( 2 )은/는 한 객체의 상태가 변화하면 객체에 상속되어 있는 다른 객체들에게 변화된 상태를 전달해주는 패턴이다.
일대다 관계를 가지며, 주로 분산된 시스템 간에 이벤트를 생성·발행(Publish)하고, 이를 수신(Subscribe)해야 할 때 이용한다.
1. Bridge
2. Observer
4. 아래 코드에 대한 출력 값을 작성하시오.
void main{
int []result = int[5];
int []arr = [77,32,10,99,50];
for(int i = 0; i < 5; i++) {
result[i] = 1;
for(int j = 0; j < 5; j++) {
if(arr[i] <arr[j]) result[i]++;
}
}
for(int k = 0; k < 5; k++) {
printf(result[k]);
}
}
24513
> 해설:
> 이 코드는 배열 arr 각 원소의 순위(내림차순)를 구하는 알고리즘입니다. 배열을 돌면서 자신보다 큰 값이 있을 때마다 순위 result[i]를 1씩 증가시킵니다.
> 흐름 추적:
> - arr = {77, 32, 10, 99, 50}
> - i = 0 (77): 77보다 큰 값은 99(1개). 따라서 초기값 1 + 1 = 2위. (result[0]=2)
> - i = 1 (32): 32보다 큰 값은 77, 99, 50(3개). 따라서 1 + 3 = 4위. (result[1]=4)
> - i = 2 (10): 10보다 큰 값은 77, 32, 99, 50(4개). 따라서 1 + 4 = 5위. (result[2]=5)
> - i = 3 (99): 99보다 큰 값은 0개. 따라서 1 + 0 = 1위. (result[3]=1)
> - i = 4 (50): 50보다 큰 값은 77, 99(2개). 따라서 1 + 2 = 3위. (result[4]=3)
> - 출력값은 24513이 됩니다.
5. 아래 코드에 대한 출력 값을 작성하시오.
첫번째 네트워크 주소가 192.168.1.0/24일때 FLSM 3개로 분할했을때
두번째 네트워크 브로드캐스드 IP를 10진수로 변환한 값을 작성하시오.
192.168.1.127
6. 아래 표를 확인하여 보기에 알맞는 값을 고르시오.
(기호식 보기가 있습니다. ex: Boundary Value Partitioning, Equivalence Partitioning 등)


Boundary Value Analysis
7. 아래 데이터 명령어를 적용할 경우 알맞는 출력값을 작성하시오.

(1). 3
(2). 4
8. 아래 설명에 대한 알맞는 답을 작성하시오.
( 1 ) 은/는 보안학적 측면에서 기술적인 방법이 아닌 사람들간의 기본적인 신뢰를 기반으로 사람을 속여 비밀 정보를 획득하는 기법이다.
( 2 ) 은/는 빅데이터(Big Data)와 비슷하면서도 구조화돼 있지 않고, 더는 사용하지 않는 ‘죽은’ 데이터를 의미한다. 일반적으로 정보를 수집해 저장한 이후 분석이나 특별한 목적을 위해 활용하는 데이터가 아니며, 저장공간만 차지하고 이러한 이유로 심각한 보안 위험을 초래할 수 있다.
1. 사회공학
2. 다크 데이터
9. 다음 파이썬 코드에 대한 출력값을 작성하시오.
TestList = [1,2,3,4,5] TestList = list(map(lambda num : num + 100, TestList))) print(TestList)
[101,102,103,104,105]
10. 다음 보안 관련 설명으로 가장 알맞는 용어를 작성하시오.
( ) 은/는 머신러닝 기술을 이용하여 IT 시스템에서 발생하는 대량의 로그를 통합관리 및 분석하여 사전에 위협에 대응하는 보안 솔루션이다.
서로 다른 기종의 보안솔루션 로그 및 이벤트를 중앙에서 통합 수집하여 분석할 수 있으며, 네트워크 상태의 monitoring 및 이상징후를 미리 감지할 수 있다.
* 네트워크 이기종 장비 간 로그의 상관관계 분석
* 이상징후의 행위 기반 및 문맥 기반 분석 기능
* 각 로그의 상관관계를 조건식에 따라 검색하여 분석이 가능
* 이벤트 및 로그의 이상패턴을 인식해 잠재적 위협이 발생시 알림 기능
SIEM
11. 다음 보기 중, 형상 관리 항목을 3가지 고르시오.

CVS, SVN, GIT
12. STUDENT 테이블에서 컴퓨터과 학생 50명, 전기과 학생 100명, 인터넷과 학생 50명의 정보가 저장되어 있을 때, 다음 SQL문의 실행 결과에 따른 튜플의 수는? (단, DEPT 칼럼은 학과명이다.)
1) SELECT DERP FROM STUDENT;
2) SELECT DISTINCT DEPT FROM STUDENT;
3) SELECT COUNT(DISTINCT DEPT) FROM STUDENT WHERE DEPT = '인터넷과';
1) 200
2) 3
3) 1
13. 다음 코드에 대한 출력 값을 작성하시오.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | int n; int k; int s; int el = 0; for(n=6; n<=30; n++){ s=0; k=n/2; for(int j=1; j<=k; j++){ if(n%j==0){ s=s+j; } } if(s==n){ el++; } } printf("%d", el); | [cs](http://colorscripter.com/info#e) |
2
> 해설:
> 이 코드는 완전수(Perfect Number)의 개수를 구하는 프로그램입니다. 자신을 제외한 약수들의 합이 자신과 같은 수를 완전수라고 합니다. (예: 6, 28)
> 흐름 추적:
> - n을 6부터 30까지 증가시키면서 검사합니다.
> - 내측 for문: j를 1부터 n/2까지 돌며 n의 약수를 찾아 합 s에 더합니다.
> - n = 6일 때: 약수는 1, 2, 3. 합 s = 1+2+3 = 6. s == n이 참이므로 el 1 증가.
> - n = 7 ~ 27일 때: s == n이 거짓. (예: 24의 약수합은 1+2+3+4+6+8+12 = 36 != 24)
> - n = 28일 때: 약수는 1, 2, 4, 7, 14. 합 s = 1+2+4+7+14 = 28. s == n이 참이므로 el 1 증가.
> - 최종적으로 6과 28 두 개가 완전수이므로 el = 2가 되어 2가 출력됩니다.
14. 아래 설명에 대하여 알맞는 답을 보기에서 고르시오.
(기호식 보기가 있습니다. ex: CSRF 등)
( 1 )은/는 프로세서(processor) 안에 독립적인 보안 구역을 따로 두어 중요한 정보를 보호하는 ARM사에서 개발한 하드웨어 기반의 보안 기술로 프로세서(processor) 안에 독립적인 보안 구역을 별도로 하여, 중요한 정보를 보호하는 하드웨어 기반의 보안 기술이다.
( 2 )은/는 사용자들이 사이트에 접속할 때 주소를 잘못 입력하거나 철자를 빠뜨리는 실수를 이용하기 위해 유사한 유명 도메인을 미리 등록하는 일로 URL 하이재킹(hijacking)이라고도 한다.
1. Trustzone
2. typosquatting
15. 아래 설명에 대하여 알맞는 용어를 작성하시오.
( )은/는 여러 개의 사이트에서 한번의 로그인으로 여러가지 다른 사이트들을 자동적으로 접속하여 이용하는 방법을 말한다. 일반적으로 서로 다른 시스템 및 사이트에서 각각의 사용자 정보를 관리하게 되는데 이때 하나의 사용자 정보를 기반으로 여러 시스템을 하나의 통합 인증을 사용하게 하는 것을 말한다.
즉 하나의 시스템에서 인증을 할 경우 타 시스템에서는 인증 정보가 있는지 확인하고 있으면 로그인 처리를 하도록 하고, 없는 경우 다시 통합 인증을 할 수 있도록 만드는 것을 의미한다.
SSO
16. 다음은 스케줄링에 관한 내용이다. 괄호안에 알맞는 답을 작성하시오.

SJF, RR, SRT
17. 다음은 UML에 관한 설명이다. 괄호안에 알맞는 답을 작성하시오.
UML은 통합 모델링 언어로써, 시스템을 모델로 표현해주는 대표적인 모델링 언어이다.
구성 요소로는 사물, ( 1 ), 다이어그램으로 이루어져 있으며, 구조 다이어그램 중, ( 2 ) 다이어그램은 시스템에서 사용되는 객체 타입을 정의하고, 그들 간의 존재하는 정적인 관계를 다양한 방식으로 표현한 다이어그램이다.
또한 UML 모델링에서 ( 3 )은/는 클래스와 같은 기타 모델 요소 또는 컴포넌트가 구현해야 하는 오퍼레이션 세트를 정의하는 모델 요소이다.
1. 관계
2. 클래스
3. 인터페이스
18. 다음은 E-R다이어그램에 관한 설명이다. 괄호 안에 알맞는 답을 작성하시오.
(아래 그래프 기호는 정확히 기억이 나지 않아 임의로 작성한 것이니 참고만 해주세요.)

( 1 ) : 개체집합 - 관계집합 연결
( 2 ) : 개체 집합과의 연결
( 3 ) : 관계집합 - 관계집합의 속성 연결
( 4 ) : 두 개체집합 관계에서 생성되는 값을 저장하는 속성
( 5 ) : 같은 속성을 공유하는 개체들의 모임
1. 실선 (ㄷ)
2. 관계집합 (ㅂ)
3. 점선 (ㄹ)
4. 관계집합의 속성 (ㄴ)
5. 개체집합 (ㄱ)
19. 다음 자바 코드에 대한 출력 값을 작성하시오.
public class Main {
static int[] MakeArray(){
int[] tempArr = new int[4];
for(int i=0; i<tempArr.Length;i++){
tempArr[i] = i;
}
return tempArr;
}
public static void main(String[] args){
int[] intArr;
intArr = MakeArray();
for(int i=0; i < intArr.Length; i++) System.out.print(intArr[i]);
}
}
0123
> 해설:
> 메서드를 통해 정수형 배열을 생성하고 반환하는 코드입니다.
> 흐름 추적:
> - MakeArray() 호출: 길이 4인 tempArr 배열을 생성합니다.
> - i = 0부터 3까지 반복하며 tempArr[0] = 0, tempArr[1] = 1, tempArr[2] = 2, tempArr[3] = 3을 대입합니다.
> - tempArr 배열을 반환하여 intArr에 참조를 전달합니다.
> - main 함수에서 intArr 배열을 처음부터 끝까지 출력하므로, 0123이 출력됩니다.
20. 다음 자바 코드에 대한 출력 값을 작성하시오.
public class Exam {
public static void main(String[] args){
int a = 0;
for(int i=1; i<999; i++){
if(i%3==0 && i%2!=0) a = i;
}
System.out.print(a);
}
}
993
> 해설:
> 이 코드는 1부터 998까지의 숫자 중, 3의 배수이면서 2의 배수가 아닌(홀수인) 가장 큰 값을 구합니다.
> 흐름 추적:
> - i = 1부터 998까지 반복합니다.
> - 조건 i%3==0 && i%2!=0: 3으로 나누어 떨어지고 2로 나누어 떨어지지 않는 홀수를 찾습니다.
> - 조건을 만족할 때마다 a에 i가 저장되므로, 반복이 끝났을 때 a에는 조건을 만족하는 가장 큰 값이 남게 됩니다.
> - 998 이하의 가장 큰 수 중 조건 확인:
> - 998: 짝수(거짓)
> - 997: 3의 배수 아님(거짓)
> - 996: 짝수(거짓)
> - 995: 3의 배수 아님(거짓)
> - 994: 짝수(거짓)
> - 993: 홀수이면서 3의 배수(참) -> a에 마지막으로 대입되는 값.
> - 최종적으로 a의 값 993이 출력됩니다.
---
안녕하세요. 2023년 1회 정보처리기사 실기 기출문제를 정리해보았습니다.
해당 복원된 기출문제가 많은 분들에게 도움이 되었으면 좋겠습니다.
정보처리기사 개편안인 2020년 시험부터 기출문제를 정리하였습니다.
1. 아래 자바 코드에서 출력되는 값을 작성하시오.
class Static{
public int a = 20;
static int b = 0;
}
public class Main{
public static void main(String[] args) {
int a;
a = 10;
Static.b = a;
Static st = new Static();
System.out.println(Static.b++);
System.out.println(st.b);
System.out.println(a);
System.out.print(st.a);
}
}
10
11
10
20
> 해설:
> - int a; a = 10;: 지역 변수 a에 10을 할당합니다.
> - Static.b = a;: Static 클래스의 정적(static) 변수 b에 a의 값인 10을 할당합니다. (클래스 변수이므로 모든 인스턴스가 공유)
> - Static st = new Static();: Static 클래스의 인스턴스 st를 생성합니다. 이때 인스턴스 변수 a는 20으로 초기화됩니다.
> - System.out.println(Static.b++);: Static.b의 현재 값(10)을 먼저 출력한 후, 후위 증감 연산자(++)에 의해 값을 11로 증가시킵니다. (출력: 10)
> - System.out.println(st.b);: st.b는 정적 변수 b를 참조하므로 증가된 값인 11을 출력합니다. (출력: 11)
> - System.out.println(a);: 지역 변수 a의 값인 10을 출력합니다. (출력: 10)
> - System.out.print(st.a);: 인스턴스 변수 st.a의 값인 20을 출력합니다. (출력: 20)
2. 다음 C언어의 출력값을 작성하시오.
#include <stdio.h> int main(){
char a[] = "Art";
char\* p = NULL;
p = a;
printf("%s\n", a);
printf("%c\n", \*p);
printf("%c\n", \*a);
printf("%s\n", p);
for(int i = 0; a[i] != '\0'; i++) printf("%c", a[i]);
}
Art
A
A
Art
Art
> 해설:
> - char a[] = "Art";: 문자열 배열 a에 "Art"가 저장되며, 끝에 널 문자(