[9급 국가직 컴퓨터일반] 07년 1회차
9급 국가직 컴퓨터일반 기출문제

07년 1회차

총 20문항 · 객관식 · A4 약 1장

1 / 1
A4정답 포함
9급 국가직 컴퓨터일반 기출문제모두CBT · moducbt.com

07년 1회차

총 20문항 · 객관식 · 정답·해설 포함
문제 1
다음 2진수 1010101110.112를 16진수로 정확히 표현한 것은?
12AE.316
2AB2.C16
32AE.C16
4AB2.316
정답 및 해설

2진수 1010101110.1121010101110.11_{2}는 16진수로 2AE.C16\mathrm{C}_{16}이다.

16진수 한 자리는 2진수 4비트에 대응하므로, 소수점을 기준으로 정수부는 왼쪽으로, 소수부는 오른쪽으로 4비트씩 묶는다.

  • 정수부: 10 | 1010 | 1110 → 2, A, E
  • 소수부: 11을 오른쪽에 0을 채워 1100 → C
  • 소수부를 0011로 잘못 채우면 3이 되어 2AE.3이 나오고, 정수부를 왼쪽부터 묶으면 AB2가 되는 오류가 생긴다.
문제 2
바이오스(BIOS)에 관한 설명 중 옳지 않은 것은?
1전원이 들어올 때 시스템을 초기화한다.
2시스템의 이상 유무를 점검한다.
3운영체제를 적재하는 과정을 담당한다.
4바이오스의 동작여부와 상관없이 컴퓨터는 제대로 동작한다.
정답 및 해설

옳지 않은 것은 바이오스의 동작 여부와 상관없이 컴퓨터가 제대로 동작한다는 설명이다.

BIOS는 ROM(펌웨어)에 저장된 기본 입출력 프로그램으로, 전원이 켜지면 가장 먼저 실행되어 하드웨어를 초기화하고 점검(POST)한 뒤 부트 로더를 통해 운영체제를 적재한다. 따라서 BIOS가 동작하지 않으면 부팅 자체가 불가능하다.

  • 전원이 들어올 때 시스템을 초기화한다 — 옳다.
  • 시스템의 이상 유무를 점검한다 — 옳다(POST).
  • 운영체제를 적재하는 과정을 담당한다 — 옳다.
문제 3
근래에 가장 손쉽게 사용하는 I/O 포트인 USB에 대한 설명으로 옳지 않은 것은?
1직렬 포트의 일종이다.
2복수 개의 주변기기를 연결할 수 없다.
3주변기기와 컴퓨터 간의 플러그 앤 플레이 인터페이스이다.
4컴퓨터를 사용하는 도중에 주변기기를 연결해도 그 주변기기를 인식한다.
정답 및 해설

옳지 않은 것은 복수 개의 주변기기를 연결할 수 없다는 설명이다.

USB는 직렬 방식의 범용 인터페이스로, 허브를 이용해 하나의 호스트에 최대 127개의 장치를 연결할 수 있다.

  • 직렬 포트의 일종이다 — 옳다(Universal Serial Bus).
  • 플러그 앤 플레이 인터페이스이다 — 옳다.
  • 사용 도중 연결해도 인식한다 — 옳다(핫 플러그).
문제 4
다음의 논리식을 간략화한 것으로 옳은 것은?

(A+B)·(C+A)+A·B·C+A·B'·C+A·B·C'

1A+B·C
2A'+B·C
3A+B·C'
4A+B'·C
정답 및 해설

논리식을 간략화하면 A+B·C이다.

분배 법칙에 의해 (A+B)·(A+C) = A+B·C이다.

나머지 항 A·B·C, A·B'·C, A·B·C'는 모두 A를 인수로 가지므로 흡수 법칙(A+A·X = A)에 의해 A에 흡수된다.

  • A'+B·C — A=1, B=C=0이면 원식은 1이지만 이 식은 0이다.
  • A+B·C' — A=0, B=C=1이면 원식은 1이지만 이 식은 0이다.
  • A+B'·C — A=0, B=C=1이면 원식은 1이지만 이 식은 0이다.
문제 5
스택을 사용하는 예로 옳지 않은 것은?
1함수의 재귀호출
2트리의 너비 우선 탐색
3부프로그램의 호출
4후위표기(postfix)식의 계산
정답 및 해설

스택을 사용하는 예가 아닌 것은 트리의 너비 우선 탐색이다.

너비 우선 탐색(BFS)은 먼저 방문한 노드의 자식부터 차례로 꺼내야 하므로 선입선출 구조인 큐를 사용한다. 스택(후입선출)은 깊이 우선 탐색에 쓰인다.

  • 함수의 재귀호출 — 호출 정보(복귀 주소·지역 변수)를 스택에 쌓는다.
  • 부프로그램의 호출 — 복귀 주소를 스택에 저장한다.
  • 후위표기식의 계산 — 피연산자를 스택에 넣고 연산자를 만나면 꺼내 계산한다.
문제 6
다음은 2의 보수를 이용하여 4비트 2진수의 뺄셈 연산을 하는 과정이다. 괄호 안에 알맞은 값은?

01112 - 00112 = 01112 + (  )2 = 뺄셈결과 값

11011
21100
30011
41101
정답 및 해설

괄호에 들어갈 값은 감수 0011의 2의 보수인 1101이다.

2의 보수는 1의 보수에 1을 더해 구한다.
0011 → 1의 보수 1100 → 1100+1 = 1101

검산: 0111+1101 = 1 0100에서 자리올림을 버리면 0100(=4)이 되어 7−3과 같다.

  • 1100은 1의 보수일 뿐이다.
  • 0011은 감수 자체이다.
  • 1011은 0011의 2의 보수가 아니다(1011+0011 = 1110으로 0이 되지 않는다).
문제 7
DLL(Dynamic Link Library)에 대한 설명으로 옳지 않은 것은?
1사용자 프로그램과 DLL의 연결(linking) 작업은 사용자 프로그램이 실행되기 전에 이루어진다.
2여러 개의 사용자 프로그램들이 한 개의 DLL을 공유할 수 있다.
3DLL의 변경과 갱신은 SLL(Static Link Library)의 변경과 갱신보다 용이하다.
4DLL방식을 사용하면 SLL방식을 사용할 때보다 메모리와 디스크의 공간을 절약할 수 있다.
정답 및 해설

옳지 않은 것은 DLL의 연결 작업이 프로그램 실행 전에 이루어진다는 설명이다.

DLL(동적 링크 라이브러리)은 프로그램이 실행되는 시점(적재 시 또는 실행 중)에 연결된다. 실행 전에 실행 파일에 포함시키는 것은 정적 링크 라이브러리(SLL)의 방식이다.

  • 여러 프로그램이 한 DLL을 공유할 수 있다 — 옳다.
  • DLL 파일만 교체하면 되므로 변경·갱신이 SLL보다 용이하다 — 옳다.
  • 라이브러리 코드를 프로그램마다 중복 포함하지 않으므로 메모리와 디스크 공간을 절약한다 — 옳다.
문제 8
아래 C-프로그램의 실행 결과로 적합한 것은?
void main()
{
    int a = 10;
    int b;
    int *c = &b;
    b = a++;
    b += 10;
    printf(" a=%d \n", a);
    printf("b=%d \n", b);
    printf("c=%d \n", *c);
}
1a=10
b=20
c=20
2a=10
b=21
c=21
3a=11
b=20
c=20
4a=11
b=21
c=21
정답 및 해설

출력은 a=11, b=20, c=20이다.

b = a++는 후위 증가이므로 a의 현재 값 10을 b에 먼저 대입한 뒤 a를 11로 증가시킨다.
b += 10 → b = 20

c는 b의 주소를 가리키는 포인터이므로 *c는 b의 값 20과 같다.

  • a=10으로 보는 것 — 후위 증가로 a는 11이 된다.
  • b=21로 보는 것 — 전위 증가로 착각한 결과이다.
문제 9
메모리 시스템에 관한 설명 중 옳은 것만 모두 묶은 것은?

ㄱ. 캐쉬의 write-through방법을 사용하면 메모리 쓰기의 경우에 접근시간이 개선된다.
ㄴ. 메모리 인터리빙은 단위시간에 여러 메모리에 동시 접근이 가능하도록 하여 메모리의 대역폭을 높이기 위한 구조이다.
ㄷ. 가상메모리는 메모리의 주소공간을 확장할 뿐만 아니라 메모리의 접근시간도 절약하는 데 효과적이다.
ㄹ. 메모리시스템은 CPU↔캐쉬↔주메모리↔보조메모리 순서로 계층구조를 이룰 수 있다.

1ㄴ, ㄹ
2ㄱ, ㄹ
3ㄱ, ㄷ
4ㄴ, ㄷ
정답 및 해설

옳은 것은 ㄴ(메모리 인터리빙)과 ㄹ(계층 구조)이다.

인터리빙은 메모리를 여러 모듈로 나눠 동시에 접근하게 함으로써 대역폭을 높이고, 메모리는 CPU↔캐시↔주기억↔보조기억의 계층 구조를 이룬다.

  • ㄱ(write-through) — 쓰기마다 주기억 장치에도 함께 기록하므로 쓰기 접근 시간은 오히려 길어진다. 쓰기 시간을 줄이는 것은 write-back 방식이다.
  • ㄷ(가상 메모리) — 주소 공간은 확장하지만 주소 변환과 페이지 부재 처리 때문에 접근 시간은 오히려 늘어난다.
문제 10
데이터베이스 시스템의 트랜잭션이 가져야 할 속성에 대한 설명으로 옳지 않은 것은?
1트랜잭션에 포함된 연산들이 수행 중에 오류가 발생할 경우에 어떠한 연산도 수행되지 않은 상태로 되돌려져야 한다.
2만약 데이터베이스가 처음에 일관된 상태에 있었다면 트랜잭션이 실행되고 난 후에도 계속 일관된 상태로 유지되어야 한다.
3동시에 수행되는 트랜잭션들은 상호작용할 수 있다.
4트랜잭션이 성공적으로 수행 완료된 후에 시스템의 오류가 발생한다 하더라도 트랜잭션에 의해 데이터베이스에 변경된 내용은 보존된다.
정답 및 해설

옳지 않은 것은 동시에 수행되는 트랜잭션들이 상호작용할 수 있다는 설명이다.

트랜잭션의 ACID 속성 중 고립성(Isolation)은 동시에 실행되는 트랜잭션이 서로의 중간 결과에 간섭하지 않아야 한다는 성질이다.

  • 오류 시 어떤 연산도 수행되지 않은 상태로 되돌린다 — 원자성(Atomicity).
  • 실행 전후 모두 일관된 상태를 유지한다 — 일관성(Consistency).
  • 완료된 변경은 시스템 오류 후에도 보존된다 — 지속성(Durability).
문제 11
다음 중 중앙 처리 장치의 각 구성 요소에 대한 설명으로 옳지 않은 것은?
1기억 장치에서 꺼내진 명령어는 누산기가 기억한다.
2다음에 실행될 명령어의 번지는 명령 계수기가 기억한다.
3명령 해독기는 명령어를 해독하여 필요한 장치로 제어 신호를 보낸다.
4번지 레지스터는 읽고자 하는 프로그램이나 데이터가 기억되어 있는 주기억 장치의 번지를 기억한다.
정답 및 해설

옳지 않은 것은 기억 장치에서 꺼낸 명령어를 누산기가 기억한다는 설명이다.

인출된 명령어는 명령 레지스터(IR)에 저장되어 해독된다. 누산기(AC)는 연산 결과를 일시적으로 저장하는 레지스터이다.

  • 다음에 실행될 명령어의 번지는 명령 계수기(PC)가 기억한다 — 옳다.
  • 명령 해독기는 명령어를 해독해 제어 신호를 보낸다 — 옳다.
  • 번지 레지스터(MAR)는 접근할 주기억 장치의 번지를 기억한다 — 옳다.
문제 12
프로그램의 연산자 실행의 우선순위가 높은 것에서 낮은 순으로 옳게 연결한 것은?
1괄호 안의 수식-산술 연산자-관계 연산자-논리 연산자
2산술 연산자-관계 연산자-논리 연산자-괄호 안의 수식
3괄호 안의 수식-산술 연산자-논리 연산자-관계 연산자
4산술 연산자-관계 연산자-논리 연산자-괄호 안의 수식
정답 및 해설

우선순위는 괄호 안의 수식 → 산술 연산자 → 관계 연산자 → 논리 연산자 순이다.

괄호가 가장 먼저 계산되고, 산술 연산 결과를 관계 연산자로 비교한 뒤, 그 참·거짓 결과를 논리 연산자로 결합하는 것이 일반적인 순서이다.

  • 괄호를 가장 나중에 두는 배열 — 괄호는 우선순위가 가장 높으므로 틀렸다.
  • 논리 연산자를 관계 연산자보다 앞에 두는 배열 — 비교 결과를 결합하는 논리 연산이 나중이므로 틀렸다.
문제 13
다음 중 링커와 로더에 관련된 작업이 아닌 것은?
1연결
2재배치
3코드 최적화
4적재
정답 및 해설

링커와 로더에 관련된 작업이 아닌 것은 코드 최적화이다.

코드 최적화는 컴파일러가 목적 코드를 생성하는 과정에서 수행하는 작업이다.

  • 연결(linking) — 여러 목적 모듈과 라이브러리를 하나로 묶는 링커의 작업이다.
  • 재배치(relocation) — 상대 주소를 실제 적재 주소에 맞게 조정하는 작업이다.
  • 적재(loading) — 실행 프로그램을 주기억 장치에 올리는 로더의 작업이다.
문제 14
다음은 OSI 7계층 중 어떤 계층을 설명한 것인가?
  • 순서제어 : 정보의 순차적 전송을 위한 프레임 번호 부여
  • 흐름제어 : 연속적인 프레임 전송 시 수신 여부의 확인
  • 프레임 동기 : 정보 전송 시 컴퓨터에서 처리가 용이하도록 프레임 단위로 전송
1세션 계층(Session Layer)
2데이터 링크 계층(Data Link Layer)
3네트워크 계층(Network Layer)
4트랜스포트 계층(Transport Layer)
정답 및 해설

설명된 계층은 데이터 링크 계층이다.

데이터 링크 계층은 인접 노드 간 전송 단위인 프레임을 다루며, 프레임 동기화·순서 제어·흐름 제어·오류 제어를 수행한다.

  • 세션 계층 — 응용 간 대화(세션)의 설정·동기점 관리를 담당한다.
  • 네트워크 계층 — 패킷의 경로 설정(라우팅)을 담당한다.
  • 트랜스포트 계층 — 종단 간(end-to-end) 신뢰성 있는 세그먼트 전송을 담당한다.
문제 15
다음 네트워크 토폴로지(topology) 중 링크의 고장으로 인해 통신 두절이 가장 심하게 발생하는 구조는?
1링(ring)
2메쉬(mesh)
3스타(star)
4트리(tree)
정답 및 해설

링크 고장으로 통신 두절이 가장 심하게 발생하는 구조는 링(ring)형이다.

링형은 모든 노드가 하나의 원형 경로로 연결되어 데이터가 한 방향으로 순환하므로 링크 하나만 끊어져도 전체 통신이 마비될 수 있다.

  • 메쉬 — 노드 간 다중 경로가 있어 링크 고장에 가장 강하다.
  • 스타 — 링크 하나가 고장 나면 해당 노드만 단절된다.
  • 트리 — 고장 난 링크 아래 가지만 단절된다.
문제 16
다음 프로토콜에 관한 설명 중 옳지 않은 것은?
1TCP는 데이터의 흐름과 데이터 전송의 신뢰성을 관리한다.
2IP는 데이터가 목적지에 성공적으로 도달하는 것을 보장한다.
3TCP/IP는 인터넷에 연결된 다른 기종의 컴퓨터 간에 데이터를 서로 주고 받을 수 있도록 한 통신 규약이다.
4UDP를 사용하면 일부 데이터의 손실이 생길 수 있지만 TCP를 사용할 때보다 빠른 전송을 요구하는 서비스에 사용될 수 있다.
정답 및 해설

옳지 않은 것은 IP가 데이터의 목적지 도달을 보장한다는 설명이다.

IP는 비연결형·최선형(best-effort) 프로토콜로, 경로 설정과 전달만 담당할 뿐 도착·순서를 보장하지 않는다. 신뢰성은 상위의 TCP가 책임진다.

  • TCP는 흐름 제어와 신뢰성 있는 전송을 관리한다 — 옳다.
  • TCP/IP는 서로 다른 기종 간 통신을 위한 인터넷 통신 규약이다 — 옳다.
  • UDP는 손실 가능성이 있지만 빠른 전송이 필요한 서비스에 쓰인다 — 옳다.
문제 17
인터럽트(interrupt)에 대한 설명 중 옳지 않은 것은?
1연산오류가 발생할 경우에 인터럽트가 발생한다.
2메모리 보호 구역에 접근을 시도하는 경우에 인터럽트가 발생한다.
3인터럽트 요구를 처리하는 서비스 프로그램의 시작 주소는 명령어의 주소 영역에 지정된다.
4입출력이 완료되었을 때 인터럽트가 발생한다.
정답 및 해설

옳지 않은 것은 인터럽트 서비스 프로그램의 시작 주소가 명령어의 주소 영역에 지정된다는 설명이다.

인터럽트는 명령어 실행과 무관하게 비동기적으로 발생하므로, 서비스 루틴의 시작 주소는 명령어가 아니라 인터럽트 벡터(테이블)나 하드웨어가 정한 고정 위치에서 얻는다.

  • 연산 오류(0으로 나누기 등) 시 인터럽트가 발생한다 — 옳다.
  • 메모리 보호 구역 접근 시도 시 인터럽트가 발생한다 — 옳다.
  • 입출력 완료 시 인터럽트가 발생한다 — 옳다.
문제 18
다음 함수 fib()를 사용하여 fib(5)를 실행했을 때 fib(5)를 포함한 fib( ) 함수의 총 호출 횟수와 최종 리턴 값으로 옳은 것은?
int fib(int n)
{ if(n <= 0) return 0;
  if(n == 1) return 1;
  else return (fib(n-1) + fib(n-2));
}
115, 5
215, 8
320, 5
420, 8
정답 및 해설

총 호출 횟수는 15회, 최종 리턴 값은 5이다.

호출 횟수 C(n)은 자기 자신 1회에 fib(n−1)·fib(n−2)의 호출 수를 더한 값이다(C(0)=C(1)=1).
C(2)=1+1+1=3, C(3)=1+3+1=5, C(4)=1+5+3=9, C(5)=1+9+5=15

리턴 값은 fib(0)=0, fib(1)=1, fib(2)=1, fib(3)=2, fib(4)=3, fib(5)=5이다.

  • 리턴 값 8은 fib(6)에 해당한다.
  • 호출 횟수 20은 점화식을 잘못 센 값이다.
문제 19
IPv6(Internet Protocol version 6)에 대한 설명으로 옳지 않은 것은?
1128 비트의 IP 주소 크기
240 바이트의 크기를 갖는 기본 헤더(header)
3IP 데이터그램의 비트 오류를 검출하기 위해 헤더 체크섬(checksum)필드가 헤더에 존재한다.
4중간 라우터에서는 IP 데이터그램을 조각화(fragmentation)할 수 없다.
정답 및 해설

옳지 않은 것은 IPv6 헤더에 헤더 체크섬 필드가 존재한다는 설명이다.

IPv6는 라우터의 처리 부담을 줄이기 위해 헤더 체크섬 필드를 제거했다. 오류 검출은 데이터 링크 계층과 상위 계층(TCP·UDP)에 맡긴다.

  • 128비트 주소 — 옳다.
  • 40바이트 고정 길이 기본 헤더 — 옳다.
  • 중간 라우터는 조각화하지 않고 송신 호스트만 조각화한다 — 옳다.
문제 20
객체 지향 개념에 관한 설명 중 옳지 않은 것은?
1객체들 간의 상호 작용은 메시지를 통해 이루어진다.
2클래스는 인스턴스(instance)들이 갖는 변수들과 인스턴스들이 사용할 메소드(method)를 갖는다.
3다중 상속(multiple inheritance)은 두 개 이상의 클래스가 한 클래스로부터 상속받는 것을 말한다.
4객체가 갖는 데이터를 처리하는 연산(operation)을 메소드 (method)라 한다.
정답 및 해설

옳지 않은 것은 다중 상속이 두 개 이상의 클래스가 한 클래스로부터 상속받는 것이라는 설명이다.

다중 상속은 반대로 한 클래스가 두 개 이상의 상위 클래스로부터 상속받는 것이다. 여러 클래스가 한 클래스를 상속하는 것은 일반적인 단일 상속이 여러 번 일어난 것에 불과하다.

  • 객체 간 상호작용은 메시지로 이루어진다 — 옳다.
  • 클래스는 인스턴스의 변수와 메소드를 정의한다 — 옳다.
  • 객체의 데이터를 처리하는 연산을 메소드라 한다 — 옳다.
9급 국가직 컴퓨터일반 기출문제모두CBT · moducbt.com
07년 1회차
총 20문항 · 객관식 · 정답·해설 포함
문제 1
다음 2진수 1010101110.112를 16진수로 정확히 표현한 것은?
12AE.316
2AB2.C16
32AE.C16
4AB2.316
정답 및 해설

2진수 1010101110.1121010101110.11_{2}는 16진수로 2AE.C16\mathrm{C}_{16}이다.

16진수 한 자리는 2진수 4비트에 대응하므로, 소수점을 기준으로 정수부는 왼쪽으로, 소수부는 오른쪽으로 4비트씩 묶는다.

  • 정수부: 10 | 1010 | 1110 → 2, A, E
  • 소수부: 11을 오른쪽에 0을 채워 1100 → C
  • 소수부를 0011로 잘못 채우면 3이 되어 2AE.3이 나오고, 정수부를 왼쪽부터 묶으면 AB2가 되는 오류가 생긴다.
문제 2
바이오스(BIOS)에 관한 설명 중 옳지 않은 것은?
1전원이 들어올 때 시스템을 초기화한다.
2시스템의 이상 유무를 점검한다.
3운영체제를 적재하는 과정을 담당한다.
4바이오스의 동작여부와 상관없이 컴퓨터는 제대로 동작한다.
정답 및 해설

옳지 않은 것은 바이오스의 동작 여부와 상관없이 컴퓨터가 제대로 동작한다는 설명이다.

BIOS는 ROM(펌웨어)에 저장된 기본 입출력 프로그램으로, 전원이 켜지면 가장 먼저 실행되어 하드웨어를 초기화하고 점검(POST)한 뒤 부트 로더를 통해 운영체제를 적재한다. 따라서 BIOS가 동작하지 않으면 부팅 자체가 불가능하다.

  • 전원이 들어올 때 시스템을 초기화한다 — 옳다.
  • 시스템의 이상 유무를 점검한다 — 옳다(POST).
  • 운영체제를 적재하는 과정을 담당한다 — 옳다.
문제 3
근래에 가장 손쉽게 사용하는 I/O 포트인 USB에 대한 설명으로 옳지 않은 것은?
1직렬 포트의 일종이다.
2복수 개의 주변기기를 연결할 수 없다.
3주변기기와 컴퓨터 간의 플러그 앤 플레이 인터페이스이다.
4컴퓨터를 사용하는 도중에 주변기기를 연결해도 그 주변기기를 인식한다.
정답 및 해설

옳지 않은 것은 복수 개의 주변기기를 연결할 수 없다는 설명이다.

USB는 직렬 방식의 범용 인터페이스로, 허브를 이용해 하나의 호스트에 최대 127개의 장치를 연결할 수 있다.

  • 직렬 포트의 일종이다 — 옳다(Universal Serial Bus).
  • 플러그 앤 플레이 인터페이스이다 — 옳다.
  • 사용 도중 연결해도 인식한다 — 옳다(핫 플러그).
문제 4
다음의 논리식을 간략화한 것으로 옳은 것은?

(A+B)·(C+A)+A·B·C+A·B'·C+A·B·C'

1A+B·C
2A'+B·C
3A+B·C'
4A+B'·C
정답 및 해설

논리식을 간략화하면 A+B·C이다.

분배 법칙에 의해 (A+B)·(A+C) = A+B·C이다.

나머지 항 A·B·C, A·B'·C, A·B·C'는 모두 A를 인수로 가지므로 흡수 법칙(A+A·X = A)에 의해 A에 흡수된다.

  • A'+B·C — A=1, B=C=0이면 원식은 1이지만 이 식은 0이다.
  • A+B·C' — A=0, B=C=1이면 원식은 1이지만 이 식은 0이다.
  • A+B'·C — A=0, B=C=1이면 원식은 1이지만 이 식은 0이다.
문제 5
스택을 사용하는 예로 옳지 않은 것은?
1함수의 재귀호출
2트리의 너비 우선 탐색
3부프로그램의 호출
4후위표기(postfix)식의 계산
정답 및 해설

스택을 사용하는 예가 아닌 것은 트리의 너비 우선 탐색이다.

너비 우선 탐색(BFS)은 먼저 방문한 노드의 자식부터 차례로 꺼내야 하므로 선입선출 구조인 큐를 사용한다. 스택(후입선출)은 깊이 우선 탐색에 쓰인다.

  • 함수의 재귀호출 — 호출 정보(복귀 주소·지역 변수)를 스택에 쌓는다.
  • 부프로그램의 호출 — 복귀 주소를 스택에 저장한다.
  • 후위표기식의 계산 — 피연산자를 스택에 넣고 연산자를 만나면 꺼내 계산한다.
문제 6
다음은 2의 보수를 이용하여 4비트 2진수의 뺄셈 연산을 하는 과정이다. 괄호 안에 알맞은 값은?

01112 - 00112 = 01112 + (  )2 = 뺄셈결과 값

11011
21100
30011
41101
정답 및 해설

괄호에 들어갈 값은 감수 0011의 2의 보수인 1101이다.

2의 보수는 1의 보수에 1을 더해 구한다.
0011 → 1의 보수 1100 → 1100+1 = 1101

검산: 0111+1101 = 1 0100에서 자리올림을 버리면 0100(=4)이 되어 7−3과 같다.

  • 1100은 1의 보수일 뿐이다.
  • 0011은 감수 자체이다.
  • 1011은 0011의 2의 보수가 아니다(1011+0011 = 1110으로 0이 되지 않는다).
문제 7
DLL(Dynamic Link Library)에 대한 설명으로 옳지 않은 것은?
1사용자 프로그램과 DLL의 연결(linking) 작업은 사용자 프로그램이 실행되기 전에 이루어진다.
2여러 개의 사용자 프로그램들이 한 개의 DLL을 공유할 수 있다.
3DLL의 변경과 갱신은 SLL(Static Link Library)의 변경과 갱신보다 용이하다.
4DLL방식을 사용하면 SLL방식을 사용할 때보다 메모리와 디스크의 공간을 절약할 수 있다.
정답 및 해설

옳지 않은 것은 DLL의 연결 작업이 프로그램 실행 전에 이루어진다는 설명이다.

DLL(동적 링크 라이브러리)은 프로그램이 실행되는 시점(적재 시 또는 실행 중)에 연결된다. 실행 전에 실행 파일에 포함시키는 것은 정적 링크 라이브러리(SLL)의 방식이다.

  • 여러 프로그램이 한 DLL을 공유할 수 있다 — 옳다.
  • DLL 파일만 교체하면 되므로 변경·갱신이 SLL보다 용이하다 — 옳다.
  • 라이브러리 코드를 프로그램마다 중복 포함하지 않으므로 메모리와 디스크 공간을 절약한다 — 옳다.
문제 8
아래 C-프로그램의 실행 결과로 적합한 것은?
void main()
{
    int a = 10;
    int b;
    int *c = &b;
    b = a++;
    b += 10;
    printf(" a=%d \n", a);
    printf("b=%d \n", b);
    printf("c=%d \n", *c);
}
1a=10
b=20
c=20
2a=10
b=21
c=21
3a=11
b=20
c=20
4a=11
b=21
c=21
정답 및 해설

출력은 a=11, b=20, c=20이다.

b = a++는 후위 증가이므로 a의 현재 값 10을 b에 먼저 대입한 뒤 a를 11로 증가시킨다.
b += 10 → b = 20

c는 b의 주소를 가리키는 포인터이므로 *c는 b의 값 20과 같다.

  • a=10으로 보는 것 — 후위 증가로 a는 11이 된다.
  • b=21로 보는 것 — 전위 증가로 착각한 결과이다.
문제 9
메모리 시스템에 관한 설명 중 옳은 것만 모두 묶은 것은?

ㄱ. 캐쉬의 write-through방법을 사용하면 메모리 쓰기의 경우에 접근시간이 개선된다.
ㄴ. 메모리 인터리빙은 단위시간에 여러 메모리에 동시 접근이 가능하도록 하여 메모리의 대역폭을 높이기 위한 구조이다.
ㄷ. 가상메모리는 메모리의 주소공간을 확장할 뿐만 아니라 메모리의 접근시간도 절약하는 데 효과적이다.
ㄹ. 메모리시스템은 CPU↔캐쉬↔주메모리↔보조메모리 순서로 계층구조를 이룰 수 있다.

1ㄴ, ㄹ
2ㄱ, ㄹ
3ㄱ, ㄷ
4ㄴ, ㄷ
정답 및 해설

옳은 것은 ㄴ(메모리 인터리빙)과 ㄹ(계층 구조)이다.

인터리빙은 메모리를 여러 모듈로 나눠 동시에 접근하게 함으로써 대역폭을 높이고, 메모리는 CPU↔캐시↔주기억↔보조기억의 계층 구조를 이룬다.

  • ㄱ(write-through) — 쓰기마다 주기억 장치에도 함께 기록하므로 쓰기 접근 시간은 오히려 길어진다. 쓰기 시간을 줄이는 것은 write-back 방식이다.
  • ㄷ(가상 메모리) — 주소 공간은 확장하지만 주소 변환과 페이지 부재 처리 때문에 접근 시간은 오히려 늘어난다.
문제 10
데이터베이스 시스템의 트랜잭션이 가져야 할 속성에 대한 설명으로 옳지 않은 것은?
1트랜잭션에 포함된 연산들이 수행 중에 오류가 발생할 경우에 어떠한 연산도 수행되지 않은 상태로 되돌려져야 한다.
2만약 데이터베이스가 처음에 일관된 상태에 있었다면 트랜잭션이 실행되고 난 후에도 계속 일관된 상태로 유지되어야 한다.
3동시에 수행되는 트랜잭션들은 상호작용할 수 있다.
4트랜잭션이 성공적으로 수행 완료된 후에 시스템의 오류가 발생한다 하더라도 트랜잭션에 의해 데이터베이스에 변경된 내용은 보존된다.
정답 및 해설

옳지 않은 것은 동시에 수행되는 트랜잭션들이 상호작용할 수 있다는 설명이다.

트랜잭션의 ACID 속성 중 고립성(Isolation)은 동시에 실행되는 트랜잭션이 서로의 중간 결과에 간섭하지 않아야 한다는 성질이다.

  • 오류 시 어떤 연산도 수행되지 않은 상태로 되돌린다 — 원자성(Atomicity).
  • 실행 전후 모두 일관된 상태를 유지한다 — 일관성(Consistency).
  • 완료된 변경은 시스템 오류 후에도 보존된다 — 지속성(Durability).
문제 11
다음 중 중앙 처리 장치의 각 구성 요소에 대한 설명으로 옳지 않은 것은?
1기억 장치에서 꺼내진 명령어는 누산기가 기억한다.
2다음에 실행될 명령어의 번지는 명령 계수기가 기억한다.
3명령 해독기는 명령어를 해독하여 필요한 장치로 제어 신호를 보낸다.
4번지 레지스터는 읽고자 하는 프로그램이나 데이터가 기억되어 있는 주기억 장치의 번지를 기억한다.
정답 및 해설

옳지 않은 것은 기억 장치에서 꺼낸 명령어를 누산기가 기억한다는 설명이다.

인출된 명령어는 명령 레지스터(IR)에 저장되어 해독된다. 누산기(AC)는 연산 결과를 일시적으로 저장하는 레지스터이다.

  • 다음에 실행될 명령어의 번지는 명령 계수기(PC)가 기억한다 — 옳다.
  • 명령 해독기는 명령어를 해독해 제어 신호를 보낸다 — 옳다.
  • 번지 레지스터(MAR)는 접근할 주기억 장치의 번지를 기억한다 — 옳다.
문제 12
프로그램의 연산자 실행의 우선순위가 높은 것에서 낮은 순으로 옳게 연결한 것은?
1괄호 안의 수식-산술 연산자-관계 연산자-논리 연산자
2산술 연산자-관계 연산자-논리 연산자-괄호 안의 수식
3괄호 안의 수식-산술 연산자-논리 연산자-관계 연산자
4산술 연산자-관계 연산자-논리 연산자-괄호 안의 수식
정답 및 해설

우선순위는 괄호 안의 수식 → 산술 연산자 → 관계 연산자 → 논리 연산자 순이다.

괄호가 가장 먼저 계산되고, 산술 연산 결과를 관계 연산자로 비교한 뒤, 그 참·거짓 결과를 논리 연산자로 결합하는 것이 일반적인 순서이다.

  • 괄호를 가장 나중에 두는 배열 — 괄호는 우선순위가 가장 높으므로 틀렸다.
  • 논리 연산자를 관계 연산자보다 앞에 두는 배열 — 비교 결과를 결합하는 논리 연산이 나중이므로 틀렸다.
문제 13
다음 중 링커와 로더에 관련된 작업이 아닌 것은?
1연결
2재배치
3코드 최적화
4적재
정답 및 해설

링커와 로더에 관련된 작업이 아닌 것은 코드 최적화이다.

코드 최적화는 컴파일러가 목적 코드를 생성하는 과정에서 수행하는 작업이다.

  • 연결(linking) — 여러 목적 모듈과 라이브러리를 하나로 묶는 링커의 작업이다.
  • 재배치(relocation) — 상대 주소를 실제 적재 주소에 맞게 조정하는 작업이다.
  • 적재(loading) — 실행 프로그램을 주기억 장치에 올리는 로더의 작업이다.
문제 14
다음은 OSI 7계층 중 어떤 계층을 설명한 것인가?
  • 순서제어 : 정보의 순차적 전송을 위한 프레임 번호 부여
  • 흐름제어 : 연속적인 프레임 전송 시 수신 여부의 확인
  • 프레임 동기 : 정보 전송 시 컴퓨터에서 처리가 용이하도록 프레임 단위로 전송
1세션 계층(Session Layer)
2데이터 링크 계층(Data Link Layer)
3네트워크 계층(Network Layer)
4트랜스포트 계층(Transport Layer)
정답 및 해설

설명된 계층은 데이터 링크 계층이다.

데이터 링크 계층은 인접 노드 간 전송 단위인 프레임을 다루며, 프레임 동기화·순서 제어·흐름 제어·오류 제어를 수행한다.

  • 세션 계층 — 응용 간 대화(세션)의 설정·동기점 관리를 담당한다.
  • 네트워크 계층 — 패킷의 경로 설정(라우팅)을 담당한다.
  • 트랜스포트 계층 — 종단 간(end-to-end) 신뢰성 있는 세그먼트 전송을 담당한다.
문제 15
다음 네트워크 토폴로지(topology) 중 링크의 고장으로 인해 통신 두절이 가장 심하게 발생하는 구조는?
1링(ring)
2메쉬(mesh)
3스타(star)
4트리(tree)
정답 및 해설

링크 고장으로 통신 두절이 가장 심하게 발생하는 구조는 링(ring)형이다.

링형은 모든 노드가 하나의 원형 경로로 연결되어 데이터가 한 방향으로 순환하므로 링크 하나만 끊어져도 전체 통신이 마비될 수 있다.

  • 메쉬 — 노드 간 다중 경로가 있어 링크 고장에 가장 강하다.
  • 스타 — 링크 하나가 고장 나면 해당 노드만 단절된다.
  • 트리 — 고장 난 링크 아래 가지만 단절된다.
문제 16
다음 프로토콜에 관한 설명 중 옳지 않은 것은?
1TCP는 데이터의 흐름과 데이터 전송의 신뢰성을 관리한다.
2IP는 데이터가 목적지에 성공적으로 도달하는 것을 보장한다.
3TCP/IP는 인터넷에 연결된 다른 기종의 컴퓨터 간에 데이터를 서로 주고 받을 수 있도록 한 통신 규약이다.
4UDP를 사용하면 일부 데이터의 손실이 생길 수 있지만 TCP를 사용할 때보다 빠른 전송을 요구하는 서비스에 사용될 수 있다.
정답 및 해설

옳지 않은 것은 IP가 데이터의 목적지 도달을 보장한다는 설명이다.

IP는 비연결형·최선형(best-effort) 프로토콜로, 경로 설정과 전달만 담당할 뿐 도착·순서를 보장하지 않는다. 신뢰성은 상위의 TCP가 책임진다.

  • TCP는 흐름 제어와 신뢰성 있는 전송을 관리한다 — 옳다.
  • TCP/IP는 서로 다른 기종 간 통신을 위한 인터넷 통신 규약이다 — 옳다.
  • UDP는 손실 가능성이 있지만 빠른 전송이 필요한 서비스에 쓰인다 — 옳다.
문제 17
인터럽트(interrupt)에 대한 설명 중 옳지 않은 것은?
1연산오류가 발생할 경우에 인터럽트가 발생한다.
2메모리 보호 구역에 접근을 시도하는 경우에 인터럽트가 발생한다.
3인터럽트 요구를 처리하는 서비스 프로그램의 시작 주소는 명령어의 주소 영역에 지정된다.
4입출력이 완료되었을 때 인터럽트가 발생한다.
정답 및 해설

옳지 않은 것은 인터럽트 서비스 프로그램의 시작 주소가 명령어의 주소 영역에 지정된다는 설명이다.

인터럽트는 명령어 실행과 무관하게 비동기적으로 발생하므로, 서비스 루틴의 시작 주소는 명령어가 아니라 인터럽트 벡터(테이블)나 하드웨어가 정한 고정 위치에서 얻는다.

  • 연산 오류(0으로 나누기 등) 시 인터럽트가 발생한다 — 옳다.
  • 메모리 보호 구역 접근 시도 시 인터럽트가 발생한다 — 옳다.
  • 입출력 완료 시 인터럽트가 발생한다 — 옳다.
문제 18
다음 함수 fib()를 사용하여 fib(5)를 실행했을 때 fib(5)를 포함한 fib( ) 함수의 총 호출 횟수와 최종 리턴 값으로 옳은 것은?
int fib(int n)
{ if(n <= 0) return 0;
  if(n == 1) return 1;
  else return (fib(n-1) + fib(n-2));
}
115, 5
215, 8
320, 5
420, 8
정답 및 해설

총 호출 횟수는 15회, 최종 리턴 값은 5이다.

호출 횟수 C(n)은 자기 자신 1회에 fib(n−1)·fib(n−2)의 호출 수를 더한 값이다(C(0)=C(1)=1).
C(2)=1+1+1=3, C(3)=1+3+1=5, C(4)=1+5+3=9, C(5)=1+9+5=15

리턴 값은 fib(0)=0, fib(1)=1, fib(2)=1, fib(3)=2, fib(4)=3, fib(5)=5이다.

  • 리턴 값 8은 fib(6)에 해당한다.
  • 호출 횟수 20은 점화식을 잘못 센 값이다.
문제 19
IPv6(Internet Protocol version 6)에 대한 설명으로 옳지 않은 것은?
1128 비트의 IP 주소 크기
240 바이트의 크기를 갖는 기본 헤더(header)
3IP 데이터그램의 비트 오류를 검출하기 위해 헤더 체크섬(checksum)필드가 헤더에 존재한다.
4중간 라우터에서는 IP 데이터그램을 조각화(fragmentation)할 수 없다.
정답 및 해설

옳지 않은 것은 IPv6 헤더에 헤더 체크섬 필드가 존재한다는 설명이다.

IPv6는 라우터의 처리 부담을 줄이기 위해 헤더 체크섬 필드를 제거했다. 오류 검출은 데이터 링크 계층과 상위 계층(TCP·UDP)에 맡긴다.

  • 128비트 주소 — 옳다.
  • 40바이트 고정 길이 기본 헤더 — 옳다.
  • 중간 라우터는 조각화하지 않고 송신 호스트만 조각화한다 — 옳다.
문제 20
객체 지향 개념에 관한 설명 중 옳지 않은 것은?
1객체들 간의 상호 작용은 메시지를 통해 이루어진다.
2클래스는 인스턴스(instance)들이 갖는 변수들과 인스턴스들이 사용할 메소드(method)를 갖는다.
3다중 상속(multiple inheritance)은 두 개 이상의 클래스가 한 클래스로부터 상속받는 것을 말한다.
4객체가 갖는 데이터를 처리하는 연산(operation)을 메소드 (method)라 한다.
정답 및 해설

옳지 않은 것은 다중 상속이 두 개 이상의 클래스가 한 클래스로부터 상속받는 것이라는 설명이다.

다중 상속은 반대로 한 클래스가 두 개 이상의 상위 클래스로부터 상속받는 것이다. 여러 클래스가 한 클래스를 상속하는 것은 일반적인 단일 상속이 여러 번 일어난 것에 불과하다.

  • 객체 간 상호작용은 메시지로 이루어진다 — 옳다.
  • 클래스는 인스턴스의 변수와 메소드를 정의한다 — 옳다.
  • 객체의 데이터를 처리하는 연산을 메소드라 한다 — 옳다.