2023년 2회 정보처리기사 실기 개념 정리

SummerToday·2024년 3월 28일
2

정보처리기사

목록 보기
2/16
post-thumbnail

1. C언어 배열

  • 배열을 루프 돌리며 출력시킨 결과를 묻는 문제

    • 배열내의 요소들이 그대로 출력된 경우
      배열의 인덱스를 주어진 출력 결과에 맞는 순서대로 조작시킬 생각을 해야한다.

    • 배열의 요소들이 그대로 나오지 않고 다른 수가 나오는 경우
      배열내의 요소들에 추가 사칙연산을 하여 조작할 생각을 해야한다.

    결국, 두 경우 모두 주어진 출력 결과의 규칙성을 찾아야한다는 공통성이 존재한다.


3. C언어 배열

주어진 배열에 요소들을 입력할 때 어디 위치에 저장하는지 확인해야한다.
루프 문을 돌 때 같은 위치에 같은 길이의 요소들을 지속적으로 입력을 받을 시, 결국 배열에는 마지막에 입력 받은 요소만 남게된다.

gets(): Enter키를 누르기 전까지 공백을 포함한 모든 문자열을 입력 받는다.


4. SQL

  • 삽입문
    INSERT INTO 테이블 VALUE/VALUES (속성명, ...);

  • 이외 참고

    • 조회문
      SELECT 테이블.속성명 [AS 별칭], ... FROM 테이블명 WHERE 조건 GROUP BY 속성명 HAVING 조건 ORDER BY 속성명 [ASC | DESC]

    • 갱신문
      UPDATE 테이블명 SET 속성명 = 데이터, ... WHERE 조건

    • 튜플 삭제문
      DELET FROM 테이블명 WHERE 조건;

    • 테이블 삭제문
      DROP TABLE 테이블명 [CASCADE | RESTRICT]

    • 테이블 정의 변경

      • ALTER TABLE 테이블명 ADD 속성명 데이터_타입;

      • ALTER TABLE 테이블명 ALTER 속성명 데이터_타입;

      • ALTER TABLE 테이블명 DROP COLUMN 속성명 [CASCADE];


5. C언어 case문

  • break문 먼저 꼭 확인한다.

    • case마다 break문이 없을 시, 해당되는 케이스문 이후의 케이스문도 실행된다.

    • case마다 break문이 있어야 해당 케이스문만 실행이 된다.


6. 화이트박스 테스트 검증 기준

  • 문장 검증 기준 (Statement Coverage)
    소스 코드의 모든 구문이 한 번 이상 수행되도록 테스트 케이스를 설계한다.

  • 분기 검증 기준 (Branch Coverage)
    소스 코드의 모든 조건문에 대해 조건식의 결과가 TRUE인 경우와 FALSE인 경우가 한 번 이상 수행되도록 테스트 케이스를 설계한다.

  • 조건 검증 기준 (Condition Coverage)
    소스 코드의 조건문에 포함된 개별 조건식의 결과가 TRUE인 경우와 FALSE인 경우가 한 번 이상 수행되도록 테스트 케이스를 설계한다.


8. 템퍼 프루핑 (Temper Proofing)

소프트웨어 데이터의 비정상적인 수정이 감지되면 소프트웨어를 오작동하게 만들어 악용을 방지하는 기술이다.
해시 함수, 핑거 프린트, 워터마킹 드의 보안 요소를 생성하여 소프트웨어에 삽입하고, 실행 코드를 난독화하며, 실행 시 원본 비교 및 데이터 확인을 수행함으로써 소프트웨어를 보호하는 기술이다.


10. 데이터베이스 구축 과정

요구사항 분석 -> 개념적 설계 -> 논리적 설계 -> 물리적 설계 -> 데이터베이스 구현


11. 디자인 패턴

  • 생성 패턴

    • 추상 팩토리 (Abstract Factory)
      구체적인 클래스에 의존하지 않고, 인터페이스를 통해 서로 연관·의존하는 객체들의 그룹으로 생성하여 추상적으로 표현하는 패턴이다.

    • 프로토타입 (Prototype)
      원본 객체를 복제하는 방법으로 객체를 생성하는 패턴이다.

    • 싱글톤 (Singleton)
      하나의 객체를 생성하면 생성된 객체를 어디서든 참조할 수 있지만, 여러 프로세스가 동시에 참조할 수는 없는 패턴이다.


  • 구조 패턴

    • 어댑터 (Adapter)
      호환성이 없는 클래스들의 인터페이스를 다른 클래스가 이용할 수 있도록 변환해주는 패턴이다.

    • 브리지 (Bridge)
      구현부에서 추상층을 분리하여 서로가 독립적으로 확장할 수 있도록 구성한 패턴이다.

    • 프록시 (Proxy)
      복잡한 시스템을 개발하기 쉽도록 클래스나 객체들을 조합하는 패턴으로, 대리자라고도 불린다.


  • 행위 패턴

    • 인터프리터 (Interpreter)
      언어에 문법 표현을 정의하는 패턴이다. SQL이나 통신 프로토콜과 같은 것을 개발할 때 사용한다.

    • 중재자 (Mediator)
      수많은 객체들 간의 복잡한 상호작용(Interface)을 캡슐화하여 객체로 정의하는 패턴이다.

    • 옵서버 (Observer)
      한 객체가 상태가 변화하면 객체에 상속되어 있는 다른 객체들에게 변화된 상태를 전달하는 패턴이다.

    • 방문자 (Visitor)
      각 클래스의 데이터 구조에서 처리 기능을 분리하여 별도의 클래스로 구성하는 패턴이다.

      방문자 vs 브리지
      방문자 패턴은 처리기능을 분리하는 것이고, 브리지는 추상층을 분리하는 것이다.


12. 전송 에러 제어 방식

전송 과정에서 감쇠, 지연 왜곡, 잡음 등 다양한 원인으로 발생하는 오류를 제어하는 방식에는 FEC(Foward Error Correction, 전진 오류 수정)와 BEC(Backward Error Correction, 후진 오류 수정)가 존재한다.

  • FEC (Foward Error Correction, 전진 오류 수정)
    데이터 전송 과정에서 발생한 오류를 검출하고 재전송 요구 없이 스스로 수정하기 때문에 연속적인 데이터 전송이 가능한 방식이다. 해밍 코드 방식이 이에 해당한다.

    • 해밍 코드 방식
      하나의 데이터 단위에 패리티(Parity) 비트를 추가하여 오류를 검출하여 교정이 가능한 코드로, 2bit의 오류를 검출할 수 있으며, 1bit의 오류를 교정한다.

      패리티 비트(parity bit)는 정보의 전달 과정에서 오류가 생겼는지를 검사하기 위해 추가되는 비트로, 1 bit의 오류를 찾아낼 수 있다.


  • BEC (Backward Error Correction, 후진 오류 수정)
    데이터 전송 과정에서 오류가 발생 시 송신측에 재전송을 요구하는 방식이다.
    패리티(Parity) 검사, CRC 등을 통해 오류를 검출하고 ARQ(Automatic Repeat reQuest)로 오류를 제어한다.

    • 패리티(Parity) 검사
      오류 검사를 위해 데이터 비트 외에 1bit의 체크 비트를 추가하는 것으로 1bit의 오류만을 검출할 수 있다. 1의 개수에 따라 짝수 패리티와 홀수 패리티로 구분한다.

    • CRC
      다항식 코드를 사용하여 오류를 검출하는 방식이다. 동기식 전송에서 주로 사용되며, 집단 오류를 검출할 수 있고, 검출률이 높아 가장 많이 사용한다.

  • 참고

    출처 : https://m.blog.naver.com/kyong_b/221665180399


HDLC는 비트(Bit) 위주의 프로토콜로, 각 프레임에 데이터 흐름을 제어하고 오류를 검출할 수 있는 비트 열을 삽입하여 전송하는 방식이다.

HDLC 프로토콜을 사용하는 호스들은 주국(Primary Station), 종국(Secondary Station), 혼합국(Combined Station)으로 나누어지게 된다. 주국이 종국에게 명령을 전소하고 종국은 주국에게 응답을 회신하는 형태도 동작을 한다.

  • 주국 : 명령을 전송하는 호스트.
  • 종국 : 명령에 대한 응답을 회신하는 호스트.
  • 혼합국 : 주국과 종국 기능을 모두 지닌 호스트.

HDLC의 프레임 구조는 헤더, 텍스트, 트레일러로 구분되며, 헤더는 다시 플래그, 주소부, 제어부로 구분할 수 있다. 제어부의 첫 번째, 두 번째 비트를 사용하여 정보 프레임, 감독 프레임, 비번호 프레임으로 구분한다.

  • 정보 프레임 (I 프레임 : Information)
    제어부가 '0'으로 시작하는 프레임으로, 사용자 데이터를 전달하거나 피기백킹(Piggybacking) 기법을 통해 데이터에 대한 확인 응답을 보낼 때 사용된다.

  • 감독 프레임 (S 프레임 : Supervisory)
    제어부가 '10'으로 시작하는 프레임으로, 오류 제어와 흐름 제어를 위해 사용된다.

  • 비번호 프레임 (U 프레임 : Unnumbered
    제어부가 '11'로 시작하는 프레임으 링크의 동작 모드 설정과 관리를 한다.

    비번호 프레임에서 설정할 수 있는 동작 모드에는 표준 응답 모드(NRM : Normal Response Mode), 비동기 균형 모드(ARM : Asynchronous Response Mode), 비동기 응답 모드(ABM : Asynchronous Balenced Mode)

    • 표준 응답 모드 (NRM : Normal Response Mode)
      반이중 통신을 하는 포인트 투 포인트(Point-To-Point) 또는 멀티 포인트(Multi-Point) 불균형 링크 구성에 사용되며, 종국은 주국의 허가(Poll)가 있을 때에만 송신하는 특징이 있다.

    • 비동기 균형 모드 (ARM : Asynchronous Response Mode)
      포인트 투 포인트(Point-To-Point) 균형 링크에서 사용되며, 혼합국끼리 허가 없이 언제나 전송할 수 있다.

    • 비동기 응답 모드(ABM : Asynchronous Balenced Mode)
      전이중 통신을 하는 포인트 투 포인트(Point-To-Point) 불균형 링크 구성에 사용되며, 종국은 주국의 허가(Poll) 없이도 송신이 가능하지만 링크 설정이나 오류 복구 등의 제어 기능은 주국만 가능하다.


14. JAVA 문자열, boolean 관련

자바에서 문자열(String)을 변수에 할당 시, 기존에 똑같은 문자열이 존재할 시 기존 문자열의 공간을 참조하게 되어 기존 문자열과 새로 생성된 문자열의 주소 값은 같게된다.
하지만 기존의 똑같은 문자열의 존재 유무와는 상관 없이, new를 사용하여 String 객체를 생성 시, 새로운 공간에 해당 문자열을 생성하게 되어 새로운 주소값을 갖게 된다.

문자열의 비교는 equal 함수를 통해 비교해야 한다. 그렇지 않고 문자열 변수의 이름을 그대로 비교할 시 서로의 주소값을 비교하게 된다.
ex. str1.equals(str2) (o)   /   str1==str2 (x)


15. 대칭/비대칭 암호화 알고리즘

  • 대칭키 암호화 알고리즘 (개인키 암호하 기법) : DES, SEED, ARIA, AES

  • 비대칭키 암호화 알고리즘 (공개키 암호화 기법) : RSA, ECC


16. 해시 (Hash)

  • 임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환하는 것을 의미한다.

  • 해시 알고리즘을 해시 함수라고 부르며, 해시 함수로 변환된 값이나 키를 해시값 또는 해시키라고 부른다.

  • SHA, MD, HAVAL, N-NASH, SNEFRU 등이 존재한다.


17. CASCADE

제거할 요소를 참조하는 다른 모든 개체를 함께 제거하는 옵션이다.


19. 파이썬 리스트 인덱스

  • a[x,y] : a 리스트의 x부터 y-1까지의 요소들을 의미.

  • a[,] : a 리스트의 처음부터 끝까지의 요소들을 의미.


20. 스텁(Stub), 드라이버(Driver)

  • 스텁 (Stub)
    하향식 통합 테스트에서 사용되며, 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구로, 일시적으로 필요한 조건만을 가지고 있는 시험용 모듈이다.

  • 드라이버(Driver)
    상향식 통합 테스트에서 사용되며, 테스트 대상의 하위 모듈을 호출하고, 파라미터를 전달하고, 모듈 테스트 수행 후의 결과를 도출하는 시험용 모듈이다.




해당 글은 다음 도서의 내용을 참고한 글임을 밝힙니다.
길벗알앤디, ⌜2024 시나공 정보처리기사 실기 기출문제집⌟, 길벗, 2024, 368쪽
profile
블로그 이관했습니다.

0개의 댓글