본문 바로가기

개발/정보처리기사

[수제비 출처] 2020년 기사 실기 출제예상 문제[Daily 131-140번]

131. 다음 Python 프로그램의 결과를 쓰시오

>>> a=10 
>>> print(a<<2) 
40 
>>> print(a>>2) 
2
>>> a=5 
>>> b=3 
>>> print(a&b) 
1 
>>> print(a|b) 
7

답)

① 40 ② 2 ③ 1 ④ 7

정답 및 해설)

시프트 연산 '<<', '>>' 은 비트를 이동시키는 연산자이다.

a=10 에서 십진수 10을 이진수로 변환하면 1010이 된다.

a<<2 를 하면 왼쪽으로 2비트 연산을 수행하면 101000 이 된다.

a>>2 를 하면 오른쪽으로 2비트 연산을 수행하면 0010 이 된다.

a=5에서 십진수 5를 이진수로 변환하면 0101이 된다.

b=3에서 십진수 3을 이진수로 변환하면 0011이 된다.

a&b 는 0101 와 0011을 AND 연산을 한다.

0101

AND) 0011

--------------

0001

이진수 0001은 십진수 1이 된다.

a|b 는 0101 와 0011을 OR 연산을 한다.

0101

OR) 0011

-------------

0111

이진수 0111은 십진수로 7이 된다.


132. 다음은 학생 테이블이다. 아래 결과와 같이 가장 높은 성적을 출력하는 쿼리를 작성하시오.

답)

select 학번, 성적

from 학생

where 성적 = (select max(성적) from 학생)


133. 다음은 학생 테이블이다. 학생 테이블의 학번 속성을 이용하여 인덱스를 생성하고, 인덱스를 삭제하는 SQL문을 작성하시오. (표준SQL로 작성)

답) 인덱스 생성 : CREATE INDEX INDEX_STUDENT ON 학생(학번);

​ 인덱스 삭제 : DROP INDEX INDEX_STUDENT ON 학생;

해설)

1. 인덱스 작성하기

CREATE INDEX 인덱스명 ON 테이블명 (열명1, 열명2, ...);

2. 인덱스 삭제하기

DROP INDEX 인덱스명 ON 테이블명;


134. 아래는 시스템을 구성하는 모듈들의 계층 구조에서 가장 상위에 있는 모듈부터 시작하여 하위에 있는 모듈들을 점진적으로 통합하는 하향식 통합테스트 방식에 대한 그림이다. 깊이 우선(depth first) 방식과 너비 우선(breadth) 방식으로 통합 테스트를 수행할 때 올바른 순서를 쓰시오.

① 깊이 우선(depth first) 방식 : M1, M2, M3, M4, M5, M6, M7, M8

② 너비 우선(breadth) 방식 : M1, M2, M4, M8, M3, M5, M6, M7


134. 다음은 SW 개발 보안과 관련된 용어이다. 괄호( ) 안에 들어갈 가장 올바른 용어를 쓰시오.

( ① ) : 조직이나 기업의 자산에 악영향을 끼칠 수 있는 사건이나 행위
( ② ) : 조직의 데이터 또는 조직의 소유자가 가치를 부여한 대상
( ③ ) : 취약점을 이용하여 조직의 소유자가 가치를 부여한 대상에 손실 또는 피해를 가져올 가능성

정답)

① 위협(Threat)

② 자산(Assets)

③ 위험(Risk)

(135번 문제 중복)


136. 다음 설명은 인터페이스 구현 검증 및 감시 도구에 대한 설명이다. 괄호 ( ) 안에 들어갈 가장 올바른 도구를 쓰시오.

- ( ① ) : java(Junit), C++(Cppunit), .Net(Nunit) 등 다양한 언어를 지원하는 단위 테스트 프레임워크로 소프트웨어의 함수나 클래스 같은 서로 다른 구성 원소(단위)를 테스트 할 수 있게 해주는 도구

- ( ② ) : 서비스 호출, 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임워크로 각 테스트 대상 분산 환경에 데몬을 사용하여 테스트 대상프로그램을 통해 테스트를 수행하고, 통합하며 자동화하는 검증도구

- ( ③ ) : 애플리케이션에 대한 모니터링 및 DB Agent를 통해 오픈소스 DB모니터링 기능, 인터페이스 감시 기능을 제공하는 도구

정답)

xUnit

STAF

SCOUTER


137. 다음 SQL문의 결과를 쓰시오.

select count(이름)
from 
(
     select 이름 from 학생 where 성적>= 80 and 성적 <= 90
    union select 이름 from 학생 where 성적>= 75 and 성적 <= 80
) a;


138. 다음 아래에서 설명하는 디자인 패턴을 쓰시오. (영어 full name으로 표기)

- ( ① ) : 상위 클래스에서 객체를 생성하는 인터페이스를 정의하고, 하위 클래스에서 인스턴스를 생성하도록 하는 방식으로, 상위 클래스에서는 인스턴스를 만드는 방법만 결정하고, 하위 클래스에서 그 데이터의 생성을 책임지고 조작하는 함수들을 오버로딩하여 인터페이스와 실제 객체를 생성하는 클래스를 분리할 수 있는 특성을 갖는 디자인 패턴
- ( ② ) : 전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하며, 생성된 객체를 어디에서든지 참조할 수 있도록 하는 디자인 패턴

정답)

Factory Method (Pattern)

- 생성할 객체의 클래스를 국한하지 않고 객체를 생성

Singleton (Pattern)

​- 한 클래스에 한 객체만 존재하도록 제한


139. 다음은 보안 공격 기법에 대한 설명이다. 괄호 ( ) 안에 들어갈 가장 정확한 보안 공격 기법을 쓰시오.

- ( ① ) : 검증되지 않은 외부 입력 데이터가 포함된 웹페이지가 전송되는 경우, 사용자가 해당 웹페이지를 열람함으로써 웹페이지에 포함된 부적절한 스크립트가 실행되는 공격기법
​- ( ② ) : 응용 프로그램의 보안 취약점을 이용해서 악의적인 SQL 구문을 삽입, 실행시켜서 데이터베이스(DB)의 접근을 통해 정보를 탈취하거나 조작 등의 행위를 하는 공격기법
​- ( ③ ) : 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 하는 공격기법

​정답)

​① XSS(Cross Site Scripting)

​② SQL Injection

​③ CSRF(Cross-Site Request Forgery)


140. 다음은 C언어 코드이다. 출력 결과를 쓰시오.

#include <stdio.h>

void main( ){
  int a = 5;
  int s = 0;

  switch(a/2){
  case 2 : s++;
  case 3 : a += s;
  default : a++;
  }
  
  printf("%d %d", s, a);
}

정답) 1 7

해설) switch에서 a/2 조건이 중요한데, a가 5이므로 5/2=2.5이지만, C언어에서는 정수/정수는 정수값이 나오게 되므로 소수점은 버림처리되어 2가된다.

case 2로 들어가게 되고, s++이 실행되어 s는 1이 된다. break;가 없으므로 case 3에 a += s;가 실행되는데, a에 s만큼 더한다는 의미이므로 a는 6이 된다. 마지막에 a++이 되면서 a는 7이 된다.

참고) 수제비 정보처리기사 실기 10-12페이지