반응형

 

4과목 프로그래밍 언어 활용 합격 전략

 

우선 다른 과목들과 마찬가지로 기출문제를 통해 자주 나오는 카테고리의 문제들을 섭렵하는 것이 중요합니다.

 

그리고 프로그래밍 언어에 대한 기본 문법 지식이 있어야 합니다. C, Java, Python 등이 출제되는데 이런 언어를 한 번도 접해본 적이 없다면 언어를 어떻게 공부해야 할지 막막할 수 있습니다.

그러나, 정보처리기사 합격을 위해 프로그래밍 언어를 전문적으로 다룰 줄 알 필요까지는 없습니다. 언어의 기본 문법 지식만 익히고 실제 간단한 코드가 수행될 때의 결과를 도출해낼 줄 알면 됩니다. 어떤 언어든 상관없으니 가장 자신 있을 언어를 하나 골라서 기본 문법들만 익히면 됩니다. 언어들끼리 세세한 문법이 비록 다 제각각이긴 하지만, 정보처리기사에서는 공통적으로 쓰일 문법들을 출제하기 때문에 (예를 들면 if, switch, for, while 등등의 키워드..) 한 가지 언어만 잘 배우면 됩니다.

 

이 포스팅에서는 개정판 이후 기출문제를 분석하여 출제 빈도 순서대로 정리를 하였습니다. 가장 위에서부터 차례대로 공부해가며 개정판 기출문제를 풀어보고 선택지를 분석한다면 충분히 고득점을 낼 수 있습니다.

 

※ 주의: 이 글은 개정판 기출문제를 분석해서 정리를 한 글이지, 개념 설명을 해주는 글은 아닙니다. 개념 이해를 위한 설명글을 원하신다면 다른 자료를 따로 찾아보시는 게 좋습니다.

 

 

 

개정판 4과목 기출문제 압축 정리

 

1. 프로그래밍 언어 문법

 

출제 빈도: 회당 2.5문제 (21176, 79, 201,263, 66 20361, 75, 78, 20463, 67, 68)

출제 유형: 실제 코드의 실행 결과를 맞추는 문제들이 많이 나옵니다. 따라서 기초 문법들을 익히고 코드의 실행 결과를 도출해내기 위해 예제를 통한 연습을 많이 해봐야 합니다.

 

- 연산자

산술 연산자: +, -, *, /, %, ++, --

관계 연산자: ==, !=, >, >=, <, <=

비트 연산자:

& 모든 비트가 1일 때만 1

^ 모든 비트가 같으면 0, 하나라도 다르면 1

| 모든 비트 중 하나라도 1이면 1

~ 각 비트의 부정, 0이면 1, 1이면 0

<< 왼쪽 시프트, 비트를 왼쪽으로 이동

>> 오른쪽 시프트, 비트를 오른쪽으로 이동

논리 연산자:

! 부정

&& 모두 참이면 참

|| 하나라도 참이면 참

조건 연산자:

조건 ? 수식1: 수식2; 조건의 수식이 참이면 수식1을 거짓이면 수식2를 실행한다.

 

- 제어문

if (조건1)

 문장1;

else if (조건2)

 문장2;

else

 문장3;

조건1에 해당하면 문장1을 실행, 조건1에 해당하지 않으나 조건2에 해당하면 문장2를 실행, 조건1, 조건2 모두에 해당하지 않으면 문장3을 실행한다.

switch(수식)

 case 값1:

문장1;

  break;

 case 값2:

  문장2;

  break;

 default:

  문장3;

 수식의 값이 값1이면 문장1을 실행, 수식의 값이 값2이면 문장2를 실행, 수식의 값이 모든 case에 해당하지 않으면 문장3을 실행한다.

 

- 반복문

for (초기화 식; 조건식; 사후처리식)

 실행식;

초기화 식이 제일 먼저 실행되고, 조건식을 만족하면 실행식을 실행한다. 실행이 끝나면 사후처리식을 실행하고 다시 조건식을 실행하여 조건을 만족하는지 확인한다. 조건이 true이면 실행식을 다시 실행하고 루틴을 반복한다. 조건이 false이면 반복문을 종료한다.

while (조건)

 실행식;

continue 실행식을 실행하는 도중에 continue명령어를 만나면 남은 실행식을 실행하지 않고 건너뛰어 조건 검사로 넘어간다.

 

- 출력하기

printf() (C언어): () 안에 있는 내용을 출력

System.out.printIn() (Java): () 안에 있는 내용을 출력하고 다음 줄로 줄바꿈

“~~” : 큰따옴표(“”) 안에 있는 내용은 문자열을 의미

 

 

 

 

2. 모듈

 

출제 빈도: 회당 2.5문제 (21 1 61, 73번, 20 1,2 64, 77번, 20 3 65, 70번, 77, 20 4 69번, 73번, 74번)

출제 유형:

- 공통모듈의 재사용을 묻는 문제가 출제되었습니다.

- 결합도와 응집도의 특징에 대해 묻는 문제가 출제됩니다.

- 결합도와 응집도의 강한 순서를 묻는 문제가 출제됩니다.

 

- 공통모듈의 재사용: 컴포넌트 재사용, 함수와 객체 재사용, 애플리케이션 재사용 

 

- 결합도 

결합도가 높으면 시스템 구현 및 유지보수 작업이 어렵다.

모듈 간의 결합도를 약하게 하면 모듈 독립성이 향상된다.

결합도가 약할수록 품질이 높다.

강한 순서: 내용, 공통, 외부, 제어, 스탬프, 자료 결합도

자료 결합도:

모듈 간의 인터페이스가 자료 요소로만 구성될 때의 결합도.

어떤 모듈이 다른 모듈을 호출하면서 매개 변수나 인수로 데이터를 넘겨주고, 호출받은 모듈은 받은 데이터에 대한 처리 결과를 다시 돌려주는 방식

모듈 간의 내용을 전혀 알 필요가 없는 상태로서 한 모듈의 내용을 변경하더라도 다른 모듈에는 전혀 영향을 미치지 않는 가장 바람직한 결합도

스탬프 결합도:

모듈 간의 인터페이스로 배열이나 레코드 등의 자료 구조가 전달될 때의 결합도

두 모듈이 동일한 자료 구조를 조회하는 경우의 결합도이며, 자료 구조의 어떠한 변화, 즉 포맷이나 구조의 변화는 그것을 조회하는 모든 모듈 및 변화되는 필드를 실제로 조회하지 않는 모듈에까지도 영향을 미치게 된다.

제어 결합도:

어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어신호를 이용하여 통신하는 경우이며, 하위 모듈에서 상위 모듈로 제어신호가 이동하여 상위 모듈에게 처리 명령을 부여하는 권리 전도현상이 발생하게 된다.

외부 결합도:

어떤 모듈에서 선언한 데이터를 외부의 다른 모듈에서 참조할 때의 결합도이다.

공통 결합도:

두 모듈이 동일한 전역 데이터를 접근한다면 공통 결합되어 있다고 한다.

내용 결합도:

하나의 모듈이 직접적으로 다른 모듈의 내용을 참조할 때 두 모듈은 내용적으로 결합되어 있다고 한다.

 

- 응집도

한 모듈 내에 있는 처리 요소들 사이의 기능적인 연관 정도를 나타낸다.

응집도가 강할수록 품질이 높다.

강한 순서: 기능적(Functional), 순차적(Sequential), 교환적(Communication), 절차적(Procedural), 시간적(Temporal), 논리적(Logical), 우연적(Coincidental) 응집도

기능적 응집도: 모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우의 응집도

순차적 응집도: 모듈 내 하나의 활동으로부터 나온 출력 데이터를 그다음 활동의 입력 데이터로 사용할 경우의 응집도

교환적 응집도: 동일한 입력과 출력을 사용하여 서로 다른 기능을 수행하는 구성 요소들이 모였을 경우의 응집도

절차적 응집도: 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우의 응집도

시간적 응집도: 특정 시간에 처리되는 몇 개의 기능을 모아 하나의 모듈로 작성할 경우의 응집도

논리적 응집도: 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우의 응집도

우연적 응집도: 서로 간에 어떠한 의미 있는 연관관계도 지니지 않은 기능 요소로 구성되는 경우이며, 서로 다른 상위 모듈에 의해 호출되어 처리상의 연관성이 없는 서로 다른 기능을 수행하는 경우의 응집도

 

 

3. TCP/IP 계층

 

출제 빈도: 회당 1.75문제 (21168, 77, 201,262, 69, 20369, 20476, 78)

출제 유형: TCP, UDP가 자주 출제됩니다. 이 둘은 전송 계층에 속해있음을 꼭 기억해야 합니다. 이것을 묻는 문제도 나옵니다.

 

- 계층

응용 계층: TELNET, FTP, SMTP, SNMP, DNS, HTTP

전송 계층: TCP, UDP

인터넷 계층: IP, ICMP, IGMP, ARP, RARP

네트워크 액세스 계층: Ethernet, IEEE 802, HDLC, X.25, RS-232C, ARQ

 

- TCP:

양방향 연결형 서비스를 제공,

가상 회선 연결 형태의 서비스를 제공

스트림 위주의 전달

신뢰성 있는 경로를 확립하고 메시지 전송을 감독

순서 제어, 오류 제어, 흐름 제어 기능

패킷의 분실, 손상, 지연이나 순서가 틀린 것이 발생할 때 투명성이 보장되는 통신을 제공

- UDP:

데이터 전송 전에 연결을 설정하지 않는 비연결형 서비스를 제공

TCP에 비해 상대적으로 단순한 헤더 구조를 가지므로, 오버헤드가 적다.

흐름 제어나 순서 제어가 없어 전송속도가 빠르다.

실시간 전송에 유리하다.

ARP: IP주소를 MAC 주소로 변환, TCP/IP에서 사용되는 논리 주소를 물리 주소로 변환

ICMP: 신뢰성 있는 IP를 대신하여 송신 측으로 네트워크의 IP상태 및 에러 메시지를 전달

 

 

4. OSI 7 계층

 

출제 빈도: 회당 1문제 (21162, 201,280, 20371, 20465)

출제 유형: 전송 계층과 데이터 링크 계층의 특징을 설명하고 어떤 계층인지 묻는 문제가 자주 나왔습니다.

 

1~3 계층을 하위 계층 4~7 계층을 상위 계층으로 분류

7 계층:응용 계층

6 계층:표현 계층

5 계층:세션 계층

4 계층:전송 계층

주요 기능 - 종단 간 신뢰성 있고 효율적인 데이터를 전송하기 위해 오류 검출과 복구, 흐름 제어를 수행한다.

3 계층:네트워크 계층

2 계층:데이터 링크 계층

주요 기능 흐름 제어, 오류 제어, 순서 제어, 프레임 동기화

물리적 연결을 이용해 신뢰성 있는 정보를 전송하려고 전송 에러를 제어한다.

1 계층:물리 계층

 

 

5. IPv6에 대한 설명

 

출제 빈도: 회당 1문제 (21167, 201,274, 76, 20364)

 

128비트의 긴 주소를 사용한다.

IPv4에 비해 자료 전송 속도가 빠르다.

IPv4와 호환성이 뛰어나다.

보안과 인증 확장 헤더를 사용함으로써 인터넷 계층의 보안 기능을 강화하였고, 네트워크 기능 확장이 용이하다.

IPv4는 패킷 크기가 64 kbyte로 제한된데 반해, IPv6는 큰 크기의 패킷을 주고받을 수 있다.

애니캐스트(Anycast)는 하나의 호스트에서 그룹 내의 가장 가까운 곳에 있는 수신자에게 전달하는 방식이다.

멀티미디어의 실시간 처리가 가능하다.

자동으로 네트워크 환경 구성이 가능하다.

Traffic Class, Flow Label을 이용하여 등급별, 서비스별로 패킷을 구분할 수 있어 품질 보장이 용이하다.

IPv6의 주소체계: Unicast, Anycast, Multicast

 

 

6. 변수명 작성 규칙

 

출제 빈도: 회당 0.75문제 (21169, 201,273, 20376)

출제 유형: 작성 규칙이 아닌 것을 묻거나, 예시 변수명들을 보여주고 잘못된 변수명을 묻는 문제가 나옵니다.

 

영문자, 숫자, _ 를 사용할 수 있다.

첫 글자는 영문자나 _로 시작해야 하며, 숫자는 올 수 없다.

글자 수에 제한이 없다.

대문자, 소문자를 구분한다.

예약어를 변수명으로 사용할 수 없다.

 

 

 

 

 

 

 

7. 변수와 자료형

 

출제 빈도: 회당 0.75문제 (21178, 20380, 20462)

 

변수: 어떤 값을 주기억 장치에 기억하기 위해서 사용하는 공간, 변수의 자료형에 따라 저장할 수 있는 값의 종류와 범위가 달라진다.

자료형

char: 하나의 문자를 저장할 때 사용한다. (크기: C 1Byte, Java 2Byte)

boolean: 조건이 참인지 거짓인 판단할 때 사용한다. (크기: Java 1Byte)

int: 정수를 저장할 때 사용한다. (크기: C 4Byte, Java 4Byte)

long: 정수를 저장할 때 사용한다. (크기: C 4Byte, Java 8Byte)

float: 실수를 저장할 때 사용한다. (크기: C 4Byte, Java 4Byte)

 

 

8. 교착상태

 

출제 빈도: 회당 0.75문제 (21 1 66, 20 1,2회 67번, 71)

출제 유형: 교착 상태가 발생할 수 있는 조건이 아닌 것을 묻습니다.

 

- 교착상태가 발생할 수 있는 조건

상호 배제(Mutual exclusion), 점유와 대기 (Hold and Wait), 비선점 (Non-Preemption), 환형 대기 (Circular Wait)

- 교착상태의 해결 방법

은행가 알고리즘은 Avoidance 기법에 해당한다.

 

 

9. UNIX/LINUX 명령어

 

출제 빈도: 회당 0.75문제 (21년 1회 1번, 20379, 20461)

출제 유형: 기능에 맞는 명령어를 찾는 문제가 나옵니다.

 

cat 파일 내용을 화면에 표시

chdir 현재 사용할 디렉터리 위치 변경

chmod 파일의 보호 모드를 설정

chown 소유자를 변경

cp 파일을 복사

exec 새로운 프로세스를 수행

find 파일을 찾음

fork 새로운 프로세스를 생성

fsck 파일 시스템을 검사하고 보수

getpid 자신의 프로세스 아이디를 얻음

getppid 부모 프로세스 아이디를 얻음

ls 현재 디렉터리 내의 파일 목록을 확인

mount/unmount 파일 시스템을 마운팅/마운팅 해제

rm 파일을 삭제

wait fork exec에 의해 실행되는 프로세스의 상위 프로세스가 하위 프로세스 종료 등의 event를 기다림

pwd 현재 디렉터리 경로를 절대 경로로 표시

uname 시스템 정보를 출력 (21 1 1: 운영체제 분석을 위해 버전을 확인하고자 할 때 사용)

printenv, env, setenv SHELL 환경변수를 출력

 

 

10. Java 접근 제한자

 

출제 빈도: 회당 0.5문제 (201,278, 20475)

출제 유형: 접근 제한자가 아닌 것을 고르는 문제가 나옵니다.

 

public, private, protected, default

 

 

11. UNIX 시스템

 

출제 빈도: 회당 0.5문제 (20 1,2 61번, 20 4 64)

출제 유형: 쉘의 특징이나 커널에 특징에 대해 물어봅니다.

 

- (Shell) 

명령어 해석기이다.

시스템과 사용자 간의 인터페이스를 담당한다.

여러 종류의 쉘이 있다.

주기억장치에 상주하지 않고, 명령어가 포함된 파일 형태로 존재하며 보조 기억장치에서 교체 처리가 가능하다.

파이프라인 기능을 지원하고 입출력 재지정을 통해 출력과 입력의 방향을 변경할 수 있다.

 

- 커널(Kernel) 

UNIX의 가장 핵심적인 부분이다

컴퓨터가 부팅될 때 주기억장치에 적재된 후 상주하면서 실행된다.

하드웨어를 보호하고, 프로그램과 하드웨어 간의 인터페이스 역할을 담당한다.

프로세스 관리, 기억장치 관리, 파일 관리, 입출력 관리, 프로세스 간 통신, 데이터 전송 및 변환 등 기능을 수행한다.

 

 

12. HRN(Highest Response-ratio Next) 스케줄링 방식

 

출제 빈도: 회당 0.5문제 (201,270, 20366)

출제 유형: 특징에 대해 묻거나 우선순위를 계산하는 문제가 나옵니다.

 

대기 시간이 긴 프로세스일 경우 우선순위가 높아진다.

SJF 기법을 보완하기 위한 방식이다.

긴 작업과 짧은 작업 간의 지나친 불평등을 해소할 수 있다.

우선순위를 계산하여 그 수치가 가장 높은 것부터 낮은 순으로 우선순위가 계산된다.

우선순위 계산법: (실행시간 + 대기시간) / 실행시간

 

 

13. 기억장치 관리

 

출제 빈도: 회당 0.5문제 (21 1 65, 20 3 73)

출제 유형: 예시 주고 실제로 적재하는 문제, 그리고 적재 이후 내부 단편화 크기 구하는 문제가 나옵니다. 예제를 통해 감을 익히는 것이 빠릅니다.

 

- 배치 전략 

최초 적합(First Fit): 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 첫 번째 분할 영역에 배치시키는 방법

최적 적합(Best Fit): 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 단편화를 가장 작게 남기는 분할 영역에 배치시키는 방법

최악 적합(Worst Fit): 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 단편화를 가장 많이 남기는 분할 영역에 배치시키는 방법

 

 

 

 

 

 

14. 페이지 교체 알고리즘

 

출제 빈도: 회당 0.5문제 (201,272, 20471)

출제 유형: 교체를 직접 진행하여 페이지 부재 횟수를 세는 문제가 나옵니다. 페이지 부재 횟수를 세는 방법은 그림을 그리면서 그 과정을 봐야 이해가 되므로, 다른 자료를 찾아보시는 게 좋을 것 같습니다. 개정판 이후로는 FIFO알고리즘이 계속 출제되고 있습니다.

 

 

15. 가상 기억장치 관리

 

출제 빈도: 회당 0.5문제 (21172, 74)

출제 유형: 설명글을 주고 해당하는 용어를 묻는 문제가 나옵니다.

 

Working Set: 운영체제의 가상 기억장치 관리에서 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합

Paging: 프로그램을 고정된 크기의 일정한 블록으로 나누는 기법

Segmentation: 프로그램을 가변적인 크기의 블록으로 나누는 기법

 

 

16. 그 외 출제된 문제들

 

* 배치 프로그램의 필수 요소 (20368)

자동화: 심각한 오류 상황 외에는 사용자의 개입 없이 동작해야 한다.

안정성: 어떤 문제가 생겼는지, 언제 발생했는지 등을 추적할 수 있어야 한다.

대용량 데이터: 대용량의 데이터를 처리할 수 있어야 한다.

견고성: 잘못된 데이터나 데이터 중복 등의 상황으로 중단되는 일 없이 수행되어야 한다.

성능: 다른 응용 프로그램의 수행을 방해하지 않아야 하고, 지정된 시간 내에 처리가 완료되어야 한다.

 

* WAS (Web Application Server) 종류 (21180)

JEUS, Tomcat, WebSphere

 

* C언어 라이브러리 (21171)

atoi() : 문자열을 정수형으로 변환하는 함수

atof() : 문자열을 실수로 변환하는 함수

itoa() : 정수를 문자열로 변환하는 함수

 

* 라이브러리 (21175)

라이브러리란 필요할 때 찾아서 쓸 수 있도록 모듈화 되어 제공되는 프로그램이다.

프로그래밍 언어에 따라 일반적으로 도움말, 설치 파일, 샘플 코드 등을 제공한다.

라이브러리는 모듈과 패키지를 총칭하며, 모듈이 개별 파일이라면 패키지는 파일들을 모아 놓은 폴더라고 볼 수 있다.

표준 라이브러리: 프로그래밍 언어가 기본적으로 가지고 있는 라이브러리

외부 라이브러리: 별도의 파일 설치를 필요로 하는 라이브러리

 

* 스크립트 언어 (201,279)

PHP, Basic, Python, JavaScript

 

* CSMA/CD (21164)

IEEE 802.3 LAN에서 사용되는 전송매체 접속 제어(MAC) 방식

 

* 운영체제에 대한 설명 (20367)

다중 사용자와 다중 응용프로그램 환경하에서 자원의 현재 상태를 파악하고 자원 분배를 위한 스케줄링을 담당한다.

CPU, 메모리 공간, 기억 장치, 입출력 장치 등의 자원을 관리한다.

입출력 장치와 사용자 프로그램을 제어한다.

 

* 프로세스 상태 종류 (201,275)

New, Ready, Running, Wait, Exit

 

* 스레드 (201,265)

한 개의 프로세스는 여러 개의 스레드를 가질 수 있다.

커널 스레드의 경우 운영체제에 의해 스레드를 운용한다.

사용자 스레드의 경우 사용자가 만든 라이브러리를 사용하여 스레드를 운용한다.

스레드를 사용함으로써 하드웨어, 운영체제의 성능과 응용 프로그램의 처리율을 향상시킬 수 있다.

 

 

 

다른 과목 보러 가기

 

1과목 - 소프트웨어 설계

2과목 - 소프트웨어 개발

3과목 - 데이터베이스 구축

5과목 - 정보시스템 구축 관리

 

 

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기