Sky Archive

자격증/정보처리기사

[정보처리기사 실기] 2020년 3회 기출문제

서울시장 2021. 7. 15. 18:12

정보처리기사 실기 2020년 3회 기출문제 문제복원 입니다.

 

 

1. 형상 통제에 대해 간략히 설명하시오.

더보기
답 : 형상 통제는 형상 목록의 변경 요구를 검토 및 승인하여 현재의 소프트웨어 기준선에 반영될 수 있도록 통제하는 일련의 과정

 

해설

8. 서버 프로그램 구현

형상 관리의 절차 문제

형상 식별 > 형상 통제 > 형상 감사 > 형상 기록

 

 

2. EAI 구축 유형 중 Message Bus와 Hybrid를 제외한 빈칸(① ~ ②)에 해당하는 나머지 두 가지 유형을 쓰시오.

유형 개념도 설명
  • 중간에 미들웨어를 두지 않고 각 애플리케이션간 직접 연결
  • 솔루션 구매 없이 통합, 상대적 저렴하게 통합 가능
  • 변경, 재사용 어려움
  • 단일 접점이 허브 시스템을 통해 데이터를 전송하는 중앙 집중적 방식
  • 모든 데이터 전송 보장, 확장 및 유지 보수 용이
  • 허브 장애 시 전체 영향
Message Bus
(ESB 방식)
  • 애플리케이션 사이 미들웨어(버스)를 두어 처리
  • 미들웨어 통한 통합, 대용량 처리 가능
  • 어댑처가 각 시스템과 버스를 두어 연결하므로 뛰어난 확장성
Hybrid
  • 유연한 통합 작업이 가능
  • 표준 통합 기술, 데이터 병목 현상 최소화
더보기
  • ① : Point to Point
  • ② : Hub & Spoke

 

 

3. UI(User Interface)는 사용자와 컴퓨터 상호 간의 소통을 원활히 할 수 있도록 도와주는 연계 작업을 뜻한다. UI의 설계 원칙 중 직관성에 대해 간략히 설명하시오.

더보기
답 : 누구나 쉽게 이해하고 사용할 수 있어야 한다.

 

해설

UI 설계 원칙(직관성, 유효성, 학습성, 유연성)

 

 

4. 다음 제어 흐름 그래프에 대한 분기 커버리지(Branch Coverage)를 수행하는 경우의 테스트케이스 경로를 순서대로 나열하시오.

<제어 흐름 그래프>

더보기
  • ① : ( 1 ) - ( 2 ) - ( 3 ) - ( 4 ) - ( 5 ) - ( 6 ) - ( 1 )
  • ② : ( 1 ) - ( 2 ) - ( 4 ) - ( 5 ) - ( 6 ) - ( 7 )
또는
  • ① : ( 1 ) - ( 2 ) - ( 3 ) - ( 4 ) - ( 5 ) - ( 6 ) - ( 7 )
  • ② : ( 1 ) - ( 2 ) - ( 4 ) - ( 5 ) - ( 6 ) - ( 1 )

 

해설

동적 테스트 - 화이트박스 테스트

 

 

5. 소프트웨어 테스트 기법 중 프로그램의 외부 사용자 요구사항 명세를 보면서 테스트를 수행하며 주로 구현된 기능을 테스트한다. 명세 기반 테스트라고도 하며, 동치 분할 테스트, 경계 값 테스트 등과 같이 내부 구조를 보이지 않는 테스트 기법에 해당하는 용어를 쓰시오.

더보기
답 : 블랙박스 테스트

 

해설

*정적 테스트 : 명세서나 소스 코드를 대상(프로그램 실행X)

 - 워크스루, 인스펙션, 코드검사

*동적 테스트 : 프로그램 실행하여 오류 찾는 테스트

 - 화이트박스 테스트 : 소스 코드를 보면서 프로그램 실행

 - 블랙박스 테스트 : 요구사항 명세를 보면서 프로그램 실행

 

*명세기반 테스트 - 블랙박스 테스트

*구조기반 테스트 - 화이트박스 테스트

*경험기반 테스트 - 에러추정, 체크리스트 등

 

 

6. 아래 보기의 <학생> 테이블에 '주소' 컬럼을 추가하는 SQL문을 완성하는 빈 칸 ① ~ ②에 알맞은 용어를 기입하시오.(단, 추가 컬럼의 이름은 '주소'이고, 데이터 타입은 가변 문자형 20자리로 VARCHAR(20)이다.)

<학생>

학번 이름 학과 전화번호
2020021 철수 컴퓨터 010-1111-1111
2020001 민수 수학 010-2222-2222
2021022 영희 컴퓨터 010-3333-3333
2022013 민호 통계 010-4444-4444

<SQL문>

(  ①  ) TABLE 학생 (  ②  ) 주소 VARCHAR(20);
더보기
  • ① : ALTER
  • ② : ADD

 

해설

-- 컬럼 삭제

ALTER TABLE 학생 DROP COLUMN 주소;

-- 컬럼 수정

ALTER TABLE 학생 MODIFY(주소 VARCHAR(50));

-- 컬럼명 변경

ALTER TABLE 학생 RENAME COLUMN 주소 TO 컬럼변경명

 

 

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

<성적>

학번 과목번호 과목이름 학점 점수
100 2000 데이터베이스 A 95
101 1000 자료구조 B 80
102 2000 데이터베이스 A 99
103 2000 데이터베이스 B 88
104 1000 자료구조 C 79

 

<결과>

과목이름 최소점수 최대점수
데이터베이스 88 99

 

<요구사항>

  1. <성적> 테이블에서 과목별 평균 점수가 90점 이상인 과목이름, 최소점수, 최대점수를 출력하시오.
  2. 단, WHERE 구문을 사용 불가능하며, GROUP BY, HAVING, AS 구문을 반드시 포함하여 작성하시오.
  3. SQL명령문은 대/소문자 구분하지 않는다.
  4. SQL명령문의 종결 문자의 세미콜론(;)은 생략 가능합니다.
  5. 실행 결과가 일치하더라도 <요구사항>을 적용하지 않은 SQL문을 작성하면 오답으로 간주합니다.
더보기
답 : SELECT 과목이름, MIN(점수) AS 최소점수, MAX(점수) AS 최대점수
      FROM 성적
      GROUP BY 과목이름
      HAVING AVG(점수) >= 90;

 

 

8. 아래 보기의 <학생> 테이블에서 이름이 '민수'인 학생 튜플을 삭제하는 SQL문을 작성하시오(단, 다음의 요구사항을 참고하여 작성하시오.)

<요구사항>

  1. 이름 속성의 데이터는 문자형이다. 문자형 데이터는 홀 따옴표(' ')로 표시하시오.
  2. SQL명령문은 대/소문자 구분하지 않습니다.
  3. SQL명령문의 종결 문자의 세미콜론(;)은 생략 가능합니다.
  4. 실행 결과가 일치하더라도 <요구사항>을 적용하지 않은 SQL문을 작성하면 오답으로 간주합니다.
더보기
답 : DELETE FROM 학생 WHERE 이름 = '민수';

 

 

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

#include <stdio.h>

void main()
{
    int i = 0, c = 0;
    while (i < 10) {
        i++;
        c *= i;
    }
    printf("%d", c);
}
더보기
답 : 0

 

해설

0 * 1 = 0

0 * 2 = 0

.

.

0 * 10 = 0

 

 

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

#include <stdio.h>
int r1( ) {
    return 4;
}
int r10( ) {
    return (30 + r1( ));
}
int r100( ) {
    return (200 + r10( ));
}
void main( ) {
    printf("%d", r100( ));
}
더보기
답 : 234

 

해설

재귀함수 문제

r100( )

(200 + r10( ))

(200 + (30 + r1( )))

(200 + (30 + 4))

(200 + 30 + 4)

 

 

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

public class Main {
    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.print(sum);
    }
}
더보기
답 : 30

 

해설

i sum
0 0
1  
2 0 + 2
3  
4 0 + 2 + 4
5  
6 0 + 2 + 4 + 6
7  
8 0 + 2 + 4 + 6 + 8
9  
10 0 + 2 + 4 + 6 + 8 + 10

 

 

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

abstract class Vehicle {
        String name;
        abstract public String getName(String val);
        public Vehicle(String val) {
            this.name = val;
        }
        public String getName() {
            return "Vehicle name : " + name;
        }
}
class Car extends Vehicle {
        public Car(String val) {
            super(val);
        }
        public String getName(String val) {
            return "Car name : " + val;
        }
        public String getName(byte val[]) {
            return "Car name : " + val;
        }
}
public class Exam {
    public static void main(String[] args) {
        Vehicle obj = new Car("Spark");
        System.out.println(obj.getName());
    }
}
더보기
답 : Vehicle name : Spark

 

해설

추상메소드 + 오버로딩 문제
Car클래스 생성자에서 super(val); 선언할 경우 부모클래스 생성자를 호출한다.(생성자란 클래스명과 동일한 메소드명을 가지며 클래스 호출 시 무조건 실행된다.)

따라서 Vehicle클래스의 생성자에서 전역변수인 name에 "Spark" 값을 담게 된다.

출력 로직에서 getName() 메소드 호출 시 매개변수가 없기 때문에 매개변수가 없는 메소드인 Vehicle클래스 getName() 메소드를 호출하게 되므로 출력 결과는 "Vehicle name : Spark"이다.

 

클래스 앞에 abstract 선언을 못봤을 경우 단순 상속문제로 봐서 getName()메소드가 자식클래스에서 재정의된 것으로 볼 수 있다.

하지만 Car클래스의 부모클래스가 추상클래스이기 때문에 추상메소드인 getName(String val) 메소드를 자식클래스에서 무조건 선언해야 한다.

그렇기 때문에 getName(), getName(String val), getName(byte[] val) 같은 이름의 메소드가 3개 존재하는 것이다.

같은 메소드명이 존재할 수 있는 이유는 오버로딩 개념을 파악하면 이해가 갈 것이다.

오버로딩의 경우 메소드명은 같아도 매개변수가 다를 경우 중복에러가 발생하지 않는다.

마지막으로 getName() 호출 시 매개변수가 없는 메소드를 호출한 것이므로 Vehicle클래스의 메소드로 봐야한다.

 

 

13. C++언어의 생성자(Constructor)에 대해 간략히 설명하시오.

더보기
답 : 객체 생성시 자동으로 호출되는 메소드로 멤버를 초기화하는 목적으로 주로 사용된다.

 

 

14. 스키마(Schema)에 대해 간략히 설명하시오.

더보기
답 : 스키마는 데이터베이스의 전체적인 구조와 제약조건에 대한 명세를 기술, 정의한 것을 말한다.

 

 

15. 다음에서 설명하는 관계 대수의 기호를 쓰시오.

릴레이션 A에서 릴레에션 B의 모든 조건을 만족하는 튜플을 제외한 후 프로젝션하는 연산자
더보기
답 : ÷

 

 

16. 대규모 네트워크를 안정되게 운영할 수 있는 표준 라우팅 프로토콜로 최적의 경로를 계산할 때 SPF(Shortest path First) 또는 다익스트라(dijkstra) 알고리즘을 이용하여 각 목적지까지의 최적 경로를 계산하는 동적 라우팅 프로토콜로 링크 상태 라우팅 프로토콜을 무엇이라고 하는지 영문 약어로 쓰시오

더보기
답 : OSPF

 

 

17. TCP/IP에서 신뢰성 없는 비 연결형 프로토콜인 IP를 대신하여 송신 측으로 네트워크 IP 상태 및 에러 메세지를 전달해주는 프로토콜을 무엇이라고 하는지 영문 약어로 쓰시오.

더보기
답 : ICMP

 

 

18. 헝가리안 표기법에 대해 간략히 설명하시오.

더보기
답 : 컴퓨터 프로그래밍의 변수명, 함수명 등의 식별자 이름을 작성할 때 데이터타입의 정보를 이름 접두어로 지정하는 코딩의 규칙이다.

 

 

19. 리팩토링(Refactoring)의 목적에 대해 간략히 설명하시오.

더보기
답 : 가독성을 높이고 유지보수의 편리성을 높이기 위해 기능을 변경하지 않고 내부 구조만 변경하여 이해하기 쉽고, 수정하기 쉽도록 만드는 것이다.

 

 

20. 다음 괄호 (     )안에 공통으로 들어갈 가장 적합한 용어를 쓰시오.

(     )의 본래 의미는 외교 분야에서의 의례 또는 의정서를 의미하는 용어였다. 심리학자 톰 마릴은 컴퓨터가 메세지를 전달하고, 메세지가 제대로 도착했는지 확인하며, 도착하지 않았을 경우 메세지를 재전송하는 일련의 방법을 가리켜 '기술적 은어'라는 뜻으로 (     )(이)라 불렀다.
더보기
답 : 프로토콜