정보처리기사 실기 2020년 4, 5회 기출문제 문제복원 입니다.
1. 다음은 디자인 패턴에 대한 설명이다. 빈칸 ( )안에 들어갈 가장 적합한 용어를 쓰시오.
디자인 패턴(Design Pattern)은 프로그램을 개발하는 과정에서 빈번하게 발생하는 디자인상의 문제를 정리해서 상황에 따라 간편하게 적용해서 쓸 수 있는 패턴 형태로 만든 것이다. 에리히 감마, 리처드 햄, 랄프 존슨, 존 블리시데스가 한 자리에 모이게 되었다. Gof(Gang of Four)으로 불리는 이 네 명이 여러 개의 패턴을 집대성해서 저술한 책이 유명한 '디자인 패턴 : 재사용 가능한 객체지향 소프트웨어의 요소들'이 있다. GoF의 디자인 패턴은 생성, 구조, ( )가 있다. 생성 패턴은 객체의 생성에 관련된 패턴이고 구조 패턴은 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴이며 ( ) 패턴은 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴이다. |
답 : 행위 |
해설
생성(Creational) 패턴 | 구조(Structural) 패턴 | 행위(Behavioral) 패턴 |
추상팩토리(Abstract Factory) 빌더(Builder) 팩토리메소드(Factory Method) 프로토타입(Prototype) 싱글톤(Singleton) |
어댑터(Adapter) 브리지(Bridge) 컴포지트(Composite) 데코레이터(Decorator) 퍼사드(Facade) 플라이웨이트(Flyweight) 프록시(Proxy) |
책임연쇄(Chain of Responsibility) 커맨드(Command) 인터프리터(Interpreter) 반복자(Iterator) 중재자(Mediator) 메멘토(Memento) 옵서버(Observer) 상태(State) 전략(Strategy) 탬플릿 메소드(Template Method) 방문자(Visitor) |
2. 다음 그림과 같이 탭이 달린 폴더 안에 요소들에 집어넣어 표현하는 다이어그램으로 컴포넌트 구조 사이의 관계를 표현하며 요소들을 그룹으로 조직하기 위한 매커니즘의 UML 다이어그램이 무엇인지 쓰시오.
답 : 패키지 다이어그램 |
해설
UML - 사물, 관계, 다이어그램
구조적 다이어그램 | 행위적 다이어그램 |
클래스 객체 컴포넌트 배치 복합체 구조 패키지 |
유스케이스 시퀀스 커뮤니케이션 상태 활동 상호작용 개요 타이밍 |
3. 테스트 오라클은 테스트의 결과가 참인지 거짓인지를 판단하기 위해서 사전에 정의된 참(True)값을 입력하여 비교하는 기법 및 활동을 말한다. 테스트 오라클의 유형 중 전수 테스트가 불가한 경우 특정한 몇 개의 입력값에 대해서만 기대하는 결과를 제공해 주는 오라클로 경계값, 구간별 예상값 결과 작성시 사용하는 오라클을 무엇이라 하는지 쓰시오.
답 : 샘플링 오라클 |
해설
참 오라클(모든 입력값), 샘플링 오라클(특정한 몇 개의 입력값), 휴라스틱 오라클(특정 몇 개의 입력값 나머지 추정), 일관성 검사 오라클(애플리케이션 변경 시, 수행 전/후 결과값 비교)
4. 다음은 주어진 평가점수별 학점 조건을 토대로 테스트케이스를 작성하여 테스트를 진행한 결과이다. 다음 적용한 테스트 기법은 명세기반 테스트의 기법 중 프로그램의 입력 조건에 중점을 두고, 어느 하나의 입력 조건에 대하여 타당한 값과 그렇지 못한 값을 설정하여 해당 입력 자료에 맞는 결과가 출력되는지 확인하는 테스트 기법이다. 적용한 테스트 기법을 무엇이라 하는지 쓰시오.
<조건>
평가점수 | 학점 |
0 ~ 60 | E |
60 ~ 70 | D |
70 ~ 80 | C |
80 ~ 90 | B |
90 ~ 100 | A |
<결과>
테스트 케이스 | 1 | 2 | 3 | 4 | 5 |
구간 | 0 ~ 60 | 60 ~ 70 | 70 ~ 80 | 80 ~ 90 | 90 ~ 100 |
테스트데이터 | 55 | 66 | 77 | 88 | 99 |
예측값 | F | D | C | B | A |
걸과값 | F | D | C | B | A |
답 : 동치분할 테스트 (동등분할 테스트) |
5. <학생> 테이블을 대상으로 <요구사항>을 적용하여 아래 <결과>와 같이 출력하는 SQL문을 작성하시오.
<학생>
학번 | 이름 | 학과 | 성적 | 전화번호 |
2020021 | 우경 | 전기 | 90 | 010-1111-1111 |
2020001 | 수현 | 컴퓨터 | 70 | 010-2222-2222 |
2021002 | 정욱 | 건축 | 85 | 010-3333-3333 |
2022013 | 인태 | 건축 | 95 | 010-4444-4444 |
2020007 | 다은 | 컴퓨터 | 100 | 010-5555-5555 |
<결과>
학과 | 학과별튜플수 |
전기 | 1 |
컴퓨터 | 2 |
건축 | 2 |
<요구사항>
|
답안
SELECT 학과, COUNT(*) AS 학과별튜플수 FROM 학생 GROUP BY 학과; |
6. 데이터베이스 회복(Recovery) 기법 중 rollback 시 redo, undo가 모두 실행되는 트랜잭션 처리법으로 트랜잭션 수행 중에 갱신 결과를 DB에 즉시 반영한다. 데이터를 변경하면 로그 파일로 저장되며 모든 내용 수정 시 즉시 데이터베이스에 반영된다.
답 : 즉시 갱신 기법 |
7. 정보보안의 목표가 되는 정보보안 3원칙은 기밀성(C), 무결성(I), 가용성(A)을 만족시키는 것이다. 정보보안의 목표 중 가용성에 대하여 간략히 설명하시오.
답 : 가용성은 권한을 가진 사용자나 애플리케이션이 원하는 서비스를 지속하여 사용할 수 있도록 보장하는 특성 |
해설
기밀성 : 인가받지 않은 대상에게 정보를 공개 및 노출을 차단
무결성 : 인가받지 않은 대상이 정보를 변경, 생성, 삭제 차단
8. 스니핑(Sniffing)에 대해 간략히 설명하시오.
답 : 공격대상에게 직접 공격하지 않고 데이터만 몰래 들여다 보는 행위이다. |
9. 다은은 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 |
해설
char *p => 변수 앞에 * 붙어 있으면 포인터 변수이다.
%s : 문자열 출력
%c : 한 문자 출력(그 밖에 %d, %f 숫자형태를 의미)
\n 붙을 경우 출력하고 줄바꿈을 의미한다.
printf("%s\n", p); | %s는 문자열을 출력하므로 p변수에 담겨 있는 KOREA 그대로 출력 후 줄바꿈 |
printf("%s\n", p+3); | C언어에서는 변수 호출 시 첫 번째 문자를 시작주소로 인식하며 +3을 할 경우 시작주소인 K에서 3번째 문자인 E부터 문자열을 출력하기 때문에 EA가 출력 후 줄바꿈 |
printf("%c\n", *p); | %c는 해당 문자 하나만 출력한다. 따라서 p변수에 시작인 K만 출력 후 줄바꿈 |
printf("%c\n", *(p+3)); | (p+3)는 p변수의 시작점 K에서부터 세번째 문자인 E 문자만 출력 후 줄바꿈 |
printf("%c\n", *p+2); | *p의 경우 첫 시작점인 K이며 K+2의 경우 알파벳 두번째 순서인(K L M) M이 출력된다 |
해당 문제는 부분 점수가 없기 때문에 5개의 출력문이 정확하게 맞을 경우만 5점을 획득할 수 있다.
10. 다음에 제시된 Java 프로그램이 <처리결과>와 같이 결과를 출력해주고 있다. Java 프로그램의 빈칸 ① ~ ②에 들어갈 Java 표현을 대소문자를 구별하여 각각 쓰시오.
public class Exam { public static void main(String[] args) { int[][] arry = new int[①][②]; for(int i = 0; i < 3; i++) { for(int j = 0; j < 5; j++) { arry[i][j] = j * 3 + (i + 1); System.out.print(arry[i][j] + " "); } System.out.println(); } } } |
<처리결과>
1 4 7 10 13 2 5 8 11 14 3 6 9 12 15 |
답안
|
해설
이중배열 변수 arry
new int[행][열]
11. 다음에 제시된 Java 프로그램이 <처리결과>와 같이 결과를 출력해주고 있다. Java 프로그램의 빈칸 ① ~ ②에 들어갈 Java 표현을 대소문자를 구별하여 각각 쓰시오.
public class Exam { public static void main(String[] args){ int a[] = new int[8]; int i = 0, n = 10; while(___①___) { a[i++] = ___②___; n /= 2; } for(i = 7; i >= 0; i--) System.out.println("%d", a[i]); } } |
<처리결과>
00001010 |
답안
|
해설
10/2 = 5 나머지 0
5/2 = 2 나머지 1
2/2 = 1 나머지 0
1/2 = 0 나머지 1
a[8] = [0, 1, 0, 1, 0, 0, 0, 0]
for문이나 if문 내부로직이 한줄일 경우 {} 생략가능하다.
배열 변수 a 마지막부터 출력하며 00001010 형태로 출력이 된다.
12. 다음은 Java로 작성된 프로그램이다. 이를 실행한 출력 결과를 쓰시오.
class Parent { int compute(int num) { if(num <= 1) return num; return compute(num - 1) + compute(num - 2); } } class Child extends Parent { @Override int compute(int num) { if(num <= 1) return num; return compute(num - 1) + compute(num - 3); } } public class Exam { public static void main(String[] args) { Parent obj = new Child(); System.out.print(obj.compute(4)); } } |
답 : 1 |
해설
오버라이드(상속) + 재귀호출 문제
변수 obj는 Parent클래스의 자식클래스인 Child클래스로 선언하여 아래 출력문에서 obj.compute(4)는 Child클래스의 compute()메소드를 호출한다.
compute()메소드 리턴 값을 보게되면 매개변수가 1이하일 경우 그대로 리턴하며 1보다 클 경우 compute()메소드를 호출한다.
매개변수 num 4 : compute(4 - 1) + compute(4 - 3) : 리턴 1
매개변수 num 3 : (compute(3 - 1) + compute(3 - 3) : 리턴 0) + 1
매개변수 num 2 : ((compute(2 - 1) : 리턴 1 + compute(2 - 3) : 리턴 -1) + 0) + 1
obj.compute(4) : 1 - 1 + 0 + 1 = 1
13. 다음은 Python언어로 작성된 프로그램이다. 이를 실행한 출력 결과를 쓰시오.
lol = [[1, 2, 4], [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 1 2 3 4 5 6 7 8 9 |
해설
lol[0] : [1, 2, 3] ***리스트 형식 그대로 출력된다.(파이썬에서 []는 리스트 변수임을 의미한다.)
lol[1] : [4, 5]
lol[2] : [6, 7, 8, 9]
lol[2][1] : 7
파이썬 출력문 print는 출력 후 자동 줄바꿈되며 출력문 내 ', end=' 있을 경우 end에 선언한 문자를 붙여서 줄바꿈 안하고 이어서 출력하겠다는 것을 의미한다.
따라서 sub : 0일때 item은 [1, 2, 3]을 받고 1 2 3 출력되고 첫번째 item for문을 빠져나가며 print()가 샐행되어 줄바꿈이 이루어진다.
sub 1과 2일때도 마찬가지 실행되어
1 2 3
4 5
6 7 8 9
과 같이 출력된다.
14. 데이터베이스에서 릴레이션을 처리하는데 여러 문제를 초래하는 이상현상 3가지를 쓰시오.
답 : 삽입이상, 갱신이상, 삭제이상 |
15. 다음 프로세스 상태 전이도의 빈칸 ① ~ ③에 알맞은 프로세스 상태를 각각 쓰시오.
|
16. 다음 설명에 해당하는 용어를 쓰시오.
IETF(Internet Engineering Task Force)에서 IP Address의 부족과 Mobile IP Address 구현 문제를 해결 방안으로 만들어진 IPv4를 보완하는 차세대 IP Address 주소 체계이다. 주소 유형은 유니캐스트, 멀티캐스트, 브로드캐스트 3가지이며, 주소의 길이는 128bit이고 8개 그룹으로 배열되며 각 그룹은 16비트이다. 각 그룹은 4개의 16진수로 표현되며 그룹 간은 콜론(:)으로 구분된다. 패킷 전송 시 멀티캐스트 사용한다. |
답 : IPv6 |
17. 다음 설명에 해당하는 운영체제를 적으시오.
|
답 : 유닉스 |
18. 다음 설명에 해당하는 용어를 쓰시오.
|
답 : 하둡 |
19. 다음 설명에 해당하는 용어를 쓰시오.
오픈소스 분산 컴퓨팅 기술로 분산 처리와 암호화 기술을 동시에 적용한 분산 데이터베이스의 한 형태이다. 가상화폐의 거래 정보를 기록한 원장인 '블록'이라고 하는 소규모 데이터들이 특정 기관의 중앙 서버에서 공동으로 기록 관리되지 않고 P2P 방식을 기반으로 생성된 체인 형태의 연결고리 기반 분산 데이터 저장 환경에 저장된다. 때문에 누구라도 임의로 수정할 수 없지만 누구나 변경의 결과를 열람할 수 있는 기술이다. |
답 : 블록체인 |
20. 다음 설명하는 용어를 영문으로 작성하시오.
우리나라 말로 번역하면 '네트워크 주소 변환'으로 내부에서 사용하는 사설 IP주소와 외부로 보여지는 공인 IP 주소간의 IP Address 변환 방식을 말한다. 한정도니 하나의 공인 IP를 여러 개의 내부 사설 IP로 변환하여 사용하기 위한 기술이며, 내부 네트워크 주소의 보안을 위해 사용하는 방법 중 하나이다. |
답 : NAT |
'자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사 실기] 2021년 1회 기출문제 (0) | 2021.07.19 |
---|---|
[정보처리기사 실기] 2020년 3회 기출문제 (0) | 2021.07.15 |
[정보처리기사 실기] 2020년 2회 기출문제 (0) | 2021.07.15 |
[정보처리기사 실기] 2020년 1회 기출문제 (0) | 2021.07.12 |