정보처리기사

[정보처리기사 실기 기출] 2020년 4회

juble 2024. 10. 7. 21:52

 

01. 다음은 디자인 패턴에 대한 설명이다. 빈 칸 안에 들어갈 가장 적합한 용어를 쓰시오.

  • 디자인 패턴은 객체 지향 프로그래밍 설계를 할 때 자주 발생하는 문제들에 대해 재사용할 수 있도록 만들어놓은 패턴들의 모음이다.
  • 에리히 감마(Erich Gamma), 리차드 헬름(Richard Helm), 랄프 존슨(Ralph Johnson), 존 블리시디스(Johm Vissides)에 의해 개발 영역에서 디자인 패턴을 구체화하고 체계화시켰다.
  • goF의 디자인 패턴은 생성, 구조, (    )의 3가지로 분류한다.
: 행위

 

디자인 패턴 종류에 대한 설명은 다음 글을 참고하면 좋을 것 같다 

2024.09.23 - [기술 노트] - [Study] 디자인 패턴(Design Pattern)


02. 다음 그림과 같이 탭이 달린 폴더 안에 요소들을 집어넣어 표현하는 다이어그램으로 컴포넌트 구조 사이의 관계를 표현하며 요소들을 그룹으로 조직하기 위한 매커니즘의 UML 다이어그램이 무엇인지 쓰시오.

: 패키지 다이어그램

 

* 구조적 다이어그램(Structure Diagram)

클래스 다이어그램 시스템을 구성하는 클래스들 사이의 관계를 표현한다. 
패키지 다이어그램 클래스나 유스케이스 등을 포함한 여러 모델 요소들을 그룹화하여 패키지를 구성하고 패키지들 사이의 관계를 표현한다.
복합체 구조 다이어그램 복합 구조의 클래스와 컴포넌트 내부 구조를 표현한다.
객체 다이어그램 객체 정보를 보여준다.
컴포넌트 다이어그램 컴포넌트 구조 사이의 관계를 표현한다.
배치 다이어그램 소프트웨어, 하드웨어, 네트워크를 포함한 실행 시스템의 물리 구조를 표현한다.

 

* 행위 다이어그램(Behavior Diagram)

유스 케이스 다이어그램 사용자 관점에서 시스템 행위를 표현한다. 
활동 다이어그램 업무 처리 과정이나 연산이 수행되는 과정을 표현한다.
콜라보레이션 다이어그램 순차 다이어그램(Sequence Diagram)과 같으며 모델링 공간에 제약이 없어 구조적인 면을 중시한다. 
상태 머신 다이어그램 객체의 생명주기를 표현한다. 
순차 다이어그램 시간 흐름에 따른 객체 사이의 상호작용을 표현한다. 
통신 다이어그램 객체 사이의 관계를 중심으로 상호작용을 표현한다. 
상호작용 개요 다이어그램 여러 상호작용 다이어그램 사이의 제어 흐름을 표현한다. 
타이밍 다이어그램 객체 상태 변화와 시간 제약을 명시적으로 표현한다. 

 


03. 테스트 오라클은 테스트의 결과가 참인지 거짓인지를 판단하기 위해서 사전에 정의된 참(True) 값을 입력하여 비교하는 기법 및 활동을 말한다. 테스트 오라클의 유형 중 전수 테스트가 불가한 경우 특정한 몇 개의 입력값에 대해서만 기대하는 결과를 제공해 주는 오라클로 경계값, 구간별 예상값 결과 작성 시 사용하는 오라클을 무엇이라 하는지 쓰시오. 

: 샘플링 오라클

 

* 테스트 오라클 유형

참(True) 오라클 모든 입력값에 대하여 기대하는 결과를 생성함으로써 발생한 오류를 모두 검출할 수 있는 오라클이다. 
샘플링(Sampling) 오라클 특정한 몇 개의 입력값에 대해서만 기대하는 결과를 제공해주는 오라클이다. 
휴리스틱(Heuristic) 오라클 샘플링 오라클을 개선한 오라클로, 특정 입력값에 대해 올바른 결과를 제공하고, 나머지 값들에 대해서는 휴리스틱(추정)으로 처리하는 오라클이다. 
일관성검사(Consistent) 오라클  애플리케이션 변경이 있을 때, 수행 전과 후의 결과값이 동일한지 확인하는 오라클이다. 

 


04. 테스트 기법 중 다음과 같이 입력값을 넣고, 출력값을 비교하는 테스트 기법을 쓰시오.

테스트 케이스 1 2 3 4
구간 0~59 60~79 80~89 90~100
테스트 데이터 45 70 85 95
예측값 F C B A
결과값 F C B A
: 동치분할 테스트(기법) 혹은 동등분할 테스트(기법)

 

* 블랙박스 테스트

  • 동등 분할 기법 : 입력 자료에 초점을 맞춰 테스트 케이스를 만들어 검사하는 방법
  • 경계값 분석 : 입력 조건의 경계값을 테스트 케이스로 선정하는 방법
  • 원인-효과 그래프 검사 : 입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음 효용성이 높은 테스트 케이스를 선정하여 검사하는 기법
  • 오류 예측 검사 : 과거의 경험이나 테스터의 감각으로 테스트하는 기법
  • 비교 검사 : 여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 동일한 결과가 출력되는지 테스트하는 기법

 


05. <학생> 테이블을 대상으로 <요구사항>을 적용하여 아래 <결과>와 같이 출력하는 SQL문을 작성하시오.

<학생> 테이블

학번 이름 학과 성적 주소
2020021 철수 전기 90 서울
2020001 민수 컴퓨터 70 대전
2021022 영희 건축 85 서울
2022013 민호 건축 95 원주
2020007 병희 컴퓨터 100 울산

<결과>

학과 학과별튜플수
전기 1
컴퓨터 2
건축 2

<요구사항>

  1. WHERE 구문은 사용하지 않고 SQL문을 작성하시오.
  2. GROUP BY 구문과 집계함수를 반드시 사용하여 SQL문을 작성하시오.
  3. 인용 문구를 사용 시 작은따옴표(') 사용 가능합니다.
  4. AS 구문은 반드시 사용하여 작성하시오.
: SELECT 학과, COUNT(*) AS 학과별튜플수
FROM 학생 GROUP BY 학과

 

주어진 결과를 분석하여 원하는 질의문을 작성하는 문제이다. <결과>는 학과별 학생 수를 결과 테이블로 생성하여 출력하였으며, 결과 테이블의 컬럼명은 학과와 학과별튜플수로 결과 출력 시 별칭을 부여하였다. 

 


06. 스니핑(Sniffing)에 대하여 간략히 서술하시오.

: 네트워크상에 통과되는 패킷들의 내용을 엿보는 행위이다. (흥달쌤)
: 스니핑은 네트워크상에 통과하는 패킷들의 내용들을 엿보는 행위이다. 이처럼 패킷을 엿봄으로써 로그인 과정 중의 계쩡명과 패스워드 정보를 비롯하여 주요 내용을 불법으로 추출할 수 있다. (이기적)

 

* 서비스 공격 유형의 종류

  • DDoS(Distributed Denial of Service, 분산 서비스 거부)
  • 피싱(Phishing)
  • 파밍(Pharming)
  • 스니핑(Sniffing)
  • 스미싱(Smishing)
  • 큐싱(Qshing)
  • 랜섬웨어(Ransomware)
  • 키 로거(Key Logger)
  • SQL 삽입(SQL Injection)
  • XSS(Cross Site Scripting)

 


07. 정보보안의 목표가 되는 정보보안 3원칙은 기밀성(C), 무결성(I), 가용성(A)를 만족시키는 것이다. 정보보안의 목표 중 가용성에 대하여 간략히 설명하시오. 

: 인가된 사용자가 정보를 요구할 때 적시에 제공되어야 하는 원칙으로, 사용자가 필요할 때 데이터에 접근할 수 있는 능력을 말한다. (흥달쌤)
: 가용성은 합법적 사용자가 합법적 정보를 요구할 때 적시에 제공되어야 하는 원칙을 말한다. (이기적)

* 정보보안의 3원칙

  • 기밀성(Confidentiality) : 인가받지 않는 대상에게는 정보를 공개하지 않는 것이다.
  • 무결성(Integrity) : 인가받지 않는 대상이 정보를 변경, 생성, 삭제하지 않도록 하는 것이다.
  • 가용성(Availavbility) : 합법적 사용자가 합법적 정보를 요구할 때 적시에 제공되도록 하는 것이다.

 


08. 데이터베이스에서 릴레이션을 처리하는 데 여러 문제를 초래하는 이상 현상 3가지를 쓰시오. (이기적 복원 문제)

: 삽입 이상, 삭제 이상, 갱신 이상

 

* 이상(Anomaly) 현상

  • 데이터 베이스의 논리적 설계 시 하나의 릴레이션에 많은 속성들이 존재하여, 데이터의 중복과 종속으로 인해 발생되는 문제점을 말한다. 이상 현상은 릴레이션을 처리하는 데 여러 가지 문제를 초래하게 된다. 
  • 이상의 종류에는 삭제 이상, 삽입 이상, 갱신 이상이 있다. 
    • 삽입 이상 : 관계 데이터베이스에서 삽입 역시 튜플 단위로 이루어진다. 이때 삽입하는 과정에서 원하지 않는 자료가 삽입된다든지 도는 삽입하는 데 자료가 부족해 삽입이 되지 않아 발생하는 문제점을 삽입 이상이라고 한다. 
    • 삭제 이상 : 관계 데이터베이스에서 삭제는 튜플 단위로 이루어진다. 삭제 이상은 테이블에서 하나의 자료를 삭제하고자 하는 경우 그 자료가 포함된 튜플이 삭제됨으로 인해 원하지 않은 자료까지 함께 삭제가 이루어져 발생하는 문제점을 말한다. 
    • 갱신 이상 : 관계 데이터베이스의 자료를 갱신하는 과정에서 정확하지 않거나 일부의 튜플만 갱신됨으로 인해 정보가 모호해지거나 일관성이 없어져 정확한 정보의 파악이 되지 않는 현상을 말한다. 

09. 데이터베이스 회복 기법에 관련된 설명에서 괄호에 들어갈 가장 알맞은 용어를 쓰시오.

- 다양한 데이터 회복 기법 중 (     ) 회복 기법은 로그를 이용한 회복 기법으로 데이터베이스에 대한 갱신 로그를 저장함으로써 회복에 대비한다.
- (      ) 회복 기법은 트랜잭션이 실행 상태에서 변경되는 내용을 그때그때 바로 데이터베이스에 적용하는 기법이다.
- (      ) 회복 기법은 장애가 발생하면 로그 파일에 기록된 내용을 참조하여, 장애 발생 시점에 따라 Redo나 Undo를 실행하여 데이터베이스를 복구한다.
: 즉시 갱신(Immediate Update)

 

* 회복 기법

  • 즉시 갱신 기법
    • 트랜잭션이 실행(활동) 상태에서 변경되는 내용을 그때그때 바로 데이터베이스에 적용하는 기법
    • 변경되는 모든 내용은 로그(Log)에 기록하여 장애 발생 시 로그(Log)의 내용을 토대로 회복
    • Redo(재실행), Undo(취소) 모두 수행 
  • 검사적 회복 기법(Checkpoint Recovery)
    • 트랜잭션이 실행되는 중간에 검사 시점(Check Point)을 지정하여 검사 시점까지 수행 후 완료된 내용을 데이터베이스에 적용하는 기법
  • 그림자 페이징(Shadow Paging) 기법
    • 로그(Log)를 사용하지 않고, 데이터베이스를 동일한 크기의 단위인 페이지로 나누어 각 페이지마다 복사하여 그림자 페이지를 보관
    • 데이터베이스의 변경되는 내용은 원본 페이지에만 적용하고, 장애가 발생되는 경우 그림자 페이지를 이용해 회복 

 


10. 다음 프로세스 상태 전이도의 빈 칸 ①~③에 알맞은 프로세스 상태를 각각 쓰시오.

: ① 준비(Ready) , ② 실행(Run) , ③ 대기(Wait 혹은 Block)

 

* 프로세스의 상태 

  • 준비(Ready) 상태
    • 프로세스가 준비 큐에서 실행을 준비하고 있는 상태로 CPU를 할당받기 위해 기다리고 있는 상태를 말한다. 
  • 실행(Running) 상태
    • 준비 큐에 있는 프로세스가 CPU를 할당받아 실행되는 상태로 CPU 스케줄러에 의해 수행된다. 
  • 대기(Block) 상태
    • 프로세스가 입/출력 처리가 필요하면 현재 수행 중인 프로세스가 입/출력을 위해 대기 상태로 전이된다. 
    • 대기 중인 상태의 프로세스는 입/출력 처리가 완료되면 대기 상태에서 준비 상태로 전이된다. 

 


11. 다음 설명에 해당하는 용어를 쓰시오.

  • IPv4의 주소 고갈 문제를 해결하기 위하여 기존의 IPv4주소 체계를 128비트 크기로 확장한 차세대 인터넷 프로토콜 주소
  • 헤더의 내용을 확인하는 데 소요되는 오버헤드를 최소화하도록 설계
  • 16비트씩 8부분, 128비트로 구성되며, 콜론(:)으로 구분한다.
  • 주소 분류로, 유니캐스트, 멀티캐스트, 애니캐스트를 사용한다.
: IPv6

 

* IPv4/IPv6 전환 기술

듀얼 스택
(Dual Stack)
- IPv4/IPv6를 동시에 지원
- IPv4/IPv6 패킷을 주고받을 수 있음
터널링
(Turnneling)
- 두 IPv6 네트워크 간에 터널을 이용하는 기술
- IPv4/IPv6 호스트와 라우터에서 IPv6 패킷을 IPv4 패킷에 캡슐화하여 전송
주소 변환
(Address Translation)
- IPv4와 IPv6 간에 주소를 변환하여 두 버전을 연동

 


12. 다음 설명에 해당하는 운영체제를 적으시오.

  • 1960년대 말 벨 연구소(Bell Labs)에서 개발된 운영체제로 다중 사용자, 멀티태스킹 운영체제이다.
  • 대부분 C언어로 작성되어 있어 이식성이 높다.
  • 트리구조의 파일 시스템을 갖는다.
: 유닉스(Unix)

 


13. 다음 설명에 해당하는 용어를 쓰시오.

  • 정형 데이터 및 사진 영상 등의 비정형 데이터를 효과적으로 처리하는 오픈소스 빅테이터 솔루션이다.
  • 많은 양의 데이터를 여러 대의 범용 컴퓨터에 나눠서 저장해주고 처리한다.
  • 더그 커팅과 마이크 캐퍼랠라가 개발했으며, 구글의 맵리듀스(MapReduce) 엔진을 사용한다.
: 하둡 (Hadoop)

 

* 빅데이터 (Big Data)

  • 대량의 정형 또는 비정형 데이터 집합 및 이러한 데이터로부터 가치를 추출하고 결과를 분석하는 기술

* 하둡 (Hadoop)

  • 오픈 소스 기반 분산 컴퓨팅 기술
  • 현재 정형/비정형 빅 데이터 분석에 가장 선호되는 솔루션

* 그 외 빅데이터 관련 용어 

  • NoSQL : 전통적인 관계형 데이터베이스 RDBMS와 다르게 설계된 비관계형 데이터베이스로 대규모의 유연한 데이터 처리를 위해서 적합하다. 
  • Data Mining(데이터 마이닝) : 대규모로 저장된 데이터 안에서 체계적이고 자동적으로 통계적 규칙이나 패턴을 찾아내는 것
  • 데이터웨어 하우스 : 기간 시스템의 데이터베이스에 축적된 데이터를 공통의 형식으로 변환하여 관리하는 데이터베이스 
  • 데이터 마트 : 데이터의 한 부분으로서 특정 사용자가 관심을 갖는 데이터들을 담은 비교적 작은 규모의 데이터웨어 하우스 
  • OLAP : 이용자가 직접 데이터베이스를 검색, 분석해서 문제점이나 해결책을 찾는 분석형 애플리케이션 개념
  • Mashup : 웹에서 제공하는 정보 및 서비스를 이용하는 새로운 소프트웨어나 서비스, 데이터베이스 등을 만드는 기술 

14. 다음 설명에 해당하는 용어를 쓰시오.

관리 대상 데이터를 '블록'이라고 하는 소규모 데이터들이 P2P 방식을 기반으로 생성된 체인 형태의 연결고리 기반 분산 데이터 저장 환경에 저장하여 누구라도 임의로 수정할 수 없고 누구나 변경의 결과를 열람할 수 있는 분산 컴퓨터 기술 기반의 원장 관리 기술
: 블록체인 (Blockchain)

 

 


15. 다음 설명하는 용어를 쓰시오.

  • 우리나라 말로 번역하면 '네트워크 주소 변환'이라는 의미
  • 내부에서 사용하는 사설 IP 주소와 외부로 보여지는 공인 IP 주소 간의 IP Address 변환 방식을 말한다.
  • 한정된 공인 IP를 여러 개의 내부 사설 IP로 변환하기 위해 사용하는 기술
: NAT (Network Address Translation)

 

* NAT (Network Address Translation)

  • '네트워크 주소 변환'으로 내부에서 사용하는 사설 IP 주소와 외부로 보여지는 공인 IP 주소 간의 IP Address 변환 방식을 말한다. 
  • 한정된 하나의 공인 IP를 여러 개의 내부 사설 IP로 변환하여 사용하기 위한 기술
  • 내부 네트워크 주소의 보안을 위해 사용하는 방법 중 하나

 


16. 다음은 C언어로 작성된 프로그램이다. 이를 실행한 출력 결과를 쓰시오.

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
  • 문자열 상수 "KOREA"를 포인터 변수 p가 참고하도록 정의한 이후 포인터 변수를 참조하여 연산한 결과를 출력하는 프로그램이다. 해당 문제는 출력 결과를 작성할 때 printf() 함수의 출력 형식 문자 %s와 %c를 명확히 구분하여 결과를 작성해야한다. 
    • %s : 문자열 출력, 주소값을 받아 맨 끝 문자열까지 출력한다.
    • %c : 글자 하나를 출력.
  • 포인터 변수 p는 문자열 상수 "KOREA"의 시작 위치(주소)를 값으로 가지고 있으며, *p는 포인터 연산자(*)가 포인터 변수가 가지고 있는 위치(주소)의 내용을 참조하는 연산 처리를 의미한다. 
    • *p + 2 : *p는 K, K+2는 아스키 코드를 출력하라는 것으로, K의 다다음 알파벳인 M이다. ( …, K, L, M, …)
 
printf("%s\n", p); 	// 포인터 변수 p의 값의 위치의 문자부터 널('\0') 문자 전가지 연속하여 출력

printf("%s\n", p+3); 	// 포인터 변수 p의 값의 위치에서 3간격 떨어진 위치부터 연속하여 출력

printf("%c\n", *p); 	// 포인터 변수 p의 값의 위치에 있는 문자 한 문자 출력

printf("%c\n", *(p+3)); // 포인터 변수 p의 값의 위치에서 3간격 떨어진 위치에 있는 문자 한 문자 출력

printf("%c\n", *p+2); 	// 포인터 변수 p의 값의 위치에 있는 문자 한 문자('K')에 2를 더한 문자 출력

 


17. 다음 JAVA 프로그램을 분석하여 빈 칸 ①, ②에 들어갈 내용을 각각 쓰시오.

public static void main(String[] args){
  int[][] array = new int[ ① ][ ② ];
  for (int i=0; i<3; i++){
    for (int j=0; j<5; j++){
      array[i][j] = j*3 + (i+1);
      System.out.print(array[i][j] + " ");
    }
    System.out.println();
  }
} 
 
: ① 3 , ② 5

 

해당 문제는 Java언어의 2차원 배열 선언 및 요소값을 대입 후 요소를 중첩 for문을 이용하여 출력하는 프로그램이다. 중첩 for문의 반복 횟수를 통해 해당 2차원 배열이 선언된 배열의 행과 열의 크기를 쉽게 알 수 있다. 

 


18. 아래 <처리결과>처럼 10진수를 2진수로 변환해주는 프로그램이다. JAVA 프로그램의 빈 칸 ①, ②에 들어갈 JAVA 구문을 쓰시오.

<처리결과>
00001010
int a[] = new int[8];
int i=0, n=10;
while ( ① ) {
  a[i++] = ②;
  n /= 2;
}
for (i=7; i>=0; i--)
  System.out.printf("%d", a[i]);
 
: ① i<8 혹은 i<a.length , ② n%2

 

  • 해당 프로그램은 0에서 255까지 10진 정수 8자리로 진법 변환하여 출력하는 프로그램이다. 
  • 주어진 10진 정수는 변수 n=10으로 프로그램의 출력 결과는 정수 배열을 출력하여 00001010으로 차례로 출력되었다.

19. 다음은 JAVA로 작성된 프로그램이다. 이를 실행한 출력 결과를 쓰시오.

class Parent {
  int com(int num){
    if (num <= 1)
      return num;
    return com(num - 1) + com(num - 2);
  }
}
class Child extends Parent {
  int com(int num) {
    if (num <= 1)
      return num;
    return com(num - 1) + com(num - 3);
  }
}

Parent obj = new Child();
System.out.print(obj.com(4));
 
: 1

com(4)

= com(3)+com(1)

= {com(2)+com(0)}+1

= com(2) + 0 + 1

= {com(1)+com(-1)} + 1

= 1 -1 +1

= 1

 

  • 위 프로그램은 3개의 클래스로 구성되어 있으며, Parent 클래스와 Child 클래스는 상속 관계에 있다.
  • Parent obj = new Child();를 통해 Child 클래스의 객체(인스턴스)를 생성하며 부모의 참조 변수 obj로 compute(4) 메소드를 호출하여 결과를 출력하는 프로그램이다. 
  • 자식 클래스인 Child에서는 부모 클래스 Parent의 compute(int num) 메소드가 재정의(오버라이드)되어 있으므로 obj.compute(4)를 실행하였을 경우, 자식 클래스에 재정의된 메소드가 호출된다. 
  • obj.compute(4)를 호출하여 진입한 후, 해당 프로그램은 재귀 호출(자신 메소드 호출)을 통한 실행과정을 거쳐 결과 1을 최종적으로 반환하게 된다. 출력 결과는 1이다. 
  • 재귀호출의 실행 순서는 다음과 같다. 

20. 다음은 Python언어로 작성된 프로그램이다. 이를 실행한 출력 결과를 쓰시오.

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] 

1 2 3 
4 5 
6 7 8 9 

 

  • Python의 리스트 객체로 LIST는 요소의 중복은 허용하고, 다양한 자료형을 요소로 가질 수 있으며, 순서가 중요한 시퀀스 자료형이다. 
  • lol 리스트 객체는 요소가 리스트로 중첩된 리스트 객체이다. 해당 프로그램은 중첩 리스트 객체의 요소를 인덱싱한 결과를 출력하는 프로그램이다. 

해설은 유투브 흥달쌤 강의와, 이기적 실기 기본서를 참고하였습니다 :)

https://youtu.be/Kc1xRWy3-rs

728x90
반응형