[정보처리기사] 2021년 5월 15일 기출 오답

2025. 2. 7. 02:21카테고리 없음

1과목: 소프트웨어 설계

 

1번. 시스템의 구성요소

- 입력

- 출력

- 처리(Process)

- 제어(Control)

- 피드백(Feedback) : 시스템이 정상적으로 작동하는 과정

 

유지(Maintenance)는 시스템의 구성요소가 아니라, 유지하고 보수하는 활동입니다!

따라서 시스템의 구성요소로 볼 수 없다

 

6번. 디자인패턴의 GoF(Gangs of Four)

생성패턴(Creational Pattern)

- 추상 팩토리: 구체적인 클래스에 의존하지 않고, 인터페이스를 통해 서로 연관 및 의존하는 객체들의 그룹으로 생성하여 추상적으로 표현(하위의 개념 말고 추상 생성)

- 빌더

- 팩토리 메소드(Factory method): 객체의 생성을 상위 클래스에서 정의하고(인터페이스 생성만, interface -> extends), 하위 클래스에서 구현하도록 하는 패턴, 객체 생성을 서브클래스에서 처리하도록 분리하여 캡슐화한 패턴(구현 부분은 하위에서 맡았다!)

- 프로토타입(prototype): 원형(시제품, prototype)을 먼저 생성하고, 이를 복제하여 새로운 인스턴스를 생성

- 싱글톤

 

구조패턴(Structural Pattern)

- 어댑터(Adapter): 호환성이 없는 클래스들의 인터페이스를 다른 클래스가 이용할 수 있도록 **변환**해주는 패턴, 기존의 클래스를 이용하고 싶지만 인터페이스가 일치하지 않을 때 사용

- 브릿지(bridge): 구현체(구현 부분)와 추상화(기능 부분)를 분리해서 변경에 유연한 시스템을 만드는 역할, 기능과 구현을 두 개의 별도 클래스로 구현

- 컴포지트(composite): 여러 객체를 가진 복합 객체와 단일 객체를 구분 없이 다루고자 할 때 사용, 트리 구조로 구성해 디렉토리 안에 디렉토리가 있듯이 복합 객체 안에 복합 객체 포함되는 구조를 통하여 단일 객체와 복합 객체 구분 없이 사용

- 데코레이터

- 퍼싸드

- 플라이웨이트

- 프록시

 

행위패턴(Behavioral Pattern)

- 책임 연쇄

- 커맨드

- 인터프리터

- 반복자

- 중재자(mediator): 객체 간의 상호작용을 중재하는 패턴

- 메멘토

- 옵서버

- 상태

 

문제 8번. 소프트웨어 아키텍처 설계에서의 시스템 품질속성

- 가용성(Availability):

- 성능

- 보안성

- 확장성(Extensibility) : 시스템이 새로운 기능이나 요구사항을 추가하기 쉬운 정도, 변경 용이성이 여기에 해당

- 유지보수성(Maintainability): 시스템을 유지보수하기 쉬운 정도(문제 1번)

 

독립성(Isolation)은 시스템의 구성요소들이 서로 독립적으로 작동할 수 있는 정도로, 모듈성과 관련된 것이 아키텍쳐 설계에서 시스템 품질 속성으로는 분류되지 않는다!

아키텍쳐 설계의 기본 원리

- 모듈화(Modularity)

- 추상화

- 단계쩍 분해(Stepwise Refinement)

- 정보 은닉(Information hiding, 캡슐화)

 

문제 10번. CASE(Computer Aided Software Engineering)의 원천 기술

CASE: 소프트웨어 개발 과정을 자동화 하기 위한 기술로, 여러가지 도구들이 존재한다

 

구조적 기법, 프로토타이핑 기술, 정보 저장소 기술은 모두 소프트웨어 개발 과정을 자동화하기 위한 기술들이다.

 

But 일괄처리 기술은 데이터 처리 방식의 하나로, 데이터를 일괄 처리해버린다는 뜻이다.

 

소프트웨어 개발 자동화를 위한 원천 기술에 해당되지 않는다.

(참고로 CASE 도구를 활용하여 일관성을 분석하는 것은 별개이다)

* **①번 구조적 기법**은 소프트웨어를 블록으로 구성하여 분석하고 설계하는 기법입니다.

* **②번 프로토타이핑 기술**은 초기 단계에서 사용자 요구를 파악하기 위해 실제 시스템을 빠르게 구현하는 기법입니다.

* **③번 정보 저장소 기술**은 데이터를 체계적으로 저장하고 관리하는 기술입니다.

 

문제 14번. UML(Unified Modeling Language) 다이어그램

  • 구조적(Structural) 다이어그램
    • 클래스 다이어그램
    • 객체 다이어그램
    • 컴포넌트 다이어그램
    • 배치 다이어그램
    • 복합체 구조 다이어그램(Composite Structure Diagram)
    • 패키지 다이어그램(Package Diagram)
  • 행위적(Behavioral) 다이어그램
    • 유스케이스 다이어그램
    • 순차 다이어그램
    • 커뮤니케이션 다이어그램
    • 상태 다이어그램
    • 활동 다이어그램(Activity Diagram)
    • 상호작용 개요 다이어그램(Interaction Overview Diagram)
    • 타이밍 다이어그램(Timing Diagram)

절차적 응집도라는 것은 있지만, 절차적 다이어그램이라는 것은 없다

 

문제 20번. 사용자 인터페이스 UI 특징

UI는 사용자에게 기능의 명세를 제공해주는 것도 하기 때문에 막연한 작업 기능에 대해 구체적인 방법을 제시하여주는 것은 당연하다.

사용자에게 명확한 정보를 제공하여 작업을 쉽게 하도록 만들기

 

 

그리고 사용자의 편의성을 높임으로써 작업의 효율성을 늘리기 때문에, 작업 시간이 오히려 단축된다!

이것이 UI의 중요성이다.

 


2과목 : 소프트웨어 개발

 

문제 22번. 단위테스트( Unit Test)

 

Unit Test(단위 테스트): 하나의 모듈을 독립적으로 테스트하는 방법

 

- 알고리즘 오류에 따른 원치 않는 결과 -> 하나의 모듈 내에서 일어나는 오류가 되는 알고리즘 오류

- 탈출구가 없는 반복문 사용 -> 하나의 소스코드에서 발생 가능

- 틀린 계산 수식에 의한 잘못된 결과 -> 문법상의 오류는 아니지만, 소스 코드에서의 오류

- 모듈 간의 비정상적 상호작용으로 인한 원치 않는 결과 -> 유닛을 결합한 통합 테스트에서 발견 가능한 오류이다

 

문제 24번. 버전 관리 항목

 

체크인(check-in): 버전 관리 항목 중 저장소에 새로운 버전의 파일로 갱신하는 용어

(<-> 체크아웃(checkout): 다른 버전으로 전환)

 

형상 감사(Configuration Audit): 버전 관리 시스템에 저장된 모든 파일, 전체에 대하여 검토

 

문제 25번. 동적 테스트 중 화이트 박스 테스트와 블랙 박스 테스트

 

- 화이트 박스 테스트는 모듈의 논리적인 구조를 체계적으로 점검할 수 있다. 그래서 논리적 흐름도를 참고하기도 한다.

 

화이트 박스 테스트에서 기본경로(Basic Path)란 흐름 그래프의 시작 노드에서 종료 노드까지의 서로 독립된 경로를 의미한다.

싸이클 순환 비허용보다도 더 넓은 개념이다.

 

문제 28번. 디지털 저작권 관리(DRM, Digital Right Management)

 

디지털 저작권 관리(DRM)의 구성 요소

  • 콘텐츠 제공자(Contents Provider) : 콘텐츠를 제공하는 저작권자
  • 패키저(Packager): 콘텐츠를 암호화하여 배포 가능한 형태로 묶는 프로그램
  • 콘텐츠 분배자(Contents Distributor): 암호화된 콘텐츠를 유통하는 곳이나 사람
  • DRM 컨트롤러: 배포된 콘텐츠의 이용 권한을 통제하는 프로그램

데이터 웨어하우스(Data Warehouse) : 대규모 데이터를 통합하여 저장하고 분석하는 시스템으로 데이터 마이닝 부분과 관련된 개념이다.

 

 

문제 34번. EAI(Enterprise Application Integration) 구축 유형

 

- Point-to-point: 중간 지점 없이 유일하게 직접적으로 연결

- Message Bus

- Hub & Spoke

- Hybrid

 

 

문제 35번. 인터페이스 검증(Validation) 도구

 

- Foxbase : 데이터 베이스 관리 시스템으로 RDBMS

 

- STAF : 서비스 호출 및 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임워크, 인터페이스 구현 검증 도구로서, 인터페이스의 동작을 테스트하고, 예상되는 결과와 실제 결과를 비교해 오류를 검출하는 기능을 제공

- watir : 루비(Ruby) 기반의 웹 어플리케이션 테스트 프레임워크, 웹 브라우저를 제어하여 웹 어플리케이션의 인터페이스를 테스트 (마치 자바 기반 스프링 부트와 비슷)

- xUnitL 단위 테스트의 프레임워크의 표준으로 다양한 언어를 지원한다. 인터페이스 구현 검증 도구로서, 인터페이스의 단위 기능을 테스트하는 기능을 제공한다. (내가 아는 것은 JUnit)

 

 

문제 38번. 공학적으로 잘된 소프트웨어 공학(Well Enginerred Software)

 

소프트웨어 공학에서의 필수 고려 요소들

: 유지보수 용이성 / 신뢰성 / 성능 우수/ 사용성 / 개발 비용의 최소화

 

그리고 인터페이스가 사용자의 수준마다 다르게 작업될 수 있다. 이런 게 사용자 인터페이스인것이다!

 

 

문제 39번. 테스트와 디버그

 

테스트는 오류를 찾는 작업이고, 디버그는 오류를 수정하는 작업이다.

(코테를 기억해라!)

 

 

문제 40번. 스택 연산

 

스택 (Stack) : 후입선출

 

선택정렬(selection sort): 배열의 요소를 직접적으로 비교하는 알고리즘이다

 

- 재귀호출 : 함수가 자기 자신을 호출, 스택을 이용해 함수의 호출 기록을 저장 ( 스택에는 function이 저장)

- 후위표현(Post-fix expression):  후위 표현을 평가하기 위하여 스택을 사용, 피연산자가 먼저 나오는 형식이고 연산자가 나중에 나오는 형식으로, 스택을 이용해 피연산자를 순서대로 저장하고, 연산자를 이용하여 연산을 수행

- 깊이 우선 탐색 : 그래프의 정점을 깊이 순서로 방문하는 탐색 방법, 스택을 이용해 정점을 저장

=> 전부 무언가 저장과 관련, 스택에 저장을 함

 


3과목: 데이터베이스 구축

문제 41번. 병렬 데이터베이스 환경 중 수평 분할

 

수평 분할이란?

데이터베이스의 테이블 행(row) 단위로 나누는 것

- 라운드-로빈 : 데이터를 일정한 크기로 나눠 각 서버에 동일한 크기의 데이터를 할당하는 방법

- 범위분할: 속성의 범위를 나눠서 해당 범위들로 행을 분할

- 해시 분할: 해시함수를 이용하여 각 서버에 할당

 

- 예측 분할

 

 

문제 49번. 병행제어 기법

 

로킹(lcoking): 병행제어 관리, 다른 트랜잭션이 접근하지 못하게 단위를 설정

타임스탬프 기법: 데이터베이스에 여러 버전을 유지하고, 트랜잭션이 버전을 지정하여 데이터에 접근할 수 있도록 하는 기법

다중 버전 기법: 데이터 베이스에 여러 버전을 유지하고, 트랜잭션이 버전을 저장하여 데이터에 접근할 수 있도록 하는 기법

 

시분할 기법:: CPU를 시간단위로 나누어 트랜잭션이 번갈아 가면서 실행하는 기법,

병행 기법이 아닌 시스템 자원(CPU)를 공유하기 위한 것이다

 

 

문제 51번. 관계 연산자

 

  • 순수 관계 연산자
    • select
    • project
    • join
    • division
  • 일반 집합 연산자
    • UNION(합집합)
    • INTERSECTION(교집합)
    • DIFFERENCE(차집합)
    • CARTESIAN PRODUCT(교차곱)

 

문제 59번. 종속성으로 인한 이상 현상

 

검색 이상: 데이터 속성 간의 종속성과는 관련이 없는 이상현상, 데이터베이스에 저장된 데이터 검색할 때 발생하는 이상현상

종속성 없어도 검색이 가능

 

 

* **삽입 이상** : 데이터를 삽입할 수 없는 경우

* **삭제 이상** : 데이터를 삭제할 수 없는 경우

* **갱신 이상** : 데이터를 갱신할 수 없는 경우

 

위 셋은 종속성을 해결하지 않으면 이상현상이 일어남

 


4과목: 프로그래밍 언어 활용

 

문제 61번. 네트워크 충돌 해결을 위한 방법

 

CSMA 란, 네트워크를 전송하기 전에 현재 채널이 사용중인지 체크하여 멀티플 액세스가 되는 기능을 구현하는 것을 말한다.

 

CSMA/CD

표준 : IEEE 802.3
용도 : LAN의 이더넷 전송 프로토콜
토폴로지 : 버스형, 트리형
주요원리 : 충돌감지하여 충돌 발생시 일정시간 지난 후 재전송하는 원리
장점

  • 장치가 간단하고, 쉽게 장애 발생하지 않는다는 점이다.
  • 충돌 패킷 전송을 위해 낭비되는 대역폭이 감소한다.

단점

  • 하량이 일정량을 넘어가면 지연시간이 증가한다는 점이다.
  • 과다 접속과 발송 빈도가 많아지면 충돌 발생 확률이 높아진다는 점이다.

CSMA/CA

표준 : IEEE 802.11
용도 : wireless lan 전송 프로토콜
토폴로지 : 무선
주요원리 : 충돌회피를 위해 전송 전, 채널의 유휴여부를 확인하고, 일정시간 대기 후 전송한다. 성공여부를 확인하는 원리다.

장점

  • 충돌 패킷 전송을 위해 낭비되는 대역이 감소한다.
  • 총돌회피하여 에러제어가 용이하다는 점이다.

단점

  • 고속 LAN에는 적합하지 않으며, 스테이션 수가 증가할수록 전송효율이 떨어진다는 점이다.

 

문제 62번. 결합도

 

결합도 약하고 강한순으로 정리: 자.스.제.외.공.내

cf) 응집도 강함에서 약한순으로 정리: 기.순.교.절.시.논.우

 

 

문제 63번. C언어

#include <stdio.h>

int main() {
    int a = 4;
    int b = 7;
    int result = a | b;  // 비트 OR 연산

    printf("%d\n", result);
    return 0;
}
   4  →  00000100 (2진수)
   7  →  00000111 (2진수)
--------------------
  OR 연산 → 00000111 (2진수) = 7 (10진수)

논리연산자 || 와 다르기 때문에 비트연산자 |은 주의해서 보기

 

 

문제 65번. 교착 상태의 해결방법 중 은행원 알고리즘(Banker's Algorithm)

 

교착상태(Dead Lock)의 조건

  • 상호배제(Mutual Exclusion)
  • 점유와 대기
  • 비선점(Non-preemption)
  • 환형 대기 (Circular Wait)

교착상태의 해결방법

  • 예방기법(Prevention): 교착 상태가 발생할 수 있는 '조건'을 제거하여 교착상태를 발생하지 않도록 하는 기법 ex) 상호 배제, 점유 대기, 비선점, 환형 대기 중 하나의 조건을 제거
  • 회피 기법(Avoidence): 교착 상태가 발생할 수 있는 자원을 할당하지 않음으로써 발생시키 않게 한다. ex) 은행원 알고리즘
  • 발견 기법(Detection): 교착상태가 발생했는지 확인하는 기법
  • 회복 기법(Recovery): 교착상태가 발생한 후 이를 회복하는 기법

이 중, 은행원 알고리즘은 교착상태가 일어날 가능성이 있는 자원 할당을 하지 않음으로써 아예 회피해버림. 가능성까지 없애버리는 회피 기법이다.

 

 

문제 66번. 서브넷 마스크(subnet mask)

 

CIDR 표기법: /27은 서브넷 마스크의 1이 연속되는 비트 수를 의미. 그래서 /27은 서브넷 마스크의 32비트 중 29비트가 1이고, 3비트가 0인 서브넷 마스크를 의미

 

/27 이면 이게 네트워크 부분으로 2진수로 변환할 때 1이고,

앞의 5비트가 호스트 주소로, 0을 의미

-> 11111111.11111111.11111111.11100000

따라서 계산을하면, 네번째 옥텟

1×2⁷ + 1×2⁶ + 1×2⁵ + 0×2⁴ + 0×2³ + 0×2² + 0×2¹ + 0×2⁰ = 128 + 64 + 32 + 0 + 0 + 0 + 0 + 0 = 224

 

 

문제 67번. java

public class Operator {
    public static void main(String[] args) {
        int x = 5, y = 0, z = 0;
        y = x++;  // 후위 증가 (x 값을 y에 대입한 후 x 증가)
        z = --x;  // 전위 감소 (x를 감소시킨 후 z에 대입)
        System.out.print(x + "," + y + "," + z);
    }
}

 

후위 증가: 연산을 한 이후에 증가시키기

후위 감소: 연산을 한 이후에 감소시키기

전위 증가: 증가시키고 연산

전위 감소: 감소시키고 연산

 

문제 68번. 프로세스 적재 정책

 

스레싱(Thrashing): 프로세스가 페이지 교환을 너무 자주 수행하여 CPU가 페이지 교환에만 소비되는 현상

따라서 페이지 교환에 보내는 시간이 프로세스 수행에 보내는 시간보다 크면 스레싱이 발생할 가능성이 높아짐

그러나 페이지 교환의 시간이 프로세스 수행 자체보다 시간이 크다고 해서 항상 스레싱이 발생하는 것은 아니고, 프로세스가 페이지 교환을 자주 수행하더라도 프로세스 수행시간이 짧다면 스레싱이 발생하지 않을 수도 있다.

(항상 발생 조건은 아니라는 뜻)

-> 스레싱 현상을 방지하기 위해서는 각 프로세스가 필요로하는 프레임을 제공할 수 있어야한다! 프레임이 부족해서 페이지 교환이 잦으면 스레싱의 위험이 있기 때문

 

- 공간 지역성(Spatial Locality): 프로세스가 어떤 페이지를 참조했다면 이후 가상주소공간상 그 페이지와 인접한 페이지들을 참조할 가능성이 높음을 의미,  이는 프로세스가 메모리를 참조하는 순서가 주로 인접한 페이지들로 이루어지기 때문이다!

- 시간 지역성(Temporal Localitiy): 반복, 스택, 부프로그램은 모두 프로세스가 이전에 참조했던 데이터나 코드를 다시 참조할 가능성이 높은것과 관련있음

 

 

문제 70번. java

public class Array {
    public static void main(String[] args) {
        int cnt = 0;
        do {
            cnt++;
        } while (cnt < 0);  // 조건이 거짓이므로 한 번만 증가 후 종료

        if (cnt == 1) {
            cnt++;
        } else {
            cnt = cnt + 3;
        }

        System.out.printf("%d", cnt);  // 최종 결과 출력
    }
}

 

do-while은 조건문은 나중에 체크하므로 do 안에 부터 실행한 후에 조건을 확인해줘야한다.

 

 

문제 71번. Linux 쉘

export: 전역변수 선언, 환경변수들 출력

echo: 변수 선언에 사용

 

 

문제 74번. 페이징 기법

 

- 기억장소 이용 효율이 증가한다. & 내부 단편화가 감소한다.

-> 페이지 크기가 작아질수록 페이지가 더 많이 사용될 수 있기에 이용 효율이 늘어나며 사용하지 않는 메모리가 줄어든다.(= 내부 단편화의 감소)

- 페이지의 크기가 작아질 수록 교환이 더많이 일어나기 때문에 입출력 시간이 늘어난다.

 

 

페이지 맵 테이블: 각 페이지가 물리 메모리의 어느 위치에 있는지를 나타내는 테이블, 페이지 크기가 작아지면 페이지의 개수가 늘어나지만, 페이지 맵 테이블의 크기는 각 페이지에 대한 정보만 저장하기 때문에 페이지 크기에 영향을 받아 변화하는 것이 아님

 

 

문제 76번. TCP 프로토콜

 

TCP 프로토콜의 주요 기능

  • * **연결 지향 프로토콜:** 연결을 설정하고 종료하는 과정을 거쳐 데이터를 전송
  • * **신뢰성 있는 데이터 전송:** 오류 발생 시 재전송을 통해 신뢰성 있는 데이터 전송을 보장
  • * **흐름 제어:** 송신자가 수신자의 수신 능력을 고려하여 데이터 전송 속도를 제어
  • * **혼잡 제어:** 네트워크의 혼잡을 방지하기 위해 데이터 전송 속도를 제어

 

TCP/IP

인터넷의 표준 프로토콜이다.
UNIX의 기본 프로토콜이다.

  • TCP
    전송 계층에 해당한다.
    연결형 서비스를 제공한다.
    스트림 전송 계층 서비스를 제공한다.
  • IP
    네트워크 계층에 해당한다.
    비연결형, 비신뢰성 서비스를 제공한다.

응용 계층의 주요 프로토콜

  • FTP (File Transfer Protocol)
  • SMTP (Simple Mail Transfer Protocol)
  • TELNET
  • SNMP (Simple Network Management Protocol)
  • DNS (Domain Name System)
  • HTTP (Hyper Text Transfer Protocol)

전송 계층의 주요 프로토콜

  • TCP (Transmission Control Protocol)
  • UDP (User Datagram Protocol)
  • RTCP (Real-Time Control Protocol)

인터넷(네트워크) 계층의 주요 프로토콜

  • IP (Internet Protocol)
  • ICMP (Internet Control Message Protocol)
  • IGMP (Internet Group Management Protocol)
  • ARP (Address Resolution Protocol)
  • RARP (Reverse Address Resolution Protocol)

네트워크 액세스 계층의 주요 프로토콜

  • Ethernet (IEEE 802.3)
  • IEEE 802

 

문제 77번. C언어의 연산자 우선순위

()

 / 산술연산자 및 단항연산자 

<< 비트 이동 연산자 (비트이동연산자가 관계연산자보다 빠르다)

< 관계 연산자( 비트이동연산자보다 느리다)

==

|| 

 

 

 

문제 79번. JavaScript

 

JS는 프로토타입 기반의 객체 지향 언어이다. 자바스크립트의 객체 상속은 프로토타입 체인을 통해 이뤄진다.

 

 

문제 80번. OSI 7계층

 

물.데.네.전.세.표.응 이렇게 외우기

 

네트워크 계층

- 패킷을 발신지로부터 최종 목적지까지 전달하는 책임을 진다

- 패킷에 발신지와 목적지의 논리주소를 추가한다

- 라우터 또는 교환기는 패킷 전달을 위해 경로를 지정하거나 교환 기능을 제공한다.

 

데이터 링크 계층

- 한 노드로부터 다른 노드로 프레임을 전송하는 책임을 진다.

- 인접한 노드끼리의 전송에서 오류를 제어한다.

 


5과목: 정보 시스템 구축 관리

 

문제 81번. SAN

SAN = DAS + NAS

- 네트워크 상에 광채널 스위치의 이점인 고속 전송과 장거리 연결 및 멀티 프로토콜 기능을 활용(DAS+NAS)

- 각기 다른 운영체제를 가진 여러 기종들이 네트워크 상에서 동일 저장장치의 데이터를 공유하게 함으로써, 여러 개의 저장장치나 백업장비를 단일화시킨 시스템

 

 

문제 86번. 라우팅 프로토콜의 OSPF(Open Shortest Path First)

OSPF(Open Shortest Path First)란?

링크 상태 라우팅 프로토콜로, 네트워크의 토폴로지를 전체적으로 파악하여 최단 경로를 계산해준다.

(거리 벡터 라우팅이 아님!)

 

- 링크 상태 라우팅 프로토콜: 네트워크의 토폴로지를 전체적으로 파악하여 최단 경로를 계산

- 빠른 재수렴(Fast Convergence): 네트워크 변화에 신속하게 대처

- 멀티캐스팅 지원: 멀티캐스팅 라우팅 지원

- Dijkstra 알고리즘 사용: 최단 경로 탐색에 Dijkstra 알고리즘을 사용