[정보처리기사 실기] 2021 2회

bonnie·2021년 9월 27일
0
post-thumbnail

📌 하.......바보 같이 한문제 고쳐서 떨어진 시험....너무 자괴감이 들고요.....? 맞게 써놓고 마지막에 왜 고쳤는지 아직도 모르겠고요....?ㅠㅠㅠ이제 같은 문제는 다시 안틀리겠다는 각오로.....3회는 무조건 뿌셔뿌셔!!
출처 : https://ss-o.tistory.com/141


1. 애드혹 네트워크

네트워크 장치를 필요로 하지 않고 네트워크 토폴로지가 동적으로 변화되는 특징이 있으며 응용 분야로는 긴급구조, 긴급회의, 전쟁터에서의 군사 네트워크에서 사용됨

  • 고정된 기반 망의 도움 없이 이동 노드들 간에 자율적으로 구성되는 망으로서, 네트워크에 자율성과 융통성을 부여한 차세대 네트워크 기술

2. UX / UI

  • UX : 제품과 시스템을 사용하면서 느끼는 사용자의 직접적, 간접적인 경험을 의미(사람의 감정이나 경험을 나타내는 개념)
  • UI : 사용자와 시스템 사이에서 의사소통을 할 수 있도록 고안된 물리적인 가상 매개체로 CLI, GUI, NUI, OUI가 있음
    • CLI : 명령어를 텍스트로 입력해 조작하는 사용자 인터페이스
    • GUI : 그래픽 환경을 기반으로 한 마우스, 전자펜을 이용하는 사용자 인터페이스
    • NUI : 키보드나 마우스 없이 신체부위를 이용하는 사용자 인터페이스
    • OUI : 현실에 존재하는 모든 사물이 입출력 장치로 변화할 수 있는 사용자 인터페이스

3. 트랜잭션의 원자성

트랜잭션 연산시 데이터베이스에 모두 반영(commit)되거나 전혀 반영되지 않고 복구 되어야함(rollback)
일관성, 독립성, 영속성도 다시 정리해서 암기할 것

4. 정규화 단계

원,부,이,결,다,조

  • 1NF(제1정규화) : 테이블 내 속성 값은 원자값을 가져야함.
  • 2NF(제2정규화) : 부분 함수 종속성을 제거해야함.
  • 3NF(제3정규화) : 이행 함수 종속성을 제거해야함.
  • BCNF : 결정자 함수의 종속성을 제거하고 모든 결정자가 후보키 집합에 속한 정규형
  • 4NF(제4정규화) : 다중값 종속을 제거해야함.
  • 5NF(제5정규화) : 조인 종속성을 제거해야함.
    테이블을 보고 정규화 단계를 구분할 수 있어야함

5. 튜플을 수정하는 SQL

(①) 테이블명 (②) 컬럼=값 WHERE 점수 >= 90;

① : UPDATE
② : SET

6. JOIN에 관한 SQL

SELECT ~~ FROM 학생정보 a JOIN 학과정보 b (①) a.학과 = b.(②)

① : ON
② : 학과

7. Python

a = 100
result = 0
for i in range(1,3):
  result = a >> i
  result = result + 1
  
print(result)

100을 2진수로 변환 : 0110 0100
i가 1일 때 :
오른쪽으로 1비트 이동 : 0011 0010
다시 10진수로 변환 : 50
result = 51


i가 2일 때 :
오른쪽으로 2비트 이동 : 0001 1001
다시 10진수로 변환 : 25 (2의 0승 = 1)
result = 26
어차피 result 값을 덮어쓰기 때문에 i가 1인 경우는 굳이 계산할 필요 없음

<Shift 연산자 알기>
Shift 연산자 : 10진수를 2진수로 표현한 후 비트를 이동시키는 연산자

  • <<
    • ex) 10 << 2 : 10을 2진수로 변환 후 비트 값을 왼쪽으로 2칸씩 이동함
      10의 2진수 : 00001010
      왼쪽으로 2비트 이동 : 00101000
      그 값을 10진수로 다시 변환 : 40
      결과적으로 a << b의 값을 구하려면 a * 2^b(2의 b승)
  • >>
    • 10 >> 2 : 10을 2진수로 변환 후 비트 전체를 오른쪽으로 2칸 이동함. 비트 범위 밖으로 1이 넘어간다면 그냥 사라지는 것.
      10의 2진수 : 00001010
      오른쪽으로 2비트 이동 : 00000010
      그 값을 10진수로 다시 변환 : 2
      만약 비트 이동 후 1이 모두 사라지게 된다면 데이터 손실이 발생하게 됨

8. AES

DES를 대체하는 알고리즘으로 대칭키 블록 암호. 블록 크기는 128비트이며 키의 길이는 128, 192, 256비트 세가지 종류가 있다.

9. 화이트 박스 테스팅 기법

  • 화이트박스 테스팅
    • 구조 기반 기법, 개발자 관점에서의 단위 테스팅 기법
    • 소프트웨어 내부 소스 코드를 보면서 필요한 정보들을 사용
    • 컴포넌트 또는 소프트웨어의 구조를 중심으로 테스트 케이스를 도출
  • 구조 커버리지
    • 코드와 개발 설계 등의 소프트웨어 구현 정보를 기반으로 테스트 케이스를 설계
  • 구문 커버리지
    • 프로그램 내의 모든 문장들을 한 번 이상 수행하도록 테스트 케이스를 설계
  • 결정 커버리지
    • 프로그램 내의 각 분기들을 한 번 이상 수행하도록 테스트 케이스를 설계
      • 전체 조건식이 최소한 참이 한 번, 그리고 거짓이 한 번 선택 되었는지 측정하여 퍼센테이지로 표현함
  • 조건 커버리지
    • 조건들이 참이 되는 경우와 거짓이 되는 경우를 모두 수행하도록 테스트 케이스를 설계
      • 전체 조건식의 결과와 관계 없이 각 개별 조건식이 참 한 번, 거짓 한 번을 모두 갖도록 함
  • 다중 조건 커버리지
    • 프로그램 내의 모든 개별 조건식의 모든 가능한 논리적 조합을 고려한 강력한 커버리지
    • 출시 전, 반드시 100% 결함을 제거해야 하는 제품 테스트에서 주로 사용함
  • 변경 조건/결정 커버리지
    • 각 개별 조건식이 다른 개별 조건식에 무관하게 전체 조건식의 결과에 독립적으로 영향을 주는 것
  • [구조 기반 기법 고급]
    • 분할 방법으로 접근한 조건/결정 커버리지
      • 분할(Splitting) : 생성한 모든 논리적 조합을 분할하여 테스트 케이스를 작성하는 방식. 결함의 원인 판단은 빠르지만 테스트 케이스 수가 크게 증가함
      • 포함(Including) : 생성한 조합 중 단 하나만 선택해서 하나의 논리적 테스트 케이스를 작성. 결함의 원인 판단이 느리지만 적당한 커버리지 만족과 테스트 케이스 수를 가짐

10. 이씨성을 내림차순으로 정렬하는 SQL

SELECT ~~ FROM ~~ WHERE 이름 LIKE (①) ORDER BY (②)

① : 이%
② : DESC

11. 응집도

[응집도] : 정보은닉 개념 확장, 응집도가 강할수록 품질 상승
(약) 우 논 시 절 통 순 기 (강)

  • 기능적 : 모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우
  • 순차적 : 모듈 내 하나의 활동으로 부터 나온 출력 데이터를 그 다음 활동 입력 데이터로 사용할 경우
  • 통신적(교환적) : 동일한 입출력을 사용하여 서로 다른 기능을 수행하는 구성 요소들이 모였을 경우
  • 절차적 : 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우
  • 시간적 : 특정 시간에 처리되는 몇 개의 기능을 모아 하나의 모듈로 작성한 경우
  • 논리적 : 유사한 성격을 갖거나 특정 형태로 분류 되는 처리 요소들이 하나의 모듈이 되는 경우
  • 우연적 : 모듈 내부의 각 구성 요소들이 서로 관련 없는 요소로만 구성된 경우
    [결합도] : 상호의존의 정도, 결합도가 약할수록 품질 상승
    (강) 내 공 외 제 스 자 (약)
  • 자료 : 어떤 모듈이 다른 모듈을 호출하면서 매개 변수나 인수로 데이터를 넘겨주고, 호출 받은 모듈은 받은 데이터에 대한 처리 결과를 다시 돌려주는 방식
  • 스탬프 : 두 모듈이 동일한 자료 구조를 조회하는 경우
  • 제어 : 한 모듈이 다른 모듈의 상세한 처리 절차를 알고 있어 이를 통제하는 경우나, 처리 기능이 두 모듈에 분리 되어 설계된 경우, 다른 모듈에서 흐름을 제어함
  • 외부 : 어떤 모듈에서 선언한 데이터를 외부의 다른 모듈에서 참조할 때
  • 공통 : 공유되는 공통 데이터 영역을 여러 모듈이 사용할 때
  • 내용 : 한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 직접 참조하거나 수정할 때

12. 패킷 교환 방식

(1) 목적지 호스트와 미리 연결 후 통신하는 연결형 교환 방식
(2) 헤더에 붙여서 개별적으로 전달하는 비연결형 교환 방식

① : 가상 회선 방식
② : 데이터그램 방식
참고 : https://gotwo.tistory.com/107?category=653990

  • [패킷 교환 방식]
    • 패킷 : 네트워크를 통해 전송하기 쉽도록 자른 데이터 단위이며, 수신하는 곳에서는 원래의 데이터로 다시 재조립됨
    • 일정한 데이터 블록인 패킷을 교환기가 수신측 장소에 따라 적당한 통신 경로를 선택하여 전송하는 교환 방식
    • 전송하고자 하는 정보를 일정한 크기의 데이터로 분할한 후, 송수신 주소인 헤더를 각각에 부여한 패킷 단위로 전송하는 방식
    • 가상 회선 방식(Virtual Circuit)
      • 데이터를 전송하기 전에 논리적 연결이 설정됨(연결 지향형)
      • 모든 패킷을 전송하면 가상회선이 해제되고 패킷들은 전송한 순서대로 도착함
    • 데이터그램 방식
      • 데이터를 전송하기 전에 논리적 연결이 설정 되지 않으며, 패킷이 독립적으로 전송됨
      • 패킷을 수신한 라우터는 최적의 경로를 선택하여 패킷을 전송하는데, 하나의 메시지에서 분할된 여러 패킷은 서로 다른 경로로 전송될 수 있음(비연결 지향형)
  • [회선 교환 방식]
    • 송수신 단말 장치 사이에서 데이터를 전송할 때마다 통신 경로를 설정하여 데이터를 교환하는 방식
    • 통화로 동작에 의해 공간분할 방식과 시분할 방식으로 구분

13. 디자인 패턴 - 행위 패턴

반복적으로 사용되는 객체들의 상호작용을 패턴화한 것으로 클래스나 객체들이 상호작용하는 방법.
알고리즘 등과 관련된 패턴으로 그 예는 Interpreter, Observer, Command가 있음
참고 : 디자인 패턴 정리

14. 병행제어 기법 - Locking(잠금)

  • 병행 제어
    • 다중 프로그램의 이점을 활용하여 동시에 여러 개의 트랜잭션을 병행 수행할 때, 실행되는 트랜잭션들이 데이터베이스의 일관성을 파괴하지 않도록 트랜잭션 간의 상호 작용을 제어하는 기술
  • 병행 제어 기법
    • Locking, 2Phase Locking, 낙관적 검증 기법, Timestamp Ordering 기법,다중 버전 동시성 제어기법(MVCC)
    • Locking(로킹) 기법 : 주요 데이터의 액세스를 상호 배타적으로 하는 것으로, 트랜잭션들이 어떤 로킹 단위를 액세스 하기 전에 잠금을 요청해서 잠금이 허락되어야만 그 로킹 단위를 액세스 할 수 있도록 하는 기법

15. 럼바우 데이터 모델링

소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링하는 객체지향 분석 기법

  • 객체 모델링(Object) : 클래스 다이어그램, 정보 모델링(Information)이라고도 하며 시스템에서 요구하는 객체를 찾고 객체들 간의 관계를 정의, 가장 중요하며 선행되어야함.
  • 동적 모델링(Dynamic) : 상태 다이어그램, 시간의 흐름에 따라 객체들 사이의 제어 흐름, 동작 순서 등의 동적인 행위를 표현함
  • 기능 모델링(Functional) : 자료흐름도(DFD), 프로세스들의 자료 흐름을 중심으로 처리과정을 표현함
    • 자료흐름도(Data Flow Diagram) : 자료 흐름 그래프 또는 버블 차트라고 부름
    • 자료흐름도(DFD)의 구성 요소 : Process(원), Data Flow(화살표), Data Store(직선-단선/이중선), Terminator(사각형)
      객 → 동 → 기
      참고 : https://devinus.tistory.com/9

16. C언어

int mp(int base, int exp);

int main(){
  int res;
  res = mp(2, 10);
  printf("%d ", res);
  
  return 0;
}

int mp(int base, int exp){
  int res = 1;
  for(int i=0; i<exp; i++){
    res = res * base;
  }
  return res;
}

답 : 1024
2를 10번 곱하기 때문에 2^10

17. Java - 빈칸에 들어가는 것

public class Test{
  public static void main(string[] args){
    System.out.print(check(1));
  }
  (       ) String check(int num){
    return (num >= 0) ? "positive" : "negative";
  }
}
[결과]
positive

답 : static
static method에서 객체를 생성하지 않고 다른 method를 호출 했다면 동일한 static method일 것.

18. C언어

int main(){
  int array[3];
  int s = 0;
  *(array + 0) = 1;
  array[1] = *(array + 0) + 2;
  array[2] = *array + 3;
  for(int i=0; i<3; i++){
    s = s + array[i];
  }
  printf("%d" , s);
}

답 : 8
(array + 0) = array[0] = 1
array[1] = array[0] + 2 = 3
array = array[0] ∴ array[2] = array[0] + 3 = 4
1 + 3 + 4 = 8

19. Java - 상속과 오버라이딩

public class ovr1{
  public static void main(String[] args){
    ovr1 a1 = new ovr1();
    ovr2 a2 = new ovr2();
    System.out.println(a1.sun(3,2) + a2.sun(3,2));
  }
  
  int sun(int x, int y){
    return x + y;
  }
}

class ovr2 extends ovr1{
  int sun(int x, int y){
    return x - y + super.sun(x, y);
  }
}

답 : 11
a1.sun(3,2) = 3 + 2 = 5
a2.sun(3,2) = 3 - 2 + ovr1.sun(3, 2) = 1 + 5 = 6

20. 테스트 단위 - 스텁(Stub)

테스트 레벨 : 한번에 총체적으로 조직화하고 관리하는 테스트 활동의 묶음
* 단위 테스트, 통합 테스트, 시스템 테스트, 인수 테스트

  • 단위 테스트(Unit Test)
    • 코딩 직후 SW 설계의 최소 단위인 모듈이나 컴포넌트에 초점을 맞춰 테스트 진행
    • 사용자 요구사항을 기반으로 한 기능성 테스트 최우선
    • 주로 구조기반(화이트박스 테스트) 시행
  • 통합 테스트
    • 시스템이나 시스템 구성 요소 또는 소프트웨어 프로그램의 데이터 및 기능의 인터페이스가 정상적으로 작동하는지에 중점
    • 단위 테스트를 통과한 개발 소프트웨어/하드웨어 컴포넌트 간 인터페이스 및 연동 기능을 구조적으로 접근하여 테스트
      • 빅뱅 통합 테스트 : 모든 모듈을 한꺼번에 통합하고 결합 격리가 어려움
      • 상향식 통합 : 가장 하부의 모듈부터 통합해가면서 상부로 올라감. 드라이브가 필요
      • 하향식 통합 : 가장 상부의 모듈부터 통합해가면서 하부로 내려감. 스텁이 필요
      • 백본 통합 : 소프트웨어 리스크가 높은 것을 우선적으로 통합하고 접근, 드라이버, 스텁은 필요에 따라 만들어서 사용
  • 시스템 테스트
    • 실제환경과 가능한 유사한 환경에서 진행
    • 기능적 요구사항(명세기반 기법), 비기능적 요구사항(구조기반 기법)
    • 개발 조직과는 독립된 테스트 조직에서 수행되어야 하며 사전 요구사항이 명확해야함
    • 단위, 통합 테스트가 가능한 완벽히 완료되어 기능상에 문제가 없는 상태여야함
  • 그외 관련 용어
    • 테스트 하네스
      • 테스트를 지원하기 위한 코드와 데이터를 말하며 단위 테스트에 사용하기 위해 개발자가 작성
      • 애플리케이션 컴포넌트 및 모듈을 테스트하는 환경의 일부분으로, 테스트를 지원하기 위한 코드와 데이터를 말하며, 단위 또는 모듈 테스트에 사용하기 위해 코드 개발자가 작성
    • 테스트 슈트
      • 테스트 대상 컴포넌트나 시스템에 사용되는 테스트 케이스 집합
    • 테스트 케이스
      • 입력값, 실행 조건, 기대 결과 등의 집합
    • 테스트 스크립트
      • 자동화된 테스트 케이스의 절차와 실행 순서 명시
    • 테스트 드라이버
      • 상향식 통합 테스트에서 데이터의 입력과 출력을 확인하기 위해서 하위 모듈을 호출하는 상위의 더미 모듈
    • 테스트 시나리오
      • 테스트 수행을 위한 여러 테스트 케이스의 집합으로서, 테스트 케이스의 동작 순서를 기술한 문서이며 테스트를 위한 절차를 명세한 문서
    • 테스트 오라클
      • 테스트의 결과가 참인지 거짓인지를 판단하기 위해서 사전에 정의된 참 값을 입력하여 비교하는 기법
profile
괴발🐱개발🐶

0개의 댓글