정보처리기사 · 실기

2023년 1회 정보처리기사 실기 기출 유형

답안을 직접 작성하고 정답과 비교해 보세요. 서술형 답안은 표현이 다를 수 있어 직접 확인합니다.

← 회차 목록

주제 참고: Life-Journey · 2023년 1회 비공식 복원 (새 창)

20문항미확인 20문항

2023년 1회 주제 · 연습 1

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static int value=5;
    int local=3;
    void change(int value){
        value+=2; this.local+=value; Main.value++;
    }
    public static void main(String[] args) {
        Main m=new Main();
        m.change(6);
        System.out.print(Main.value+" "+m.local);
    }
}
정답·해설 보기

정답

6 11

해설

매개변수 value가 같은 이름의 static 필드를 가린다. Main.value로 지정한 문장만 클래스 필드를 증가시키며 this.local은 객체 필드이다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 1회 주제 · 연습 2

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>
#include <string.h>

int main(void) {
    const char *s="DATABASE";
    const char *p=s+2;
    printf("%s %c %zu", p, *(s+2), strlen(s));
    return 0;
}
정답·해설 보기

정답

TABASE T 8

해설

문자 포인터를 k만큼 옮기면 k번째 인덱스부터 문자열을 읽는다. %s는 널 문자 전까지, %c는 문자 하나를 출력한다. strlen은 널 문자를 제외한 길이이다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 1회 주제 · 연습 3

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>
#include <string.h>

int main(void) {
    char src[]="MEMORY", dst[16];
    int i=0;
    while ((dst[i]=src[i]) != '\0') i++;
    dst[1]='X';
    printf("%s %zu", dst, strlen(dst));
    return 0;
}
정답·해설 보기

정답

MXMORY 6

해설

널 문자까지 복사하므로 dst는 유효한 문자열이다. 두 번째 문자를 바꾸어도 문자열 길이는 유지된다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 1회 주제 · 연습 4

소프트웨어 설계·구축

검색창에 입력할 때 페이지 전체를 다시 불러오지 않고 서버에서 추천어를 받아 일부 영역만 갱신한다. 이런 비동기 웹 통신 기법의 통상적인 이름을 쓰시오.

정답·해설 보기

정답

AJAX

해설

Asynchronous JavaScript and XML의 약어이다. 이름과 달리 전송 데이터는 JSON이나 일반 텍스트일 수도 있다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 1회 주제 · 연습 5

네트워크·운영체제

패킷 교환에서 ① 전송 전에 논리적 경로를 설정하는 방식 ② 각 패킷을 독립적으로 라우팅하는 방식을 쓰시오.

정답·해설 보기

정답

① 가상 회선 방식 ② 데이터그램 방식

해설

가상 회선은 연결 설정과 경로 상태를 이용한다. 데이터그램은 패킷마다 경로가 달라질 수 있어 도착 순서가 보장되지 않을 수 있다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 1회 주제 · 연습 6

네트워크·운영체제

계층 2 프레임을 터널링하는 프로토콜로, 자체 암호화 기능이 없어 IPsec과 함께 쓰이기도 하는 프로토콜의 약어를 쓰시오.

정답·해설 보기

정답

L2TP

해설

Layer 2 Tunneling Protocol이다. 터널을 만든다는 사실만으로 기밀성이 보장되지는 않는다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 1회 주제 · 연습 7

정보보안

원격 셸 접속과 명령 실행에 쓰이며 암호화된 채널을 제공하는 프로토콜의 이름과 기본 TCP 포트를 쓰시오.

정답·해설 보기

정답

SSH, 22번

해설

Secure Shell이다. 평문으로 정보를 전송하는 Telnet 대신 널리 사용된다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 1회 주제 · 연습 8

정보보안

① 스스로 네트워크를 통해 전파 ② 정상 프로그램인 것처럼 위장 ③ 다른 파일에 붙어 실행되며 감염시키는 악성코드를 각각 쓰시오.

정답·해설 보기

정답

① 웜 ② 트로이 목마 ③ 바이러스

해설

실제 악성코드는 여러 특징을 함께 가질 수 있으나 이 문제는 대표적 분류 기준을 묻는다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 1회 주제 · 연습 9

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>

int main(void) {
    const char *s="11101";
    int result=0;
    for (int i=0; s[i]; i++) result=result*2+(s[i]-'0');
    printf("%d", result);
    return 0;
}
정답·해설 보기

정답

29

해설

기존 값을 두 배 한 뒤 다음 비트를 더한다. 문자에서 문자 0을 빼면 정수 비트 0 또는 1을 얻는다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 1회 주제 · 연습 10

네트워크·운영체제

IP 통신의 목적지 도달 불가 같은 오류 보고와 진단 메시지에 쓰이며, ping의 Echo 요청·응답도 제공하는 프로토콜을 쓰시오.

정답·해설 보기

정답

ICMP

해설

ICMP는 인터넷 제어 메시지 프로토콜이다. 응용 데이터의 신뢰성 있는 전달을 보장하는 전송 프로토콜은 아니다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 1회 주제 · 연습 11

소프트웨어 설계·구축

실제 객체 앞에 대리 객체를 두어 접근 권한 검사나 지연 로딩을 수행한다. 사용자는 공통 인터페이스를 통해 접근한다. 패턴을 쓰시오.

정답·해설 보기

정답

프록시(Proxy)

해설

구조 패턴이다. 호환되지 않는 인터페이스를 변환하는 Adapter와 구별한다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 1회 주제 · 연습 12

SQL·데이터베이스

학생(학번, 이름, 전공, 학년) 관계에 현재 7개의 행이 있다. 관계의 차수와 카디널리티를 순서대로 쓰시오.

정답·해설 보기

정답

차수 4, 카디널리티 7

해설

차수(Degree)는 속성 수, 카디널리티(Cardinality)는 튜플 수이다. 특정 속성의 서로 다른 값 개수와 혼동하지 않는다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 1회 주제 · 연습 13

SQL·데이터베이스

아래 테이블에 다음 SQL을 실행했을 때 마지막 SELECT의 결과를 쓰시오. NULL은 결측값이며, 결과는 열을 공백으로 구분하고 행마다 줄을 바꾸어 적으시오.

Scores
idnameteamscorementor
1AriA67NULL
2BoraB621
3CianA671
4DaniBNULL2
5EvanA522
DELETE FROM Scores WHERE score < 57;
SELECT id FROM Scores ORDER BY id;
정답·해설 보기

정답

1 2 3 4

해설

조건이 참인 행만 삭제한다. NULL과 숫자의 비교 결과는 UNKNOWN이므로 NULL 점수 행은 이 조건으로 삭제되지 않는다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 1회 주제 · 연습 14

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>

int main(void) {
    int a[] = {11, 6, 9, 7};
    for (int i=0; i<3; i++)
        for (int j=0; j<3-i; j++)
            if (a[j] > a[j+1]) {
                int t=a[j]; a[j]=a[j+1]; a[j+1]=t;
            }
    printf("%d %d %d %d", a[0], a[1], a[2], a[3]);
    return 0;
}
정답·해설 보기

정답

6 7 9 11

해설

인접한 두 값의 순서가 뒤집혀 있으면 교환하는 버블 정렬이다. 각 바깥 반복 후 큰 값이 오른쪽 끝에 확정된다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 1회 주제 · 연습 15

프로그래밍 언어

다음 Python 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Python 3 기준이다.

a = {3, 4, 5}
b = {4, 6}
print(sorted((a | b) - (a & b)))
정답·해설 보기

정답

[3, 5, 6]

해설

합집합에서 교집합을 빼므로 한쪽에만 있는 값들이 남는다. 집합 자체의 출력 순서 대신 sorted로 정렬된 리스트를 출력한다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 1회 주제 · 연습 16

SQL·데이터베이스

아래 테이블에 다음 SQL을 실행했을 때 마지막 SELECT의 결과를 쓰시오. NULL은 결측값이며, 결과는 열을 공백으로 구분하고 행마다 줄을 바꾸어 적으시오.

Scores
idnameteamscorementor
1AriA64NULL
2BoraB591
3CianA641
4DaniBNULL2
5EvanA492
SELECT team, MIN(score), MAX(score), COUNT(*)
FROM Scores GROUP BY team HAVING COUNT(*) >= 3
ORDER BY team;
정답·해설 보기

정답

A 49 64 3

해설

team별로 묶은 뒤 행 수가 3 이상인 그룹을 남긴다. MIN·MAX는 NULL 점수를 집계에서 제외한다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 1회 주제 · 연습 17

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static class Base { int value; Base(int v){value=v;} int read(){return value;} }
    static class Child extends Base {
        Child(int v){super(v+3);}
        @Override int read(){return super.read()*2;}
    }
    public static void main(String[] args) {
        Base item=new Child(7);
        System.out.print(item.read());
    }
}
정답·해설 보기

정답

20

해설

Child 생성자가 super에 7+3을 전달한다. 변수의 선언형은 Base여도 실제 객체가 Child이므로 재정의한 read가 실행되고 부모의 값에 2를 곱한다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 1회 주제 · 연습 18

SQL·데이터베이스

3단계 데이터베이스 구조에서 사용자별 뷰, 전체 논리 구조, 실제 저장 구조를 나타내는 스키마를 차례로 쓰시오.

정답·해설 보기

정답

외부 스키마, 개념 스키마, 내부 스키마

해설

외부–개념 사상과 개념–내부 사상을 통해 데이터 독립성을 지원한다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 1회 주제 · 연습 19

테스트·품질관리

if 문의 참 결과는 실행했지만 거짓 결과는 한 번도 실행하지 않았다. 이 if 하나만 있을 때 분기 커버리지의 비율과 100%를 만들 추가 조건을 쓰시오.

정답·해설 보기

정답

50%. 조건식이 거짓이 되는 테스트를 추가한다.

해설

분기 커버리지는 실행한 분기 결과 수를 전체 분기 결과 수로 나눈다. 참과 거짓 두 결과 중 하나만 실행했으므로 1/2이다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 1회 주제 · 연습 20

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static class Base { int value; Base(int v){value=v;} int read(){return value;} }
    static class Child extends Base {
        Child(int v){super(v+3);}
        @Override int read(){return super.read()*2;}
    }
    public static void main(String[] args) {
        Base item=new Child(3);
        System.out.print(item.read());
    }
}
정답·해설 보기

정답

12

해설

Child 생성자가 super에 3+3을 전달한다. 변수의 선언형은 Base여도 실제 객체가 Child이므로 재정의한 read가 실행되고 부모의 값에 2를 곱한다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 1회 비공식 복원 (새 창)

답안과 비교한 결과

답안과 확인 상태는 현재 브라우저에만 저장됩니다. ‘맞았어요’ 표시는 본인이 확인한 학습 기록이며 실제 시험 점수가 아닙니다.

카톡에서 정보 얻기