관리 메뉴

피터의 개발이야기

[정처기 실기] 정보처리기사 실기 - 2021년 3회 기출문제 본문

개발이야기/정보처리기사

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

기록하는 백앤드개발자 2024. 3. 25. 09:52
반응형

 

ㅁ 들어가며

ㅇ 기출문제를 풀어보고 공부한 내용을 노트형태로 정리하였다.

ㅇ 홍달샘- 정보처리기사 실기 2021년 3회 - 기출해설특강

    ㄴ 문제 번호 클릭 -> 동영상 설명 이동

ㅇ 시나공 정보처리기사 필기 핵심요약을 참조

 

 

1. AAA, Triple-A라고 읽는 이 용어는 보안의 세 가지를 합쳐 축약한 용어이다. 다음 해당하는 용어를 <보기>에서 찾아 쓰시오.

Authentication, Application, Accounting, Ascii, Avalanche, Authorization
 <보기>
A : 보안 기능에서, 사람이나 프로세스의 신분을 확인하는 것
B : 검증된 사용자에게 어떤 수준의 권한과 서비스를 허용하는 것
C : 사용자의 자원에 대한 사용 정보를 모아서 과금, 감사, 용량증설, 리포팅 등을 실시하는 것
더보기

A: Authentication

B: Authorization

C: Accounting

 

 

#핵심 356) 보안 요소

  • 기밀성(Confidentiality): 시스템 내의 정보와 자원은 인가된 사용자에게만 접근이 허용
  • 무결성(Integrity): 시스템 내의 정보는 오직 인가된 사용자만 수정할 수 있음
  • 가용성(Availability): 인가받은 사용자는 시스템 내의 정보와 자원을 언제라도 사용할 수 있음

# 핵심 199) 접근통제 기술

  • 임의적 접근 통제(DAC): 신분에 근거하여 객체에 대한 접근을 제한하는 방법
  • 강제적 접근 통제(MAC): 주체가 갖는 접근 허가 권한에 근거하여 객체에 대한 접근을 제한하는 방법
  • 역할 기반 접근 통제(RBAC): 중앙 관리자가 조직 내 맡은 역할에 기초하여 자원에 대한 접근을 제한하는 방법

 

 

 

2. 데이터 제어어(DCL)의 하나인 GRANT의 기능에 대해 간략히 서술하시오.

더보기

데이터베이스 사용자의 권한을 부여를 위한 명령어

 

 

# 핵심 211) GRANT / REVOKE


GRANT RESOURCE TO NABI;

REVOKE GRANT OPTION FOR UPDATE ON 고객 FROM STAR;

 

 

3. 다음에 설명하는 보안위협에서 괄호에 들어갈 알맞은 답을 쓰시오.

(   ) 스푸핑은 MAC 주소를 속여 랜에서의 통신 흐름을 왜곡시키는 공격이다. 공격 대상 컴퓨터와 서버 사이의 트래픽을 공격자의 컴퓨터로 우회시켜 패스워드 정보 등 원하는 정보를 획득할 수 있다.

 

 

# 스푸핑(Spoofing)
ㅇ IP 스푸핑
ㄴ IP 자체의 보안 취약성을 악용한 것으로 자신의 IP주소를 속여서 접속하는 공격
 ㄴ IP 스푸핑을 통해 서비스 거부 공격(DoS)도 수행 가능하며 공격대상 컴퓨터와 서버 사이의 연결된 세션을 끊을 수도 있다.
 ㄴ 종단 인증(end point authentication) 같은 방법으로 해결한다.

 

ㅇ DNS 스푸핑
 ㄴ 공격대상에게 전달되는 DNS IP주소를 조작하여 의도치 않는 주소로 접속하는 공격
 ㄴ 공격대상은 정상적인 URL을 통해서 접속하지만, 실제로 가짜 사이트로 접속된다.

 

 

4. 결함도의 종류 중, 어떤 모듈이 다른 모델을 호출할 때, 단순히 값만 전달되는 형태가 아닌 제어 신호를 전달할 때 생기는 결합도를 영문으로 쓰시오. 

더보기

Control Coupling

 

# 핵심 055) 결합도(Coupling)

# 핵심 056) 응집도(Cohesion)

 

5. 디자인 패턴에 관한 설명에서 알맞은 답을 <보기>에서 고르시오.

Abstract Factory, Factory Method, Prototype, Builder, Observer, Facade, Composite, Template Method, Singleton
<보기>
• 객체 생성 처리를 서브 클래스로 분리해 처리하도록 캡슐화하는 패턴
• 객체의 생성 코드를 별도의 클래스/메서드로 분리함으로써 객체 생성의 변화에 대비하는 데 유용하다.
• 상위클래스에서 객체를 생성하는 인터페이스를 정의하고, 하위클래스 에서 인스턴스를 생성하도록 하는 방식
• Virtual-Constructor 패턴이라고도 함

 

 

# 핵심 066) 생성 패턴 (Creational Pattern)

ㅇ 추상 팩토리(Abstract Factory)

 ㄴ구체적인 클래스에 의존하지 않고, 인터페이스를 통해 서로 연관 . 의존하는 객체들의 그룹으로 생성 하여 추상적으로 표현함

 ㄴ 연관된 서브 클래스를 묶어 한 번에 교체하는 것이 가능함

 

ㅇ 빌더(Builder)

 ㄴ 작게 분리된 인스턴스를 건축 하듯이 조합하여 객체를 생성함

 ㄴ 객체의 생성 과정과 표현 방법을 분리하고 있어. 동일한 객체 생성에서도 서로 다른 결과를 만들어 낼 수 있음

 

ㅇ 팩토리 메소드(Factory Method)

 ㄴ 객체 생성을 서브 클래스에서 처리하도록 분리하여 캡슐화한 패턴

 ㄴ 상위 클래스에서 인터페이스만 정의하고 실제 생성은 서브 클래스가 담당함

 ㄴ 가상 생성자(Virtual Constructor) 패턴이라고도 함

 

ㅇ 프로토타입 패턴(Prototype)

 ㄴ 원본 객체를 복제하는 방법으로 객체를 생성하는 패턴

 ㄴ 일반적인 방법으로 객체를 생성하며, 비용이 큰 경우 주로 이용함

 

ㅇ 싱글톤(Singleton)

 ㄴ 하나의 객체를 생성하면 생성된 객체를 어디서든 참조할 수 있지만, 여러 프로세스가 동시에 참조할 수는 없음

 ㄴ 클래스 내에서 인스턴스가 하나뿐임을 보장하며, 불필요한 메모리 낭비를 최소화 할 수 있음

 

6. 다음은 파일 구조에 대한 설명이다. 빈 칸에 알맞은 답을 작성하시오.

  • 파일의 구조는 파일을 구성하는 레코드들이 보조기억장치에 편성되는 방식을 의미하는 것으로, 편성 방법에 따라 순차, ( ), 랜덤, 해싱 등이 있다.
  • (  )은 순차 처리와 랜덤 처리가 모두 가능하도록 레코드들을 키 값 순으로 정렬하여 기록하여 데이터에 접근한다. 자기 디스크에서 주로 사용된다.
더보기

색인

 

# 파일구조

ㅇ 순차 파일(Sequential File, 순서 파일): 비디오테이프
 ㄴ 순차 파일은 레코드를 논리적인 처리 순서에 따라 연속된 물리적 공간으로 기록하는 것
ㅇ 직접 파일(Direct File)
 ㄴ 파일을 구성하는 레코드를 임의의 물리적 저장공간에 기록하는 것

ㅇ 색인 순차 파일(Indexed sequential Fille)
 ㄴ 순차 파일과 직접 파일에서 지원하는 편성 방법이 결합된 형태

 

 

7. 다음은 소프트웨어 테스트에 관한 설명이다. 알맞은 답을 쓰시오.

  • A 는 소프트웨어의 하위 모듈에서 상위 모듈 방향으로 통합하면서 테스트 하는 기법이다.
  • 상위 모듈의 역할을 하는 B가 필요하다.
  • B 는 하위 모듈을 순서에 맞게 호출하고, 호출할 때 필요한 매개 변수를 제공하며, 반환 값을 전달하는 역할을 한다.
더보기

A: 상향식 

B: 드라이버

 

# 핵심 138) 상향식 통합 테스트(Bottom Up Integration Test)

# 핵심 139) 테스트 드라이버와 테스트 스텁의 차이점

 

 

# 태스트 레벨

단위

 ㄴ 정적, 동적

통합

 ㄴ 상향식(드라이버), 하향식(스텁), 빅뱅, 백본

시스템

 ㄴ 기능, 비기능

인수테스트

 ㄴ 알파, 베타

 

8. Windows Mac os등에서 사용하는 인터페이스로, 사용자가 명령을 직접 입력하지 않고, 아이콘 등을 클릭하여 작업을 수행하는 사용자 인터페이스를 영문약어로 작성하시오.

 

# 핵심 032) 사용자 인터페이스의 기본 원칙

ㅇ 직관성 : 누구나 쉽게 이해하고 사용할 수 있
ㅇ 유효성 : 사용자의 목적을 정확하고 완벽하게 달성
ㅇ 학습성 : 누구나 쉽게 배우고 익힐 수 있
ㅇ 유연성 : 사용자의 요구사항을 최대한 수용하고 실수를 최소화

 

9. 다음 UML(Unified Modeling Language)에 관한 설명에서 괄호에 들어갈 알맞은 답을 쓰시오.

  • (   ) 는 자기만의 속성(attribute)과 일정한 행동(behavior)으로 구성되어 있다.
  • 서로 연관이나 상속, 의존 관계 등으로 서로 간의 상호 작용을 표현한다.
  • 대표적인 구조 다이어그램이다.
더보기

클래스 다이어그램

 

# 핵심 025) 다이어그램(Diagram)

ㅁ 구조적(Structural) 다이어그램의 종류

ㅇ 클래스 다이어그램(Class Diagram)

 ㄴ 클래스와 클래스가 가지는 속성, 클래스 사이의 관계를 표현함

 ㄴ 시스템의 구조를 파악하고 구조상의 문제 점을 도출할 수 있음
ㅇ 객체 다이어그램(Object Diagram)

 ㄴ 클래스에 속한 사물(객체)들, 즉 인스턴스(Instance)를 특정 시점의 객체와 객체 사이의 관계로 표현함

 ㄴ 럼바우(Rumbaugh) 객체지향 분석 기법에서 객체 모델링에 활용됨

ㅇ 컴포넌트 다이어그램(Component Diagram)

 ㄴ 실제 구현 모듈인 컴포넌트 간의 관계나 컴포넌트 간의 인터페이스를 표현함

 ㄴ 구현 단계에서 사용되는 다이어그램 

ㅇ 배치 다이어그램 (Deployment Diagram)

 ㄴ 결과물, 프로세스, 컴포넌트 등 물리적 요 소들의 위치를 표현함

 ㄴ 노드와 의사소통(통신) 경로로 표현함

 ㄴ 구현 단계에서 사용되는 다이어그램

ㅇ 복합체 구조 다이어그램(Composite Structure Diagram)

 ㄴ 클래스나 컴포넌트가 복합 구조를 갖는 경우 그 내부 구조를 표현함

ㅇ 패키지 다이어그램(Package Diagram)

 ㄴ 유스케이스나 클래스 등의 모델 요소들을 그룹화한 패키지들의 관계를 표현함

 

ㅁ 행위(Behavioral) 다이어그램의 종류

ㅇ 유스케이스 다이어그램 (Use Case Diagram)

  ㄴ 사용자의 요구를 분석하는 것으로 기능 모델링 작업에 사용함
  ㄴ 사용자(Actor)와 사용 사례(Use Case)로 구성되며, 사용 사례 간에는 여러 형태의 관계로 이루어짐

ㅇ 순차 다이어그램 (Sequence Diagram)

  ㄴ 상호 작용하는 시스템이나 객체들이 주고받는 메시지를 표현함

ㅇ 커뮤니케이션 다이어그램 (Communication Diagram)

  ㄴ 순차 다이어그램과 같이 동작에 참여하는 객체들이 주고받는 메시지를 표현하는데, 메시지뿐만 아니라 객체들간의 연관까지 표현함
ㅇ 상태 다이어그램 (State Diagram)

  ㄴ 하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호 작용에 따라 상태가 어떻게 변화하는지를 표현함
  ㄴ 럼바우(Rumbaugh) 객체지향 분석 기법에서 동적 모델링에 활용됨

ㅇ 활동 다이어그램 (Activity Diagram)
  ㄴ 시스템이 어떤 기능을 수행하는지 객체의 처리 로직이나 조건에 따른 처리의 흐름을 순서에 따라 표현함
ㅇ 상호작용 개요 다이어그램 (Interaction Overview Diagram)
  ㄴ 상호작용 다이어그램 간의 제어 흐름을 표현함

ㅇ 타이밍 다이어그램 (Timing Diagram)
  ㄴ 객체 상태 변화와 시간 제약을 명시적으로 표현함

 

10. 블록 암호의 일종으로, IBM에서 개발하고, 미국 NBS(현재 NIST)에서 국가 표준으로 정한 암호화 알고리즘이나 취약점이 발견되어 현재는 잘 사용되지 않는다. 블록 크기는 64비트, 키 길이는 56회이며 16라운드를 수행한다. 페이스텔(Feistel) 구조를 사용하는 암호화 알고리즘은 무엇인지 쓰시오.

 

# 핵심 364) 양방향 알고리즘 종류

 

※ 암호 방식의 분류
• 대칭키 (비밀키)
 - Stream - LFSR, RC4
 - Block MY - DES, AES, IDEA
• 비대칭키 (공개키)
 - 인수분해 이용 - RSA, Robin
 - 이산대수- Elgamal, DSA
 - 타원곡선- ECC

 

 

11.  다음은 테스트케이스의 구성요소에 대한 설명이다. 괄호 안에 들어갈 알맞는 답을 쓰시오.

더보기

1: 테스트 조건

2: 테스트 데이터

3: 예상 결과

 

12. UML 관계에 대한 설명이다. 다음 A, B에 들어갈 알맞은 용어를 쓰시오.

- A : 클래스들 사이의 전체 또는 부분 같은 관계
- B : 한 클래스가 다른 클래스를 포함하는 상위 개념일 때의 IS-A관계
더보기

A: Aggregation

B: Generalization

 

 

# 핵심 024 관계(Relationships)

연관(Association) 관계

  ㄴ 2개 이상의 사물이 서로 관련되어 있음을 표현
집합(Aggregation) 관계

  ㄴ 하나의 사물이 다른 사물에 포함되어 있는 관계를 표현
포함(Composition) 관계
  ㄴ 집합 관계의 특수한 형태로, 포함하는 사물의 변화가 포함되는 사물에게 영향을 미치는 관계를 표현
일반화(Generalization) 관계
  ㄴ 하나의 사물이 다른 사물에 비해 더 일반적인지 구체적인지를 표현

의존(Dependency) 관계
  ㄴ 연관관계와 같이 사물사이에서로 연관은 있으나 필요에의해 서로에게영향을주는짧은시간동안 만 연관을 유지하는 관계를 표현한다.
  ㄴ 일반적으로 한 클래스가 다른 클래스를 오퍼레이션의 매개 변수로 사용하는 경우에 나타나는 관계이다.
실체화(Realization) 관계: 인터페이스 구현체
  ㄴ 사물이 할 수 있거나 해야하는 기능(행위,인터페이스)으로 서로를 그룹화 할 수 있는 관계를 표현

 

 

13. OSI 7Layer에 대한 설명에서 들어갈 알맞은 계층을 쓰시오.

A : 물리계층을 통해 송수신 되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행할 수 있도록 도와준다.
B : 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능
C : 데이터 표현이 상이한 응용 프로세스의 독립성을 제공하고, 암호화 한다.
더보기

A: 데이터링크 계층

B: 네트워크 계층

C: 표현 계층

 

# 핵심 309) OSI 참조 모델, 홍샘 설명

 

 

14. 테스트 기법 중, 입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석하여 효용성 높은 검사 사례를 선정하여 검사하는 기법을 아래에서 찾아 쓰시오.

Equivalence Partitioning, Boundary Value Analysis, Cause-effect Graphing, Fault based, Base Path Test, Loop Test, Comparison Testing
더보기

Cause-effect Graphing

 

# 핵심 131) 블랙박스 테스트의 종류

 

ㅇ 동치분할검사 (Equivalence Partitioning)

  ㄴ 입력 자료에 초점을 맞춰 테스트 케이스(동치 클래스)를 만들고 검사하는 방법으로 동등분할 기법이라고도 함
  ㄴ 프로그램의 입력 자료의 개수를 균등하게 테스트 케이스를 정하고, 해당 입력 자료에 맞는 결과가 출력되는지 확인

 

ㅇ 경계값 분석 (Boundary Value Analysis)

  ㄴ 입력 자료에만 치중한 동치 분할 기법을 보완 하기위한기법
  ㄴ 입력 경계값에서 오류가 발생될 확률이 높다.  경계값을 테스트 케이스로 선정

 

ㅇ 원인-효과 그래프 검사 (Cause-Effect Graphing Testing)

  ㄴ 입력 출력 데이터의 관계를 체계적으로 분석하여 효용성이 높은 테스트 케이스를 선정

 

ㅇ 오류예측검사(Error Guessing)

  ㄴ 과거의 경험자들이 오류예측검사는 기법, QA의 노련함.

 

ㅇ 비교 검사 (Comparison Testing)

  ㄴ 여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 동일한 결과가 출력되는지 테스트하는 기법, TDD

 

 

15. T1 테이블과 T2테이블을 참고하여 SQL 실행결과를 쓰시오.

SELECT COUNT(*) AS CNT 
FROM A CROSS JOIN B
WHERE A.NAME LIKE B.NAME

 

 

16. 다음 Python 프로그램을 분석하여 실행 결과를 쓰시오.

x, y = 100, 200
print(x== y)
더보기

False

 

17. 다음 C언어 코드에 대한 알맞는 출력값을 쓰시오.

#include  
struct jsu {
  char nae[12];
  int os, db, hab, hhab;
};
 
int main(){
  struct jsu st[3] = {{"데이터1", 95, 88}, 
                    {"데이터2", 84, 91}, 
                    {"데이터3", 86, 75}};
  struct jsu* p;
 
  p = &st[0];
 
  (p + 1)->hab = (p + 1)->os + (p + 2)->db;
  (p + 1)->hhab = (p+1)->hab + p->os + p->db;
 
  printf("%dn", (p+1)->hab + (p+1)->hhab);
}

 

18. 다음 C언어 코드에 대한 알맞는 출력값을 쓰시오.

int main(){
  int *arr[3];
  int a = 12, b = 24, c = 36;
  arr[0] = &a;
  arr[1] = &b;
  arr[2] = &c;
 
  printf("%dn", *arr[1] + **arr + 1);
}

 

19. 다음 Java 코드에 대한 알맞는 출력값을 쓰시오.

public class testco {
 public static void main(String[] args) {
  int a = 3, b = 4, c = 3, d = 5;
  if((a == 2 | a == c) & !(c > d) & (1 == b ^ c != d)) {
   a = b + c;
    if(7 == b ^ c != a) {
     System.out.println(a);
    } else {
    System.out.println(b);
    }
  } else {
    a = c + d;
    if(7 == c ^ d != a) {
    System.out.println(a);
    } else {
    System.out.println(d);
    }
  }
 }
}

 

20.  다음 Java 코드에 대한 알맞는 출력값을 쓰시오.

class Connection {
  private static Connection _inst = null;
  private int count = 0;
    static public Connection get() {
      if(_inst == null) {
      _inst = new Connection();
      return _inst; 
      }
    return _inst;
    }
  public void count() { count ++; }
  public int getCount() { return count; }
}
 
public class testcon {
  public static void main(String[] args) {
    Connection conn1 = Connection.get();
    conn1.count();
    Connection conn2 = Connection.get();
    conn2.count();
    Connection conn3 = Connection.get();
    conn3.count();
    
    System.out.print(conn1.getCount());
  }
}

 

반응형
Comments