리눅스는 모놀리식(monolithic) 커널 구조이므로, 마이크로커널 방식으로 구현되었다는 설명이 옳지 않다.
리눅스는 커널 기능 대부분이 하나의 커널 공간에서 동작하며, 대신 적재 가능 커널 모듈(LKM)로 장치 드라이버 등을 실행 중에 동적으로 올리고 내릴 수 있다. 동적 적재 기능이 있다고 해서 마이크로커널이 되는 것은 아니다.
- 커널 2.6의 스케줄러: 커널 선점을 지원하는 우선순위 기반 스케줄러로 옳은 설명이다.
- 파일 시스템 지원: NTFS 와 플래시용 저널링 파일 시스템인 JFFS 를 지원하므로 옳다.
- 다중 사용자·다중 프로세서를 지원하는 다중 작업 운영체제라는 설명은 옳다.
구조화는 구조적(절차적) 프로그래밍의 특징이며 객체지향 언어의 특징이 아니다.
객체지향의 대표 특징은 캡슐화·상속성·다형성·추상화이다.
- 상속성: 상위 클래스의 속성과 메서드를 하위 클래스가 물려받아 재사용한다.
- 다형성: 같은 메시지(메서드 이름)에 객체마다 다르게 반응한다(오버로딩·오버라이딩).
- 추상화: 문제의 핵심 속성과 동작만 뽑아 클래스로 모델링한다.
워드프로세서는 문서 작성이라는 특정 업무를 위한 응용 소프트웨어이다.
시스템 소프트웨어는 하드웨어를 관리하고 다른 프로그램의 실행·개발 환경을 제공하는 소프트웨어로, 운영체제와 언어 번역 프로그램 등이 해당한다.
- 윈도우 XP: 운영체제이므로 시스템 소프트웨어이다.
- 리눅스: 운영체제이므로 시스템 소프트웨어이다.
- 컴파일러: 원시 프로그램을 목적 프로그램으로 번역하는 언어 번역기로 시스템 소프트웨어이다.
교착상태의 필요 조건은 비선점(no preemption)이므로, 자원이 다른 프로세스에 의해 선점될 수 있다는 선점 조건은 옳지 않다.
교착상태는 상호 배제·점유와 대기·비선점·환형 대기 네 조건이 동시에 성립할 때 발생할 수 있다. 자원을 강제로 빼앗을 수 있다면 오히려 교착상태가 풀린다.
- 환형 대기: 프로세스들이 원형으로 서로가 가진 자원을 기다리는 조건으로 옳다.
- 점유하며 대기: 자원을 가진 채 다른 자원을 기다리는 조건으로 옳다.
- 상호 배제: 자원을 한 번에 한 프로세스만 배타적으로 사용하는 조건으로 옳다.
자신을 다른 주체로 속이고 IP 주소 등을 위조해 침입하는 기법은 스푸핑(Spoofing)이다.
스푸핑은 IP·ARP·DNS·MAC 주소 등을 위조해 신뢰 관계를 악용하며, 그중 IP 주소를 바꾸는 것이 IP 스푸핑이다.
- Sniffing: 네트워크를 지나는 패킷을 몰래 엿듣는(도청) 기법이다.
- Phishing: 가짜 웹사이트·메일로 개인정보나 금융정보를 낚는 기법이다.
- DoS 공격: 대량 요청으로 시스템 자원을 고갈시켜 서비스를 마비시키는 공격이다.
RAID-4는 데이터를 블록 단위로 분산 저장하고 별도 패리티 디스크를 쓰므로, 비트 단위로 분할한다는 설명이 옳지 않다.
비트(또는 바이트) 단위 스트라이핑에 전용 패리티 디스크를 쓰는 방식은 RAID-3(비트 단위 해밍 코드는 RAID-2)이다.
- RAID-0: 스트라이핑만 하며 중복 저장·오류 교정이 없어 옳은 설명이다.
- RAID-1: 같은 데이터를 두 디스크에 복제하는 미러링으로 신뢰도가 높아 옳다.
- RAID-5: 패리티를 모든 디스크에 분산 저장하고 단일 디스크 오류를 복구할 수 있어 옳다.
직접 사상은 주기억장치의 각 블록이 정해진 하나의 슬롯에만 사상되므로, 어떤 슬롯으로든 사상될 수 있다는 설명이 옳지 않다.
임의의 슬롯에 자유롭게 들어갈 수 있는 방식은 연관 사상(완전 연관 사상)이다.
- 세트-연관 사상: 블록이 정해진 세트로 가고(직접 사상) 세트 안에서는 아무 슬롯에나 들어가는(연관 사상) 혼합 방식으로 옳다.
- 4-way 세트-연관 사상: 같은 세트를 공유하는 블록들이 그 세트의 4개 슬롯 중 하나에 적재될 수 있어 옳다.
- 캐시 쓰기 정책: 즉시 주기억장치에도 쓰는 write through 와 교체 시에 쓰는 write back 이 있어 옳다.
Go-Back-N ARQ 에서는 오류 프레임부터 그 뒤에 보낸 프레임까지 모두 재전송하므로 4개가 재전송된다.
프레임 6까지 보낸 상태에서 프레임 3에 오류가 나면 프레임 3·4·5·6을 다시 보낸다.
오류 프레임 하나만 다시 보내는 방식은 Selective Repeat ARQ이며, 이 경우라면 1개만 재전송된다.
<테이블명 : 성적>
| 학번 | 과목 | 성적 | 점수 |
|---|---|---|---|
| 100 | 자료구조 | A | 90 |
| 100 | 운영체제 | A | 95 |
| 200 | 운영체제 | B | 85 |
| 300 | 프로그래밍 | A | 90 |
| 300 | 데이터베이스 | C | 75 |
| 300 | 자료구조 | A | 95 |
SELECT 과목, COUNT(*) AS 학생수, AVG(점수) AS 평균점수
FROM 성적
GROUP BY 과목 ________
그룹화한 결과에 조건을 거는 절은 HAVING이고, 수강 인원은 COUNT(학번)으로 센다.
GROUP BY 과목으로 묶은 뒤 HAVING COUNT(학번) >= 2 를 붙이면 2명이 수강한 자료구조·운영체제만 학생수와 평균점수가 출력된다.
- WHERE COUNT(학번) >= 2: WHERE 는 그룹화 전 개별 행을 거르는 절이라 집계 함수를 조건으로 쓸 수 없다.
- WHERE SUM(학번) >= 2: WHERE 에 집계 함수를 쓸 수 없고, 학번의 합계는 인원 수와도 무관하다.
- HAVING SUM(학번) >= 2: 절은 맞지만 SUM 은 학번 값을 더할 뿐 학생 수를 세지 못한다.

순서도는 차례대로 for문 – while문 – case문 – do~while문을 나타낸다.
첫 구조는 조건식이 참이면 명령문과 증감연산을 실행하고 되돌아가므로 for문이고, 두 번째는 증감연산 없이 조건을 먼저 판정한 뒤 명령문을 반복하므로 while문이다. 세 번째는 조건식을 차례로 검사해 여러 명령문 중 하나로 갈라지는 다중 선택(case문)이며, 마지막은 명령문을 먼저 실행하고 조건이 참이면 되풀이하므로 do~while문이다.
- do~while문-for문-중첩조건문-조건문: 첫 구조는 조건을 먼저 검사하고 증감연산을 포함하므로 사후 판정 반복(do~while문)이 아니다.
- for문-do~while문-중첩조건문-조건문: 두 번째 구조는 조건을 먼저 판정하므로 while문이고, 마지막 구조는 명령문을 되풀이하는 반복문이지 조건문이 아니다.
- do~while문-조건문-case문-while문: 첫 구조는 증감연산을 갖춘 for문이고, 마지막 구조는 명령문을 먼저 실행한 뒤 조건을 판정하므로 while문이 아니라 do~while문이다.
윤년 조건은 (4의 배수이면서 100의 배수가 아님) 또는 400의 배수이므로 연도%4==0 && 연도%100!=0 || 연도%400==0 이 알맞다.
C언어에서 && 가 || 보다 우선순위가 높아 앞의 두 조건이 먼저 묶인 뒤 400의 배수 조건과 OR 로 결합된다.
연도%4!=0 && 연도%100==0 || 연도%400!=0: 앞의 두 조건은 동시에 성립할 수 없어 사실상 400의 배수가 아닌 해를 고르므로 2001년 같은 평년까지 참이 되어 틀린다.연도%4!=0 && 연도%100==0 && 연도%400!=0: 4의 배수가 아니면서 100의 배수인 수는 없으므로 항상 거짓이다.연도%4==0 && 연도%100!=0 && 연도%400==0: 400의 배수이면서 100의 배수가 아니어야 하므로 성립하는 연도가 없어 틀린다.
461을 16진수로 바꾸면 이다.
16으로 계속 나누어 나머지를 거꾸로 읽는다.
검산: 이다.
- 은 410이다.
- 은 475이다.
- 은 735이다.
최소값이나 최대값을 구하는 데 가장 적합한 자료구조는 힙(heap)이다.
힙은 완전 이진 트리로 루트에 항상 최소값(최소 힙) 또는 최대값(최대 힙)이 있어 에 꺼내 볼 수 있고, 삭제·삽입도 이다.
- 이진탐색트리: 가장 왼쪽·오른쪽 노드를 찾아가야 하며 편향되면 까지 걸린다.
- 스택: 후입선출 구조로 최소·최대값을 찾으려면 전체를 훑어야 한다.
- 해쉬: 키로 바로 찾는 탐색용이며 값의 크기 순서를 유지하지 않는다.
IP 주소를 이용한 논리 주소 지정과 경로 선택(라우팅)은 네트워크 계층의 기능이다.
네트워크 계층(3계층)은 패킷을 송신지에서 최종 수신지까지 여러 네트워크를 거쳐 전달하며, 대표 프로토콜은 IP, 대표 장비는 라우터이다.
- 데이터링크 계층: MAC 주소로 인접 노드 간 프레임 전송과 오류·흐름 제어를 담당한다.
- 전송 계층: 포트 번호로 종단 간(프로세스 간) 신뢰성 있는 전송을 담당한다(TCP·UDP).
- 세션 계층: 통신 세션의 설정·유지·동기화를 담당한다.
도메인 주소를 IP 주소로 변환해 주는 서버는 DNS(Domain Name System) 서버이다.
사용자가 도메인 이름을 입력하면 DNS 서버가 이를 IP 주소로 바꿔 알려 주어 해당 호스트에 접속할 수 있게 한다.
- PROXY 서버: 클라이언트 대신 외부 서버에 접속해 주는 중계 서버로 캐싱·접근 제어에 쓰인다.
- DHCP 서버: 호스트에 IP 주소 등 네트워크 설정을 자동으로 할당한다.
- WEB 서버: HTTP 요청을 받아 웹 페이지를 제공한다.
음성을 IP 패킷으로 바꾸어 인터넷으로 통화하게 하는 기술은 VoIP(Voice over IP)이다.
VoIP 는 음성 신호를 디지털화·압축해 IP 망으로 전송하므로 인터넷 전화의 기반 기술이다.
- VPN: 공중망 위에 암호화된 터널을 만들어 전용망처럼 쓰는 가상 사설망이다.
- IPSec: 네트워크 계층에서 IP 패킷을 암호화·인증하는 보안 프로토콜이다.
- IPv6: 128비트 주소 체계를 쓰는 차세대 인터넷 프로토콜이다.
비압축 WAV 크기는 샘플링율 × 샘플당 비트 수 × 채널 수 × 시간으로 구하며, 결과는 약 17.6MB이다.
- 141.1KB 는 계산값보다 훨씬 작아 100초 분량이 될 수 없다.
- 8.8MB 는 모노(1채널)로 계산한 값이다.
- 70.5MB 는 계산값의 4배로 실제보다 크다.

사용자(액터)와 시스템 기능(타원)을 연결한 그림은 Usecase Diagram이다.
사람 모양의 액터 '전자계산기 사용자'가 '전원을 켠다', '버튼을 누른다', '전원을 끈다'라는 유스케이스(타원)와 연결되어, 사용자 관점에서 시스템이 제공하는 기능을 보여 준다.
- Sequence Diagram: 객체 사이 메시지를 시간 순서로 나타내며 생명선과 메시지 화살표로 그린다.
- State Diagram: 객체의 상태와 이벤트에 따른 상태 전이를 나타낸다.
- Class Diagram: 클래스의 속성·연산과 클래스 간 관계를 나타내는 정적 구조도이다.
| A | B | C | |
|---|---|---|---|
| 1 | 이름 | 학번 | 연락처 |
| 2 | 김철수 | 208-4101 | 010-2109-8765 |
| 3 | 이영희 | 208-4102 | 011-3456-7890 |
| 4 | 홍길동 | 208-4103 | 019-2119-9019 |
수식의 결과는 2119-9019****이다.
C4 값 019-2119-9019 는 13글자이므로 LEN(C4)-4 = 9 가 되고, RIGHT(C4, 9)는 오른쪽 9글자 2119-9019 를 돌려준다. 여기에 & 연산자로 "****"를 뒤에 이어 붙인다.
- ****2119-9019: 별표는 & 뒤에 있으므로 앞이 아니라 뒤에 붙는다.
- 019-2119-****: 오른쪽 9글자를 남기는 수식이라 앞의 019- 는 잘려 나간다.
- 019-****-9019: 가운데를 바꾸려면 REPLACE 같은 함수가 필요하며, 이 수식은 문자열을 뒤에 덧붙일 뿐이다.