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

18년 1회차

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

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

18년 1회차

총 20문항 · 객관식 · 정답·해설 포함
문제 1
유닉스 운영체제에 대한 설명으로 옳지 않은 것은?
1계층적 파일시스템과 다중 사용자를 지원하는 운영체제이다.
2BSD 유닉스의 모든 코드는 어셈블리 언어로 작성되었다.
3CPU 이용률을 높일 수 있는 다중 프로그래밍 기법을 사용한다.
4사용자 프로그램은 시스템 호출을 통해 커널 기능을 사용할 수 있다.
정답 및 해설

옳지 않은 것은 BSD 유닉스의 모든 코드가 어셈블리 언어로 작성되었다는 설명이다.

유닉스는 커널의 대부분을 C 언어로 작성해 이식성을 높인 운영체제이며, 하드웨어에 밀착된 극히 일부만 어셈블리로 작성된다. BSD 유닉스도 마찬가지다.

  • 계층적(트리형) 파일 시스템과 다중 사용자를 지원한다는 설명은 옳다.
  • 다중 프로그래밍(다중 작업)으로 CPU 이용률을 높인다는 설명은 옳다.
  • 사용자 프로그램이 시스템 호출을 통해 커널 기능을 사용한다는 설명은 옳다.
문제 2
다음에서 설명하는 해킹 공격 방법은?

공격자는 사용자의 합법적 도메인을 탈취하거나 도메인 네임 시스템(DNS) 또는 프락시 서버의 주소를 조하여, 사용자가 진짜 사이트로 오인하여 접속하도록 유도한 후 개인정보를 훔친다.

1스니핑(Sniffing)
2파밍(Pharming)
3트로이 목마(Trojan Horse)
4하이재킹(Hijacking)
정답 및 해설

설명하는 공격은 파밍(Pharming)이다.

파밍은 DNS나 프락시 서버 주소를 조작해 사용자가 올바른 도메인 주소를 입력해도 가짜 사이트로 접속되게 만든 뒤 개인정보를 빼내는 공격이다.

  • 스니핑은 네트워크를 지나는 패킷을 몰래 엿보아 정보를 가로채는 수동적 공격이다.
  • 트로이 목마는 정상 프로그램으로 위장해 설치된 뒤 악의적 기능을 수행하는 악성 코드다.
  • 하이재킹은 이미 인증된 세션 등을 가로채 정상 사용자처럼 행세하는 공격이다.
문제 3
다음 SQL 명령어에서 DDL(Data Definition Language) 명령어만을 모두 고른 것은?
  • ㄱ. ALTER
  • ㄴ. DROP
  • ㄷ. INSERT
  • ㄹ. UPDATE
1ㄱ, ㄴ
2ㄴ, ㄷ
3ㄴ, ㄹ
4ㄷ, ㄹ
정답 및 해설

DDL 명령어는 ALTER와 DROP(ㄱ, ㄴ)이다.

DDL은 테이블·뷰·인덱스 같은 데이터베이스 구조(스키마)를 정의·변경·삭제하는 언어로 CREATE, ALTER, DROP 등이 속한다. INSERT와 UPDATE는 데이터 자체를 조작하는 DML이다.

  • ㄱ. ALTER는 기존 테이블 구조를 변경하는 DDL이다.
  • ㄴ. DROP은 테이블 등 스키마 객체를 삭제하는 DDL이다.
  • ㄷ. INSERT는 튜플을 삽입하는 DML이다.
  • ㄹ. UPDATE는 튜플의 값을 수정하는 DML이다.
문제 4
다음 수식에서 이진수 Y의 값은? (단, 수식의 모든 수는 8 비트 이진수이고 1의 보수로 표현된다)
11110100(2)+Y=11011111(2)11110100_{(2)} + Y = 11011111_{(2)}
111101001(2)
211101010(2)
311101011(2)
411101100(2)
정답 및 해설

Y는 11101010(2)11101010_{(2)}이다.

1의 보수에서 최상위 비트가 1이면 음수이고, 전체 비트를 반전한 값이 크기다.
11110100(2)→−00001011(2)=−1111110100_{(2)} \rightarrow -00001011_{(2)} = -11
11011111(2)→−00100000(2)=−3211011111_{(2)} \rightarrow -00100000_{(2)} = -32

따라서 Y=−32−(−11)=−21Y = -32 - (-11) = -21 이다.
21=00010101(2)21 = 00010101_{(2)} 의 모든 비트를 반전하면 -21 = 11101010(2)11101010_{(2)} 이다.

문제 5
다음 진리표를 만족하는 부울 함수로 옳은 것은? (단, • 은 AND, ⊕ 는 XOR, ⊙ 는 XNOR 연산을 의미한다)
입력출력
ABCY
0001
0010
0100
0111
1000
1011
1101
1110
1Y = A B C
2Y = A B C
3Y = A B C
4Y = A B C
정답 및 해설

진리표를 만족하는 함수는 Y=A⊕B⊙CY = A \oplus B \odot C이다.

출력이 1인 입력은 000, 011, 101, 110으로, 모두 1의 개수가 짝수인 경우다. 이는 3입력 XOR의 부정(짝수 패리티)이다.
Y=A⊕B⊕C‾=(A⊕B)⊙CY = \overline{A \oplus B \oplus C} = (A \oplus B) \odot C

  • A⋅B⊕CA \cdot B \oplus C는 A=B=C=0일 때 0이 되어 첫 행의 출력 1과 맞지 않는다.
  • A⊕B⊕CA \oplus B \oplus C는 1의 개수가 홀수일 때 1이 되므로 진리표와 정반대다.
  • A⊙B⊙CA \odot B \odot C는 XNOR을 두 번 거치며 부정이 상쇄되어 A⊕B⊕CA \oplus B \oplus C와 같으므로 진리표와 정반대다.
문제 6
스레싱(Thrashing)에 대한 설명으로 옳지 않은 것은?
1프로세스의 작업 집합(Working Set)이 새로운 작업 집합으로 전이 시 페이지 부재율이 높아질 수 있다.
2작업 집합 기법과 페이지 부재 빈도(Page Fault Frequency) 기법은 한 프로세스를 중단(Suspend)시킴으로써 다른 프로세스들의 스레싱을 감소시킬 수 있다.
3각 프로세스에 설정된 작업 집합 크기와 페이지 프레임 수가 매우 큰경우 다중 프로그래밍 정도(Degree of Multiprogramming)를 증가시킨다.
4페이지 부재 빈도 기법은 프로세스의 할당받은 현재 페이지 프레임 수가 설정한 페이지 부재율의 하한보다 낮아지면 보유한 프레임 수를 감소시킨다.
정답 및 해설

옳지 않은 것은 작업 집합 크기와 페이지 프레임 수가 매우 큰 경우 다중 프로그래밍 정도를 증가시킨다는 설명이다.

각 프로세스가 요구하는 작업 집합이 크면 한정된 프레임으로 수용할 수 있는 프로세스 수가 줄어든다. 이때 프로세스를 더 늘리면 스레싱이 심해지므로 오히려 다중 프로그래밍 정도를 낮춰야 한다.

  • 작업 집합이 새로운 작업 집합으로 전이(지역성 변화)할 때 페이지 부재율이 일시적으로 높아질 수 있다는 설명은 옳다.
  • 작업 집합 기법과 페이지 부재 빈도 기법이 프로세스 하나를 중단시켜 확보한 프레임으로 다른 프로세스의 스레싱을 줄일 수 있다는 설명은 옳다.
  • 페이지 부재 빈도 기법이 부재율이 하한보다 낮아지면 보유 프레임 수를 줄인다는 설명은 이 기법의 동작(하한 미만이면 프레임 회수, 상한 초과면 프레임 추가)에 맞다.
문제 7
인공신경망에 대한 설명으로 옳은 것만을 모두 고른 것은?
  • ㄱ. 단층 퍼셉트론은 배타적 합(Exclusive-OR) 연산자를 학습할 수 있다.
  • ㄴ. 다층 신경망은 입력 층, 출력 층, 하나 이상의 은닉층들로 구성된다.
  • ㄷ. 뉴런 간 연결 가중치(Connection Weight)를 조정하여 학습한다.
  • ㄹ. 생물학적 뉴런 망을 모델링한 방식이다.
1ㄱ, ㄴ, ㄷ
2ㄱ, ㄴ, ㄹ
3ㄱ, ㄷ, ㄹ
4ㄴ, ㄷ, ㄹ
정답 및 해설

옳은 것은 ㄴ, ㄷ, ㄹ이다.

단층 퍼셉트론은 선형 분리가 가능한 문제만 학습할 수 있는데, XOR은 선형 분리가 불가능하므로 학습할 수 없다. XOR 문제는 은닉층을 둔 다층 신경망으로 해결한다.

  • ㄱ. 단층 퍼셉트론이 XOR 연산자를 학습할 수 있다는 설명은 틀리다.
  • ㄴ. 다층 신경망은 입력층, 하나 이상의 은닉층, 출력층으로 구성된다.
  • ㄷ. 신경망은 뉴런 사이 연결 가중치를 조정하는 방식으로 학습한다.
  • ㄹ. 인공신경망은 생물학적 뉴런 망을 모델링한 방식이다.
문제 8
네트워크 기술에 대한 설명으로 옳지 않은 것은?
1IPv6는 인터넷 주소 크기가 128비트이고 호스트 자동 설정기능을 제공한다.
2광대역통합망은 응용 서비스별로 약속된 서비스 레벨 보증(Service Level Agreement) 품질 수준을 보장해줄 수 있다.
3모바일 와이맥스(WiMAX)는 휴대형 단말기를 이용해 고속 인터넷 접속 서비스를 제공하는 무선망 기술이다.
4SMTP(Simple Mail Transfer Protocol)는 사용자 인터페이스 구성방법을 지정하는 전송 계층 프로토콜이다.
정답 및 해설

옳지 않은 것은 SMTP가 사용자 인터페이스 구성방법을 지정하는 전송 계층 프로토콜이라는 설명이다.

SMTP는 메일 서버 간 또는 클라이언트에서 서버로 전자우편을 전송하는 응용 계층 프로토콜이며, 전송 계층으로는 TCP를 이용한다. 사용자 인터페이스 구성과도 관계가 없다.

  • IPv6는 128비트 주소를 쓰며 상태 비저장 주소 자동 설정 등 호스트 자동 설정 기능을 제공한다는 설명은 옳다.
  • 광대역통합망(BcN)이 서비스별 SLA 품질 수준을 보장할 수 있다는 설명은 옳다.
  • 모바일 와이맥스가 휴대형 단말기로 고속 무선 인터넷 접속을 제공하는 기술이라는 설명은 옳다.
문제 9
다음 Java 프로그램의 출력 값은?
class Super {
      Super() {
            System.out.print('A')
      }
      Super(char x) {
            System.out.print(x)
      }
}
class Sub extends Super {
      Sub() {
            super()
            System.out.print('B')
      }
      Sub(char x) {
            this()
            System.out.print(x)
      }
}
public class Test {
      public static void main(String[] args)
{
            Super s1 = new Super('C')
            Super s2 = new Sub('D')
      }
}
1ABCD
2ACBD
3CABD
4CBAD
정답 및 해설

출력 값은 CABD이다.

s1 생성: new Super('C')가 Super(char x)를 호출해 C를 출력한다.

s2 생성: new Sub('D')는 Sub(char x)를 호출하고, 그 첫 문장 this()가 Sub()를 호출한다.
Sub()의 super()가 Super()를 실행해 A를 출력하고, 돌아와 B를 출력한다.
마지막으로 Sub(char x)로 돌아와 D를 출력한다.

생성자 연쇄 호출에 따라 C → A → B → D 순으로 출력되므로 결과는 CABD이다.

문제 10
개발자가 사용해야 하는 서브시스템의 가장 앞쪽에 위치하면서 서브시스템에 있는 객체들을 사용할 수 있도록 인터페이스 역할을 하는 디자인 패턴은?
1Facade 패턴
2Strategy 패턴
3Adapter 패턴
4Singleton 패턴
정답 및 해설

설명에 해당하는 디자인 패턴은 Facade 패턴이다.

Facade(퍼사드)는 복잡한 서브시스템 앞에 단순화된 통합 인터페이스를 두어, 클라이언트가 내부 객체들을 직접 다루지 않고 이 창구를 통해 사용하게 하는 구조 패턴이다.

  • Strategy 패턴은 알고리즘군을 캡슐화해 실행 중에 교체할 수 있게 하는 행위 패턴이다.
  • Adapter 패턴은 호환되지 않는 인터페이스를 클라이언트가 기대하는 인터페이스로 변환하는 패턴이다.
  • Singleton 패턴은 클래스의 인스턴스가 하나만 생성되도록 보장하는 생성 패턴이다.
문제 11
소프트웨어 모듈 평가 기준으로 판단할 때, 다음 4명 중 가장 좋게 설계한 사람과 가장 좋지 않게 설계한 사람을 순서대로 바르게 나열한 것은?
  • ○ 철수: 절차적 응집도+공통 결합도
  • ○ 영희: 우연적 응집도+내용 결합도
  • ○ 동수: 기능적 응집도+자료 결합도
  • ○ 민희: 논리적 응집도+스탬프 결합도
1철수, 영희
2철수, 민희
3동수, 영희
4동수, 민희
정답 및 해설

가장 좋게 설계한 사람은 동수, 가장 좋지 않게 설계한 사람은 영희다.

좋은 모듈은 응집도는 높고 결합도는 낮아야 한다. 응집도는 기능적 > 순차적 > 교환적 > 절차적 > 시간적 > 논리적 > 우연적 순으로 좋고, 결합도는 자료 < 스탬프 < 제어 < 외부 < 공통 < 내용 순으로 낮다(좋다).

  • 동수: 가장 강한 기능적 응집도와 가장 약한 자료 결합도로 최선의 조합이다.
  • 영희: 가장 약한 우연적 응집도와 가장 강한 내용 결합도로 최악의 조합이다.
  • 철수: 절차적 응집도에 공통 결합도로 중간 수준이다.
  • 민희: 논리적 응집도에 스탬프 결합도로 중간 수준이다.
문제 12
자료구조에 대한 설명으로 옳지 않은 것은?
1데크는 삽입과 삭제를 한쪽 끝에서만 수행한다.
2연결리스트로 구현된 스택은 그 크기가 가변적이다.
3배열로 구현된 스택은 구현이 간단하지만 그 크기가 고정적이다.
4원형연결리스트는 한 노드에서 다른 모든 노드로 접근이 가능하다.
정답 및 해설

옳지 않은 것은 데크는 삽입과 삭제를 한쪽 끝에서만 수행한다는 설명이다.

데크(Deque, Double-Ended Queue)는 양쪽 끝 모두에서 삽입과 삭제가 가능한 자료구조다. 한쪽 끝에서만 삽입·삭제하는 것은 스택이다.

  • 연결리스트로 구현된 스택은 노드를 동적으로 할당하므로 크기가 가변적이라는 설명은 옳다.
  • 배열로 구현된 스택은 구현이 간단하지만 배열 크기로 용량이 고정된다는 설명은 옳다.
  • 원형연결리스트는 마지막 노드가 첫 노드를 가리키므로 어느 노드에서든 다른 모든 노드에 접근할 수 있다는 설명은 옳다.
문제 13
IPv4가 제공하는 기능만을 모두 고른 것은?
  • ㄱ. 혼잡제어
  • ㄴ. 인터넷 주소지정과 라우팅
  • ㄷ. 신뢰성 있는 전달 서비스
  • ㄹ. 패킷 단편화와 재조립
1ㄱ, ㄴ
2ㄴ, ㄷ
3ㄴ, ㄹ
4ㄷ, ㄹ
정답 및 해설

IPv4가 제공하는 기능은 ㄴ, ㄹ이다.

IPv4는 네트워크 계층의 비연결형·최선형(best-effort) 프로토콜로, 주소를 지정해 패킷을 목적지까지 라우팅하고 MTU에 맞춰 패킷을 단편화·재조립한다.

  • ㄱ. 혼잡제어는 전송 계층의 TCP가 담당하며 IPv4는 제공하지 않는다.
  • ㄴ. 인터넷 주소지정과 라우팅은 IPv4의 핵심 기능이다.
  • ㄷ. 신뢰성 있는 전달(재전송·순서 보장)은 TCP가 제공하며 IPv4는 전달을 보장하지 않는다.
  • ㄹ. 패킷 단편화와 재조립은 IPv4 헤더의 식별자·플래그·단편 오프셋 필드로 수행한다.
문제 14
결정 명령문 내의 각 조건식이 참, 거짓을 한 번 이상 갖도록 조합하여 테스트 케이스를 설계하는 방법은?
1문장 검증 기준(Statement Coverage)
2조건 검증 기준(Condition Coverage)
3분기 검증 기준(Branch Coverage)
4다중 조건 검증 기준(Multiple Condition Coverage)
정답 및 해설

설명에 해당하는 방법은 조건 검증 기준(Condition Coverage)이다.

조건 검증 기준은 결정문 안의 개별 조건식 각각이 참과 거짓을 최소 한 번씩 갖도록 테스트 케이스를 설계한다.

  • 문장 검증 기준은 프로그램의 모든 문장이 최소 한 번 실행되도록 하는 기준이다.
  • 분기 검증 기준은 결정문 전체의 결과가 참·거짓 분기를 각각 한 번 이상 지나도록 하는 기준이다.
  • 다중 조건 검증 기준은 결정문 내 조건식들의 참·거짓 가능한 모든 조합을 시험하는 기준이다.
문제 15
가상 머신(Virtual Machine)에 대한 설명으로 옳지 않은 것은?
1단일 컴퓨터에서 가상화를 사용하여 다수의 게스트 운영체제를 실행할 수 있다.
2가상 머신은 사용자에게 다른 가상 머신의 동작에 간섭을 주지 않는 격리된 실행환경을 제공한다.
3가상 머신 모니터(Virtual Machine Monitor)를 사용하여 가상화하는 경우 반드시 호스트 운영체제가 필요하다.
4자바 가상 머신은 자바 바이트 코드가 다양한 운영체제 상에서 수행될 수 있도록 한다.
정답 및 해설

옳지 않은 것은 가상 머신 모니터를 사용하면 반드시 호스트 운영체제가 필요하다는 설명이다.

가상 머신 모니터(하이퍼바이저) 중 네이티브(베어메탈)형은 하드웨어 위에서 직접 실행되어 호스트 운영체제 없이 게스트 운영체제를 구동한다. 호스트 운영체제가 필요한 것은 호스트형 방식뿐이다.

  • 단일 컴퓨터에서 가상화로 여러 게스트 운영체제를 실행할 수 있다는 설명은 옳다.
  • 가상 머신이 서로 간섭하지 않는 격리된 실행환경을 제공한다는 설명은 옳다.
  • 자바 가상 머신이 바이트 코드를 다양한 운영체제에서 실행할 수 있게 한다는 설명은 옳다.
문제 16
IEEE 802.11 무선 랜에 대한 설명으로 옳은 것은?
1IEEE 802.11a는 5GHz 대역에서 5.5Mbps의 전송률을 제공한다.
2IEEE 802.11b는 직교 주파수 분할 다중화(OFDM) 방식을 사용하여 최대 22Mbps의 전송률을 제공한다.
3IEEE 802.11g는 5 GHz 대역에서 직접 순서 확산 대역(DSSS) 방식을 사용한다.
4IEEE 802.11n은 다중입력 다중출력(MIMO) 안테나 기술을 사용한다.
정답 및 해설

옳은 것은 IEEE 802.11n이 다중입력 다중출력(MIMO) 안테나 기술을 사용한다는 설명이다.

802.11n은 여러 안테나로 동시에 송수신하는 MIMO와 채널 결합 등을 도입해 이전 규격보다 전송률을 크게 높였다.

  • 802.11a는 5GHz 대역에서 OFDM 방식을 쓰며 최대 54Mbps를 제공하므로, 5.5Mbps를 제공한다는 설명은 틀리다.
  • 802.11b는 2.4GHz 대역에서 DSSS(CCK) 방식을 쓰며 OFDM을 사용하지 않으므로 틀리다.
  • 802.11g는 2.4GHz 대역에서 OFDM을 사용하므로, 5GHz 대역에서 DSSS를 사용한다는 설명은 틀리다.
문제 17
데이터베이스의 동시성 제어에 대한 설명으로 옳지 않은 것은? (단, T1, T2, T3는 트랜잭션이고, A는 데이터 항목이다)
1다중버전 동시성 제어 기법은 한 데이터 항목이 변경될 때 그 항목의 이전 값을 보존한다.
2T1이 A에 배타 로크를 요청할 때, 현재 T2가 A에 대한 공유로크를 보유하고 있고 T3가 A에 공유 로크를 동시에 요청한다면, 트랜잭션 기아 회피기법이 없는 경우 A에 대한 로크를 T3가 T1보다 먼저 보유한다.
3로크 전환이 가능한 상태에서 T1이 A에 대한 배타 로크를 요청할 때, 현재 T1이 A에 대한 공유 로크를 보유하고 있는 유일한 트랜잭션인 경우 T1은 A에 대한 로크를 배타 로크로 상승할 수 있다.
42단계 로킹 프로토콜에서 각 트랜잭션이 정상적으로 커밋될때까지 자신이 가진 모든 배타적 로크들을 해제하지 않는다면 모든 교착상태를 방지할 수 있다.
정답 및 해설

옳지 않은 것은 2단계 로킹에서 커밋 때까지 배타 로크를 해제하지 않으면 모든 교착상태를 방지할 수 있다는 설명이다.

배타 로크를 커밋까지 유지하는 엄격한 2단계 로킹은 연쇄 복귀를 막고 직렬 가능성을 보장하지만, 트랜잭션들이 서로의 로크를 기다리는 교착상태는 여전히 발생할 수 있다.

  • 다중버전 동시성 제어가 데이터 항목 변경 시 이전 값(이전 버전)을 보존한다는 설명은 옳다.
  • T2가 공유 로크를 보유한 상태에서 T3의 공유 로크 요청은 즉시 호환되므로, 기아 회피 기법이 없으면 배타 로크를 기다리는 T1보다 T3가 먼저 로크를 얻는다는 설명은 옳다.
  • T1이 A의 공유 로크를 가진 유일한 트랜잭션이면 로크 전환(상승)으로 배타 로크를 얻을 수 있다는 설명은 옳다.
문제 18
파일구조에 대한 설명으로 옳지 않은 것은?
1VSAM은 B+ 트리 인덱스 구조를 사용한다.
2히프 파일은 레코드들을 키 순서와 관계없이 저장할 수 있다.
3ISAM은 레코드 삽입을 위한 별도의 오버플로우 영역을 필요로 하지 않는다.
4순차 파일에서 일부 레코드들이 키 순서와 다르게 저장된 경우, 파일 재구성 과정을 통해 키 순서대로 저장될 수 있다.
정답 및 해설

옳지 않은 것은 ISAM은 레코드 삽입을 위한 별도의 오버플로우 영역을 필요로 하지 않는다는 설명이다.

ISAM은 기본 데이터 영역이 키 순서로 고정 배치되므로, 새 레코드를 삽입할 자리가 없을 때 이를 담을 오버플로우 영역이 필요하다.

  • VSAM이 B+ 트리 형태의 인덱스 구조를 사용한다는 설명은 옳다.
  • 히프 파일은 레코드를 키 순서와 관계없이 들어온 순서대로 저장할 수 있다는 설명은 옳다.
  • 순차 파일의 순서가 흐트러진 경우 파일 재구성으로 키 순서를 회복할 수 있다는 설명은 옳다.
문제 19
다음 C 프로그램의 출력 값은?
#include <stdio.h>

int a = 10;
int b = 20;
int c = 30;

void func(void)
{
    static int a = 100;
    int b = 200;

    a++;
    b++;
    c = a;
}

int main(void)
{
    func();
    func();

    printf("a = %d, b = %d, c = %d\n", a, b, c);

    return 0;
}
1a = 10, b = 20, c = 30
2a = 10, b = 20, c = 102
3a = 101, b = 201, c = 101
4a = 102, b = 202, c = 102
정답 및 해설

출력 값은 a = 10, b = 20, c = 102이다.

func 안의 a는 static 지역 변수라 처음 한 번만 100으로 초기화되고 값이 호출 사이에 유지된다. 지역 b는 호출마다 200으로 새로 만들어지며, c는 지역 선언이 없으므로 전역 c를 가리킨다.

첫 호출: static a = 101, 지역 b = 201, 전역 c = 101
둘째 호출: static a = 102, 지역 b = 201, 전역 c = 102

main의 a, b는 전역 변수로 바뀐 적이 없어 10, 20 그대로이고, c만 102로 바뀌어 출력된다.

문제 20
해싱(Hashing)에 대한 설명으로 옳지 않은 것은?
1서로 다른 탐색키가 해시 함수를 통해 동일한 해시 주소로 사상될 수 있다.
2충돌(Collision)이 발생하지 않는 해시 함수를 사용한다면 해싱의 탐색 시간 복잡도는 O(1)이다.
3선형 조사법(Linear Probing)은 연결리스트(Linked List)를 사용하여 오버플로우 문제를 해결한다.
4폴딩함수(Folding Function)는 탐색키를 여러 부분으로 나누어 이들을 더하거나 배타적 논리합을 하여 해시 주소를 얻는다.
정답 및 해설

옳지 않은 것은 선형 조사법이 연결리스트를 사용하여 오버플로우 문제를 해결한다는 설명이다.

선형 조사법은 충돌 시 테이블 안의 다음 빈 버킷을 차례로 찾는 개방 주소법이다. 연결리스트로 충돌 레코드를 잇는 방식은 체이닝이다.

  • 서로 다른 탐색키가 같은 해시 주소로 사상될 수 있다(충돌)는 설명은 옳다.
  • 충돌이 없는 해시 함수라면 해시 계산 한 번으로 위치를 찾으므로 탐색 시간 복잡도가 O(1)이라는 설명은 옳다.
  • 폴딩 함수가 키를 여러 부분으로 나눠 더하거나 XOR하여 주소를 얻는다는 설명은 옳다.
9급 국가직 컴퓨터일반 기출문제모두CBT · moducbt.com
18년 1회차
총 20문항 · 객관식 · 정답·해설 포함
문제 1
유닉스 운영체제에 대한 설명으로 옳지 않은 것은?
1계층적 파일시스템과 다중 사용자를 지원하는 운영체제이다.
2BSD 유닉스의 모든 코드는 어셈블리 언어로 작성되었다.
3CPU 이용률을 높일 수 있는 다중 프로그래밍 기법을 사용한다.
4사용자 프로그램은 시스템 호출을 통해 커널 기능을 사용할 수 있다.
정답 및 해설

옳지 않은 것은 BSD 유닉스의 모든 코드가 어셈블리 언어로 작성되었다는 설명이다.

유닉스는 커널의 대부분을 C 언어로 작성해 이식성을 높인 운영체제이며, 하드웨어에 밀착된 극히 일부만 어셈블리로 작성된다. BSD 유닉스도 마찬가지다.

  • 계층적(트리형) 파일 시스템과 다중 사용자를 지원한다는 설명은 옳다.
  • 다중 프로그래밍(다중 작업)으로 CPU 이용률을 높인다는 설명은 옳다.
  • 사용자 프로그램이 시스템 호출을 통해 커널 기능을 사용한다는 설명은 옳다.
문제 2
다음에서 설명하는 해킹 공격 방법은?

공격자는 사용자의 합법적 도메인을 탈취하거나 도메인 네임 시스템(DNS) 또는 프락시 서버의 주소를 조하여, 사용자가 진짜 사이트로 오인하여 접속하도록 유도한 후 개인정보를 훔친다.

1스니핑(Sniffing)
2파밍(Pharming)
3트로이 목마(Trojan Horse)
4하이재킹(Hijacking)
정답 및 해설

설명하는 공격은 파밍(Pharming)이다.

파밍은 DNS나 프락시 서버 주소를 조작해 사용자가 올바른 도메인 주소를 입력해도 가짜 사이트로 접속되게 만든 뒤 개인정보를 빼내는 공격이다.

  • 스니핑은 네트워크를 지나는 패킷을 몰래 엿보아 정보를 가로채는 수동적 공격이다.
  • 트로이 목마는 정상 프로그램으로 위장해 설치된 뒤 악의적 기능을 수행하는 악성 코드다.
  • 하이재킹은 이미 인증된 세션 등을 가로채 정상 사용자처럼 행세하는 공격이다.
문제 3
다음 SQL 명령어에서 DDL(Data Definition Language) 명령어만을 모두 고른 것은?
  • ㄱ. ALTER
  • ㄴ. DROP
  • ㄷ. INSERT
  • ㄹ. UPDATE
1ㄱ, ㄴ
2ㄴ, ㄷ
3ㄴ, ㄹ
4ㄷ, ㄹ
정답 및 해설

DDL 명령어는 ALTER와 DROP(ㄱ, ㄴ)이다.

DDL은 테이블·뷰·인덱스 같은 데이터베이스 구조(스키마)를 정의·변경·삭제하는 언어로 CREATE, ALTER, DROP 등이 속한다. INSERT와 UPDATE는 데이터 자체를 조작하는 DML이다.

  • ㄱ. ALTER는 기존 테이블 구조를 변경하는 DDL이다.
  • ㄴ. DROP은 테이블 등 스키마 객체를 삭제하는 DDL이다.
  • ㄷ. INSERT는 튜플을 삽입하는 DML이다.
  • ㄹ. UPDATE는 튜플의 값을 수정하는 DML이다.
문제 4
다음 수식에서 이진수 Y의 값은? (단, 수식의 모든 수는 8 비트 이진수이고 1의 보수로 표현된다)
11110100(2)+Y=11011111(2)11110100_{(2)} + Y = 11011111_{(2)}
111101001(2)
211101010(2)
311101011(2)
411101100(2)
정답 및 해설

Y는 11101010(2)11101010_{(2)}이다.

1의 보수에서 최상위 비트가 1이면 음수이고, 전체 비트를 반전한 값이 크기다.
11110100(2)→−00001011(2)=−1111110100_{(2)} \rightarrow -00001011_{(2)} = -11
11011111(2)→−00100000(2)=−3211011111_{(2)} \rightarrow -00100000_{(2)} = -32

따라서 Y=−32−(−11)=−21Y = -32 - (-11) = -21 이다.
21=00010101(2)21 = 00010101_{(2)} 의 모든 비트를 반전하면 -21 = 11101010(2)11101010_{(2)} 이다.

문제 5
다음 진리표를 만족하는 부울 함수로 옳은 것은? (단, • 은 AND, ⊕ 는 XOR, ⊙ 는 XNOR 연산을 의미한다)
입력출력
ABCY
0001
0010
0100
0111
1000
1011
1101
1110
1Y = A B C
2Y = A B C
3Y = A B C
4Y = A B C
정답 및 해설

진리표를 만족하는 함수는 Y=A⊕B⊙CY = A \oplus B \odot C이다.

출력이 1인 입력은 000, 011, 101, 110으로, 모두 1의 개수가 짝수인 경우다. 이는 3입력 XOR의 부정(짝수 패리티)이다.
Y=A⊕B⊕C‾=(A⊕B)⊙CY = \overline{A \oplus B \oplus C} = (A \oplus B) \odot C

  • A⋅B⊕CA \cdot B \oplus C는 A=B=C=0일 때 0이 되어 첫 행의 출력 1과 맞지 않는다.
  • A⊕B⊕CA \oplus B \oplus C는 1의 개수가 홀수일 때 1이 되므로 진리표와 정반대다.
  • A⊙B⊙CA \odot B \odot C는 XNOR을 두 번 거치며 부정이 상쇄되어 A⊕B⊕CA \oplus B \oplus C와 같으므로 진리표와 정반대다.
문제 6
스레싱(Thrashing)에 대한 설명으로 옳지 않은 것은?
1프로세스의 작업 집합(Working Set)이 새로운 작업 집합으로 전이 시 페이지 부재율이 높아질 수 있다.
2작업 집합 기법과 페이지 부재 빈도(Page Fault Frequency) 기법은 한 프로세스를 중단(Suspend)시킴으로써 다른 프로세스들의 스레싱을 감소시킬 수 있다.
3각 프로세스에 설정된 작업 집합 크기와 페이지 프레임 수가 매우 큰경우 다중 프로그래밍 정도(Degree of Multiprogramming)를 증가시킨다.
4페이지 부재 빈도 기법은 프로세스의 할당받은 현재 페이지 프레임 수가 설정한 페이지 부재율의 하한보다 낮아지면 보유한 프레임 수를 감소시킨다.
정답 및 해설

옳지 않은 것은 작업 집합 크기와 페이지 프레임 수가 매우 큰 경우 다중 프로그래밍 정도를 증가시킨다는 설명이다.

각 프로세스가 요구하는 작업 집합이 크면 한정된 프레임으로 수용할 수 있는 프로세스 수가 줄어든다. 이때 프로세스를 더 늘리면 스레싱이 심해지므로 오히려 다중 프로그래밍 정도를 낮춰야 한다.

  • 작업 집합이 새로운 작업 집합으로 전이(지역성 변화)할 때 페이지 부재율이 일시적으로 높아질 수 있다는 설명은 옳다.
  • 작업 집합 기법과 페이지 부재 빈도 기법이 프로세스 하나를 중단시켜 확보한 프레임으로 다른 프로세스의 스레싱을 줄일 수 있다는 설명은 옳다.
  • 페이지 부재 빈도 기법이 부재율이 하한보다 낮아지면 보유 프레임 수를 줄인다는 설명은 이 기법의 동작(하한 미만이면 프레임 회수, 상한 초과면 프레임 추가)에 맞다.
문제 7
인공신경망에 대한 설명으로 옳은 것만을 모두 고른 것은?
  • ㄱ. 단층 퍼셉트론은 배타적 합(Exclusive-OR) 연산자를 학습할 수 있다.
  • ㄴ. 다층 신경망은 입력 층, 출력 층, 하나 이상의 은닉층들로 구성된다.
  • ㄷ. 뉴런 간 연결 가중치(Connection Weight)를 조정하여 학습한다.
  • ㄹ. 생물학적 뉴런 망을 모델링한 방식이다.
1ㄱ, ㄴ, ㄷ
2ㄱ, ㄴ, ㄹ
3ㄱ, ㄷ, ㄹ
4ㄴ, ㄷ, ㄹ
정답 및 해설

옳은 것은 ㄴ, ㄷ, ㄹ이다.

단층 퍼셉트론은 선형 분리가 가능한 문제만 학습할 수 있는데, XOR은 선형 분리가 불가능하므로 학습할 수 없다. XOR 문제는 은닉층을 둔 다층 신경망으로 해결한다.

  • ㄱ. 단층 퍼셉트론이 XOR 연산자를 학습할 수 있다는 설명은 틀리다.
  • ㄴ. 다층 신경망은 입력층, 하나 이상의 은닉층, 출력층으로 구성된다.
  • ㄷ. 신경망은 뉴런 사이 연결 가중치를 조정하는 방식으로 학습한다.
  • ㄹ. 인공신경망은 생물학적 뉴런 망을 모델링한 방식이다.
문제 8
네트워크 기술에 대한 설명으로 옳지 않은 것은?
1IPv6는 인터넷 주소 크기가 128비트이고 호스트 자동 설정기능을 제공한다.
2광대역통합망은 응용 서비스별로 약속된 서비스 레벨 보증(Service Level Agreement) 품질 수준을 보장해줄 수 있다.
3모바일 와이맥스(WiMAX)는 휴대형 단말기를 이용해 고속 인터넷 접속 서비스를 제공하는 무선망 기술이다.
4SMTP(Simple Mail Transfer Protocol)는 사용자 인터페이스 구성방법을 지정하는 전송 계층 프로토콜이다.
정답 및 해설

옳지 않은 것은 SMTP가 사용자 인터페이스 구성방법을 지정하는 전송 계층 프로토콜이라는 설명이다.

SMTP는 메일 서버 간 또는 클라이언트에서 서버로 전자우편을 전송하는 응용 계층 프로토콜이며, 전송 계층으로는 TCP를 이용한다. 사용자 인터페이스 구성과도 관계가 없다.

  • IPv6는 128비트 주소를 쓰며 상태 비저장 주소 자동 설정 등 호스트 자동 설정 기능을 제공한다는 설명은 옳다.
  • 광대역통합망(BcN)이 서비스별 SLA 품질 수준을 보장할 수 있다는 설명은 옳다.
  • 모바일 와이맥스가 휴대형 단말기로 고속 무선 인터넷 접속을 제공하는 기술이라는 설명은 옳다.
문제 9
다음 Java 프로그램의 출력 값은?
class Super {
      Super() {
            System.out.print('A')
      }
      Super(char x) {
            System.out.print(x)
      }
}
class Sub extends Super {
      Sub() {
            super()
            System.out.print('B')
      }
      Sub(char x) {
            this()
            System.out.print(x)
      }
}
public class Test {
      public static void main(String[] args)
{
            Super s1 = new Super('C')
            Super s2 = new Sub('D')
      }
}
1ABCD
2ACBD
3CABD
4CBAD
정답 및 해설

출력 값은 CABD이다.

s1 생성: new Super('C')가 Super(char x)를 호출해 C를 출력한다.

s2 생성: new Sub('D')는 Sub(char x)를 호출하고, 그 첫 문장 this()가 Sub()를 호출한다.
Sub()의 super()가 Super()를 실행해 A를 출력하고, 돌아와 B를 출력한다.
마지막으로 Sub(char x)로 돌아와 D를 출력한다.

생성자 연쇄 호출에 따라 C → A → B → D 순으로 출력되므로 결과는 CABD이다.

문제 10
개발자가 사용해야 하는 서브시스템의 가장 앞쪽에 위치하면서 서브시스템에 있는 객체들을 사용할 수 있도록 인터페이스 역할을 하는 디자인 패턴은?
1Facade 패턴
2Strategy 패턴
3Adapter 패턴
4Singleton 패턴
정답 및 해설

설명에 해당하는 디자인 패턴은 Facade 패턴이다.

Facade(퍼사드)는 복잡한 서브시스템 앞에 단순화된 통합 인터페이스를 두어, 클라이언트가 내부 객체들을 직접 다루지 않고 이 창구를 통해 사용하게 하는 구조 패턴이다.

  • Strategy 패턴은 알고리즘군을 캡슐화해 실행 중에 교체할 수 있게 하는 행위 패턴이다.
  • Adapter 패턴은 호환되지 않는 인터페이스를 클라이언트가 기대하는 인터페이스로 변환하는 패턴이다.
  • Singleton 패턴은 클래스의 인스턴스가 하나만 생성되도록 보장하는 생성 패턴이다.
문제 11
소프트웨어 모듈 평가 기준으로 판단할 때, 다음 4명 중 가장 좋게 설계한 사람과 가장 좋지 않게 설계한 사람을 순서대로 바르게 나열한 것은?
  • ○ 철수: 절차적 응집도+공통 결합도
  • ○ 영희: 우연적 응집도+내용 결합도
  • ○ 동수: 기능적 응집도+자료 결합도
  • ○ 민희: 논리적 응집도+스탬프 결합도
1철수, 영희
2철수, 민희
3동수, 영희
4동수, 민희
정답 및 해설

가장 좋게 설계한 사람은 동수, 가장 좋지 않게 설계한 사람은 영희다.

좋은 모듈은 응집도는 높고 결합도는 낮아야 한다. 응집도는 기능적 > 순차적 > 교환적 > 절차적 > 시간적 > 논리적 > 우연적 순으로 좋고, 결합도는 자료 < 스탬프 < 제어 < 외부 < 공통 < 내용 순으로 낮다(좋다).

  • 동수: 가장 강한 기능적 응집도와 가장 약한 자료 결합도로 최선의 조합이다.
  • 영희: 가장 약한 우연적 응집도와 가장 강한 내용 결합도로 최악의 조합이다.
  • 철수: 절차적 응집도에 공통 결합도로 중간 수준이다.
  • 민희: 논리적 응집도에 스탬프 결합도로 중간 수준이다.
문제 12
자료구조에 대한 설명으로 옳지 않은 것은?
1데크는 삽입과 삭제를 한쪽 끝에서만 수행한다.
2연결리스트로 구현된 스택은 그 크기가 가변적이다.
3배열로 구현된 스택은 구현이 간단하지만 그 크기가 고정적이다.
4원형연결리스트는 한 노드에서 다른 모든 노드로 접근이 가능하다.
정답 및 해설

옳지 않은 것은 데크는 삽입과 삭제를 한쪽 끝에서만 수행한다는 설명이다.

데크(Deque, Double-Ended Queue)는 양쪽 끝 모두에서 삽입과 삭제가 가능한 자료구조다. 한쪽 끝에서만 삽입·삭제하는 것은 스택이다.

  • 연결리스트로 구현된 스택은 노드를 동적으로 할당하므로 크기가 가변적이라는 설명은 옳다.
  • 배열로 구현된 스택은 구현이 간단하지만 배열 크기로 용량이 고정된다는 설명은 옳다.
  • 원형연결리스트는 마지막 노드가 첫 노드를 가리키므로 어느 노드에서든 다른 모든 노드에 접근할 수 있다는 설명은 옳다.
문제 13
IPv4가 제공하는 기능만을 모두 고른 것은?
  • ㄱ. 혼잡제어
  • ㄴ. 인터넷 주소지정과 라우팅
  • ㄷ. 신뢰성 있는 전달 서비스
  • ㄹ. 패킷 단편화와 재조립
1ㄱ, ㄴ
2ㄴ, ㄷ
3ㄴ, ㄹ
4ㄷ, ㄹ
정답 및 해설

IPv4가 제공하는 기능은 ㄴ, ㄹ이다.

IPv4는 네트워크 계층의 비연결형·최선형(best-effort) 프로토콜로, 주소를 지정해 패킷을 목적지까지 라우팅하고 MTU에 맞춰 패킷을 단편화·재조립한다.

  • ㄱ. 혼잡제어는 전송 계층의 TCP가 담당하며 IPv4는 제공하지 않는다.
  • ㄴ. 인터넷 주소지정과 라우팅은 IPv4의 핵심 기능이다.
  • ㄷ. 신뢰성 있는 전달(재전송·순서 보장)은 TCP가 제공하며 IPv4는 전달을 보장하지 않는다.
  • ㄹ. 패킷 단편화와 재조립은 IPv4 헤더의 식별자·플래그·단편 오프셋 필드로 수행한다.
문제 14
결정 명령문 내의 각 조건식이 참, 거짓을 한 번 이상 갖도록 조합하여 테스트 케이스를 설계하는 방법은?
1문장 검증 기준(Statement Coverage)
2조건 검증 기준(Condition Coverage)
3분기 검증 기준(Branch Coverage)
4다중 조건 검증 기준(Multiple Condition Coverage)
정답 및 해설

설명에 해당하는 방법은 조건 검증 기준(Condition Coverage)이다.

조건 검증 기준은 결정문 안의 개별 조건식 각각이 참과 거짓을 최소 한 번씩 갖도록 테스트 케이스를 설계한다.

  • 문장 검증 기준은 프로그램의 모든 문장이 최소 한 번 실행되도록 하는 기준이다.
  • 분기 검증 기준은 결정문 전체의 결과가 참·거짓 분기를 각각 한 번 이상 지나도록 하는 기준이다.
  • 다중 조건 검증 기준은 결정문 내 조건식들의 참·거짓 가능한 모든 조합을 시험하는 기준이다.
문제 15
가상 머신(Virtual Machine)에 대한 설명으로 옳지 않은 것은?
1단일 컴퓨터에서 가상화를 사용하여 다수의 게스트 운영체제를 실행할 수 있다.
2가상 머신은 사용자에게 다른 가상 머신의 동작에 간섭을 주지 않는 격리된 실행환경을 제공한다.
3가상 머신 모니터(Virtual Machine Monitor)를 사용하여 가상화하는 경우 반드시 호스트 운영체제가 필요하다.
4자바 가상 머신은 자바 바이트 코드가 다양한 운영체제 상에서 수행될 수 있도록 한다.
정답 및 해설

옳지 않은 것은 가상 머신 모니터를 사용하면 반드시 호스트 운영체제가 필요하다는 설명이다.

가상 머신 모니터(하이퍼바이저) 중 네이티브(베어메탈)형은 하드웨어 위에서 직접 실행되어 호스트 운영체제 없이 게스트 운영체제를 구동한다. 호스트 운영체제가 필요한 것은 호스트형 방식뿐이다.

  • 단일 컴퓨터에서 가상화로 여러 게스트 운영체제를 실행할 수 있다는 설명은 옳다.
  • 가상 머신이 서로 간섭하지 않는 격리된 실행환경을 제공한다는 설명은 옳다.
  • 자바 가상 머신이 바이트 코드를 다양한 운영체제에서 실행할 수 있게 한다는 설명은 옳다.
문제 16
IEEE 802.11 무선 랜에 대한 설명으로 옳은 것은?
1IEEE 802.11a는 5GHz 대역에서 5.5Mbps의 전송률을 제공한다.
2IEEE 802.11b는 직교 주파수 분할 다중화(OFDM) 방식을 사용하여 최대 22Mbps의 전송률을 제공한다.
3IEEE 802.11g는 5 GHz 대역에서 직접 순서 확산 대역(DSSS) 방식을 사용한다.
4IEEE 802.11n은 다중입력 다중출력(MIMO) 안테나 기술을 사용한다.
정답 및 해설

옳은 것은 IEEE 802.11n이 다중입력 다중출력(MIMO) 안테나 기술을 사용한다는 설명이다.

802.11n은 여러 안테나로 동시에 송수신하는 MIMO와 채널 결합 등을 도입해 이전 규격보다 전송률을 크게 높였다.

  • 802.11a는 5GHz 대역에서 OFDM 방식을 쓰며 최대 54Mbps를 제공하므로, 5.5Mbps를 제공한다는 설명은 틀리다.
  • 802.11b는 2.4GHz 대역에서 DSSS(CCK) 방식을 쓰며 OFDM을 사용하지 않으므로 틀리다.
  • 802.11g는 2.4GHz 대역에서 OFDM을 사용하므로, 5GHz 대역에서 DSSS를 사용한다는 설명은 틀리다.
문제 17
데이터베이스의 동시성 제어에 대한 설명으로 옳지 않은 것은? (단, T1, T2, T3는 트랜잭션이고, A는 데이터 항목이다)
1다중버전 동시성 제어 기법은 한 데이터 항목이 변경될 때 그 항목의 이전 값을 보존한다.
2T1이 A에 배타 로크를 요청할 때, 현재 T2가 A에 대한 공유로크를 보유하고 있고 T3가 A에 공유 로크를 동시에 요청한다면, 트랜잭션 기아 회피기법이 없는 경우 A에 대한 로크를 T3가 T1보다 먼저 보유한다.
3로크 전환이 가능한 상태에서 T1이 A에 대한 배타 로크를 요청할 때, 현재 T1이 A에 대한 공유 로크를 보유하고 있는 유일한 트랜잭션인 경우 T1은 A에 대한 로크를 배타 로크로 상승할 수 있다.
42단계 로킹 프로토콜에서 각 트랜잭션이 정상적으로 커밋될때까지 자신이 가진 모든 배타적 로크들을 해제하지 않는다면 모든 교착상태를 방지할 수 있다.
정답 및 해설

옳지 않은 것은 2단계 로킹에서 커밋 때까지 배타 로크를 해제하지 않으면 모든 교착상태를 방지할 수 있다는 설명이다.

배타 로크를 커밋까지 유지하는 엄격한 2단계 로킹은 연쇄 복귀를 막고 직렬 가능성을 보장하지만, 트랜잭션들이 서로의 로크를 기다리는 교착상태는 여전히 발생할 수 있다.

  • 다중버전 동시성 제어가 데이터 항목 변경 시 이전 값(이전 버전)을 보존한다는 설명은 옳다.
  • T2가 공유 로크를 보유한 상태에서 T3의 공유 로크 요청은 즉시 호환되므로, 기아 회피 기법이 없으면 배타 로크를 기다리는 T1보다 T3가 먼저 로크를 얻는다는 설명은 옳다.
  • T1이 A의 공유 로크를 가진 유일한 트랜잭션이면 로크 전환(상승)으로 배타 로크를 얻을 수 있다는 설명은 옳다.
문제 18
파일구조에 대한 설명으로 옳지 않은 것은?
1VSAM은 B+ 트리 인덱스 구조를 사용한다.
2히프 파일은 레코드들을 키 순서와 관계없이 저장할 수 있다.
3ISAM은 레코드 삽입을 위한 별도의 오버플로우 영역을 필요로 하지 않는다.
4순차 파일에서 일부 레코드들이 키 순서와 다르게 저장된 경우, 파일 재구성 과정을 통해 키 순서대로 저장될 수 있다.
정답 및 해설

옳지 않은 것은 ISAM은 레코드 삽입을 위한 별도의 오버플로우 영역을 필요로 하지 않는다는 설명이다.

ISAM은 기본 데이터 영역이 키 순서로 고정 배치되므로, 새 레코드를 삽입할 자리가 없을 때 이를 담을 오버플로우 영역이 필요하다.

  • VSAM이 B+ 트리 형태의 인덱스 구조를 사용한다는 설명은 옳다.
  • 히프 파일은 레코드를 키 순서와 관계없이 들어온 순서대로 저장할 수 있다는 설명은 옳다.
  • 순차 파일의 순서가 흐트러진 경우 파일 재구성으로 키 순서를 회복할 수 있다는 설명은 옳다.
문제 19
다음 C 프로그램의 출력 값은?
#include <stdio.h>

int a = 10;
int b = 20;
int c = 30;

void func(void)
{
    static int a = 100;
    int b = 200;

    a++;
    b++;
    c = a;
}

int main(void)
{
    func();
    func();

    printf("a = %d, b = %d, c = %d\n", a, b, c);

    return 0;
}
1a = 10, b = 20, c = 30
2a = 10, b = 20, c = 102
3a = 101, b = 201, c = 101
4a = 102, b = 202, c = 102
정답 및 해설

출력 값은 a = 10, b = 20, c = 102이다.

func 안의 a는 static 지역 변수라 처음 한 번만 100으로 초기화되고 값이 호출 사이에 유지된다. 지역 b는 호출마다 200으로 새로 만들어지며, c는 지역 선언이 없으므로 전역 c를 가리킨다.

첫 호출: static a = 101, 지역 b = 201, 전역 c = 101
둘째 호출: static a = 102, 지역 b = 201, 전역 c = 102

main의 a, b는 전역 변수로 바뀐 적이 없어 10, 20 그대로이고, c만 102로 바뀌어 출력된다.

문제 20
해싱(Hashing)에 대한 설명으로 옳지 않은 것은?
1서로 다른 탐색키가 해시 함수를 통해 동일한 해시 주소로 사상될 수 있다.
2충돌(Collision)이 발생하지 않는 해시 함수를 사용한다면 해싱의 탐색 시간 복잡도는 O(1)이다.
3선형 조사법(Linear Probing)은 연결리스트(Linked List)를 사용하여 오버플로우 문제를 해결한다.
4폴딩함수(Folding Function)는 탐색키를 여러 부분으로 나누어 이들을 더하거나 배타적 논리합을 하여 해시 주소를 얻는다.
정답 및 해설

옳지 않은 것은 선형 조사법이 연결리스트를 사용하여 오버플로우 문제를 해결한다는 설명이다.

선형 조사법은 충돌 시 테이블 안의 다음 빈 버킷을 차례로 찾는 개방 주소법이다. 연결리스트로 충돌 레코드를 잇는 방식은 체이닝이다.

  • 서로 다른 탐색키가 같은 해시 주소로 사상될 수 있다(충돌)는 설명은 옳다.
  • 충돌이 없는 해시 함수라면 해시 계산 한 번으로 위치를 찾으므로 탐색 시간 복잡도가 O(1)이라는 설명은 옳다.
  • 폴딩 함수가 키를 여러 부분으로 나눠 더하거나 XOR하여 주소를 얻는다는 설명은 옳다.