| 입력(A) | 입력(B) | 출력(X) |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
진리표는 NAND 게이트의 동작이다.
두 입력이 모두 1일 때만 출력이 0이고 나머지 경우는 모두 1이다. 즉, AND 출력을 반전한 부정 논리곱이다.
- AND: 두 입력이 모두 1일 때만 출력이 1이므로 표와 정반대이다.
- OR: 입력이 모두 0일 때 출력이 0이어야 하는데 표에서는 1이다.
- XOR: 두 입력이 서로 다를 때만 출력이 1이므로, 입력이 모두 0일 때 출력이 1인 표와 맞지 않는다.
㉠ IR ← MBR
㉡ MAR ← PC
㉢ AC ← MBR
㉣ MBR ← M[MAR], PC ← PC + 1
인출 사이클은 MAR ← PC → MBR ← M[MAR], PC ← PC + 1 → IR ← MBR 순서로 진행된다.
먼저 다음 명령어의 주소를 MAR로 옮기고, 그 주소의 명령어를 메모리에서 읽어 MBR에 넣으면서 PC를 증가시킨다. 마지막으로 읽은 명령어를 IR로 옮겨야 해독 단계로 넘어갈 수 있다.
- IR ← MBR로 시작하는 순서: 메모리를 읽기도 전에 MBR 값을 IR로 옮기므로 성립하지 않는다.
- AC ← MBR로 시작하는 순서: AC로의 적재는 인출이 아니라 실행 사이클의 동작이다.
- MAR ← PC, 메모리 읽기 후 AC ← MBR로 끝나는 순서: 읽은 명령어가 IR이 아닌 AC로 들어가므로 인출이 완료되지 않는다.
직접 접근은 기억장소 근처로 먼저 이동한 뒤 순차 검색으로 데이터에 도달하는 방식이다.
디스크는 헤드를 해당 트랙으로 옮긴 다음 그 안에서 원하는 위치를 찾으므로, 위치에 따라 접근 시간이 달라지는 직접 접근 장치이다.
- 특정 비트를 비교해 일치하는 단어에 접근하는 설명: 내용으로 찾는 연관 접근이다.
- 저장 순서대로 접근하는 설명: 자기 테이프로 대표되는 순차 접근이다.
- 접근 시간이 항상 일정한 설명: RAM으로 대표되는 임의 접근이다.
○ 하단의 네트워크 서비스와 상단의 사용자 서비스 간의 인터페이스 기능을 담당한다.
○ 전체 메시지의 종단간(end-to-end) 전송을 수행하는 역할을 담당한다.
○ TCP, UDP 등의 프로토콜과 관련된 계층으로 에러 복구, 흐름 제어 등을 담당하며 두 시스템 간의 신뢰성 있는 데이터 전송을 보장한다.
설명된 계층은 전송 계층이다.
종단간(end-to-end) 전송, 오류 복구, 흐름 제어를 담당하며 TCP와 UDP가 이 계층의 대표 프로토콜이다.
- 네트워크 계층: IP 등을 이용해 패킷의 경로를 설정하고 전달한다.
- 데이터 링크 계층: 직접 연결된 인접 노드 사이의 프레임 전송을 담당한다.
- 세션 계층: 통신 양단의 대화를 설정·유지·동기화한다.
㉠ 프로세스가 어떤 이벤트가 일어나기를 기다리는 상태
㉡ 프로세서에 할당되기를 기다리는 상태
㉢ 프로세서를 점유하여 명령어들이 실행되는 상태
세 설명은 차례대로 대기, 준비, 실행 상태에 해당한다.
입출력 완료 같은 이벤트를 기다리면 대기 상태, 프로세서 할당만 기다리면 준비 상태, 프로세서를 점유해 명령어를 수행하면 실행 상태이다.
- 준비, 실행, 대기의 배열: 세 상태가 모두 어긋난다.
- 준비, 대기, 실행의 배열: 이벤트를 기다리는 상태와 프로세서를 기다리는 상태가 뒤바뀌었다.
- 대기, 실행, 준비의 배열: 프로세서를 기다리는 상태와 점유한 상태가 뒤바뀌었다.

중위 순회의 방문 순서는 D → B → E → A → C → F이므로 세 번째는 E, 다섯 번째는 C이다.
트리는 루트 A의 왼쪽 자식 B(자식 D·E), 오른쪽 자식 C(오른쪽 자식 F만 존재)로 구성된다. 중위 순회는 왼쪽 서브트리 → 루트 → 오른쪽 서브트리 순으로 방문하므로 B 서브트리(D, B, E) 다음 A, 이어서 C 서브트리(C, F) 순이 된다. C는 왼쪽 자식이 없어 자신을 먼저 방문한 뒤 F로 간다.
- D, C: D는 첫 번째로 방문되는 노드이다.
- B, C: B는 두 번째로 방문되는 노드이다.
- C, E: 두 노드의 순서가 뒤바뀌었다. E가 세 번째, C가 다섯 번째이다.
PCM의 디지털화는 표본화 → 양자화 → 부호화 순서로 진행된다.
아날로그 신호를 일정 간격으로 추출하고, 추출한 값을 이산적인 크기로 근사한 뒤, 그 값을 2진 부호로 바꾼다.
- 양자화로 시작하는 순서: 표본을 추출해야 크기를 근사할 값이 생기므로 표본화가 먼저이다.
- 부호화로 시작하는 순서: 양자화된 값이 있어야 부호로 바꿀 수 있으므로 성립하지 않는다.
- 표본화 다음에 부호화가 오는 순서: 부호화는 양자화된 값을 대상으로 하므로 두 단계가 뒤바뀌었다.
㉠ 이 영역에 데이터를 저장하기 위해서 C는 malloc(), C++은 new를 사용
㉡ 지역(local) 변수, 매개변수(parameter), 리턴 값 등 잠시 사용되었다가 사라지는 데이터를 저장
㉢ 전역(global) 변수, 정적(static) 변수, 배열, 구조체 등을 저장
㉣ 함수 호출 시 생성되고 함수가 끝나면 반환
스택 영역의 설명은 지역 변수·매개변수·리턴 값 저장과 함수 호출 시 생성, 종료 시 반환이다.
스택은 함수 호출마다 필요한 데이터를 쌓고, 함수가 끝나면 자동으로 해제하는 영역이다.
- malloc()·new 설명과 지역 변수 설명의 조합: malloc()과 new로 할당하는 공간은 힙 영역이다.
- 지역 변수 설명과 전역·정적 변수 설명의 조합: 전역·정적 변수는 데이터 영역에 저장된다.
- malloc()·new 설명과 함수 호출 시 생성 설명의 조합: 앞의 설명이 힙 영역에 해당한다.
R
| A | B | C |
|---|---|---|
| 1 | a | 10 |
| 2 | b | 20 |
| 3 | c | 20 |
| C | D |
|---|---|
| 20 | x |
| 30 | y |
| A | B | C |
|---|---|---|
| 2 | b | 20 |
| 3 | c | 20 |
적용된 연산은 세미조인(R ⋉ S)이다.
공통 속성 C를 기준으로 S의 C 값과 일치하는 R의 튜플만 남기고, 결과에는 R의 속성만 나타난다. C가 20인 두 튜플만 남고 속성이 A, B, C뿐이므로 결과와 일치한다.
- R × S: 카티션 곱이므로 3 × 2 = 6개 튜플이 나오고 S의 속성도 포함된다.
- R ⋈ S: 자연 조인이므로 결과에 S의 속성 D가 함께 나타나야 한다.
- R ⟖ S: 오른쪽 외부 조인이므로 속성 D가 포함되고, 짝이 없는 S의 튜플(30, y)도 널과 함께 남아야 한다.
직원
| 번호 | 이름 | 소속 |
|---|---|---|
| 1 | 김경감 | 100함 |
| 2 | 이경위 | P-20정 |
| 3 | 박순경 | 100함 |
| 4 | 정경위 | 300함 |
SELECT DISTINCT 소속
FROM 직원;
결과 테이블의 카디널리티는 세 행이다.
카디널리티는 튜플(행)의 수이고, DISTINCT는 중복 값을 하나만 남긴다. 소속 값은 100함이 두 번 나타나므로 100함, P-20정, 300함만 남는다.
- 한 행: 소속 값이 모두 같아야 나오는 결과이다.
- 두 행: 소속 값이 두 종류여야 나오는 결과이다.
- 네 행: DISTINCT 없이 소속을 조회했을 때의 행 수이다.
옳지 않은 설명은 IPv6 주소 비트 수가 IPv4의 2배라는 내용이다.
IPv4는 32비트, IPv6는 128비트이므로 주소 비트 수는 4배이다.
- 128비트 길이: IPv6 주소 길이로 옳다.
- 40바이트 고정 기본 헤더: 확장 정보는 별도의 확장 헤더로 처리하므로 옳다.
- 애니캐스트 주소 도입: IPv6는 유니캐스트, 멀티캐스트와 함께 애니캐스트를 지원하므로 옳다.
올바른 후위 표기식은 AB+CDE/-*이다.
괄호와 우선순위에 따라 안쪽부터 변환한다.
A+B → AB+
D/E → DE/
C-D/E → CDE/-
두 결과를 곱하면 → AB+CDE/-*
- ABCDE+*-/: 계산하면 A/(B-C*(D+E))가 되어 원래 식과 다르다.
- AB+CD-E/*: 계산하면 (A+B)*((C-D)/E)가 되어 뺄셈이 나눗셈보다 먼저 수행된다.
- AB+*CD-E/: AB+ 다음의 * 연산자에 필요한 피연산자가 하나뿐이어서 식이 성립하지 않는다.
| 초기값 | 3 | 5 | 1 | 2 | 4 |
|---|---|---|---|---|---|
| 1단계 | 1 | 5 | 3 | 2 | 4 |
| 2단계 | 1 | 2 | 3 | 5 | 4 |
| 3단계 | 1 | 2 | 3 | 5 | 4 |
| 4단계 | 1 | 2 | 3 | 4 | 5 |
수행 과정은 선택 정렬이다.
단계마다 남은 구간의 최솟값을 골라 구간 맨 앞 원소와 교환한다. 1, 2, 3, 4가 차례로 제자리에 놓이며, 3단계처럼 최솟값이 이미 맨 앞이면 배열이 바뀌지 않는다.
- 버블 정렬: 인접한 원소끼리만 교환하는데, 1단계에서는 떨어져 있는 3과 1이 맞바뀌었다.
- 삽입 정렬: 1단계에서는 5를 3 뒤에 두어 배열이 그대로여야 하지만 실제로는 바뀌었다.
- 힙 정렬: 일반적인 오름차순 수행은 힙에서 가장 큰 값을 뽑아 뒤쪽부터 확정하므로 앞쪽부터 확정되는 과정과 다르다.
㉠ 쓰레기 수집 기능을 수행한다.
㉡ 변수에 대해 타입 선언 없이 사용할 수 있다.
㉢ 가상 머신이 동일한 실행 환경을 제공하므로 아키텍처 중립적이다.
㉣ 포인터를 이용하여 메모리의 내용에 직접 접근할 수 있다.
자바의 설명은 쓰레기 수집 기능과 아키텍처 중립성이다.
자바는 사용하지 않는 메모리를 가비지 컬렉터가 자동으로 회수하고, 자바 가상 머신이 동일한 실행 환경을 제공하므로 플랫폼에 독립적이다.
- 타입 선언 없는 변수 사용: 자바는 정적 타입 언어이므로 변수에 타입을 선언해야 한다.
- 포인터를 이용한 메모리 직접 접근: 자바는 포인터 연산을 지원하지 않는다.
이 전개 방식은 하이브리드 클라우드이다.
외부 사업자의 퍼블릭 클라우드와 자체 구축한 온프레미스 프라이빗 클라우드를 함께 연계해 사용하기 때문이다.
- 프라이빗 클라우드: 조직 전용 환경만을 뜻하므로 네이버 클라우드 이용을 포함하지 못한다.
- 퍼블릭 클라우드: 외부 사업자의 공용 서비스만을 뜻하므로 자체 구축 환경을 포함하지 못한다.
- 멀티 클라우드: 통상 여러 사업자의 퍼블릭 클라우드를 병행하는 방식을 뜻한다.
㉠ 객체는 재사용이 가능하나 클래스는 재사용이 불가능하다.
㉡ 다형성(polymorphism)을 지원한다.
㉢ 추상메소드는 메소드의 선언만 하고 그 내용은 기술하지 않는 메소드이다.
㉣ 상속(inheritance)이란 속성과 관련된 오퍼레이션을 클래스 안에 묶어서 하나로 취급하는 것이다.
옳은 설명은 다형성 지원과 추상메소드의 정의, 두 가지이다.
객체지향 언어는 같은 이름의 연산이 객체에 따라 다르게 동작하는 다형성을 지원한다. 추상메소드는 선언만 있고 구현은 하위 클래스에서 기술한다.
- 클래스는 재사용이 불가능하다는 설명: 클래스는 상속 등으로 재사용할 수 있다.
- 속성과 오퍼레이션을 하나로 묶는다는 상속 설명: 이는 캡슐화의 설명이며, 상속은 상위 클래스의 속성과 메소드를 물려받는 것이다.
㉠ FORTRAN
㉡ BASIC
㉢ 파이썬(python)
㉣ C++
㉤ COBOL
컴파일러 방식 언어는 FORTRAN, C++, COBOL의 세 가지이다.
이들은 일반적으로 소스 코드 전체를 목적 코드로 번역한 뒤 실행한다.
- BASIC: 일반적으로 소스 코드를 한 줄씩 해석해 실행하는 인터프리터 방식이다.
- 파이썬: 일반적으로 인터프리터로 실행되는 언어이다.
㉠ 캐시메모리
㉡ 주기억장치
㉢ SSD(Solid State Disk)
㉣ 레지스터
가장 빠른 것은 레지스터, 가장 느린 것은 SSD이다.
접근 속도는 레지스터, 캐시메모리, 주기억장치, SSD 순으로 빠르다. CPU에 가까운 계층일수록 빠르고, 보조기억장치인 SSD가 가장 느리다.
- 캐시메모리와 주기억장치의 조합: 가장 빠른 것은 레지스터이고 가장 느린 것은 SSD이다.
- 캐시메모리와 SSD의 조합: 가장 느린 것은 맞지만 캐시메모리는 레지스터보다 느리다.
- 레지스터와 주기억장치의 조합: 가장 빠른 것은 맞지만 주기억장치는 SSD보다 빠르다.
㉠ 동등분할(equivalence partitioning)
㉡ 루프시험(loop test)
㉢ 기초경로시험(basic path test)
㉣ 조건시험(condition test)
㉤ 비교검사(comparison test)
화이트박스 테스트는 루프시험, 기초경로시험, 조건시험의 세 가지이다.
화이트박스 테스트는 프로그램의 내부 구조와 논리 흐름을 기준으로 검사하며, 세 기법 모두 경로·조건·반복 구조를 살핀다.
- 동등분할: 입력을 유효·무효 영역으로 나누어 기능을 검사하는 블랙박스 테스트이다.
- 비교검사: 같은 입력을 여러 버전에 넣어 출력을 비교하는 블랙박스 테스트이다.
㉠ 공격자는 사용자의 합법적 도메인을 탈취하거나 도메인 네임 시스템(DNS) 또는 프락시 서버의 주소를 변조하여, 사용자가 진짜 사이트로 오인하여 접속하도록 유도한 후 개인정보를 훔친다.
㉡ 유명 은행이나 전자상거래업체 등의 홈페이지와 동일하게 보이는 위장 홈페이지를 만든 후, 인터넷 이용자에게 전자우편을 보내 위장 홈페이지를 접속하게 하여 개인정보를 입력하도록 유인하는 사기 수법이다.
㉢ 신뢰하는 시스템으로 가장하기 위해 고유 식별자를 위장하여 상대를 속이는 기법이다. 최근에는 공격자가 자신의 흔적을 노출하지 않기 위해 사용한다. 해킹 시 자신의 IP 주소, DNS 이름, MAC 주소 등과 같은 고유 식별자를 위장하여 역추적을 어렵게 한다.
세 설명은 차례대로 파밍, 피싱, 스푸핑에 해당한다.
파밍은 도메인·DNS 변조로 정상 주소에서도 가짜 사이트로 유도하고, 피싱은 전자우편 등으로 위장 사이트 접속을 유도한다. 스푸핑은 IP 주소, MAC 주소 같은 식별자를 위장하는 기법이다.
- 파밍, 피싱, 스니핑의 조합: 스니핑은 네트워크 패킷을 몰래 엿보는 도청 기법으로, 식별자 위장과 다르다.
- 하이재킹, 피싱, 스푸핑의 조합: 하이재킹은 이미 맺어진 세션 등을 가로채는 공격으로, DNS 변조를 이용한 유도와 다르다.
- 하이재킹, 스미싱, 스니핑의 조합: 스미싱은 문자메시지를 이용한 사기로 전자우편 방식 설명과 맞지 않고, 나머지 두 용어도 어긋난다.