트랜잭션의 성질(ACID)에 의존성(dependency)은 포함되지 않는다.
ACID는 원자성·일관성·독립성(격리성)·지속성의 네 가지 성질을 말한다.
- 원자성: 트랜잭션의 연산은 모두 반영되거나 전혀 반영되지 않아야 한다.
- 일관성: 트랜잭션 수행 전후에 데이터베이스가 무결성 제약을 만족하는 일관된 상태를 유지해야 한다.
- 독립성: 동시에 실행되는 트랜잭션은 서로의 중간 결과에 간섭하지 않아야 한다.
IPv6 주소는 128비트, 즉 16바이트 주소 체계이므로 옳다.
IPv4 주소는 32비트(4바이트)이고, 첫 옥텟 범위로 클래스를 구분한다.
- IPv4는 8바이트가 아니라 4바이트(32비트) 주소 체계이다.
- 20바이트는 IPv4 기본 헤더 크기이며, IPv6의 기본 헤더는 40바이트 고정 길이이다.
- 143.248.166.12는 첫 옥텟이 128~191 범위이므로 클래스 C가 아니라 클래스 B에 해당한다.
ㄴ. 6비트를 사용하여 하나의 문자를 표시하는 방식이다.
ㄷ. 7개의 데이터 비트와 1개의 패리티 비트로 구성되어 총 8개의 비트를 사용한다.
옳은 것은 표현 가능한 문자 수가 256개라는 설명 하나뿐이다.
EBCDIC는 IBM이 만든 8비트 확장 BCD 코드로, 개의 문자를 표현한다.
- 6비트로 한 문자를 표시하는 방식은 BCD 코드이며, EBCDIC는 8비트를 사용한다.
- 7개의 데이터 비트에 1개의 패리티 비트를 붙이는 구성은 ASCII 코드의 특징이며, EBCDIC는 데이터 비트만 8개이다(패리티를 붙이면 9비트).
단계 1: [11, 31, 3, 17, 9, 32, 23, 70]
단계 2: [11, 3, 17, 9, 31, 23, 32, 70]
단계 3: [ (가) ]
⋮
(가)는 [3, 11, 9, 17, 23, 31, 32, 70]이다.
버블 정렬은 한 단계마다 인접한 두 값을 앞에서부터 비교해 앞의 값이 크면 교환한다. 단계 2의 결과 [11, 3, 17, 9, 31, 23, 32, 70]에 이를 적용한다.
11과 3 교환 → [3, 11, 17, 9, …]
17과 9 교환 → [3, 11, 9, 17, 31, …]
31과 23 교환 → [3, 11, 9, 17, 23, 31, 32, 70]
나머지 비교(11·17, 17·31, 31·32)는 교환이 없다.
- 3, 9, 11로 시작하는 배열은 한 단계에서 9가 두 칸 앞으로 이동한 것이어서 버블 정렬 한 단계 결과가 될 수 없다.
- 11, 3으로 시작하는 두 배열은 맨 앞의 11과 3을 교환하지 않은 상태이므로 틀리다.
ㄴ. EDVAC(Electronic Discrete Variable Automatic Computer)
ㄷ. ENIAC(Electronic Numerical Integrator And Computer)
ㄹ. MARK I
프로그램 내장 방식을 적용한 컴퓨터는 EDSAC과 EDVAC이다.
프로그램 내장 방식은 폰 노이만이 제안한 것으로, 프로그램과 데이터를 함께 기억장치에 저장해 두고 명령어를 순서대로 읽어 실행한다. EDSAC은 이 방식을 최초로 구현한 컴퓨터이고, EDVAC도 이 방식으로 설계되었다.
- ENIAC은 최초의 전자식 범용 컴퓨터이지만, 프로그램을 바꾸려면 배선을 직접 바꿔야 하는 외부 프로그램 방식이었다.
- MARK I은 전기 기계식 계산기로, 프로그램을 천공 테이프로 공급받았으며 내장 방식이 아니다.
| 위치 | 빈 공간 크기 |
|---|---|
| 1번 | 10 Kbyte |
| 2번 | 25 Kbyte |
| 3번 | 30 Kbyte |
| 4번 | 15 Kbyte |
12 Kbyte 요청이 15 Kbyte 공간에 할당되었으므로 최적 적합(best fit)이다.
12 Kbyte를 수용할 수 있는 빈 공간은 25, 30, 15 Kbyte이며, 이 중 가장 작은 공간이 15 Kbyte이다. 남는 단편화가 가장 작은 공간을 고르는 기법이 최적 적합이다.
- 최초 적합이라면 앞에서부터 처음 들어가는 25 Kbyte 공간에 할당된다.
- 최악 적합이라면 가장 큰 30 Kbyte 공간에 할당된다.
- 중앙 적합은 일반적인 메모리 배치 기법이 아니다.
설명은 스택(stack) 영역에 해당한다.
함수가 호출될 때마다 지역변수, 매개변수, 복귀 주소를 담은 스택 프레임이 쌓이고, 함수가 끝나면 제거된다.
- 데이터 영역: 전역변수와 정적(static) 변수를 저장한다.
- 코드 영역: 실행할 프로그램의 기계어 명령어를 저장한다.
- 힙 영역: 실행 중 동적으로 할당하는 메모리(malloc, new 등)를 저장한다.
MAC 주소로부터 IP 주소를 구하는 프로토콜은 ICMP가 아니라 RARP이므로 옳지 않다.
ICMP는 IP 통신 중 발생한 오류 보고와 제어 메시지를 전달하는 프로토콜이며, ping·traceroute가 이를 이용한다.
- TCP는 3-way 핸드셰이크로 연결을 설정한 뒤 통신하는 연결 지향형 프로토콜이다.
- ARP는 IP 주소를 알 때 해당 장비의 MAC 주소를 알아내는 프로토콜이다.
- IPv4 클래스 B는 앞 16비트를 네트워크 주소, 마지막 16비트를 호스트 주소로 사용한다.

중위 순회 방문 순서는 D, B, H, E, I, A, F, C, G이다.
중위 순회는 왼쪽 서브트리 → 루트 → 오른쪽 서브트리 순으로 방문한다. 루트 A의 왼쪽 서브트리(B, D, E, H, I)는 D → B → (H → E → I)가 되고, 이어 A를 방문한 뒤 오른쪽 서브트리를 F → C → G로 방문한다.
- A, B, D, E, H, I, C, F, G: 루트를 먼저 방문하는 전위 순회 결과이다.
- A, B, D, E, H, I, F, C, G: 루트 A를 처음에 방문하므로 왼쪽 서브트리를 먼저 끝내야 하는 중위 순회 규칙에 어긋난다.
- D, H, I, E, B, F, G, C, A: 자식을 모두 방문한 뒤 루트를 마지막에 방문하는 후위 순회 결과이다.
설명에 해당하는 기술은 메타버스(metaverse)이다.
메타버스는 가상·초월(meta)과 세계(universe)의 합성어로, 현실과 가상이 결합된 3차원 공간에서 사회·경제·문화 활동을 하는 것을 뜻한다.
- 사물인터넷: 사물에 센서와 통신 기능을 넣어 인터넷으로 정보를 주고받는 기술이다.
- 텔레매틱스: 통신과 정보과학을 결합해 차량 등에 위치·교통·원격 진단 정보를 제공하는 서비스이다.
- NFT: 블록체인으로 디지털 자산의 고유성과 소유권을 증명하는 대체 불가능한 토큰이다.
파일 크기는 약 6 Mbyte이다.
크기 = 샘플링 주파수 × 양자화 비트 수 × 채널 수 × 시간
스테레오는 2채널이므로 2를 곱하며, 비트를 바이트로 바꾸려면 8로 나눈다. 8로 나누지 않으면 약 48, 채널 수를 빼면 약 3이 되어 계산이 틀어진다.
| 연산코드(5비트) | 주소부(7비트) |
지정할 수 있는 메모리의 최대 크기는 128바이트이다.
직접 주소 지정 방식에서는 주소부 값이 곧 유효 주소이므로, 주소부 7비트로 구별할 수 있는 주소 수가 메모리 크기를 결정한다.
개 주소 × 1바이트 = 128바이트
연산코드 5비트는 명령어 종류(최대 32가지)를 나타낼 뿐 주소 범위와는 무관하다.
을 왼쪽 산술 시프트 1회 하면 92가 되어 과 다르다.
왼쪽 산술 시프트 1회는 값에 2를 곱하는 것과 같다:
- 이다.
- 이므로 두 번 더하면 이다.
- , 이므로 곱은 이다.
캐시 집합의 개수는 128이다.
블록 수 = 캐시 크기 ÷ 블록 크기
개
집합 수 = 블록 수 ÷ 연관도(way)
개
4-방향 집합 연관 사상은 한 집합에 블록 4개를 두므로 전체 블록 수를 4로 나눈다.
#include <stdio.h>
int main(void) {
int x = 100, y = 200;
int* px = &x, *py = &y, *tmp;
(*px) -= 10;
(*py) += 50;
tmp = px;
px = py;
py = tmp;
(*px) += 50;
(*py) -= 10;
printf("x: %d, y: %d \n", x, y);
return 0;
}
출력은 x: 80, y: 300이다.
처음 px는 x, py는 y를 가리킨다.
(*px) -= 10 → x = 90
(*py) += 50 → y = 250
tmp를 이용해 포인터만 교환하므로 이후 px는 y, py는 x를 가리킨다(변수 값은 바뀌지 않음).
(*px) += 50 → y = 300
(*py) -= 10 → x = 80
포인터 교환을 값 교환으로 착각하면 x와 y가 뒤바뀐 결과를 얻게 된다.
| 프로세스 | 도착 시간(ms) | 실행 시간(ms) |
|---|---|---|
| 0 | 8 | |
| 1 | 4 | |
| 2 | 6 | |
| 3 | 5 |
평균 대기 시간은 11 ms이다.
실행 순서(타임 슬라이스 4 ms): (0~4) → (4~8, 종료) → (8~12) → (12~16) → (16~20, 종료) → (20~22, 종료) → (22~23, 종료)
대기 시간 = 종료 시각 − 도착 시간 − 실행 시간
,
,
합계 를 프로세스 수 4로 나누면 이다. 총합 44를 평균으로 착각하지 않도록 주의한다.
val = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
rst = 0
for i in range(2, len(val), 3):
rst = rst + val[i]
print(rst)
출력 결과는 30이다.
len(val)은 12이므로 range(2, 12, 3)은 2, 5, 8, 11의 인덱스를 만든다.
val[2] = 3, val[5] = 6, val[8] = 9, val[11] = 12
rst = 3 + 6 + 9 + 12 = 30
파이썬 인덱스는 0부터 시작하므로 인덱스 2의 값은 3이다.
애자일은 구현 단계에서도 고객의 추가 요구 사항을 반영하므로, 반영하지 않는다는 설명이 옳지 않다.
애자일은 짧은 반복 주기마다 고객 피드백을 받아 변화에 대응하는 것을 계획을 따르는 것보다 중시한다.
- 고객의 요구 사항 변화를 허용하는 것은 애자일의 핵심 특징이다.
- 익스트림 프로그래밍(XP)은 스크럼과 함께 대표적인 애자일 기법이다.
- 애자일 선언은 포괄적인 문서보다 작동하는 소프트웨어에 더 가치를 둔다.
추상화에 의존해야 한다는 원칙은 의존관계 역전 원칙(DIP)이다.
DIP는 상위 모듈과 하위 모듈이 모두 구체 클래스가 아닌 인터페이스·추상 클래스에 의존해야 한다는 원칙이다.
- 개방-폐쇄 원칙: 확장에는 열려 있고 수정에는 닫혀 있어야 한다.
- 단일 책임 원칙: 클래스는 하나의 책임만 가져야 한다.
- 인터페이스 분리 원칙: 클라이언트는 사용하지 않는 메서드에 의존하지 않도록 인터페이스를 작게 나눠야 한다.

위상 정렬이 가능한 그래프는 ㄱ과 ㄹ이다.
위상 정렬은 사이클이 없는 방향 그래프(DAG)에서만 가능하다. ㄱ은 A, B, D, C 순으로, ㄹ은 A, B, C, D, E, F, G 순으로 모든 간선이 앞에서 뒤로 향하게 나열할 수 있다.
- ㄱ, ㄴ: ㄴ은 간선에 방향이 없는 무방향 그래프라 선후 관계를 정할 수 없으므로 위상 정렬 대상이 아니다.
- ㄴ, ㄷ: ㄴ은 무방향 그래프이고, ㄷ은 A → B → C → A로 되돌아오는 사이클이 있어 둘 다 불가능하다.
- ㄷ, ㄹ: ㄷ에는 A → B → C → A와 C → E → F → C의 사이클이 있어 위상 정렬이 불가능하다.