본문 바로가기
정보처리기사 실기 (2023)

22년 1회 실기 정리

by 봉이로그 2023. 8. 21.

RAID 형태

- RAID1 

  - 두 개 이상의디스크를 미러링을 통해 하나의 디스크 처럼 사용

- RAID2

  - 오류 정정을 위한 해밍코드를 사용하는 방식

- RAID3

  - 하나의 디스크를 패리티(Parity) 정보를 위해 사용하고 나머지 디스크에 데이터를 균등하게 분산 저장

- RAID4

  - RAID3과 같은 방식이나, 블록단위로 분산 저장

- RAID5

  - 3개 이상의 디스크를 붙여서 하나의 디스크처럼 사용하고 각각의 디스크에 패리티 정보를 가지고 있는 방식

- RAID6

  - 하나의 패리티를 두 개의 디스크에 분산 저장하는 방식

 

로그 기반 회복 기법

- 장애 발생 시 회복 하는 기법

 

- 트랜잭션 로그를 이용하여 오류가 발생한 트랜잭션을 재 실행하여 복구를 수행한다. - REDO

- 트랜잭션 로그를 이용하여 오류와 관련된 내용을 취소하여 복구를 수행한다 - UNDO

 

지연갱신 - 트랜잭션이 다 처리가 발생한다음에 데이터베이스에 반영. REDO만 사용한다. UNDO를 사용하지 않는다.(필요 없음)

 

즉시갱신 - 이벤트가 발생하면 그때그때 집어넣는다. REDO는 당연히 필요, UNDO도 그때그때 데이터베이스에 넣기때문에 UNDO도 필요

 

트랜잭션의 특성

- 원자성 (Atomicity) -> 트랜잭션이 모두 반영되거나, 모두 반영되지 않아야 한다. 커밋, 롤백이란 연산과 연관이 있다.

- 일관성 (Consistency) -> 트랜잭션이 실행되면 데이터들이 일관성있게 반영되어야 한다.

- 독립성, 격리성 (Isolation) -> 하나의 트랜잭션이 수행중 다른 트랜잭션에 영향을 끼치면 안된다.

- 영속성 (Durabillity) -> 트랜잭션 연산의 결과는 영구히 보존되어야 한다.

 

데이터베이스의 이상현상 중, 삭제 이상에 대해 간략히 서술하시오.

- 한 튜플을 삭제할때 연쇄 삭제 현상으로 인해 정보 손실되는 것이다.

 

이상현상

- 삽입 이상이란 릴레이션에서 데이터를 삽입할때 의도와는 상관없이 원하지 않는 값들로 함께 삽입되는 현상이다.

- 삭제 이상이란 릴레이션에서 데이터를 삽입할때 의도와는 상관없는 값들로 함께 삭제되는 연쇄 삭제 현상이다.

- 갱신 이상이란 릴레이션에서 튜플에 있는 속성값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 모순이 생기는 현상이다.

 

이상현상을 없애기 위해 정규화를 진행

 

개념적 설계 - ERD(ER다이어그램을 만든다), 데이터베이스를 설계

동그라미 - 속성 / 마름모 - 관계 / 객체 - 네모

ERD를 이용해 만들다보면 이상현상이 발생하여 논리적설계에서 정규화를 한다

논리적 설계 - 정규화, 트랜잭션/인터페이스 설계

물리적 설계 - 저장장치 구조에 맞춰 (DDL을이용해 구조를 만든다), 무조건 성능고려, 물리적 설계, 파티션,인덱스,뷰,클러스터링도 만든다. 여러가지를 하다가 안되면, 반정규화를 한다.

 

비정규 릴레이션

제1정규형 - 도메인이 원자값

제2정규형 - 부분 함수적 종속 제거

제3정규형 - 이행적 함수 종속 제거

BCNF - 결정자이면서 후보키가 아닌것 제거

제4정규형 - 다치 종속 제거

제5정규형 - 조인 종속성 이용/제거

 

TKIP (Temproral Key Integrity Protocol)

임시 키 무결성 프로토콜은 IEEE 802.11의 무선 네트워킹 표준으로 사용되는 보안 프로토콜이다.

임시 키 무결성 프로토콜은 IEEE802.11i의 작업 그룹과 와이파이 얼라이언스엥서 WEP를 하드웨어의 교체없이 대체하기 위해 고안되었다.

 

특별한 하드웨어 없이 인간의 자연스러운 움직임을 인식하여 정보를 제공한다.

답: NUI

GUI, CUIm AUI, CLI

 

UI 설계 원칙

- 직관성

  - 화면의 버튼, 항목, 입력란 등 누구나 쉽게 이해하고 사용할 수 있도록 한다.

- 유효성

  - 사용자의 목적을 정확히 달성할 수 있도록 유용하고 효과적이어야 한다.

- 학습성

  - 사용자가 쉽게 배우고 익힐 수 있어야 한다.

- 유연성

  - 사용자의 요구를 최대한 수용하면서 오류를 최소화해야 한다.

 

SOLID 원칙

 

코드 분석도구

1. 소스코드의 실행 없이, 코드의 의미를 분석하여 결함을 찾아내는 코드 분석 기법

답: static (정적)

2. 소스코드를 실행하여 프로그램의 동작이나 결과를 확인하고, 메모리 누수, 스레드 결함등을 분석하는 기법

답: dynamic (동적)

 

애플리케이션 테스트 유형 분류

- 프로그램 실행 여부

  - 정적 테스트

  - 동적 테스트

- 테스트 기법

  - 화이트박스 테스트 - 루프검사, 

  - 블랙박스 테스트 - 동등분활, 원인효과, 경계값분석, 비교검사

- 테스트에 대한 시각

  - 검증 테스트

  - 확인 테스트

- 테스트 목적

  - 회복테스트

  - 안전테스트

  - 성능테스트

  - 구조테스트

  - 회귀테스트

  - 병행테스트

- 테스트 기반

  - 명세기반 테스트

  - 구조기반 테스트

  - 경험기반 테스트

 

- 테스트 오라클: 테스트가 참인지 거짓인지 확인하기위해 미리정의된 참값으로 테스트하는것

 - 참오라클

 - 샘플링오라클

 - 휴이스트오라클

 - 일관성 검사 오라클

 - 테스트커버리지

 

테스트 도구

자바 프로그래밍 언어용 유닛 테스트 프레임워크

테스트 결과는 Test클래스로 개발자에게 테스트 방법 및 클래스의 History를 공유 가능

어노테이션으로 간결하게 지원

답: JUnit

 

블랙박스 테스트 기법

- 경계값 분석 (Boundary Value Analysis)

- 동등분할 기법 (Equivalence Partitioning)

- 원인효과 기법 (Cause-effect Graph)

 

화이트박스 테스트 기법

- 기초경로검사 (Base Path Test)

- 루프 검사 (Loop Test)

- 결정 커버리지 (Decision Coverage)

 

기업이 주요 정보자산을 보호하기 위해 수립,관리,운영하는 정보 보호 관리체계가 인증 기준에 적합한지를 심사하여 인증을 부여하는 제도

답: ISMS

 

슈퍼키는 (유일성)의 속성을 갖는다.

후보키는 (유일성)과 (최소성)의 속성을 갖는다.

 

이 공격은 APT 공격에서 주로 쓰이는 공격이며, 타겟이 자주 들어가는 홈페이지를 파악했다가, 그 홈페이지의 취약점을 통해 악성코드를 심어 사용자가 모르게 해당 악성코드를 다운로드 받게 하고, 다운로드 된 악성코드를 통해 공격을 하는 방식을 취한다.

답: Watering Hole

 

V모델에서의 테스트 단계 

요구사항 분석 ---------------- 인수 테스트

    기능명세 분석 ------------ 시스템 테스트

                       설계 -------- 통합 테스트

                           개발 ---- 단위테스트

 

개발 - 단위 테스트, 정적/동적 테스트

설계 - 통합 테스트, 상향식/하향식 테스트 (드라이버, 스텁), 빅뱅방식(한꺼번에 테스트하는거), 백본테스트(샌드위치 테스트, 상하향식 다하는거)

기능명세 분석 - 시스템 테스트, 기능/비기능 테스트 (기능은 만든거 정상동작 테스트 / 비기능은 기능들 보안,성능,품질을 보는 테스트)

요구사항 분석 - 인수테스트, 알파/베타 테스트(알파는 개발자랑 사용자가 진행 / 베타테스트는 사용자만 진행)

 

와일드카드( %, _ )

이씨로 시작하는거 이%

이씨로 시작하고 한글자이다. 이_

 

SELECT 필드1,필드2,... FROM TABLE WHERE 성적 >= '90' AND NAME LIKE '이%'/'이_'

GROUP BY 반 HAVING SUM(점수) >= 100 ORDER BY 반 DESC/ASC

 

SUM 합계

AVG 평균

MAX 최대값

MIN 최소값

COUNT 갯수

 

1. 요소를 확장해주는 역활을 하며, 모든 항목을 하나의 요소로 추가

- extend

2. 리스트 내부 요소를 꺼내주는 함수, 해당 함수를 호출하는 리스트에서 해당 값을 삭제하면서 리턴시켜준다.

- pop

3. 리스트 내부의 요소의 순서를 뒤접주는 역활을 한다.

- reverse

 

def func1(num1, num2=2):

  print('a=', num1, 'b=', num2)

func1(20)

// a=20 b=2

 

class Car implements Runnable {

  int a;

  public void fun() {

  System.out.println("func call");

  }

}

public class Main{

  public static void main(String[] args) {

   Thread t1 = new Thread(new Car());

   t1.start();

  }

}

 

class A {

  int a;

  int b;

}

public class Main{ 

  static void func1(A a) {

    a.a *= 10; // a.a. = a.a * 10;

  }

  static void func2(A a) {

    a.a += a.b; // a.a = a.a + a.b;

  }

}

A a = new A();

a.a = 100;

func1(a);

a.b = a.a;

func2(a);

System.out.println(a.a); // 2000

 

접근지정자

private(클래스 내부에서만 사용)

protected(상속관계이거나, 같은패키지 내에서 사용)

public(아무데서나 사용)

default(같은 패키지/폴더내에서 사용)

 

#include<stdio.h>

int func(int i) {

    if(i <= 1) return 1;

    return i * func(i-1);

}

int main() {

    int in;

    scanf("%d", &in);

    printf("%d", func(in));

}

입력값이 5가 들어왔다고 가정한다.

 

i = 5, 4, 3, 2, 1

 

5 * func(4) -> 5 * 24

4 * func(3) -> 4 * 6

3 * func(2) -> 3 * 2

2 * func(1) -> 2 * 1

1

출력값은 120

 

#include<stdio.h>

int main() {

   int num = 1234;

   int div = 10;

   int res = 0;

   while(num (1) 0) {

      res = res * div;

      res = res + num (2) div;

      num = num (3) div;

    }

    printf("%d", res);

}

 

(1) >

(2) % (연산자 우선순위에따라 num % div를 먼저한다)

(3) / (정수 나누기 정수는 정수)

 

 

int isPrime(int number) {

    int i;

    for(i=2; i<number; i++) {

      if(number % i == 0) return 0;

    }

    return 1;

}

int main(void) {

    int number = 13195, max_div = 0, i;

    for(i=2; i<number; i++) {

       if(isPrime(i) ==1 && number % i == 0)

         max_div = i;

    printf("%d", max_div);

    return 0;

}

 

답: 29

소수 구하는 문제

number % i == 0의 조건식에 접근해서 13195 % i를 했을경우 5부터 나머지가 0이다.

5,7,11,13,29... 소수를 쭉쭉쭉 나가다보면 29에서 답이 나온다.

 

 

'정보처리기사 실기 (2023)' 카테고리의 다른 글

22년 2회 실기 정리  (0) 2023.08.07
UML && 디자인패턴 정리  (0) 2023.08.04
개념정리 #1  (0) 2023.08.01