[정보처리기사] 정보처리기사 필기 2022년도 1회 제4과목 기출문제 해설
안녕하세요! 꿈꾸me입니다~
오늘은 2022년도 1회 정보처리기사 필기 제4과목 기출문제 해설을 올립니다.
추후에 차근차근 나머지 과목들에 대해서도 올릴 테니 기다려주세요~

정보처리기사 필기 2022년도 1회 제4과목 : 프로그래밍언어 활용 기출문제 해설
(아래 문제 해설은 가답안을 이용한 것으로, 최종 확정된 답안이 나오면 추가 수정하겠습니다!)
(해당 문제들의 원저작권은 자격검정 시행기관인 한국산업인력공단에 있습니다.)
61. IP 주소체계와 관련한 설명으로 틀린 것은? 1번
1) IPv6 의 패킷 헤더는 32 octet의 고정된 길이를 가진다.
2) IPv6는 주소 자동설정(Auto Configuration) 기능을 통해 손쉽게 이용자의 단말을 네트워크에 접속시킬 수 있다.
3) IPv4는 호스트 주소를 자동으로 설정하며 유니캐스트(Unicast)를 지원한다.
4) IPv4는 클래스별로 네트워크와 호스트 주소의 길이가 다르다.
: IPv6은 기본 헤더 뒤에 확장 헤더를 더함으로써 더욱 다양한 정보의 저장이 가능해져 네트워크 기능 확장이 용이하다는 특징을 갖고 있다.
62. 다음 C언어 프로그램이 실행되었을 때, 실행 결과는? 3번
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]){ int arr[2][3] = {1,2,3,4,5,6}; int (*p)[3] = NULL; p = arr; printf("%d, ", *(p[0]+1) + *(p[1]+2)); printf("%d", *(*(p+1)+0) + *(*(p+1)+1)); return 0; } |
1) 7, 5
2) 8, 5
3) 8, 9
4) 7, 9
63. OSI 7계층 중 데이터링크 계층에 해당되는 프로토콜이 아닌 것은? 1번
1) HTTP
2) HDLC
3) PPP
4) LLC
: 데이터링크 계층에 해당되는 프로토콜에는 HDLC, LAPB, LLC, MAC, LAPD, PPP 등이 있다.
64. C언어에서 두 개의 논리 값 중 하나라도 참이면 1을, 모두 거짓이면 0을 반환하는 연산자는? 1번
1) ||
2) &&
3) **
4) !=
: OR의 의미를 갖고 있는 || 연산자는, 두 개의 논리 값 중 하나라도 참이 나오면 1을 반환하는 연산자이다.
참고로 두 개의 논리 값 모두 참이어야 1을 반환하는 연산자는 &&이다.
65. IPv6에 대한 특성으로 틀린 것은? 1번
1) 표시방법은 8비트씩 4부분의 10진수로 표시한다.
2) 2의 128승 개의 주소를 표현할 수 있다.
3) 등급별, 서비스별로 패킷을 구분할 수 있어 품질보장이 용이하다.
4) 확장기능을 통해 보안기능을 제공한다.
: IPv6은 16비트씩 8 부분, 총 128비트로 구성되어 있다. 또한 각 부분을 16진수로 표현한다.
66. JAVA의 예외(exception)와 관련한 설명으로 틀린 것은? 1번
1) 문법 오류로 인해 발생한 것
2) 오동작이나 결과에 악영향을 미칠 수 있는 실행 시간 동안에 발생한 오류
3) 배열의 인덱스가 그 범위를 넘어서는 경우 발생하는 오류
4) 존재하지 않는 파일을 읽으려고 하는 경우에 발생하는 오류
: 프로그램의 정상적인 실행을 방해하는 조건을 예외라고 하며, 존재하지 않는 파일을 읽으려 하거나 배열에서 구할 수 없는 값을 구하려고 할 때(즉 배열의 인덱스가 그 범위를 넘어설 때), 0으로 숫자를 나눌 때(산술계산적으로 예외적 조건이 발생했을 때) 그리고 오동작이나 결과에 악영향을 미칠 수 있는 실행 기간에 발생한 오류 등을 예외라고 한다.
보기 1번은 syntax error이다.
67. TCP/IP 계층 구조에서 IP의 동작 과정에서의 전송 오류가 발생하는 경우에 대비해 오류 정보를 전송하는 목적으로 사용하는 프로토콜은? 3번
1) ECP(Error Checking Protocol)
2) ARP(Address Resolution Protocol)
3) ICMP(Internet Control Message Protocol)
4) PPP(Point-to-Point Protocol)
: ICMP(Internet Control Message Protocol)는 인터넷 제어 메시지 프로토콜로, IP와 조합하여 통신 중에 발생하는 오류의 처리와 전송 경로 변경 등을 위한 제어 메시지를 관리하는 역할을 한다.
68. 좋은 소프트웨어 설계를 위한 소프트웨어의 모듈 간의 결합도(Coupling)와 모듈 내 요소 간 응집도(Cohesion)에 대한 설명으로 옳은 것은? 2번
1) 응집도는 낮게 결합도는 높게 설계한다.
2) 응집도는 높게 결합도는 낮게 설계한다.
3) 양쪽 모두 낮게 설계한다.
4) 양쪽 모두 높게 설계한다.
: 좋은 소프트웨어 설계를 위해선 소프트웨어 모듈간 서로 독립적일수록 좋다. 즉 모듈 내의 응집도는 높게, 모듈 간의 결합도는 낮게 설계해야 한다.
69. 다음과 같은 형태로 임계 구역의 접근을 제어하는 상호배제 기법은? 4번
P(S) : While S <= 0 do skip; S := S - 1; V(S) : S := S + 1; |
1) Dekker Algoritm
2) Lamport Algoritm
3) Peterson Algoritm
4) Semaphore
: 위의 방법은 세마포어(Semaphore)를 의미한다. 세마포어는 두 개의 원자적 함수로 조작되는 정수 변수로서, 멀티프로그래밍 환경에서 공유 자원에 대한 접근을 제한하는 방법으로 사용된다. P(S)는 재우는 것을, V(S)는 깨우는 것을 뜻한다.
70. 소프트웨어 개발에서 모듈(Module)이 되기 위한 주요 특징에 해당하지 않는 것은? 4번
1) 다른 것들과 구별될 수 있는 독립적인 기능을 가진 단위(Unit)이다.
2) 독립적인 컴파일이 가능하다.
3) 유일한 이름을 가져야 한다.
4) 다른 모듈에서의 접근이 불가능해야 한다.
: 모듈(Module)은 모듈화를 통해 분리된 시스템의 각 기능들을 의미한다. 이는 단독으로 독립적인 컴파일이 가능하며, 재사용할 수 있다. 모듈의 기능적 독립성은 소프트웨어를 구성하는 각 모듈의 기능이 서로 독립됨을 의미한다. 모듈은 유일한 이름을 가져야 한다. 모듈은 모듈 간 연계가 가능하다. 따라서 4번 보기의 내용은 모듈의 특징이 아니다.
71. 빈 기억공간의 크기가 20KB, 16KB, 8KB, 40KB 일 때 기억장치 배치 전략으로 "Best Fit"을 사용하여 17KB의 프로그램을 적재할 경우 내부단편화의 크기는 얼마인가? 1번
1) 3KB
2) 23KB
3) 64KB
4) 67KB
: 최적적합이라고 하는 "Best Fit"은 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 단편화를 가장 작게 남기는 분할 영역에 배치시키는 전략이다. 네 개의 빈 기억공간 중 17KB의 프로그램이 들어갈 수 있는 기억공간은 20KB, 40KB이고 이중 내부 단편화의 크기가 가장 작은 곳은 20KB이다. 이 기억공간에 들어갔을 때의 내부단편화의 크기는 3KB이므로 정답은 보기 1번이다.
72. 다음 C언어 프로그램이 실행되었을 때, 실행 결과는? 4번
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]){ int i = 0; while(1) { if(i==4){ break; } i++; } printf("i == %d", i); return 0; } |
1) i = 0
2) i = 1
3) i = 3
4) i = 4
73. 다음 JAVA 프로그램이 실행되었을 때, 실행 결과는? 2번
public class Ape{ static void rs(char a[]){ for(int i = 0; i < a.length; i++){ if(a[i] == 'B'){ a[i] = 'C'; } else if(i == a.length - 1){ a[i] = a[i-1]; } else { a[i] = a[i+1]; } } } static void pca(char a[]){ for(int i = 0; i < a.length; i++){ System.out.print(a[i]); System.out.println(); } } public static void main(String[] args){ char c[] = {'A', 'B', 'D', 'D', 'A', 'B', 'C'}; rs(c); pca(c); } } |
1) BCDABCA
2) BCDABCC
3) CDDACCC
4) CDDACCA
74. 개발 환경 구성을 위한 빌드(Build) 도구에 해당하지 않는 것은? 2번
1) Ant
2) Kerberos
3) Maven
4) Gradle
: 빌드 도구에는 Ant, Maven, Gradle 등이 있다.
75. 3개의 페이지 프레임을 갖는 시스템에서 페이지 참조 순서가 1, 2, 1, 0, 4, 1, 3 일 경우 FIFO 알고리즘에 의한 페이지 교체의 경우 프레임의 최종 상태는? 4번
1) 1, 2, 0
2) 2, 4, 3
3) 1, 4, 2
4) 4, 1, 3
: 페이지 교체 알고리즘에는 OPT, FIFO, LRU, LFU, NUR, SCR 등이 있는데, 이 중 FIFO(First In First Out) 알고리즘은 가장 먼저 들어와서 가장 오래 있었던 페이지를 교체하는 기법이다.
76. 다음 C언어 프로그램이 실행되었을 때, 실행 결과는? 3번
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]){ char str1[20] = "KOREA"; char str2[20] = "LOVE"; char* p1 = NULL; char* p2 = NULL; p1 = str1; p2 = str2; str1[1] = p2[2]; str2[3] = p1[4]; strcat(str1, str2); printf("%c", *(p1+2)); return 0; } |
1) E
2) V
3) R
4) O
77. 다음 Python 프로그램이 실행되었을 때, 실행 결과는? 1번
a = 100 list_data = ['a', 'b', 'c'] dict_data = {'a' : 90, 'b' : 95} print(list_data[0]) print(dict_data['a']) |
1)
a 90 |
2)
100 90 |
3)
100 100 |
4)
a a |
: print(list_data[0])는 list_data 리스트의 첫 번째 인덱스인 'a'를, print(dict_data['a'])는 dict_data 딕셔너리의 첫번째 value인 90을 출력하므로, 정답은 1번이다.
78. C언어에서 정수 변수 a, b에 각각 1, 2가 저장되어 있을 때 다음 식의 연산 결과로 옳은 것은? 2번
a < b + 2 && a << 1 <= b |
1) 0
2) 1
3) 3
4) 5
: &&을 기준으로 왼쪽을 먼저 보면, a(1) < b(2) + 2는 참이므로 1.
&&을 기준으로 오른쪽을 보면, a<<1 <= b인데 여기서 a<<1은 2이다. 따라서 a<<1 <= b도 참이므로 1.
따라서 1 && 1 이니까 1, 정답은 2번이다.
79. 다음 Python 프로그램이 실행되었을 때, 실행 결과는? 2번
a = ["대", "한", "민", "국"] for i in a : print(i) |
1)
대한민국 |
2)
대 한 민 국 |
3)
대 |
4)
대대대대 |
: 위의 코드는 a를 순회하며 값을 하나씩 한 줄에 출력하라는 뜻으로, 정답은 2번이다.
80. UNIX 시스템의 쉘(Shell)의 주요 기능에 대한 설명이 아닌 것은? 3번
1) 사용자 명령을 해석하고 커널로 전달하는 기능을 제공한다.
2) 반복적인 명령을 프로그램으로 만드는 프로그래밍 기능을 제공한다.
3) 쉘 프로그램 실행을 위해 프로세스와 메모리를 관리한다.
4) 초기화 파일을 이용해 사용자 환경을 설정하는 기능을 제공한다.
: 3번 보기의 프로세스와 메모리 관리는 커널의 주요 기능에 해당한다.