Sky Archive

자격증/정보처리기사

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

서울시장 2021. 7. 15. 13:42

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

 

1. 다음 괄호 (     )안에 공통으로 들어갈 소프트웨어 개발 프로젝트 방법론을 의미하는 용어를 쓰시오.

(     )(은)는 작업 계획을 짧은 단위로 세우고 시제품을 만들어 나가는 사이클을 반복함으로써 고객의 요구 변화에 유연하고도 신속하게 대응하는 개발 방법론이다. 이와 반대되는 개념이 전통적 개발 방법론이라 할 '워터폴(Waterfall) 방식'이다. (     )(은)는 소프트웨어 개발에 국한되지 않고 조직과 사업 등 기업경영 전반으로 사용 범위가 확산되고 있다.

(     )(은)는 짧은 개발 주기를 가지고 프로젝트 계획 수립과 진행에 있어서 최초의 프로젝트 일정 계획에 매이지 않고 고객 중심으로 계획을 융통성 있게 변경한다. 단계별 문서 산출물 확인보다는 해당 소프트웨어 코딩이 제대로 동작하는지(code-oriented) 고객에게 확인하는 과정을 꾸준히 진행한다.

(     )(은)는 프로젝트 진행 도중에 일부 결과물인 시제품을 고객에게 지속적이며 반복적으로 제공한다. 고객의 요구사항이 정확하게 반영되고 있는지 수시로 점검하게 된다.
더보기
답 : 애자일 방법론

해설

그밖의 소프트웨어 개발방법론 종류

  • 구조적 방법론 : 전체 시스템을 기능에 따라 나누어 개발하고 통합한다(나씨-슈나이더만 차트)
  • 정보공학 방법론 : 정보시스템 개발에 필요한 관리 절차와 작업 기반을 체계화
  • 객체지향 방법론 : '객체'라는 기본 단위로 시스템 분석 및 설계
  • 컨포넌트 기반 방법론 : 컨포넌트를 조립해 하나의 새로운 운용 프로그램 작성
  • 제품 계약 방법론 : 특정 제품에 적용하고 싶은 공통된 기능을 정의해 개발

 

2. 다음은 데이터베이스 설계의 순서이다. 빈 칸 (     ) 에 부합하는 용어를 보기에서 골라 순서대로 쓰시오.

요구사항 분석 > (     ) > (     ) > (     ) > 구현

<보기>
논리적 설계, 개념적 설계, 물리적 설계
더보기
답 : 개념적 설계 > 논리적 설계 > 물리적 설계

 

3. HTTP, HTTPS, SMTP 등을 사용하여 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환하는 형태의 프로토콜로써 Envelope, Header, Body의 주요 3요소로 구성된 간접 연계 방식의 웹서비스의 기본적인 메시지 전송 수단을 의미하는 용어를 쓰시오.

더보기
답 : SOAP

 

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

소프트웨어 개발 과정에서 변경에 대비하기 위한 소프트웨어 (     )(은)는 반드시 필요하다. (     )(은)는 소프트웨어 품질 보증을 위한 주요한 요소이며, 주 임무는 변경의 통제이다. 소프트웨어 (     )(이)란 소프트웨어의 개발 과정에서 발생하는 산출물의 변경 사항을 관리하기 위한 일련의 활동을 말한다. 소프트웨어 리사이클 기간 동안 개발되는 제품의 무결성을 유지하고 소프트웨어의 식별, 편성 및 수정을 통제하는 프로세스를 제공한다. 실수의 최소화와 생산성의 최대화가 (     )의 궁극적인 목표라고 할 수 있다. 대표적인 (     )도구로는 CVS, Subversion, Clear Case 등이 있다.
더보기
답 : 형상관리(SCM)

 

5. '비동기식 자바스크립트 XML'를 의미하는 용어로 클라이언트와 웹서버 간에 XML 데이터를 내부적으로 통신하는 대화식 웹 어플리케이션의 제작을 위해 사용된다. 클라이언트의 요청에 의해 웹서버에서 로딩된 데이터를 웹 브라우저의 페이지에 보여주기 위해 웹 페이지 전체를 '새로고침'할 필요 없이 즉, 새로운 HTML 페이지로 이동할 필요 없이 현재 페이지에서 필요한 일부분만 로딩되도록 하는 웹 개발 기법을 의미하는 용어를 영문 약자(약어)로 쓰시오.

더보기
답 : AJAX

 

6. UI(User Interface)는 사용자와 컴퓨터 상호 간의 소통을 원활히 할 수 있도록 도와주는 연계 작업을 뜻한다. 다음은 UI의 설계 원칙 4가지이다. 빈칸 괄호 (     )에 알맞은 용어를 쓰시오.

설계 원칙 설명
직관성 누구나 쉽게 이해하고 사용할 수 있어야 한다.
(     ) 사용자의 목적을 정확하게 달성하여야 한다.
학습성 누구나 쉽게 배우고 익힐 수 있어야 한다.
유연성 사용자의 요구사항을 최대한 수용하며, 오류를 최소화하여야 한다.
더보기
답 : 유효성

 

7. 다음은 테스트 자동화 도구 유형에 대한 설명이다. 괄호 (     ) 안에 공통으로 들어갈 가장 적합한 용어를 쓰시오.

테스트 자동화 도구는 휴먼 에러(Human Error)를 줄이고, 테스트에 소요되는 비용과 시간을 절감하며, 테스트 품질을 향상할 수 있는 도구이다. 테스트 계획, 테스트 분석/설계, 테스트 수행, 테스트 통제 등의 테스트 활동 단계에 따라 다양한 테스트 도구들이 있다.
(     )(은)는 테스트 수행 단계의 자동화 도구로 만들어진 애플리케이션을 실행하지 않고 분석하는 방법이다. (     )(은)는 대부분의 경우 소스 코드에 대한 코딩 표준, 런타임 오류, 코딩 스타일, 코드 복잡도 및 남은 결함을 발견하기 위하여 사용한다.
(     )(은)는 테스트를 수행하는 사람이 작성된 소스 코드에 대한 이해를 바탕으로 도구를 이용해서 분석하는 것을 말한다.
더보기
답 : 정적 분석(정적 분석 도구)

 

8. 아래 보기의 <학생> 테이블을 대상으로 <요구사항>을 적용하여 출력하는 SQL문을 작성하시오. (단, 이름 속성의  데이터는 문자형이고, 학번과 학년 속성의 데이터는 숫자형(int)이다.)

<학생>

학번 이름 학년
181101 KKK 1
171201 HHH 2
171302 XXX 3
161107 YYY 3
151403 QQQ 4

<요구사항>

1. <학생> 테이블에서 학년이 3학년이거나 4학년 학생의 학번과 이름을 검색하시오.
2. 단, 조건절 작성 시 in(value1, value2) 문법을 사용하여 작성하시오.
3. 실행 결과가 일치하더라도 <요구사항>을 적용하지 않은 SQL문을 작성하면 오답으로 간주합니다.
더보기
답 :  SELECT 학번, 이름
      FROM 학생
      WHERE 학년 IN (3, 4);

해설

문자형은 ' ' 따옴표, 숫자형은 따옴표 없이 작성하여야 한다.

 

9. 다음 주어진 <student> 테이블의 name 속성에 idx_name를 인덱스명으로 하는 인덱스를 추가하는 SQL명령문을 작성하시오.

<student>

stid name grade major address
1000 홍길동 1 컴퓨터공학 서울
2000 김철수 1 전기공학 경기
3000 이순신 2 전기공학 경기
4000 강희영 2 컴퓨터공학 경기
5000 임꺽정 3 전기공학 서울
더보기
답 : CREATE INDEX idx_name ON student(name);

해설

CREATE INDEX 인덱스명 ON 테이블명(속성명);

 

10. 소프트웨어 보안의 취약점 중 하나인 SQL Injection(SQL 인젝션)에 대해 간략히 설명하시오.

더보기
답 : SQL Injection은 사용자의 입력값 등 외부 입력값이 SQL쿼리에 삽입되어 공격하는 것을 의미한다.

해설

시큐어코딩 - 입력데이터 검증 및 표현(XSS, SQL Injection 공격 방지)

웹 방화벽 - 일반 방화벽이 탐지하지 못하는 SQL 삽입 공격, XSS 등의 웹 기반 공격을 방어할 목적으로 만들어진                  웹 서버에 특화된 방화벽

 

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

>>> asia = {'한국', '중국', '일본'}
>>> asia.add('베트남')
>>> asia.add('중국')
>>> asia.remove('일본')
>>> asia.update(['홍콩', '한국', '태국'])
>>> print(asia)
더보기
답 : {'한국', '홍콩', '베트남', '태국', '중국'}

해설

asia 변수 자체를 print하기 때문에 {'', ''} 자료구조 전체를 그대로 작성하여야 한다.

또한 해당 문제는 집합(SET) 문제로 변수가 {}, []인지 확인을 잘해야 한다. 자료구조로 헷갈리게 출제할 수 있으므로 자료구조별로 개념을 공부해야 한다.

자료구조 중복 순서
리스트 [ ] 허용 있음
튜플 ( ) 허용 있음
딕셔너리
{Key : Value}
Key 중복허용X 없음
집합 { } 허용X 없음

집합(SET) 메소드

add : 값 1개 추가(중복추가X)

update : 값 여러개 추가

remove : 특정 값 제거

리스트 [ ] 경우 append, insert, remove 중복, 순서, 제거 요소가 다르다.

 

12. 다음에 제시된 Java 프로그램이 <처리결과>와 같이 결과를 출력해주고 있다. Java 프로그램의 밑줄 <?>에 들어갈 Java 표현을 대소문자를 구별하여 쓰시오.

class Parent {
    void show() {
        System.out.println("Parent");
    }
}

class Child extends Parent {
    void show() {
        System.out.println("Child");
    }
}

public class Exam {
    public static void main(String[] args) {
        Parent pa = <?> Child();
        pa.show(); 
    }
}

<처리결과>

Child
더보기
답 : new

해설

<?> 빈 칸의 Child 클래스 생성자 문제로 소문자(new)로 써야한다.

정답과 무관하게 처리결과를 보게되면 extends 상속 오버라이딩 재정의 로직이다.

Parent클래스와 Child클래스에는 동일한 show()메소드가 있다.

pa변수가 new Child()를 선언하므로 Parent클래스의 show()메소드를 상속 받는 Child클래스의 show()메소드로 재정의하게 되므로 pa.show()는 Child클래스의 show()메소드가 된다. 그 결과 처리결과가 Child로 출력된다.

 

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

class A {
   int a;
   public A(int n) {
        a = n;
    }
   public void print() {
        System.out.println("a="+a);
    }
}

class B extends A {
    public B(int n) {
        super(n);
        super.print();
    }
}

public class Exam {
    public static void main(String[] args) {
        B obj = new B(10);
    }
}
더보기
답 : a=10

해설

생성자 호출 문제

자바에서는 public static void main(String[] args) 메소드가 가장 먼저 실행된다고 보면 된다.

main() 메소드에서 obj란 변수에 B클래스를 선언한다.

B클래스를 보게되면 생성자가 선언되어있다.

생성자란 new 연산자와 같이 사용되어 클래스로부터 객체를 생성할 때 호출되어 객체의 초기화를 담당한다.

 - 생성자의 이름은 클래스의 이름과 동일해야 하다.

 - 생성자는 리턴 값이 없다.

 - 오버로딩 가능하므로 여러 개의 생성자가 있을 수 있다.

생성자 내부로직에는 super()가 선언 되어있다.

super : 상속받는 부모클래스

this : 자기 자신 클래스(대체로 this는 생략한다.)

 

매개변수로 받은 n값 10을 부모클래스 A의 생성자로 보내게 되면 A클래스 변수 a는 10이 된다.

B생성자 super.print()는 부모클래스의 print() 메소드를 호출한다.

따라서 출력 값은 a=10이 된다.

 

14. SQL 제어어는 관리자가 데이터의 보안, 무결성 유지, 병행제어, 회복 등을 하기 위해 사용하는 언어를 말한다. SQL 제어어의 종류에는 COMMIT, ROLLBACK, GRANT, REVOKE 등이 있다. 이 중 ROLLBACK 명령문에 대해 간략히 설명하시오.

더보기
답 : ROLLBACK 명령어는 데이터베이스 내의 연산이 비정상적으로 종료되거나 정상적으로 수행이 되었다 하더라도 이전 상태로 되돌리기 위해 연산 내용을 취소할 때 사용하는 명령어를 말한다.

 

15. 네트워크 계층(network layer, 3계층)인 IP계층에서 IP패킷 단위로 '암호화', '인증', '키 관리'를 통해 보안성을 제공해주는 표준화된 기술을 무엇이라 하는지 쓰시오.

더보기
답 : IPSec

해설

* SSL/TLS : 전송계층과 응용계층 사이에서 클라이언트와 서버 간의 웹 데이터 암호화, 상호 인증 및 전송 시 데이                 터 무결성을 보장하는 보안 프로토콜

* S-HTTP : 웹 상에서 네트워크 트래픽을 암호화하는 주요 방법, 클라이언트와 서버 간 전송되는 모든 메세지지를                 각각 암호화해 전송하는 기술

 

16. 리눅스 커널을 기반으로 동작하며 자바와 코틀린 언어로 개발된 핸드폰이나 소형기기에 사용되는 오픈소스 플랫폼인 모바일 운영체제가 무엇인지 쓰시오.

더보기
답 : 안드로이드

 

17. 리눅스 서버에 a.txt라는 파일이 있다. 다음 <조건>에 알맞는 명령문을 쓰시오.

<조건>
사용자에게는 읽기, 쓰기, 실행의 세 개의 권한을 모두 부여하고 그룹에게는 읽기, 실행 두 개의 권한을 부여하고 그룹 외 사용자에게는 실행 권한을 부여한다.
단, 한 줄로 명령문이 작성되어야 하며, 아라비안 숫자를 사용하여 8진수로 권한을 부연한다.
더보기
답 : chmod 751 a.txt

 

18. 다음은 IP인프라 서비스 관리 실무와 관련된 <실무 사례>에 대한 설명이다. 괄호 (     )안에 가장 적합한 용어를 한글 또는 영문으로 쓰시오.

<실무 사례>

데이터 백업(보호) 솔루션은 만일의 사태에 대비하여 시스템 내의 데이터 유실을 방지하고, 서비스의 연속성을 보장하는 목적을 가지고 어떤 상황에서도 계획된 (     )(와)과 목표 복구 시점(RPO: Recovery Point Objective)을 보장해야 할 수 있는 제품이어야 한다. (     )(은)는 시스템 장애와 같은 상황에서의 "비상사태 또는 업무중단 시점부터 업무가 복구되어 다시 정상가동 될 때까지의 시간"을 의미하는 용어이다. RPO는 조직에서 발생하는 여러 가지 재난 상황으로 IT 시스템이 마비되었을 때 각 업무에 필요한 데이터를 여러 백업 수단을 활용하여 복구할 수 있는 기준점을 의미한다.
더보기
답 : RTO(Recovery Time Objective: 목표 복구 시간)

 

19. 다음 디자인 패턴과 관련된 설명에 가장 부합하는 용어를 영문으로 쓰시오.

  • 디자인 패턴은 유사한 문제를 해결하기 위해 설계들을 분류하고 각 문제 유형별로 가장 적합한 설계를 일반화하여 체계적으로 정리해 놓은 것으로 개발에서 효율성과 재사용성을 높일 수 있다. GoF(Gang of Four)의 25개이 디자인 패턴은 사용 목적에 따라서 생성 패턴, 구조 패턴, 행위 패턴으로 분류할 수 있다.
  • 먼저, 생성 패턴은 객체를 생성하는 것과 관련된 패턴으로 객체의 생성과 변경이 전체 시스템에 미치는 영향을 최소화하도록 하여 시스템 개발을  개발할 때 유연성을 높일 수 있다. 다음으로 구조 패턴은 클래스나 객체를 조합하여 더 큰 구조를 만드는 패턴으로 복잡한 형태의 구조를 갖는 시스템 개발을 쉽게 만들어주는 패턴이다. 마지막으로 행위 패턴은 반복적으로 사용되는 객체들의 상호작용을 패턴화한 것으로 클래스나 객체들이 상호작용하는 방법과 책임을 분산하는 방법을 정의해 주는 패턴이다.
더보기
답 : Observer Pattern

 

20. 다음 신기술 동향과 관련된 설명에 가장 부합하는 용어를 영문 완전이름(Full-name)으로 쓰시오.

  • 웹 상에 존재하는 전세계 오픈된 정보를 하나로 묶는 RESTful한 방식이며, 링크 기능이 강조된 시맨틱 웹(Semantic Web)의 모형에 속한다고 볼 수 있다. 즉, (     )(은)는 "시맨틱 웹을 실현시키기 위한 방법이자 기술적 접근점"으로 볼 수 있다.
  • (     )(은)는 Linked Data와 Open Data의 합성어이다. Linked Data가 정보 기술적인 면이 강한 반면 Open Data는 정보 문화적인 면이 강한 용어이다.
더보기
답 : Linked Open Data