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

16년 1회차

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

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

16년 1회차

총 20문항 · 객관식 · 정답·해설 포함
문제 1
다음 중 DBMS를 이용하여 데이터를 관리하고 활용함으로써 얻을 수 있는 장점으로 옳지 않은 것은?
1데이터의 중복성을 제어하여 저장공간의 낭비를 방지한다.
2조직 내의 다양한 응용 사이의 데이터 일관성을 유지한다.
3효율적인 질의 처리를 위한 저장 구조와 탐색 기법을 제공한다.
4무결성 제약조건을 만족하도록 데이터를 관리한다.
5사용자가 데이터베이스의 모든 데이터를 자유롭게 액세스할 수 있다.
정답 및 해설

사용자가 모든 데이터를 자유롭게 액세스할 수 있다는 설명은 DBMS의 장점이 아니다.

DBMS는 접근 권한 제어로 허가된 사용자에게 허가된 범위의 데이터만 제공하며, 이를 통해 데이터 보안을 유지한다.

  • 데이터 중복 제어: 같은 데이터를 한곳에서 관리하므로 저장공간 낭비를 줄이는 장점이다.
  • 응용 간 일관성 유지: 여러 응용이 같은 데이터를 공유하므로 값이 서로 어긋나지 않는다.
  • 저장 구조와 탐색 기법 제공: 인덱스와 질의 최적화로 효율적인 질의 처리를 지원한다.
  • 무결성 관리: 제약조건을 위반하는 데이터의 입력과 변경을 막는다.
문제 2
다음 중 플립플롭(flip-flop)의 용도에 해당하는 것은?
1n비트의 입력에서 1의 개수가 짝수면 1, 홀수면 0을 출력한다.
21비트의 0과 1의 두 개의 상태 중 하나를 안정적으로 저장할 수 있다.
3n비트의 입력에 따라 2n개의 출력 중 하나만 1을 출력한다.
4두 비트의 입력에 대하여 합과 자리올림(carry)을 출력한다.
5여러 개의 입력 회선 중 선택된 한 회선의 입력을 출력 회선으로 출력한다.
정답 및 해설

플립플롭의 용도는 1비트 정보를 안정적으로 저장하는 것이다.

플립플롭은 0과 1 두 안정 상태 중 하나를 유지하는 순서회로의 기억 소자로, 레지스터 등을 구성하는 기본 단위이다.

  • 입력의 1 개수가 짝수인지 홀수인지에 따라 출력하는 기능: 패리티 회로의 동작이다.
  • 입력 비트 조합에 따라 출력선 하나만 1로 만드는 기능: 디코더의 동작이다.
  • 두 비트의 합과 자리올림을 내는 기능: 반가산기의 동작이다.
  • 여러 입력 회선 중 하나를 골라 출력하는 기능: 멀티플렉서의 동작이다.
문제 3
다음 중 배열에 저장된 n개의 레코드를 키의 오름차순으로 정렬하는 알고리즘에 대한 설명으로 옳은 것은?
1힙(heap) 정렬은 안정적 정렬 알고리즘이다.
2최악의 경우 퀵(quick) 정렬의 시간 복잡도는 O(nlogn)이다.
3평균적인 상황에서 병합(merge) 정렬의 시간 복잡도는 O(nlogn)이다.
4이미 정렬되어 있는 경우 병합 정렬의 시간 복잡도는 O(n)이다.
5삽입(insertion) 정렬은 평균적인 상황에서 n이 클수록 퀵 정렬에 비해 빠르다.
정답 및 해설

병합 정렬의 평균 시간 복잡도가 O(nlog⁡n)O(n \log n)이라는 설명이 옳다.

병합 정렬은 절반씩 나누고 병합하는 과정을 반복하므로 입력 상태와 관계없이 항상 같은 차수의 시간이 걸린다.

  • 힙 정렬의 안정성: 힙 구성과 삭제 중 같은 키의 상대 순서가 바뀔 수 있어 불안정 정렬이다.
  • 퀵 정렬의 최악 복잡도: 분할이 한쪽으로 치우치면 O(n2)O(n^2)이 된다.
  • 이미 정렬된 입력의 병합 정렬: 분할과 병합을 그대로 수행하므로 O(nlog⁡n)O(n \log n)이다.
  • 삽입 정렬과 퀵 정렬의 비교: 삽입 정렬은 평균 O(n2)O(n^2)이므로 n이 클수록 퀵 정렬보다 느리다.
문제 4
다음 중 기계학습(machine learning)에 관련된 설명으로 옳지 않은 것은?
1학습 시 개별 데이터에 대한 미리 지정된 레이블 또는 목표치가 없는 경우에 적용하는 기법들을 비교사 또는 자율 학습(unsupervised learning)이라 부른다.
2대표적인 unsupervised learning 기법으로는 clustering이 있다.
3인공 신경망(artificial neural network) 기법을 이용하여 unsupervised learning을 시행할 수 있다.
4Decision tree는 unsupervised learning 기법으로 분류된다.
5SVM(Support Vector Machine)은 교사 또는 지도 학습(supervised learning) 기법이다.
정답 및 해설

Decision tree를 unsupervised learning으로 분류한 설명이 옳지 않다.

Decision tree는 레이블이 있는 학습 데이터로 분류 규칙을 만드는 지도 학습 기법이다. 비지도 학습은 레이블 없이 데이터의 구조를 찾는다.

  • 비지도 학습의 정의: 미리 지정된 레이블이나 목표치가 없는 경우에 적용하는 기법이라는 설명은 옳다.
  • Clustering: 유사한 데이터를 묶는 대표적인 비지도 학습 기법이다.
  • 인공 신경망: 오토인코더처럼 비지도 학습에 활용하는 구조가 있다.
  • SVM: 레이블이 있는 데이터로 분류 경계를 학습하는 지도 학습 기법이다.
문제 5
다음 중 자료구조 큐(queue)에 대한 설명으로 옳은 것은?
1후입선출(last-in first-out) 특성을 갖는 자료구조이다.
2데이터를 넣는 위치는 뒤(rear)이고, 데이터를 꺼내는 위치는 앞(front)인 선형 리스트이다.
3프로그램 실행 시 함수 호출과 복귀를 위한 처리에 유용하다.
4인덱스를 이용하여 지정된 임의 위치에서 직접 데이터를 저장하거나 읽기 위한 자료구조이다.
5하나의 노드가 최대 2개의 자식 노드를 가질 수 있는 구조이다.
정답 및 해설

큐는 뒤(rear)에서 넣고 앞(front)에서 꺼내는 선형 리스트이다.

먼저 들어간 데이터가 먼저 나오는 선입선출(FIFO) 구조여서 대기열 처리에 쓰인다.

  • 후입선출 특성: 큐가 아니라 스택의 특성이다.
  • 함수 호출과 복귀 처리: 복귀 정보를 역순으로 꺼내야 하므로 스택이 쓰인다.
  • 인덱스로 임의 위치에 직접 접근: 배열의 특징이다.
  • 노드당 자식이 최대 2개인 구조: 이진 트리의 정의이다.
문제 6
개발할 프로그램의 LOC(Line of Code)가 50,000이고 개발에 참여할 프로그래머가 5명, 각 프로그래머들의 평균 생산성이 1,000LOC/MM(Man Month)일 때 개발에 소요되는 기간은?
110개월
215개월
320개월
430개월
540개월
정답 및 해설

개발에 소요되는 기간은 10개월이다.

먼저 총 LOC를 생산성으로 나누어 전체 노력(MM)을 구한다.
50000 LOC1000 LOC/MM=50 MM\dfrac{50000\,\mathrm{LOC}}{1000\,\mathrm{LOC/MM}} = 50\,\mathrm{MM}

전체 노력을 인원으로 나누면 개발 기간이 된다.
50÷5=1050 \div 5 = 10

문제 7
다음 자바 프로그램에서 ㉠에 넣을 수 있는 문장과 그 결과 ㉡의 문장에 의해 출력되는 결과가 모두 옳은 것은?
class Person {
String name;
public Person(String n) { name = n; }
public void whoRU() {
System.out.println(name+"입니다.");
}
}
class Student extends Person {
String school;
public Student(String n, String s) {
super(n);
school = s;
}
public void whoRU() {
System.out.println(school+"학교에 다니는 "+name+"입니다.");
}
}
public class People {
public static void main(String args[]) {
㉠
obj.whoRU();
} ㉡
}
1㉠의 문장 : Person obj = new Student("김철수", "으뜸중"); ㉡의 출력 : 김철수입니다.
2㉠의 문장 : Student obj = new Person("김철수"); ㉡의 출력 : 김철수입니다.
3㉠의 문장 : Person obj = new Student("김철수", "으뜸중"); ㉡의 출력 : 으뜸중학교에 다니는 김철수입니다.
4㉠의 문장 : Student obj = new Student("김철수", "으뜸중"); ㉡의 출력 : 김철수입니다.
5㉠의 문장 : Student obj = new Person("김철수"); ㉡의 출력 : 출력이 되지 않음
정답 및 해설

Person 타입 변수에 Student 객체를 대입한 문장과 으뜸중학교 출력을 함께 제시한 조합이 옳다.

부모 타입 변수로 자식 객체를 참조하는 업캐스팅은 허용되고, 재정의된 메소드는 실제 객체 기준으로 호출되는 동적 바인딩이 적용된다. 따라서 Student의 whoRU()가 실행된다.

  • Person 변수에 Student 객체를 넣고 '김철수입니다.'가 출력된다는 조합: 재정의된 Student의 메소드가 호출되므로 출력이 틀리다.
  • Student 변수에 new Person을 넣고 '김철수입니다.'가 출력된다는 조합: 부모 객체를 자식 타입 변수에 대입할 수 없어 컴파일 오류이다.
  • Student 변수에 Student 객체를 넣고 '김철수입니다.'가 출력된다는 조합: Student의 메소드가 실행되어 학교 이름까지 출력되므로 틀리다.
  • Student 변수에 new Person을 넣고 출력이 되지 않는다는 조합: ㉠의 문장 자체가 컴파일되지 않아 넣을 수 있는 문장이 아니다.
문제 8
다음 중 JSP(Java Server Page)에 대한 설명으로 옳은 것은?
1클라이언트에서 동작하도록 만들어진 스크립트이다.
2마이크로소프트 윈도 환경에서만 동작한다.
3JSP는 서블릿 기술과는 배타적으로 사용한다.
4웹 서버에서 정적으로 웹 페이지를 생성할 수 있게 한다.
5JSP는 HTML 코드 안에 자바 코드를 삽입하는 형태로 작성한다.
정답 및 해설

JSP는 HTML 코드 안에 자바 코드를 삽입하는 형태로 작성한다.

JSP 페이지는 서버에서 서블릿으로 변환되어 실행되고, 그 결과가 클라이언트로 전달된다.

  • 클라이언트 동작 스크립트: JSP는 서버 측에서 실행되는 기술이다.
  • 윈도 환경 전용: 자바 기반이어서 서블릿 컨테이너가 있는 여러 운영체제에서 동작한다.
  • 서블릿과 배타적 사용: JSP는 서블릿 기술을 기반으로 하며 함께 사용한다.
  • 정적 웹 페이지 생성: JSP는 요청에 따라 내용을 만드는 동적 웹 페이지 기술이다.
문제 9
다음 중 IEEE 802.11 무선랜 표준에 대한 설명으로 옳지 않은 것은?
1종류에 따라 최대 전송속도가 달라지고 최대 1 Gbps이상 전송할 수 있는 표준도 존재한다.
2CSMA/CA 방식의 MAC 프로토콜을 사용한다.
3대부분의 경우 다수의 사용 가능 채널(channel)이 존재하여 근접한 거리에 있는 서로 다른 두 쌍의 컴퓨터가 서로 간섭을 받지 않고 동시에 통신할 수 있다.
4모든 AP(Access Point)는 유선랜 기술로 인터넷에 연결되어 있어야 어떤 특정 사용자가 해당 AP를 통해서 인터넷에 접속할 수 있다.
5AP 없이도 서로 다른 두 컴퓨터가 통신할 수 있다.
정답 및 해설

모든 AP가 유선랜으로 인터넷에 연결되어 있어야 한다는 설명이 옳지 않다.

AP는 무선 백홀로 다른 AP를 거쳐 인터넷에 연결될 수 있으므로, 모든 AP에 유선 연결이 필수인 것은 아니다.

  • 표준별 최대 전송속도 차이: 802.11ac처럼 1 Gbps 이상을 지원하는 표준도 있다.
  • CSMA/CA: 무선랜은 충돌 감지가 어려워 충돌 회피 방식의 MAC 프로토콜을 사용한다.
  • 다수의 채널: 서로 간섭이 적은 채널을 쓰면 가까운 두 쌍도 동시에 통신할 수 있다.
  • AP 없는 통신: 애드혹(ad hoc) 모드로 두 컴퓨터가 직접 통신할 수 있다.
문제 10
프로토콜은 컴퓨터 간 데이터 전송의 효율성과 신뢰성을 보장하기 위해 여러 가지 기능을 수행한다. 다음 중 프로토콜의 일반적인 기능에 해당하지 않는 것은?
1주소 지정
2오류 제어
3데이터 분할 및 조합
4비동기화
5흐름 제어 및 캡슐화
정답 및 해설

프로토콜의 일반적인 기능에 해당하지 않는 것은 비동기화이다.

프로토콜은 송수신 측의 타이밍과 상태를 맞추는 동기화를 수행하므로, 그 반대 개념인 비동기화는 기능으로 꼽지 않는다.

  • 주소 지정: 송수신 대상을 식별하는 기능이다.
  • 오류 제어: 전송 오류를 검출하고 복구하는 기능이다.
  • 데이터 분할 및 조합: 데이터를 전송 단위로 나누고 수신 측에서 다시 합치는 기능이다.
  • 흐름 제어 및 캡슐화: 전송량을 조절하고 데이터에 제어 정보를 덧붙이는 기능이다.
문제 11
다음 중 프로세스 교착 상태의 해결 방안에 해당하지 않는 것은?
1Prevention
2Avoidance
3Detection
4Elimination
5Recovery
정답 및 해설

교착 상태의 해결 방안에 해당하지 않는 것은 Elimination이다.

교착 상태의 대표적인 해결 방안은 예방, 회피, 탐지, 복구의 네 가지이다.

  • Prevention(예방): 교착 상태의 필요조건 중 하나가 성립하지 않도록 한다.
  • Avoidance(회피): 자원 할당 시 안전 상태가 유지되는지 확인한다.
  • Detection(탐지): 교착 상태 발생 여부를 검사한다.
  • Recovery(복구): 프로세스 종료나 자원 선점으로 교착 상태를 해소한다.
문제 12
다음 SQL 명령문들의 실행 후 상황에 대한 설명으로 옳은 것은?
CREATE TABLE UWORDS (ID INTEGER PRIMARY KEY, UWORD CHAR(5), FREQ INTEGER);
INSERT INTO UWORDS VALUES (500, 'THIS', 500);
INSERT INTO UWORDS VALUES (510, 'IS', 600);
INSERT INTO UWORDS VALUES (520, 'TEST', 700);
SELECT UWORD FROM UWORDS WHERE ID > 500;
DELETE FROM UWORDS WHERE FREQ < 600;
COMMIT;
1UWORDS 테이블의 레코드(record)의 개수는 3개이다.
23개의 레코드가 출력된다.
3출력 결과에서 700이란 숫자는 보이지 않는다.
4UWORDS 테이블의 컬럼(column)의 개수는 2개이다.
5UWORDS 테이블에 TEST라는 단어는 저장되어 있지 않다.
정답 및 해설

출력 결과에 700이란 숫자는 보이지 않는다.

SELECT는 ID가 500보다 큰 행의 UWORD 컬럼만 조회하므로 IS와 TEST가 출력되고, FREQ 값은 출력되지 않는다.

이어서 DELETE가 FREQ가 600 미만인 THIS 행을 지우므로 테이블에는 IS와 TEST 두 행이 남는다.

  • 레코드 개수 3개: DELETE 후 남은 레코드는 2개이다.
  • 3개의 레코드 출력: 조건에 맞는 2개만 출력된다.
  • 컬럼 개수 2개: 테이블의 컬럼은 ID, UWORD, FREQ의 3개이다.
  • TEST 미저장: TEST 행의 FREQ는 700이어서 삭제되지 않는다.
문제 13
다음 중 가상기억장치에 대한 설명으로 옳은 것은?
1프로세스의 주소공간 전체가 주기억장치에 적재된다.
2실행 중인 프로세스들에 필요한 전체 주소공간 크기의 합은 주기억장치 용량보다 클 수 없다.
3프로세스에서 사용되는 가상주소의 순서와 주기억장치의 물리주소 순서는 일치한다.
4페이징 기법에서 페이지의 크기는 프로그램의 모듈 단위로 정해지므로 모두 다르다.
5프로세스에서 사용되는 가상주소를 주기억장치의 물리주소로 변환하는 것은 프로세스의 실행 중에 이루어진다.
정답 및 해설

가상주소를 물리주소로 변환하는 일은 프로세스의 실행 중에 이루어진다.

명령어가 메모리를 참조할 때마다 MMU가 페이지 테이블을 이용해 주소를 동적으로 변환한다.

  • 주소공간 전체 적재: 필요한 부분만 주기억장치에 적재한다.
  • 주소공간 합의 한계: 보조기억장치를 활용하므로 주기억장치 용량보다 클 수 있다.
  • 주소 순서의 일치: 연속된 가상주소가 흩어진 물리주소에 배치될 수 있다.
  • 모듈 단위의 페이지 크기: 페이지는 고정 크기이며, 논리 단위로 나누는 것은 세그먼테이션이다.
문제 14
다음 중 모바일 데이터베이스의 특징 또는 종류에 해당하지 않는 것은?
1클라이언트 측 데이터베이스의 복제 및 비동기화 기능
2저성능 CPU와 제한된 주기억장치를 가진 모바일 기기에 탑재 가능
3내장형 데이터베이스
4SQLite
5DB2 Everyplace
정답 및 해설

클라이언트 측 데이터베이스의 복제 및 비동기화 기능은 모바일 데이터베이스의 특징에 해당하지 않는다.

모바일 기기는 연결이 끊긴 상태에서도 동작하다가 서버와 다시 연결되면 데이터를 맞추므로, 필요한 기능은 동기화이다.

  • 저성능 CPU와 제한된 주기억장치에 탑재: 자원이 적은 모바일 기기에 맞춘 경량성이 특징이다.
  • 내장형 데이터베이스: 앱이나 기기 안에 내장되어 동작하는 형태이다.
  • SQLite: 모바일 앱에서 널리 쓰는 내장형 데이터베이스이다.
  • DB2 Everyplace: IBM의 모바일 기기용 데이터베이스 제품이다.
문제 15
다음 중 UDP와 TCP 모두 해당하는 것은?
1전송 중 손실된 데이터는 재전송을 통하여 복구한다.
2수신단에서 수신된 데이터를 송신자가 보낸 순서에 일치하도록 재정렬한다.
3헤더(header) 부분에 체크섬(checksum)필드가 있다.
4네트워크의 혼잡 시 전송 속도를 줄인다.
5전송된 데이터의 수신 여부를 확인할 수 있다.
정답 및 해설

UDP와 TCP에 공통으로 해당하는 것은 헤더의 체크섬(checksum) 필드이다.

두 프로토콜 모두 헤더에 체크섬 필드를 두어 오류 검출에 활용한다. 나머지 기능은 연결형 신뢰성 프로토콜인 TCP에만 해당한다.

  • 손실 데이터 재전송: TCP의 기능으로, UDP는 재전송하지 않는다.
  • 수신 데이터 순서 재정렬: TCP가 순서 번호로 수행하며, UDP는 순서를 보장하지 않는다.
  • 혼잡 시 전송 속도 감소: TCP의 혼잡 제어이며, UDP에는 없다.
  • 수신 여부 확인: TCP가 ACK로 확인하며, UDP에는 확인 응답이 없다.
문제 16
다음 중 입출력 위주의 프로세스와 연산 위주 프로세스의 특성에 따라 CPU 사용 시간(할당량)을 다르게 부여하는 선점 방식의 CPU 스케줄링 기법으로 옳은 것은?
1Round-Robin
2Multi-level Feedback Queue
3Shortest Job First
4Highest Response ratio Next
5Deadline
정답 및 해설

프로세스 특성에 따라 할당량을 다르게 주는 선점 방식은 Multi-level Feedback Queue이다.

이 기법은 프로세스의 CPU 사용 형태에 따라 큐 사이를 이동시키며, 입출력 위주 프로세스를 높은 우선순위에 두고 큐마다 다른 할당량을 적용한다.

  • Round-Robin: 프로세스 특성과 무관하게 동일한 시간 할당량을 부여한다.
  • Shortest Job First: 실행 시간이 짧은 작업을 먼저 처리하는 기법으로, 기본형은 비선점이다.
  • Highest Response ratio Next: 대기 시간을 반영한 응답 비율로 고르는 비선점 기법이다.
  • Deadline: 작업의 마감 시간을 기준으로 스케줄링한다.
문제 17
다음 중 시스템버스에 대한 설명으로 옳지 않은 것은?
1하드웨어 구성요소를 물리적으로 연결하며 구성요소 사이의 데 이터 통로를 제공한다.
2주소버스는 중앙처리장치가 주기억장치나 입출력장치에 데이터를 읽거나 쓰기 위해 필요한 주소를 전달하는 통로이다.
3제어버스는 주소버스와 데이터버스의 동작을 제어하기 위한 신호의 전달 통로이다.
4데이터버스는 중앙처리장치와 기타 모듈(기억장치, 입출력장치 등) 사이의 데이터를 전달하는 통로로 양방향 버스이다.
5시스템버스는 용도에 따라 주소버스, 입출력버스, 데이터버스, 제어버스로 구성된다.
정답 및 해설

시스템버스에 입출력버스를 포함한 설명이 옳지 않다.

시스템버스는 용도에 따라 주소버스, 데이터버스, 제어버스의 세 가지로 구성된다.

  • 구성요소의 물리적 연결: 하드웨어 구성요소 사이의 데이터 통로를 제공한다는 설명은 옳다.
  • 주소버스: 읽거나 쓸 위치의 주소를 전달하는 통로이다.
  • 제어버스: 주소버스와 데이터버스의 동작을 제어하는 신호를 전달한다.
  • 데이터버스: 읽기와 쓰기 모두에 쓰이는 양방향 통로이다.
문제 18
다음 C 언어로 작성된 함수는 정수 배열의 원소들의 총 합을 구하여 리턴하는 함수이다. ㉠의 위치에 들어가야 할 코드는? (단, 함수의 첫 번째 인자는 배열의 시작 위치를 나타내는 포인터, 두 번째 인자는 배열의 크기임)
int sum(int* data, const int dsize)
{
if (dsize > 0)
return ㉠;
return 0;
}
1*data + sum(data - 1, dsize + 1)
2data + sum(data - 1, dsize + 1)
3*data + sum(data - 1, dsize - 1)
4*data + sum(data + 1, dsize - 1)
5data + sum(data + 1, dsize - 1)
정답 및 해설

㉠에는 *data + sum(data + 1, dsize - 1)이 들어가야 한다.

현재 원소 값에 나머지 배열의 합을 더하는 재귀 구조이다. 포인터는 다음 원소로 전진하고 크기는 1씩 줄어, dsize가 0이 되면 0을 반환하며 끝난다.

예를 들어 {1, 2, 3}이면 1 + (2 + (3 + 0)) = 6이 된다.

  • *data + sum(data - 1, dsize + 1): 포인터가 뒤로 가고 크기가 커져 재귀가 끝나지 않는다.
  • data + sum(data - 1, dsize + 1): 원소 값이 아닌 주소를 쓰고, 재귀도 끝나지 않는다.
  • *data + sum(data - 1, dsize - 1): 포인터가 배열의 앞쪽으로 벗어난다.
  • data + sum(data + 1, dsize - 1): *가 없어 원소 값이 아닌 포인터를 더하게 된다.
문제 19
다음 중 자바의 예외처리에 대한 설명으로 옳은 것은?
1throw는 처리가 정상적으로 이루어졌음을 알리는 명령이다.
2예외가 발생할 가능성이 있는 문장은 try 블록에 넣는다.
3catch 블록에는 예외 발생 여부에 관계없이 실행할 문장을 넣는다.
4발생한 예외에 대한 처리는 finally 블록에서 할 수 없다.
5예외가 발생하였으나 예외 처리가 이루어지지 않은 경우 그 예외는 무시되고, 프로그램은 예외 발생 이후 지점부터 계속된다.
정답 및 해설

예외가 발생할 가능성이 있는 문장은 try 블록에 넣는다.

try에서 예외가 발생하면 맞는 catch 블록이 처리하고, finally 블록은 예외 발생 여부와 관계없이 실행된다.

  • throw: 정상 처리를 알리는 것이 아니라 예외를 발생시키는 명령이다.
  • catch 블록: 예외가 발생했을 때 처리할 문장을 넣는 곳이며, 항상 실행되는 블록은 finally이다.
  • finally 블록: 예외가 발생한 경우에도 실행되어 자원 해제 같은 뒤처리를 맡을 수 있으므로, 처리할 수 없다는 단정은 틀리다.
  • 처리되지 않은 예외: 무시되지 않고 호출한 쪽으로 전파되며, 끝내 처리되지 않으면 프로그램이 비정상 종료된다.
문제 20
다음 중 소프트웨어 개발 생명주기의 대표적인 모델에 대한 설명으로 옳지 않은 것은?
1프로토타입 모델, 폭포수 모델, 익스트림 프로그래밍 모델, 나선형 모델 등이 있다.
2가장 전통적인 방법은 폭포수 모델이다.
3프로토타입 모델은 사용자의 의견을 중요하게 여긴다.
4최근에 등장한 소규모 소프트웨어 개발에 유리한 것은 익스트림 프로그래밍 모델이다.
5시간과 비용이 적게 들며, 위험 요인을 사전에 분석하여 제거하거나 낮출 수 있는 것은 나선형 모델이다.
정답 및 해설

나선형 모델이 시간과 비용이 적게 든다는 설명이 옳지 않다.

나선형 모델은 위험 분석을 포함한 주기를 반복하므로 위험 관리에는 유리하지만, 시간과 비용이 많이 든다.

  • 대표 모델 나열: 프로토타입, 폭포수, 익스트림 프로그래밍, 나선형 모델은 모두 생명주기 모델로 다룬다.
  • 폭포수 모델: 단계를 순차적으로 진행하는 가장 전통적인 모델이다.
  • 프로토타입 모델: 시제품으로 사용자의 의견을 받아 요구사항을 다듬는다.
  • 익스트림 프로그래밍: 짧은 반복과 잦은 고객 참여를 중시해 소규모 개발에 유리하다.
국회직 9급 컴퓨터일반 기출문제모두CBT · moducbt.com
16년 1회차
총 20문항 · 객관식 · 정답·해설 포함
문제 1
다음 중 DBMS를 이용하여 데이터를 관리하고 활용함으로써 얻을 수 있는 장점으로 옳지 않은 것은?
1데이터의 중복성을 제어하여 저장공간의 낭비를 방지한다.
2조직 내의 다양한 응용 사이의 데이터 일관성을 유지한다.
3효율적인 질의 처리를 위한 저장 구조와 탐색 기법을 제공한다.
4무결성 제약조건을 만족하도록 데이터를 관리한다.
5사용자가 데이터베이스의 모든 데이터를 자유롭게 액세스할 수 있다.
정답 및 해설

사용자가 모든 데이터를 자유롭게 액세스할 수 있다는 설명은 DBMS의 장점이 아니다.

DBMS는 접근 권한 제어로 허가된 사용자에게 허가된 범위의 데이터만 제공하며, 이를 통해 데이터 보안을 유지한다.

  • 데이터 중복 제어: 같은 데이터를 한곳에서 관리하므로 저장공간 낭비를 줄이는 장점이다.
  • 응용 간 일관성 유지: 여러 응용이 같은 데이터를 공유하므로 값이 서로 어긋나지 않는다.
  • 저장 구조와 탐색 기법 제공: 인덱스와 질의 최적화로 효율적인 질의 처리를 지원한다.
  • 무결성 관리: 제약조건을 위반하는 데이터의 입력과 변경을 막는다.
문제 2
다음 중 플립플롭(flip-flop)의 용도에 해당하는 것은?
1n비트의 입력에서 1의 개수가 짝수면 1, 홀수면 0을 출력한다.
21비트의 0과 1의 두 개의 상태 중 하나를 안정적으로 저장할 수 있다.
3n비트의 입력에 따라 2n개의 출력 중 하나만 1을 출력한다.
4두 비트의 입력에 대하여 합과 자리올림(carry)을 출력한다.
5여러 개의 입력 회선 중 선택된 한 회선의 입력을 출력 회선으로 출력한다.
정답 및 해설

플립플롭의 용도는 1비트 정보를 안정적으로 저장하는 것이다.

플립플롭은 0과 1 두 안정 상태 중 하나를 유지하는 순서회로의 기억 소자로, 레지스터 등을 구성하는 기본 단위이다.

  • 입력의 1 개수가 짝수인지 홀수인지에 따라 출력하는 기능: 패리티 회로의 동작이다.
  • 입력 비트 조합에 따라 출력선 하나만 1로 만드는 기능: 디코더의 동작이다.
  • 두 비트의 합과 자리올림을 내는 기능: 반가산기의 동작이다.
  • 여러 입력 회선 중 하나를 골라 출력하는 기능: 멀티플렉서의 동작이다.
문제 3
다음 중 배열에 저장된 n개의 레코드를 키의 오름차순으로 정렬하는 알고리즘에 대한 설명으로 옳은 것은?
1힙(heap) 정렬은 안정적 정렬 알고리즘이다.
2최악의 경우 퀵(quick) 정렬의 시간 복잡도는 O(nlogn)이다.
3평균적인 상황에서 병합(merge) 정렬의 시간 복잡도는 O(nlogn)이다.
4이미 정렬되어 있는 경우 병합 정렬의 시간 복잡도는 O(n)이다.
5삽입(insertion) 정렬은 평균적인 상황에서 n이 클수록 퀵 정렬에 비해 빠르다.
정답 및 해설

병합 정렬의 평균 시간 복잡도가 O(nlog⁡n)O(n \log n)이라는 설명이 옳다.

병합 정렬은 절반씩 나누고 병합하는 과정을 반복하므로 입력 상태와 관계없이 항상 같은 차수의 시간이 걸린다.

  • 힙 정렬의 안정성: 힙 구성과 삭제 중 같은 키의 상대 순서가 바뀔 수 있어 불안정 정렬이다.
  • 퀵 정렬의 최악 복잡도: 분할이 한쪽으로 치우치면 O(n2)O(n^2)이 된다.
  • 이미 정렬된 입력의 병합 정렬: 분할과 병합을 그대로 수행하므로 O(nlog⁡n)O(n \log n)이다.
  • 삽입 정렬과 퀵 정렬의 비교: 삽입 정렬은 평균 O(n2)O(n^2)이므로 n이 클수록 퀵 정렬보다 느리다.
문제 4
다음 중 기계학습(machine learning)에 관련된 설명으로 옳지 않은 것은?
1학습 시 개별 데이터에 대한 미리 지정된 레이블 또는 목표치가 없는 경우에 적용하는 기법들을 비교사 또는 자율 학습(unsupervised learning)이라 부른다.
2대표적인 unsupervised learning 기법으로는 clustering이 있다.
3인공 신경망(artificial neural network) 기법을 이용하여 unsupervised learning을 시행할 수 있다.
4Decision tree는 unsupervised learning 기법으로 분류된다.
5SVM(Support Vector Machine)은 교사 또는 지도 학습(supervised learning) 기법이다.
정답 및 해설

Decision tree를 unsupervised learning으로 분류한 설명이 옳지 않다.

Decision tree는 레이블이 있는 학습 데이터로 분류 규칙을 만드는 지도 학습 기법이다. 비지도 학습은 레이블 없이 데이터의 구조를 찾는다.

  • 비지도 학습의 정의: 미리 지정된 레이블이나 목표치가 없는 경우에 적용하는 기법이라는 설명은 옳다.
  • Clustering: 유사한 데이터를 묶는 대표적인 비지도 학습 기법이다.
  • 인공 신경망: 오토인코더처럼 비지도 학습에 활용하는 구조가 있다.
  • SVM: 레이블이 있는 데이터로 분류 경계를 학습하는 지도 학습 기법이다.
문제 5
다음 중 자료구조 큐(queue)에 대한 설명으로 옳은 것은?
1후입선출(last-in first-out) 특성을 갖는 자료구조이다.
2데이터를 넣는 위치는 뒤(rear)이고, 데이터를 꺼내는 위치는 앞(front)인 선형 리스트이다.
3프로그램 실행 시 함수 호출과 복귀를 위한 처리에 유용하다.
4인덱스를 이용하여 지정된 임의 위치에서 직접 데이터를 저장하거나 읽기 위한 자료구조이다.
5하나의 노드가 최대 2개의 자식 노드를 가질 수 있는 구조이다.
정답 및 해설

큐는 뒤(rear)에서 넣고 앞(front)에서 꺼내는 선형 리스트이다.

먼저 들어간 데이터가 먼저 나오는 선입선출(FIFO) 구조여서 대기열 처리에 쓰인다.

  • 후입선출 특성: 큐가 아니라 스택의 특성이다.
  • 함수 호출과 복귀 처리: 복귀 정보를 역순으로 꺼내야 하므로 스택이 쓰인다.
  • 인덱스로 임의 위치에 직접 접근: 배열의 특징이다.
  • 노드당 자식이 최대 2개인 구조: 이진 트리의 정의이다.
문제 6
개발할 프로그램의 LOC(Line of Code)가 50,000이고 개발에 참여할 프로그래머가 5명, 각 프로그래머들의 평균 생산성이 1,000LOC/MM(Man Month)일 때 개발에 소요되는 기간은?
110개월
215개월
320개월
430개월
540개월
정답 및 해설

개발에 소요되는 기간은 10개월이다.

먼저 총 LOC를 생산성으로 나누어 전체 노력(MM)을 구한다.
50000 LOC1000 LOC/MM=50 MM\dfrac{50000\,\mathrm{LOC}}{1000\,\mathrm{LOC/MM}} = 50\,\mathrm{MM}

전체 노력을 인원으로 나누면 개발 기간이 된다.
50÷5=1050 \div 5 = 10

문제 7
다음 자바 프로그램에서 ㉠에 넣을 수 있는 문장과 그 결과 ㉡의 문장에 의해 출력되는 결과가 모두 옳은 것은?
class Person {
String name;
public Person(String n) { name = n; }
public void whoRU() {
System.out.println(name+"입니다.");
}
}
class Student extends Person {
String school;
public Student(String n, String s) {
super(n);
school = s;
}
public void whoRU() {
System.out.println(school+"학교에 다니는 "+name+"입니다.");
}
}
public class People {
public static void main(String args[]) {
㉠
obj.whoRU();
} ㉡
}
1㉠의 문장 : Person obj = new Student("김철수", "으뜸중"); ㉡의 출력 : 김철수입니다.
2㉠의 문장 : Student obj = new Person("김철수"); ㉡의 출력 : 김철수입니다.
3㉠의 문장 : Person obj = new Student("김철수", "으뜸중"); ㉡의 출력 : 으뜸중학교에 다니는 김철수입니다.
4㉠의 문장 : Student obj = new Student("김철수", "으뜸중"); ㉡의 출력 : 김철수입니다.
5㉠의 문장 : Student obj = new Person("김철수"); ㉡의 출력 : 출력이 되지 않음
정답 및 해설

Person 타입 변수에 Student 객체를 대입한 문장과 으뜸중학교 출력을 함께 제시한 조합이 옳다.

부모 타입 변수로 자식 객체를 참조하는 업캐스팅은 허용되고, 재정의된 메소드는 실제 객체 기준으로 호출되는 동적 바인딩이 적용된다. 따라서 Student의 whoRU()가 실행된다.

  • Person 변수에 Student 객체를 넣고 '김철수입니다.'가 출력된다는 조합: 재정의된 Student의 메소드가 호출되므로 출력이 틀리다.
  • Student 변수에 new Person을 넣고 '김철수입니다.'가 출력된다는 조합: 부모 객체를 자식 타입 변수에 대입할 수 없어 컴파일 오류이다.
  • Student 변수에 Student 객체를 넣고 '김철수입니다.'가 출력된다는 조합: Student의 메소드가 실행되어 학교 이름까지 출력되므로 틀리다.
  • Student 변수에 new Person을 넣고 출력이 되지 않는다는 조합: ㉠의 문장 자체가 컴파일되지 않아 넣을 수 있는 문장이 아니다.
문제 8
다음 중 JSP(Java Server Page)에 대한 설명으로 옳은 것은?
1클라이언트에서 동작하도록 만들어진 스크립트이다.
2마이크로소프트 윈도 환경에서만 동작한다.
3JSP는 서블릿 기술과는 배타적으로 사용한다.
4웹 서버에서 정적으로 웹 페이지를 생성할 수 있게 한다.
5JSP는 HTML 코드 안에 자바 코드를 삽입하는 형태로 작성한다.
정답 및 해설

JSP는 HTML 코드 안에 자바 코드를 삽입하는 형태로 작성한다.

JSP 페이지는 서버에서 서블릿으로 변환되어 실행되고, 그 결과가 클라이언트로 전달된다.

  • 클라이언트 동작 스크립트: JSP는 서버 측에서 실행되는 기술이다.
  • 윈도 환경 전용: 자바 기반이어서 서블릿 컨테이너가 있는 여러 운영체제에서 동작한다.
  • 서블릿과 배타적 사용: JSP는 서블릿 기술을 기반으로 하며 함께 사용한다.
  • 정적 웹 페이지 생성: JSP는 요청에 따라 내용을 만드는 동적 웹 페이지 기술이다.
문제 9
다음 중 IEEE 802.11 무선랜 표준에 대한 설명으로 옳지 않은 것은?
1종류에 따라 최대 전송속도가 달라지고 최대 1 Gbps이상 전송할 수 있는 표준도 존재한다.
2CSMA/CA 방식의 MAC 프로토콜을 사용한다.
3대부분의 경우 다수의 사용 가능 채널(channel)이 존재하여 근접한 거리에 있는 서로 다른 두 쌍의 컴퓨터가 서로 간섭을 받지 않고 동시에 통신할 수 있다.
4모든 AP(Access Point)는 유선랜 기술로 인터넷에 연결되어 있어야 어떤 특정 사용자가 해당 AP를 통해서 인터넷에 접속할 수 있다.
5AP 없이도 서로 다른 두 컴퓨터가 통신할 수 있다.
정답 및 해설

모든 AP가 유선랜으로 인터넷에 연결되어 있어야 한다는 설명이 옳지 않다.

AP는 무선 백홀로 다른 AP를 거쳐 인터넷에 연결될 수 있으므로, 모든 AP에 유선 연결이 필수인 것은 아니다.

  • 표준별 최대 전송속도 차이: 802.11ac처럼 1 Gbps 이상을 지원하는 표준도 있다.
  • CSMA/CA: 무선랜은 충돌 감지가 어려워 충돌 회피 방식의 MAC 프로토콜을 사용한다.
  • 다수의 채널: 서로 간섭이 적은 채널을 쓰면 가까운 두 쌍도 동시에 통신할 수 있다.
  • AP 없는 통신: 애드혹(ad hoc) 모드로 두 컴퓨터가 직접 통신할 수 있다.
문제 10
프로토콜은 컴퓨터 간 데이터 전송의 효율성과 신뢰성을 보장하기 위해 여러 가지 기능을 수행한다. 다음 중 프로토콜의 일반적인 기능에 해당하지 않는 것은?
1주소 지정
2오류 제어
3데이터 분할 및 조합
4비동기화
5흐름 제어 및 캡슐화
정답 및 해설

프로토콜의 일반적인 기능에 해당하지 않는 것은 비동기화이다.

프로토콜은 송수신 측의 타이밍과 상태를 맞추는 동기화를 수행하므로, 그 반대 개념인 비동기화는 기능으로 꼽지 않는다.

  • 주소 지정: 송수신 대상을 식별하는 기능이다.
  • 오류 제어: 전송 오류를 검출하고 복구하는 기능이다.
  • 데이터 분할 및 조합: 데이터를 전송 단위로 나누고 수신 측에서 다시 합치는 기능이다.
  • 흐름 제어 및 캡슐화: 전송량을 조절하고 데이터에 제어 정보를 덧붙이는 기능이다.
문제 11
다음 중 프로세스 교착 상태의 해결 방안에 해당하지 않는 것은?
1Prevention
2Avoidance
3Detection
4Elimination
5Recovery
정답 및 해설

교착 상태의 해결 방안에 해당하지 않는 것은 Elimination이다.

교착 상태의 대표적인 해결 방안은 예방, 회피, 탐지, 복구의 네 가지이다.

  • Prevention(예방): 교착 상태의 필요조건 중 하나가 성립하지 않도록 한다.
  • Avoidance(회피): 자원 할당 시 안전 상태가 유지되는지 확인한다.
  • Detection(탐지): 교착 상태 발생 여부를 검사한다.
  • Recovery(복구): 프로세스 종료나 자원 선점으로 교착 상태를 해소한다.
문제 12
다음 SQL 명령문들의 실행 후 상황에 대한 설명으로 옳은 것은?
CREATE TABLE UWORDS (ID INTEGER PRIMARY KEY, UWORD CHAR(5), FREQ INTEGER);
INSERT INTO UWORDS VALUES (500, 'THIS', 500);
INSERT INTO UWORDS VALUES (510, 'IS', 600);
INSERT INTO UWORDS VALUES (520, 'TEST', 700);
SELECT UWORD FROM UWORDS WHERE ID > 500;
DELETE FROM UWORDS WHERE FREQ < 600;
COMMIT;
1UWORDS 테이블의 레코드(record)의 개수는 3개이다.
23개의 레코드가 출력된다.
3출력 결과에서 700이란 숫자는 보이지 않는다.
4UWORDS 테이블의 컬럼(column)의 개수는 2개이다.
5UWORDS 테이블에 TEST라는 단어는 저장되어 있지 않다.
정답 및 해설

출력 결과에 700이란 숫자는 보이지 않는다.

SELECT는 ID가 500보다 큰 행의 UWORD 컬럼만 조회하므로 IS와 TEST가 출력되고, FREQ 값은 출력되지 않는다.

이어서 DELETE가 FREQ가 600 미만인 THIS 행을 지우므로 테이블에는 IS와 TEST 두 행이 남는다.

  • 레코드 개수 3개: DELETE 후 남은 레코드는 2개이다.
  • 3개의 레코드 출력: 조건에 맞는 2개만 출력된다.
  • 컬럼 개수 2개: 테이블의 컬럼은 ID, UWORD, FREQ의 3개이다.
  • TEST 미저장: TEST 행의 FREQ는 700이어서 삭제되지 않는다.
문제 13
다음 중 가상기억장치에 대한 설명으로 옳은 것은?
1프로세스의 주소공간 전체가 주기억장치에 적재된다.
2실행 중인 프로세스들에 필요한 전체 주소공간 크기의 합은 주기억장치 용량보다 클 수 없다.
3프로세스에서 사용되는 가상주소의 순서와 주기억장치의 물리주소 순서는 일치한다.
4페이징 기법에서 페이지의 크기는 프로그램의 모듈 단위로 정해지므로 모두 다르다.
5프로세스에서 사용되는 가상주소를 주기억장치의 물리주소로 변환하는 것은 프로세스의 실행 중에 이루어진다.
정답 및 해설

가상주소를 물리주소로 변환하는 일은 프로세스의 실행 중에 이루어진다.

명령어가 메모리를 참조할 때마다 MMU가 페이지 테이블을 이용해 주소를 동적으로 변환한다.

  • 주소공간 전체 적재: 필요한 부분만 주기억장치에 적재한다.
  • 주소공간 합의 한계: 보조기억장치를 활용하므로 주기억장치 용량보다 클 수 있다.
  • 주소 순서의 일치: 연속된 가상주소가 흩어진 물리주소에 배치될 수 있다.
  • 모듈 단위의 페이지 크기: 페이지는 고정 크기이며, 논리 단위로 나누는 것은 세그먼테이션이다.
문제 14
다음 중 모바일 데이터베이스의 특징 또는 종류에 해당하지 않는 것은?
1클라이언트 측 데이터베이스의 복제 및 비동기화 기능
2저성능 CPU와 제한된 주기억장치를 가진 모바일 기기에 탑재 가능
3내장형 데이터베이스
4SQLite
5DB2 Everyplace
정답 및 해설

클라이언트 측 데이터베이스의 복제 및 비동기화 기능은 모바일 데이터베이스의 특징에 해당하지 않는다.

모바일 기기는 연결이 끊긴 상태에서도 동작하다가 서버와 다시 연결되면 데이터를 맞추므로, 필요한 기능은 동기화이다.

  • 저성능 CPU와 제한된 주기억장치에 탑재: 자원이 적은 모바일 기기에 맞춘 경량성이 특징이다.
  • 내장형 데이터베이스: 앱이나 기기 안에 내장되어 동작하는 형태이다.
  • SQLite: 모바일 앱에서 널리 쓰는 내장형 데이터베이스이다.
  • DB2 Everyplace: IBM의 모바일 기기용 데이터베이스 제품이다.
문제 15
다음 중 UDP와 TCP 모두 해당하는 것은?
1전송 중 손실된 데이터는 재전송을 통하여 복구한다.
2수신단에서 수신된 데이터를 송신자가 보낸 순서에 일치하도록 재정렬한다.
3헤더(header) 부분에 체크섬(checksum)필드가 있다.
4네트워크의 혼잡 시 전송 속도를 줄인다.
5전송된 데이터의 수신 여부를 확인할 수 있다.
정답 및 해설

UDP와 TCP에 공통으로 해당하는 것은 헤더의 체크섬(checksum) 필드이다.

두 프로토콜 모두 헤더에 체크섬 필드를 두어 오류 검출에 활용한다. 나머지 기능은 연결형 신뢰성 프로토콜인 TCP에만 해당한다.

  • 손실 데이터 재전송: TCP의 기능으로, UDP는 재전송하지 않는다.
  • 수신 데이터 순서 재정렬: TCP가 순서 번호로 수행하며, UDP는 순서를 보장하지 않는다.
  • 혼잡 시 전송 속도 감소: TCP의 혼잡 제어이며, UDP에는 없다.
  • 수신 여부 확인: TCP가 ACK로 확인하며, UDP에는 확인 응답이 없다.
문제 16
다음 중 입출력 위주의 프로세스와 연산 위주 프로세스의 특성에 따라 CPU 사용 시간(할당량)을 다르게 부여하는 선점 방식의 CPU 스케줄링 기법으로 옳은 것은?
1Round-Robin
2Multi-level Feedback Queue
3Shortest Job First
4Highest Response ratio Next
5Deadline
정답 및 해설

프로세스 특성에 따라 할당량을 다르게 주는 선점 방식은 Multi-level Feedback Queue이다.

이 기법은 프로세스의 CPU 사용 형태에 따라 큐 사이를 이동시키며, 입출력 위주 프로세스를 높은 우선순위에 두고 큐마다 다른 할당량을 적용한다.

  • Round-Robin: 프로세스 특성과 무관하게 동일한 시간 할당량을 부여한다.
  • Shortest Job First: 실행 시간이 짧은 작업을 먼저 처리하는 기법으로, 기본형은 비선점이다.
  • Highest Response ratio Next: 대기 시간을 반영한 응답 비율로 고르는 비선점 기법이다.
  • Deadline: 작업의 마감 시간을 기준으로 스케줄링한다.
문제 17
다음 중 시스템버스에 대한 설명으로 옳지 않은 것은?
1하드웨어 구성요소를 물리적으로 연결하며 구성요소 사이의 데 이터 통로를 제공한다.
2주소버스는 중앙처리장치가 주기억장치나 입출력장치에 데이터를 읽거나 쓰기 위해 필요한 주소를 전달하는 통로이다.
3제어버스는 주소버스와 데이터버스의 동작을 제어하기 위한 신호의 전달 통로이다.
4데이터버스는 중앙처리장치와 기타 모듈(기억장치, 입출력장치 등) 사이의 데이터를 전달하는 통로로 양방향 버스이다.
5시스템버스는 용도에 따라 주소버스, 입출력버스, 데이터버스, 제어버스로 구성된다.
정답 및 해설

시스템버스에 입출력버스를 포함한 설명이 옳지 않다.

시스템버스는 용도에 따라 주소버스, 데이터버스, 제어버스의 세 가지로 구성된다.

  • 구성요소의 물리적 연결: 하드웨어 구성요소 사이의 데이터 통로를 제공한다는 설명은 옳다.
  • 주소버스: 읽거나 쓸 위치의 주소를 전달하는 통로이다.
  • 제어버스: 주소버스와 데이터버스의 동작을 제어하는 신호를 전달한다.
  • 데이터버스: 읽기와 쓰기 모두에 쓰이는 양방향 통로이다.
문제 18
다음 C 언어로 작성된 함수는 정수 배열의 원소들의 총 합을 구하여 리턴하는 함수이다. ㉠의 위치에 들어가야 할 코드는? (단, 함수의 첫 번째 인자는 배열의 시작 위치를 나타내는 포인터, 두 번째 인자는 배열의 크기임)
int sum(int* data, const int dsize)
{
if (dsize > 0)
return ㉠;
return 0;
}
1*data + sum(data - 1, dsize + 1)
2data + sum(data - 1, dsize + 1)
3*data + sum(data - 1, dsize - 1)
4*data + sum(data + 1, dsize - 1)
5data + sum(data + 1, dsize - 1)
정답 및 해설

㉠에는 *data + sum(data + 1, dsize - 1)이 들어가야 한다.

현재 원소 값에 나머지 배열의 합을 더하는 재귀 구조이다. 포인터는 다음 원소로 전진하고 크기는 1씩 줄어, dsize가 0이 되면 0을 반환하며 끝난다.

예를 들어 {1, 2, 3}이면 1 + (2 + (3 + 0)) = 6이 된다.

  • *data + sum(data - 1, dsize + 1): 포인터가 뒤로 가고 크기가 커져 재귀가 끝나지 않는다.
  • data + sum(data - 1, dsize + 1): 원소 값이 아닌 주소를 쓰고, 재귀도 끝나지 않는다.
  • *data + sum(data - 1, dsize - 1): 포인터가 배열의 앞쪽으로 벗어난다.
  • data + sum(data + 1, dsize - 1): *가 없어 원소 값이 아닌 포인터를 더하게 된다.
문제 19
다음 중 자바의 예외처리에 대한 설명으로 옳은 것은?
1throw는 처리가 정상적으로 이루어졌음을 알리는 명령이다.
2예외가 발생할 가능성이 있는 문장은 try 블록에 넣는다.
3catch 블록에는 예외 발생 여부에 관계없이 실행할 문장을 넣는다.
4발생한 예외에 대한 처리는 finally 블록에서 할 수 없다.
5예외가 발생하였으나 예외 처리가 이루어지지 않은 경우 그 예외는 무시되고, 프로그램은 예외 발생 이후 지점부터 계속된다.
정답 및 해설

예외가 발생할 가능성이 있는 문장은 try 블록에 넣는다.

try에서 예외가 발생하면 맞는 catch 블록이 처리하고, finally 블록은 예외 발생 여부와 관계없이 실행된다.

  • throw: 정상 처리를 알리는 것이 아니라 예외를 발생시키는 명령이다.
  • catch 블록: 예외가 발생했을 때 처리할 문장을 넣는 곳이며, 항상 실행되는 블록은 finally이다.
  • finally 블록: 예외가 발생한 경우에도 실행되어 자원 해제 같은 뒤처리를 맡을 수 있으므로, 처리할 수 없다는 단정은 틀리다.
  • 처리되지 않은 예외: 무시되지 않고 호출한 쪽으로 전파되며, 끝내 처리되지 않으면 프로그램이 비정상 종료된다.
문제 20
다음 중 소프트웨어 개발 생명주기의 대표적인 모델에 대한 설명으로 옳지 않은 것은?
1프로토타입 모델, 폭포수 모델, 익스트림 프로그래밍 모델, 나선형 모델 등이 있다.
2가장 전통적인 방법은 폭포수 모델이다.
3프로토타입 모델은 사용자의 의견을 중요하게 여긴다.
4최근에 등장한 소규모 소프트웨어 개발에 유리한 것은 익스트림 프로그래밍 모델이다.
5시간과 비용이 적게 들며, 위험 요인을 사전에 분석하여 제거하거나 낮출 수 있는 것은 나선형 모델이다.
정답 및 해설

나선형 모델이 시간과 비용이 적게 든다는 설명이 옳지 않다.

나선형 모델은 위험 분석을 포함한 주기를 반복하므로 위험 관리에는 유리하지만, 시간과 비용이 많이 든다.

  • 대표 모델 나열: 프로토타입, 폭포수, 익스트림 프로그래밍, 나선형 모델은 모두 생명주기 모델로 다룬다.
  • 폭포수 모델: 단계를 순차적으로 진행하는 가장 전통적인 모델이다.
  • 프로토타입 모델: 시제품으로 사용자의 의견을 받아 요구사항을 다듬는다.
  • 익스트림 프로그래밍: 짧은 반복과 잦은 고객 참여를 중시해 소규모 개발에 유리하다.