자격증/정보처리기사

[정보처리기사] 실기 문제 정리 - 2 (2024년 1회, 2023년 3회, 2023년 2회)

대기업 가고 싶은 공돌이 2025. 4. 16. 11:18

<<, >>는 화살표 대가리 방향으로 이동해야 한다.

 

서브넷으로 가르고 맨 첫 시작 주소인 0과 브로드 캐스트 주소인 255를 제외하고 찾으면 됨

 

 

정답: 

2)192.168.35.72
4)129.200.8.249
5)192.168.36.249

 

 

기본키는 고객아이디와 강좌명이라고 한다.

 

영어 회화가 강사번호 003, 001을 가르킨다

 

즉, 부분함수 종속이 존재하지 않는 완전함수 종속 상태

+ 강사번호가 강좌명을 결정하지도 않으니 뭐 이행적 함수종속도 만족

 

결론 3정규형

 

내부 라우팅 프로토콜은

RIP (routing information protocol) : 최대 홉수 제한

OSPF: 최단 거리 찾기

 

외부 라우팅 프로토콜

BGP(Border Gateway Protocol): 미리 정해진 정책에 따라서 경로를 지정한다.

 

세타 조인: 조건 걸어서 조건 만족하는 것만 합치는 거

동등 조인: 그냥 = 때려서 찾는 거 (이너 조인)

자연 조인: 알아서 컬럼 똑같은 거 합치는데, 중복되는 컬럼은 제거.

 

❌ 등가 조인 (Equi Join)

sql
복사편집
SELECT * FROM A JOIN B ON A.id = B.id;
id (A)nameid (B)score
1 Alice 1 90
2 Bob 2 85

→ 이렇게 id 컬럼이 중복해서 나옴


✅ 자연 조인 (Natural Join)

sql
복사편집
SELECT * FROM A NATURAL JOIN B;
idnamescore
1 Alice 90
2 Bob 85

→ 공통된 컬럼(id)을 자동으로 조인하고,
→ 결과에서는 한 번만 출력! (중복 제거됨)

 

 

10. 아래 JAVA언어 코드의 실행 순서를 중복 번호없이 작성하시오.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class Parent {
    int x, y;
 
    Parent(int x, int y) { ①
        this.x=x;
        this y=y;
    }
 
    int getT() { ②
        return x*y;
    }
}
 
 
 
​class Child extend Parent {
    int x;
 
    Child (int x) { ③
        super(x+1, x);
        this.x=x;
    }
 
    int getT(int n){ ④
        return super.getT()+n;
    }
}
 
 
 
class Main {
    public static void main(String[] args) { ⑤
        Parent parent = new Child(3); ⑥
        System.out.println(parent.getT()); ⑦
    }
}

정답 5 -> 6 -> 3-> 1-> 7-> 2

 

우선 인자가 없음

또한 오버라이딩도 돼있지 않음

애초에 부모 함수에 인자도 없기 때문에 오버라이딩도 불가능함.

 

인자가 들어간 함수를 자식 클래스에 만들어 호출하고 싶으면 자식 클래스로 다운 그레이딩 해야함

 

(child)parent.getT(3) 이면 자식 함수가 호출될 것임

 

 

14. 아래는 애플리케이션 테스트 관리에 대한 내용이다. 설명하는 답을 보기에서 골라 작성하시오.

 

1. 모든 분기와 조건의 조합을 고려하나 모든 조합을 테스트하는 대신에 테스트가 필요한 중요한 조합을 찾아내는데에 중점을 둔다. 

2. 특정 조건을 수행할 때 다른 조건과는 상관없이 전체 결과에 영향을 미치는 조건만을 테스트한다. 

3. 각각의 파라미터는 적어도 한 번은 최종 결과에 영향을 주어야 한다.

 

보기

 

ㄱ. 구문 커버리지      ㄴ. 결정 커버리지    ㄷ. 조건 커버리지    ㄹ. 변경 조건/결정 커버리지     ㅁ.다중 조건 커버리지      ㅂ.경로 커버리지    ㅅ.조건/결정 커버리지

🏷️ 테스트 기법에 따른 분류

📘 화이트박스 테스트 : 각 응용 프로그램의 내부 구조와 동작을 검사하는 소프트웨어 테스트

  1. 구문 커버리지 : 모든 명령문을 적어도 한 번 수행
  2. 결정 커버리지 : 결정 포인트 내의 전체 조건식이 적어도 한 번은 참과 거짓의 결과를 수행
  3. 조건 커버리지 : 결정 포인트 내의 각 개별 조건식이 적어도 한 번은 참과 거짓의 결과를 수행
  4. 조건/결정 커버리지 : 전체 조건식뿐만 아니라 개별 조건식도 참과 거짓의 결과를 수행
  5. 변경 조건/결정 커버리지 : 개별 조건식이 다른 개별 조건식에 영향을 받지않고 전체 조건식에 독립적으로 영향을 주도록 향상시킨 커버리지
  6. 다중 조건 커버리지 : 모든 개별 조건식의 모든 가능한 조합을 100% 보장하는 커버리지
  7. 경로 커버리지 : 수행 가능한 모든 경로를 테스트하는 커버리지
  8. 제어 흐름 테스트 : 프로그램 제어 구조를 그래프 형태로 나타내어 내부 로직을 테스트
  9. 데이터 흐름 테스트 : 제어 흐름 그래프에 데이터 사용현황을 추가한 그래프 테스트

✅ 각 커버리지 예시


구문 커버리지 (Statement Coverage)

모든 명령문한 번 이상 실행되었는지 확인

✅ 테스트 케이스:

  • A = true → if 조건 true → 명령문1 실행

결정 커버리지 (Decision Coverage)

조건식 전체 결과가 참/거짓 모두 나와야 함

✅ 테스트 케이스:

  • A = true, B = false, C = false → 조건식 결과: true
  • A = false, B = false, C = false → 조건식 결과: false

👉 전체 조건식이 true/false 둘 다 나오도록 조합


조건 커버리지 (Condition Coverage)

각 **개별 조건(A, B, C)**이 참/거짓 모두 수행되어야 함

✅ 테스트 케이스:

  • A = true / false
  • B = true / false
  • C = true / false
    (조합에 상관없이 각 조건이 true/false 한 번씩 나오면 됨)

조건/결정 커버리지 (Condition + Decision)

조건식 전체 결과 + 각 조건의 true/false 여부 모두 포함

✅ 테스트 케이스는 최소 3~4개 필요:

  • A = true → 전체 true
  • A = false, B = true, C = true → 전체 true
  • A = false, B = false → 전체 false
  • 등등

변경 조건/결정 커버리지 (MC/DC)

하나의 조건만 바꿨을 때 전체 결과가 변하는 경우를 테스트

✅ 예시:

  • Test 1: A = false, B = true, C = true → 결과: true
  • Test 2: A = false, B = false, C = true → 결과: false

👉 이때, B만 바뀌었고 결과도 바뀌었기 때문에,
B가 결과에 영향을 주는 걸 확인한 것!

이런 식으로 A, B, C 각각이 독립적으로 전체 결과에 영향을 주는지 확인해야 해


다중 조건 커버리지 (Multiple Condition)

A, B, C의 모든 true/false 조합을 테스트

조합 수: 2³ = 8가지 전부 테스트해야 함

ABC결과
T T T ?
T T F ?
T F T ?
T F F ?
F T T ?
F T F ?
F F T ?
F F F ?

경로 커버리지 (Path Coverage)

코드에서 가능한 모든 실행 경로를 테스트

java
복사편집
if (A) { if (B) { // path 1 } else { // path 2 } } else { // path 3 }

→ 경로:

  1. A true, B true
  2. A true, B false
  3. A false

👉 이 3가지 경로 모두를 테스트


제어 흐름 테스트

프로그램 흐름을 노드-간선 그래프(제어 흐름 그래프) 형태로 그려서 테스트
예:

java
복사편집
start → if → then → end ↘ else

데이터 흐름 테스트

위의 제어 흐름 그래프에다가
**변수의 정의(def)와 사용(use)**을 체크

예:

java
복사편집
int x = 10; // def if (x > 5) { // use print(x); // use }

👉 x라는 변수가 어떻게 정의되고 사용되었는지 따라가면서 오류를 찾음


✅ 시험용 핵심 요약표

커버리지핵심 개념
구문 모든 명령문 실행
결정 if 전체 조건식 T/F 수행
조건 개별 조건 T/F 수행
조건/결정 조건 + 전체 조건 모두 T/F
변경 조건/결정 하나의 조건만 바꿔도 결과 변화 확인 (MC/DC)
다중 조건 모든 조건 조합 (ex. A,B,C → 8개)
경로 모든 실행 경로 커버
제어 흐름 노드-간선 그래프 기반 테스트
데이터 흐름 변수의 정의/사용 따라가는 테스트

 

 

🔍 왜 Rootkit인가?

  • 공격자 존재 은닉 → Rootkit의 대표적인 특성
  • 무제한 접근 권한 부여 → 시스템 권한 탈취
  • 탐지 회피 → 안티바이러스 우회
  • 시스템콜 조작 → 커널이나 API를 조작하여 파일/프로세스 숨김
  • 하드웨어~운영체제 계층에서 동작 가능
ㄱ. Worm 네트워크를 통해 스스로 전파되는 악성코드
ㄴ. Trojan horse 겉보기엔 정상, 실제론 악성 행위
ㄷ. Backdoor 몰래 시스템에 접근하는 숨겨진 통로 (Rootkit과 조합되기도 함)
ㄹ. Virus 자기 복제를 통해 감염되는 악성코드
ㅁ. Ransomware 파일을 암호화하고 돈을 요구함
ㅂ. Spyware 사용자 정보를 몰래 수집

 

 

17. 다음 아래 내용을 보고  보기에서 알맞는 용어를 골라 작성하시오.

 

 

 

 

1. 불특정 다수가 아닌 명확한 표적을 정하여 지속적인 정보수집 후 공격감행할 수 있다.

2. 시스템에 직접 침투하는 것뿐 아니라 표적 내부직원들이 이용하는 다양한 단말을 대상으로 한다.

3. 한가지 기술만이 아닌 Zero-day 취약점, 악성코드 등 다양한 보안 위협 공격 기술을 사용한다.

4. 일반적으로 공격은 침투, 검색, 수집 및 유출의 4단계로 실행되며, 각 단계별로 다양한 공격 기술을 사용한다.

 

 

보기

ㄱ.사회공학 기법     ㄴ.Adware     ㄷ.MITM      ㄹ.XDR     ㅁ.Replace attack      ㅂ.key logger attack     ㅅ.APT

 

 

🔍 왜 APT인가?

  • Advanced → 고도화된 기술 (Zero-day, 악성코드 등)
  • Persistent → 장기간 지속적인 공격
  • Threat → 기업·정부 기관 등 명확한 표적 대상
  • 보통은 내부자 기만, 악성 이메일, 네트워크 감염, 정보 유출 등의 순서로 진행됩니다.

📌 보기 설명 비교

보기설명
ㄱ. 사회공학 기법 사용자를 속이는 인간적 기만 (예: 피싱)
ㄴ. Adware 광고를 강제로 보여주는 소프트웨어
ㄷ. MITM (Man-In-The-Middle) 통신을 가로채는 공격
ㄹ. XDR (Extended Detection & Response) 보안 위협 탐지 대응 솔루션
ㅁ. Replace attack 저장 매체 변경 공격 (보통 널리 사용되는 용어는 아님)
ㅂ. Keylogger attack 키보드 입력을 몰래 수집
ㅅ. APT 고도화되고 지속적인 지능형 표적 공격

 

 

20. 다음 아래의 내용을 보고 알맞는 용어를 작성하시오. 

 

 

구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 패턴이다.

연관성이 있는 객체 군이 여러개 있을 경우 이들을 묶어 추상화하고, 어떤 구체적인 상황이 주어지면 팩토리 객체에서 집합으로 묶은 객체 군을 구현화 하는 생성 패턴이다

관련성 있는 여러 종류의 객체를 일관된 방식으로 생성하는 경우에 유용하다.

kit라고도 불린다.

 

정답: 추상 팩토리 패턴

 

ㅇ 생성 패턴

객체 생성과 관련된 패턴으로 총 5개가 있다. 생성 패턴은 객체의 생성과 참조 과정을 캡슐화하여 객체가 생성되거나 변경되어 프로그램 구조에 영향을 크게 받지 않도록하여 프로그램에 유연성을 더해준다.

  1. 추상 팩토리 (Abstract Factory)
    구체적인 클래스에 의존하지 않고, 인터페이스를 통해 서로 연관-의존하는 객체들의 그룹으로 생성하여 추상적 표현한다. 연관된 서브 클래스를 묶어 한 번에 교체하는 것이 가능하다.
  2. 빌더 (Builder)
    작게 분리된 인스턴스를 건축하듯이 조립하여 객체를 생성한다. 객체의 생성 과정과 표현 방법을 분리하고 있어, 동일한 객체 생성에서도 서로 다른 결과를 만들어 낼 수 있다.
  3. 팩토리 메소드 (Factory Method)
    객체 생성을 서브 클래스에서 처리하도록 분리하여 캡슐화한 패턴이다. 상위 클래스에서 인터페이스만 정의하고 실제 생성은 서브 클래스가 담당한다.
  4. 프로토타입 (Prototype)
    원본 객체를 복제하는 방법으로 객체를 생성하는 패턴이다. 일반적인 방법으로 객체를 생성하며, 비용이 큰 경우 주로 이용한다.
  5. 싱글톤 (Singleton)
    하나의 객체를 생성하면 생성된 객체를 어디서든 참조할 수 있지만, 여러 프로세스가 동시에 참조할 수는 없다. 클래스 내에서 인스턴스가 하나뿐임을 보장하며, 불필요한 메모리 낭비를 최소화 할 수 있다.

 

 ㅇ 구조 패턴

구조 패턴은 클래스나 객체들을 조합하여 더 큰 구조를 만들 수 있게 해주는 패턴으로 총 7개의 패턴이 있다. 구조 패턴은 구조가 복잡한 시스템을 개발하기 쉽게 도와준다.

  1. 어댑터 (Adapter)
    호환성이 없는 클래스들의 인터페이스를 다른 클래스가 이용할 수 있도록 변형해주는 패턴이다. 기존 클래스를 이용하고 싶지만 인터페이스가 일치하지 않을 때 이용한다.
  2. 브릿지 (Bridge)
    구현부에서 추상층을 분리하여, 서로가 독립적으로 확장할 수 있도록 구성한 패턴이다. 기능과 구현을 두 개의 별도 클래스로 구현한다.
  3. 컴포지트 (Composite)
    여러 객체를 가진 복합 객체와 단일 객체를 구분 없이 다루고자 할 때 사용하는 패턴이다. 객체들을 트리 구조로 구성하여 디렉토리 안에 디렉토리가 있듯이 객체 안에 객체가 포함되는 패턴이다.
  4. 데코레이터 (Decorator)
    객체 간의 결합을 통해 능동적으로 기능들을 확장할 수 있는 패턴이다. 임의의 객체에 부과적인 기능을 추가하기 위해 다른 객체들을 덧붙이려는 방식으로 구현한다.
  5. 퍼씨드 (Facade)
    복잡한 서브 클래스들을 피해 더 상위에 인터페이스를 구성함으로써 서브 클래스들의 기능을 간편하게 사용할 수 있도록 하는 패턴이다. 서브 클래스들 사이의 통합 인터페이스를 제공하는 Wrapper 객체가 필요하다.
  6. 플라이웨이트 (Flyweight)
    인스턴스가 필요할 때마다 매번 생성하는 것이 아니고 가능한 공유해서 사용함으로써 메모리를 절약하는 패턴이다. 다수의 유사 객체를 생성하거나 조작할 때 유용하게 사용할 수 있다.
  7. 프록시 (Proxy)
    접근이 어려운 객체와 여기에 연결하려는 객체 사이에서 인터페이스 역할을 수행하는 패턴이다. 네트워크 연결, 메모리의 대용량 객체로의 접근 등에 주로 이용한다.

 

 ㅇ 행위 패턴

  1. 책임 연쇄 (Chain of Responsibility)
    요청을 처리할 수 있는 객체가 둘 이상 존재하여 한 객체가 처리하지 못하면 다음 객체로 넘어가는 형태의 패턴이다. 요청을 처리할 수 있는 각 객체들이 Chain으로 묶여 있어 요청이 해결될 때까지 고리를 따라 책임이 넘어간다.
  2. 커맨드 (Command)
    요청을 객체의 형태로 캡슐화하여 재이용하거나 취소할 수 있도록 요청에 필요한 정보를 저장하거나 로그에 남기는 패턴이다.
  3. 인터프리터 (Interpreter)
    언어에 문법 표현을 정의하는 패턴이다. SQL이나 통신 프로토콜과 같은 것을 개발할 때 사용한다.
  4. 반복자 (Iterator)
    자료 구조와 같이 접근이 잦은 객체에 대해 동일한 인터페이스를 사용하도록 하는 패턴이다. 내부 표현 방법의 노출 없이 순차적인 접근이 가능하다.
  5. 중재자 (Mediator)
    수많은 객체들 간의 복잡한 상호작용(Interface)을 캡슐화하여 객체로 정의하는 패턴이다. 객체 사이의 의존성을 줄여 결합도를 감소시킬 수 있다.
  6. 옵저버 (Observer)
    한 객체의 상태가 변화하면 객체에 상속되어 있는 다른 객체들에게 변화된 상태를 전달하는 패턴이다. 주로 분산된 시스템간에 이벤트를 생성 → 발행하고 이를 수신해야 할 때 이용한다.
  7. 상태 (State)
    객체의 상태에 따라 동일한 동작을 다르게 처리해야 할 때 사용하는 패턴이다. 객체 상태를 캡슐화하고 이를 참조하는 방식으로 처리한다.
  8. 전략 (Strategy)
    동일한 계열의 알고리즘들을 개별적으로 캡슐화하여 상호교환할 수 있게 정의하는 패턴이다. 클라이언트는 독립적으로 원하는 알고리즘을 선택하여 사용할 수 있으며, 클라이언트에 영향 없이 알고리즘의 변경이 가능하다.
  9. 템플릿 메소드 (Template Method)
    상위 클래스에서 골격을 정의하고, 하위 클래스에서 세부 처리를 구체화하는 구조의 패턴이다. 유사한 서브 클래스를 묶어 공통된 내용을 상위 클래스에서 정의함으로써 코드의 양을 줄이고 유지보수를 용이하게 해준다.
  10. 방문자 (Visitor)
    각 클래스들의 데이터 구조에서 처리 기능을 분리하여 별도의 클래스로 구성하는 패턴이다. 분리된 처리 기능은 각 클래스를 방문하여 수행한다.
    • 메멘토 : 특정 시점에서의 객체 내부 상태를 객체화 함으로써 이후 요청에 따라 객체를 해당 시점의 상태로 돌릴 수 있는 기능을 제공하는 패턴(상태 저장, 복원)

 

1. 다음은 Java 코드이다. 올바른 출력 결과를 작성하시오.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class main{
    public static void main(String[] args) {
        A b = new B();
        b.paint();
        b.draw();
    }
}
 
class A {
    public void paint() {
        System.out.print("A");
        draw();
    }
    public void draw() {
        System.out.print("B");
        draw();
    }
}
 
class B extends A {
    public void paint() {
        super.draw();
        System.out.print("C");
        this.draw();
    }
    public void draw() {
        System.out.print("D");
    }
}
 

A 클래스의 draw는 실제로 this가 생략된 것과 마찬가지다.

 

자바에서의 this는 항상 객체의 실제 인스턴스를 기준으로 동작한다.

실제 인스턴스는 A 클래스의 b 객체

즉, draw가 오버라이딩 돼있다면 오버라이딩 된 메서드가 실행된다.

 

따라서 정답은 BDCDD

 

 

3. 리눅스(Linux)에서 사용자에게 읽기/쓰기/실행 권한을 부여하고, 그룹에게는 읽기/실행을 부여하고, 그 이외에는 실행 권한을 test.txt 파일에 부여하는 위한 명령어는 다음과 같다. 빈칸에 들어갈 답을 작성하시오. (8진법 사용)

 

 

 

(    (1)    ) (    (2)    ) test.txt

 

✅ 권한을 8진수로 변환

권한                                                                          이진수                                                                    8진수

 

rwx 111 7
r-x 101 5
--x 001 1

 

순서대로 사용자, 그룹, 기타 순이다.

 

권한도 마찬가지로 순서대로 r,w,x 리드 라이트, execute 순이다.

 

사용자에 rwx

그룹에 r-x

기타에 --x 이므로 이진법으로 변환하면

 

111, 101, 001이 된다.

이진법을 팔진법으로 바꿔보자

 

7, 5, 1

즉, 정답은 chmod 751

 

 

포인터에서 값을 접근할 때는  -> 이 방법으로 접근하고,

일반 변수에서 값을 접근할 때는 '.'으로 접근한다.

 

7. 다음 설명은 서버 접근 통제의 유형이다. 괄호 안에 들어갈 용어를 작성하시오. (영어 약자로 작성하시오.)

 

 

  • (   (1)   )은/는 규칙 기반(Rule-Based) 접근통제 정책으로, 객체에 포함된 정보의 허용 등급과 접근 정보에 대하여 주체가 갖는 접근 허가 권한에 근거하여 객체에 대한 접근을 제한하는 방법이다.

 

  • (   (2)   )은/는 중앙 관리자가 사용자와 시스템의 상호관계를 통제하며 조직 내 맡은 역할(Role)에 기초하여 자원에 대한 접근을 제한하는 방법이다.

 

  • (   (3)   )은/는 신분 기반(Identity-Based) 접근통제 정책으로, 주체나 그룹의 신분에 근거하여 객체에 대한 접근을 제한하는 방법이다. 

 

 

정답

(1) MAC

(2) RBAC

(3) DAC

 

MAC mandatory 강제로 접근 제어 이름만 들어봐도 강력하지 않나, 군대 같은 곳에서 신분에 의해 허용 등급, 접근 정보 등에 의해 관리하는 것이라 생각하면 된다.

 

RBAC 룰 베이스, 조직 내 role즉, 맡은 역할에 의해 제어한다.

 

DAC discretionary 임의로 접근 제어 리눅스에서 임의로 chmod로 사용자 별 권한을 제어하는 것을 생각하면 된다.

사용자 즉, 주체나 그룹의 신분을 기반으로 임의로 접근을 제어한다.

 

9. 다음 설명에 대해 괄호 안에 알맞는 용어를 작성하시오. (영어 약자로 작성하시오.)

 

 

  • (     )은/는 자료를 일정한 크기로 정하여 순서대로 전송하는 자료의 전송 방식이다.

 

  • 셀이라 부르는 고정 길이 패킷을 이용하여 처리가 단순하고 고속망에 적합하며, 연속적으로 셀을 보낼 때 
    다중화를 하지 않고 셀단위로 동기가 이루어지지만 경우에 따라 동기식 시간 분할 다중화를 사용하기도 한다.

 

  • 가상 채널 (Virtual Channel) 기반의 연결 지향 서비스로 셀이라 부르는 고정 길이(53바이트) 패킷을 사용하며 통계적 다중화 방식을 이용한다.

✅ 정처기에서 자주 출제되는 전송방식 핵심 요약

📌 1. 전송 방향 (단골문제)

전송 방식설명키워드자주 나오는 형태
Simplex (단방향) 한 방향만 전송 입력만 or 출력만 키보드, 마우스
Half-Duplex (반이중) 양방향 but 동시에 불가 순차 전송 무전기
Full-Duplex (전이중) 양방향 동시에 동시 송수신 전화기, 채팅

문제 예시:
"다음 중 양방향 통신이 가능하지만 동시에 송수신은 불가능한 전송방식은?" → ❗ 반이중식(Half-Duplex)


📌 2. 동기/비동기 전송 (시계 역할)

전송 방식키워드특징예시
동기식 클럭, 블록 단위 속도 빠름 LAN, ATM
비동기식 Start/Stop 비트 느리지만 간단 모뎀, 키보드
등시식 (Isochronous) 실시간 + 일정 간격 멀티미디어 스트리밍, VoIP

문제 예시:
"Start 비트와 Stop 비트를 사용하는 전송방식은?" → ❗ 비동기식(Asynchronous)


📌 3. 다중화 방식 (공유 통신)

방식분류 기준대표 기술자주 나오는 키워드
TDM (TDMA) 시간 시간 슬롯 디지털 통신
FDM (FDMA) 주파수 주파수 분할 아날로그 통신
CDMA 코드 코드로 구분 3세대 통신
OFDM 직교 주파수 Wi-Fi, 4G 다중 반사에 강함

문제 예시:
"하나의 채널을 시간적으로 분할하여 사용하는 다중화 기법은?" → ❗ TDM
TIME DIVISION MULTIFLEXING ACCESS
Frequency DIVISION mulitflexing access
code division
orthogonla 직교에 주파수 붙은 거 


📌 4. ATM (자주 나옴!)

항목설명
이름 Asynchronous Transfer Mode
단위 고정 길이 셀(53바이트)
특징 고속 통신, QoS 보장, 가상 회선 기반
사용 백본망, 통신 사업자

문제 예시:
"고정 길이 셀을 이용하여 통신하고 고속망에 적합한 전송방식은?" → ❗ ATM


📌 5. 패킷/회선/메시지 교환 방식 (데이터 전달 방식)

방식특징장점단점
회선 교환 연결 우선 확보 실시간 비효율
패킷 교환 데이터를 분할 전송 효율적 지연 가능
메시지 교환 전체 메시지 저장 후 전달 재전송 없이 전송 지연 큼

문제 예시:
"전체 데이터를 한 번에 전송하고 중간 노드에 저장 후 전송하는 방식은?" → ❗ 메시지 교환


✅ 요약 암기 키워드

  • 단방향: Simplex – TV, 키보드
  • 반이중: Half-Duplex – 무전기
  • 전이중: Full-Duplex – 전화
  • Start/Stop 비트: 비동기식 전송
  • 시간 분할: TDM, 주파수 분할: FDM
  • 코드 분할: CDMA, 직교 주파수: OFDM
  • ATM = 53바이트 셀 + 고속 + QoS + 가상 회선

 

 

10. 다음은 C언어의 포인터 문제이다. 알맞는 출력값을 작성하시오.

 

 

1
2
3
4
5
6
7
8
9
10
11
#include
 
int main() {
    char* p = "KOREA";
    printf("%s\n", p);
    printf("%s\n", p+1);
    printf("%c\n"*p);
    printf("%c\n"*(p+3));
    printf("%c\n"*p+4);
}
 

✅ 요약

 

*p 'K' 75
*p + 4 'K'의 ASCII(75) + 4 'O' (79)
*(p+4) 주소 이동 후 역참조 'A'

KOREA

OREA

K

E

O

 

 

13. 다음 자바 코드를 실행할 경우 에러가 발생이 된다. 에러가 발생하는 라인명을 작성하시오.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Person {
    private String name;
    public Person(String val) {
        name = val;
    }
    public static String get() {
    return name;
    }
    public void print() {
        System.out.println(name);
    }
}
public class main {
    public static void main(String[] args) {
        Person obj = new Person("Kim");
        obj.print();
    }
}

static 메서드에선 static 변수만 참조 가능 정답 라인 7

 

 

14. 다음은 파이썬에 대한 문제이다. 괄호 안에 알맞는 답을 작성하시오.

1
2
3
4
5
6
7
8
9
print("파이썬 입출력에 대한 문제입니다.")
 
num1, num2 = input()._____()
num1 = int(num1)
num2 = int(num2)
print(num1,num2)
 
num3 = num1 + num2
print(num1 + " + "  + num2 + " = " + num3)

split

 

✅ 3. 주요 다이어그램 정리

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

  • **시스템과 사용자(액터)**의 상호작용을 모델링
  • 시스템의 기능을 사용자 입장에서 추상화
  • 구성 요소: 액터, 유스케이스(타원), 관계선

📌 예시 출제:

“시스템의 요구사항을 사용자 관점에서 표현한 다이어그램은?” → 유스케이스


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

  • 객체지향 프로그램의 정적 구조 표현
  • 클래스와 클래스 사이의 상속, 연관, 집합 관계 표현

📌 관계 표현 기호:

  • 일반 연관: 실선
  • 집합(Has-A): 빈 마름모
  • 포함(Whole-Part): 채운 마름모
  • 상속(Is-A): 빈 삼각형 화살표

🔄 (3) 시퀀스 다이어그램 (Sequence Diagram)

  • 객체 간의 메시지 주고받는 시간 순서를 나타냄
  • 수직선 = 생명선, 가로선 = 메시지
  • 객체 간의 순차적 상호작용 중심

📌 vs 활동 다이어그램과 구분 문제 자주 나옴


🔁 (4) 활동 다이어그램 (Activity Diagram)

  • 시스템 동작의 흐름(프로세스 흐름) 표현
  • 조건 분기, 반복 등 알고리즘 흐름 표현
  • 다이어그램 중 가장 절차지향적인 느낌

📌 구성 요소: 시작/종료 노드, 액션, 조건 분기(마름모), 흐름선


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

  • 시스템을 구성하는 모듈, 컴포넌트의 구조
  • 소프트웨어의 물리적 구조(코드 단위 구성) 표현

🌐 (6) 배치 다이어그램 (Deployment Diagram)

  • 실제 시스템의 **하드웨어 구성(노드)**과 소프트웨어의 배치 관계
  • 서버, 클라이언트, DB 등 실행 환경 표현

📈 (7) 상태 다이어그램 (State Diagram)

  • 객체의 상태 변화를 시간에 따라 표현
  • 예: 주문 상태 → 결제 → 배송 → 완료

 

 

16. 다음 설명에 알맞는 답을 보기에서 골라 작성하시오.

 

  • 시스템이나 시스템 구성요소(component) 또는 소프트웨어 프로그램의 입력값과 출력값이 특정 그룹으로 분류되며, 분류된 그룹내의 값들이 시스템에 의해 동일하게 취급된다는 특성을 이용하여 시험하는 기법

 

  • 유사한 입력값들이 시스템을 거치면서 유사한 답변이 나온다는 것을 가정하여 테스트

 

  • 하나의 값은 그 분할 내 모든 값을 대표하는 것으로 간주하는 기법

 

  • 모든 입력값을 시험할 필요가 없게 하여 시험을 효율적으로 수행하도록 지원

 

  • 일반적으로 경계값 분석기법(boundary value analysis)과 함께 테스트 케이스 도출하는데 사용

 

 

 

보기

 

ㄱ.Equivalence Partitioning      ㄴ.Statement Coverage           ㄷ.Boundary Value Analy         ㄹ.Branch Coverage
ㅁ.Error Guessing        ㅂ.Condition Coverage          ㅅ.Cause Effect Graph

 

화이트 박스 테스트

개념

- 화이트박스 테스트는 모듈의 원시 코드를 오픈시킨 상태에서 원시 코드 논리적인 모든 경로를 테스트하여 테스트 케이스를 설계하는 방법이다.

  • 화이트박스 테스트는 설계된 절차에 초점을 둔 구조적 테스트며, 테스트 과정의 초기에 적용된다.
  • 모듈 안의 작동을 직접 관찰한다.
  • 원시 코드(모듈)의 모든 문장을 한 번 이상 실행함으로써 수행된다.
  • 프로그램의 제어 구조에 따라 선택, 반복 등의 분기점 부분들을 수행함으로써 논리적 경로를 제어한다.

종류

  • 기초 경로 검사 (Base Path Testing)
    • 대표적인 화이트박스 테스트 기법이다.
    • 테스트 케이스 설계자가 절차적 설계의 논리적 복잡성을 측정할 수 있게 해주는 테스트 기법, 테스트 측정 결과 실행 경로의 기초를 정의하는 데 지침으로 사용된다.
  • 제어 구조 검사 (Control Structure Testing)
    • 조건 검사(Condition Testing):
      프로그램 모듈 내에 있는 논리적 조건을 테스트하는 테스트 케이스 설계 기법
    • 루프 검사(Loop Testing):
      프러그램의 반복(Loop) 구조에 초점을 맞춰 실시하는 테스트 케이스 설계 기법
    • 데이터 흐름 검사(Data Flow Testing):
      프로그램에서 변수의 정의와 변수 사용의 위치에 초점을 맞춰 실시하는 테스트 케이스 설계 기법

테스트 커버리지도 화이트박스 테스트의 종류다.

조건 커버리지, 분기 커버리지 등등,,

블랙박스 테스트의 종류

- 블랙박스 테스트의 종류에는 동치 분할 검사, 경계값 분석, 원인-효과 그래프 검사, 오류 예측 검사, 비교 검사 등이 있다.

동치 분할 검사
(Equivalence Partitioning Testing)
- 입력 자료에 초점을 맞춰 테스트 케이스를 만들고 검사하는 방법으로 동등 분할 기법이라고도 한다.
경계값 분석
(Boundary Value Analysis)
- 입력 자료에만 치중한 동치 분할 기법을 보완하기 위한 기법이다.
- 입력 조건의 중간값보다 경계값에서 오류가 발생될 확률이 높다는 점을 이용하여 입력 조건의 경계값을 테스트 케이스로 선정하여 검사하는 기법이다.
원인-효과 그래프 검사
(Cause-Effect Graphing Testing)
- 입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음 효용성이 높은 테스트 케이스를 선정하여 검사하는 기법이다.
오류 예측 검사
(Error Guessing)
- 과거의 경험이나 확인자의 감각으로 테스트하는 기법
- 다른 블랙 박스 테스트 기법으로는 찾아낼 수 없는 오류를 찾아내는 일력의 보충적 검사 기법, 데이터 확인 검사라고도 한다.
비교 검사
(Comparison Testing)
- 여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 동일한 결과가 출력되는지 테스트하는 기법이다.