정처기 실기) 2020년 4회 기출문제

정우시·2022년 7월 4일
1

3. 정처기 실기

목록 보기
5/8


1. 목적에 따른 디자인 패턴의 유형에는 생성, 구조, () 이/가 있다. 괄호 () 안에 알맞은 유형을 쓰시오.

  • 디자인 패턴
    • 목적: 생성 / 구조 / 행위
    • 범위: 클래스 / 객체

👉 행위


2. UML을 이용한 판매와 관련된 다이어그램이다. 해당 다이어그램의 명칭을 쓰시오.

  • 구조적 다이어그램(Structure Diagram)
    • 클래스 다이어그램
      • 시스템을 구성하는 클래스들의 사이의 관계를 표현한다.
    • 패키지 다이어그램
      • 클래스나 유스케이스 등으 포함한 여러 모델 요소들을 그룹화하여 패키지를 구성하고 패키지들 사이의 관계를 표현한다.
    • 복합체 구조 다이어그램
      • 복합 구조의 클래스와 컴포넌트 내부 구조를 표현한다.
    • 객체 다이어그램
      • 객체 정보를 보여준다.
    • 컴포넌트 다이어그램
      • 컴포넌트 구조 사이의 관계를 표현한다.
    • 배치 다이어그램
      • 소프트웨어, 하드웨어, 네트워크를 포함한 실행 시스템의 물리 구조를 표현한다.
  • 행위 다이어그램(Behavior Diagram)
    • 유스케이스 다이어그램
      • 사용자 관점에서 시스템 행위를 표현한다.
    • 활동 다이어그램
      • 업무 처리 과정이나 연산이 수행되는 과정을 표현한다.
    • 콜라보레이션 다이어그램
      • 순차 다이어그램(Sequence Diagram)과 같으며 모델링 공간에 제약이 없어 구조적인 면을 중시한다.
    • 생태 머신 다이어그램
      • 객체의 생명주기를 표현한다.
    • 순차 다이어그램
      • 시간 흐름에 따른 객체 사이의 상호작용을 표현한다.
    • 통신 다이어그램
      • 객체 사이의 관계를 중심으로 상호작용을 표현한다.
    • 상호작용 개요 다이어그램
      • 여러 상호작용 다이어그램 사이의 제어 흐름을 표현한다.
    • 타이밍 다이어그램
      • 객체 상태 변화와 시간 제약을 명시적으로 표현한다.

👉 패키지 다이어그램


3. 일반, 업무용, 게임, 오락 등의 일반적인 업무에 사용하는 테스트 오라클로 특정한 몇 개의 입력 값에 대해서만 기대하는 결과를 제공해 주는 오라클을 쓰시오.

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

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

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

👉 동등분할 테스트


5. 다음 조건을 만족하면서 학과별로 튜플 수가 얼마인지 구하는 SQL문을 작성하시오.

<요구사항>
- 대소문자를 구분하지 않는다.
- WHERE 구문을 사용하지 않는다.
- GROUP BY를 사용한다.
- 세미콜론(;)은 생략 가능하다.
- 별칭(AS)을 사용해야 한다.(별칭 사용 시 별칭은 작은 따옴표를 써야 함)
- 집계 함수를 사용해야 한다.

학생

학과학생
전기이순신
컴퓨터안중근
컴퓨터윤봉길
전자이봉창
전자강우규

결과

학과학과별튜플수
전기1
컴퓨터2
전자2
  • 집계함수
    • AVG, SUM, MIN, MAX, COUNT

👇

SELECT
학과, COUNT(학과) AS '학과별튜플수'
FROM 학생
GROUP BY 학과 ← 학과를 기준으로 묶음

6. 스니핑(Sniffing)에 대하여 서술하시오.

  • 서비스 공격 유형의 종류
    • 네트워크 공격 기법

👉 네트워크상에 통과되는 패킷들의 내용을 엿보는 행위이다.


7. 정보보안의 3요소 중 가용성에 대해서 서술하시오.

  • 정보보안의 3원칙

👉 인가된 사용자가 정보를 요구할 때 적시에 제공되어야 하는 원칙이다.


8. 데이터베이스의 이상(Anomaly)의 종류 3가지를 쓰시오.

  • 데이터베이스 이상현상

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


9. 데이터베이스의 회복(Recovery) 기법 중 Rollback 시 Redo, Undo가 모두 실행되는 트랜잭션 처리법으로 트랜잭션 수행 중 갱신 결과를 바로 DB에 반영하는 기법은 무엇인가?

  • 데이터베이스 회복 기법

👉 즉시 갱신 회복 기법


10. 다음은 프로세스 상태 전이도이다. 1,2,3에 알맞은 상태를 쓰시오. (잘나옴!)

  • 프로세스 상태 전이(수제비 11-12)

👉 1. 준비, 2. 실행, 3. 대기


11. 현재 IPv4의 확장형으로 IPv4가 가지고 있는 주소 고갈, 보안성, 이동성 지원 등의 문제점을 해결하기 위해서 개발된 128비트 주소체계를 갖는 차세대 인터넷 프로토콜은 무엇인가?

  • 네트워크 계층 전체적으로 확인!
    • IPv4/IPv6 전환 기술 등등

👉 IPv6


12. 데니스 리치와 켄톰슨 등이 함께 벨 연구소를 통해 만든 운영체제이며, 90% 이상 C언어로 구현되어 있고, 시스템 프로그램이 모듈화되어 있어서 다른 하드웨어 기종으로 쉽게 이식 가능하며 계층적 트리 구조를 가짐으로써 통합적인 파일 관리가 용이한 운영체제는 무엇인가?

  • 운영체제 확인!

👉 유닉스(UNIX)


13. 오픈 소스 기반으로 한 분산 컴퓨팅 플랫폼으로, 일반 PC급 컴퓨터들로 가상화된 대형 스토리지를 형성하고 그 안에 보관된 거대한 데이터 세트를 병렬로 처리할 수 있도록 개발된 자바 소프트웨어 프레임워크로 구글, 야후 등에 적용한 기술은 무엇인가?

  • 데이터베이스 기초 활용하기
    • 빅데이터
      • 빅데이터 관련 용어 참고!(수제비 3-41~3-45)

👉 하둡


14. 분산 컴퓨팅 기술 기반의 데이터 위변조 방지 기술로 P2P방식을 기반으로 하여 소규모 데이터들이 연결되어 형성된 '블록'이라는 분산 데이터 저장 환경에 관리 대상 데이터를 저장함으로써 누구도 임의로 수정할 수 없고 누구나 변경의 결과를 열람할 수 있게끔 만드는 기술은 무엇인가?

👉 블록체인


15. IP 패킷에서 외부의 공인 IP주소와 포트 주소에 해당하는 내부 IP주소를 재기록하여 라우터를 통해 네트워크 트래픽을 주고받는 기술은 무엇인가?

👉 NAT(Network Address Transformation)


16. 다음은 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


17. 다음은 자바 소스 코드이다. 출력 결과를 보고 (1), (2)에 알맞는 값을 적으시오.

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 4 7 10 13

2 5 8 11 14

3 6 9 12 15 

👉 (1): 3, (2): 5


18. 다음은 n이 10일 때, 10을 2진수로 변환하는 자바 소스 코드이다. (1), (2)에 알맞는 값을 적으시오.

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]);
        }
     }
  }

---

[출력결과]
00001010

👇
(1): i < 8
(2): n%2


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


20. 다음은 파이썬 소스 코드이다. 출력 결과를 쓰시오.

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
1 2 3
4 5
6 7 8 9


profile
프론트엔드 공부하고 있는 정우시입니다.

0개의 댓글