자격증/정처기

[정보처리기사 실기] 2023년 1회 기출문제 풀이

lakedata 2025. 2. 14. 06:25

정처기 실기 23년 1회 기출문제 - 바로가기

 

1. 아래 자바 코드에서 출력되는 값을 작성하시오.

class Static{
    public int a = 20;
    static int b = 0;   
}

public class Test{
    public static void main(String[] args) {
        int  a = 10;
        Static.b = a;
        Static st = new Static();

        System.out.println(Static.b++);
        System.out.println(st.b);
        System.out.println(a);
        System.out.print(st.a);
    }
}
더보기

정답:

10

11

10

20

 

출제 : [프로그래밍 언어JAVA언어–static]

static 메모리에 있는 변수는 일반적인 인스턴스 변수(Non-static 변수)와 다르게 프로그램 내 모든 객체와 공유된다

출처: 기사퍼스트

 

Static.b = a; // Static.b에 a값 (10) 할당

Static st = new Static(); // Static의 인스턴스인 st.b 값에도 10이 할당됨

System.out.println(Static.b++); // 후위연산자, 10이 출력되고 1 증가 (Static.b는 11)

System.out.println(st.b); //st는 Static 클래스의 인스턴스, Static.b는 11인 상태, 따라서 11 출력

 System.out.println(a); // 우선순위가 높은 자기 자신 블록에 있는 것
System.out.print(st.a)

 

2. 다음 C언어의 출력값을 작성하시오.

#include 

int main(){

    char a[] = "Art";
    char* p = NULL;
    p = a;

    printf("%sn", a);
    printf("%cn", *p);
    printf("%cn", *a);
    printf("%sn", p);

    for(int i = 0; a[i] != ''; i++)
    printf("%c", a[i]);

}
더보기

정답: 

Art

A

A

Art

Art

 

출제 : [프로그래밍 언어13 - 1.C언어 – 13)포인터]

char a[] = “Art”;   ← a[] : {‘A’, ‘r’, ‘t’, ‘\0’}

%s : 해당 포인터부터 문자열 출력. char * 형

%c : 해당 포인터의 문자 하나 출력. char 형

 

*(p+i)==p[i]==*&p[i]

출처: 시나공

 

3. 다음 C언어의 출력값을 작성하시오.

#include 
 
int main(){
 
    char* a = "qwer";
    char* b = "qwtety";
 
    for(int i = 0; a[i] != '' ; i++){
        for(int j = 0; b[j] != ''; j++){
            if(a[i] == b[j]) printf("%c", a[i]);
        }
    }
 
}
더보기

정답: qwe

 

- 출제 : [프로그래밍 언어 C언어포인터]

C에서 배열끝에 \0 널

시나공

 

4. 다음 괄호안에 들어가는 용어의 Full Name 또는 약자를 작성하시오.

(   )은/는 비동기적인 웹 애플리케이션의 제작을 위해 JavaScript와 XML을 이용한 비동기적 정보 교환 기법이다.

(   )은/는 필요한 데이터만을 웹서버에 요청해서 받은 후 클라이언트에서 데이터에 대한 처리를 할 수 있다. 
보통 SOAP이나 XML 기반의 웹 서비스 프로토콜이 사용되며, 웹 서버의 응답을 처리하기 위해 클라이언트 쪽에서는 자바스크립트를 쓴다.

(   )은/는 Google Map과 Google pages에서 사용한 기술에 기반하여 제작되었다.
더보기

정답: AJAX

 

XML + 언어 = WSDL

XML + 프로토콜 = SOAP

XML + JAVA = AJAX

XML + 검색 = UDDI

XML + 대체 = JSON

 

5. 아래 내용을 확인하여 괄호 안에 용어를 표안에 알맞는 값을 고르시오.

더보기

정답: 가상회선, 데이터그램

 

가상 회선 : 다량 데이터
데이터그램 : 짧은 패킷

 

6. 아래 내용을 확인하여 알맞는 답을 작성하시오.

○ 2 계층(데이터링크 계층)에서 구현되는 터널링 기술 중 하나
○ L2F와 PPTP가 결합된 프로토콜로 VPN과 인터넷 서비스 제공자(ISP)가 이용
○ IPsec을 함께 사용하면 PPTP보다 훨씬 안전하지만 보안보다 익명화에 더 적합
더보기

정답: L2TP

시스코의 L2F(Layer 2 Forwarding) 와 PPTP을 조합하여 만든 VPN이다. 보통 IPsec과 같은 보안용 프로토콜과 같이 사용합니다.

출처: 꿈꾸는 라이언

 

7. 다음 설명에 해당하는 알맞은 용어를 영문 3글자로 쓰시오.

○ 다른 컴퓨터에 로그인, 원격 명령 실행, 파일 복사 등을 수행할 수 있도록 다양한 기능을 지원하는 프로토콜 또는 이를 이용한 응용 프로그램이다.
○ 데이터 암호화와 강력한 인증 방법으로 보안성이 낮은 네트워크에서도 안전하게 통신할 수 있다.
○ 키(Key)를 통한 인증 방법으로 사용하려면 사전에  클라이언트의 공개키를 서버에 등록해야 한다.
○기본적으로는 22번 포트를 사용한다.
더보기

정답: SSH


원격제어
SSH : 22, 암호화하여
telnet : 23, 평문으로

 

8. 를 참고하여 아래 설명에 대한 (1) ~ (3)의 알맞는 답을 작성하시오.

- 트로이 목마
- 웜
- 바이러스
더보기

정답 : 1. 웜 2. 트로이 목마 3. 바이러스

 

- 출제 : [보안02 – 5.보안 용어]

1- 자가복제 가능, 이메일 공유폴더 p2p 네트워크를 이용 스스로 전파(웜)

2-"사용자가 의도치 않은 소스코드 ~" 몰래 숨겨놓는다(트로이목마)

3 - ㄱ과 같은 특성을 가지고 확장 된다. 스스로 전파 못한다 (바이러스)

 

* 웜 : 자기 복제, 자가 전파 가능 (숙주 필요 없음)

* 트로이목마 : 사용자가 의도치 않은 소스코드, 자기 복제 X (숙주 필요 없음)

* 바이러스 : 자기 복제 능력이 있으나 자가 전파는 안됨. (숙주 필요)

 

9. 다음 아래 코드에서 이진수를 십진수로 변환하는 코드에 대해 괄호 (a) (b)의 적합한 답을 작성하시오.

#include 
 
int main() { 
    int input = 101110;
    int di = 1;
    int sum = 0;
 
    while (1) {
 
        if (input == 0) break;
        else {
 
          sum = sum + (input (a)(b)) * di;
             di = di * 2;
             input = input / 10; 
        }
    }
 
    printf("%d", sum);
 
    return 0;
}
더보기

정답:

(a) % , (b) 10 or 5 or 2
또는
(a) & , (b) 1

 

출제 : [프로그래밍 언어- C언어)제어문(if문, switch문, while문, do~while문, for문)]

2진수를 10진수로

시나공

 

 

10. 다음 보안 관련 설명으로 괄호안에 알맞는 용어를 작성하시오.

(    )은/는 TCP/IP에서 IP 패킷을 처리할 때 발생되는 문제를 알려주는 프로토콜이다.
(    ) 프로토콜은 보통 다른 호스트나 게이트웨이 와 연결된 네트웍에 문제가 있는지 확인하기 위한 목적으로 주로 사용된다.
(    ) 을/를 이용한 공격에는 (    ) Flooding가 있는데 ping 명령어를 통한 (     ) 패킷을 연속적으로 계속 보내어 서버의 요청에 응답으로 인한 다른작업을 하지 못하도록 하는 공격이다.
더보기

정답: Internet Control Message Protocol(ICMP)


오류메세지 전송

. Internet Control Message Protocol / 헤더 8Byte

. IP와 함께 통신 간 오류 처리전송 경로 변경 등 제어 메시지 관리

 

11. 다음은 디자인 패턴에 관한 설명이다. 설명에 내용에 알맞는 답을 고르시오.

(   )은/는 복잡한 시스템을 개발하기 쉽도록 클래스나 객체을 조합하는 패턴에 속하며,
대리라는 이름으로도 불린다. 내부에서는 객체 간의 복잡한 관계를 단순하게 정리해 주고,
외부에서는 객체의 세부인 내용을 숨기는 역할을 한다.
더보기

정답 : Proxy 

대리 = proxy

 

구조 패턴 - 구 브데 퍼플 프록컴어 

 : 구조 - 브리지 / 데코레이터 / 퍼사이드 / 플라이 웨이트 / 프록시 / 컴포지트 / 어댑터

꿈꾸는 라이언

 

 

12. 릴레이션의 구성하는 용어들에 대한 다음 설명에서 괄호(① ~ ③)에 들어갈 알맞은 답을 에서 찾아 쓰시오.

○도메인  ○차수  ○속성  ○튜플
○디그리  ○카디널리티  ○릴레이션 스키마  ○릴레이션 인스턴스
더보기

정답:

① 튜플

② 릴레이션 인스턴스

③ 카디널리티

 

릴레이션 스키마: 구조를 나타내는 릴레이션
릴레이션 인스턴스: 실제 값들

* 속디차: 속성(열) = 디그리 = 차수
* 행튜카: 튜플(행) = 카디널리티

 

 

13. [학생] 테이블에서 학생 이름이 '민수'인 튜플을 삭제하는 쿼리를 작성하시오.

조건
- 컬럼의 값이 문자열일 경우 작은 따옴표 ('  ')를 표시하시오.
- SQL 마지막에 세미콜론(;)은 표기하지 않아도 관계 없습니다.
더보기

정답 : delete from 학생 where 이름='민수'

 

[기본형식]
DELETE FROM 테이블명 [WHERE 조건];

 

14. 다음 코드에서 괄호안에 알맞는 값을 변수명으로 작성하시오.

#include 
void swap(int *a, int idx1, int idx2) {
 int t= a[idx1];
 a[idx1] = a[idx2];
 a[(    ①    )] = t;
}

void  Usort(int *a, int len) {
  for(int i = 0; i < len - 1; i++) 
     for(int j = 0; j < len - 1 - i; j++)
        if(a[j] > a[j+1])
            swap(a,j,j+1);
}

void main(){
 int a[] = {85, 75, 50, 100, 95};
 int nx = 5;
 Usort(a, (    ②    ));
}
더보기

정답:
(1) idx2
(2) nx

 

- 출제 : [프로그래밍 언어- C언어)배열]

버블 정렬 - a[①] = t, sort(a, ②)

 

15. 다음 파이썬 코드의 알맞는 출력값을 작성하시오.

a = {'한국', '중국', '일본'}
a.add('베트남')
a.add('중국')
a.remove('일본')
a.update({'홍콩', '한국', '태국'})
print(a)
더보기

정답: {'한국', '중국', '베트남', '홍콩', '태국'}

 

- 출제 : [프로그래밍 언어 - Python언어)입출력 함수, 리스트, 문자열, 튜풀, 딕셔너리, 집합]
파이썬 딕셔너리형으로 "출력 결과의 순서는 상관 없습니다."
값이 중복되지 않아야 하며, 출력 결과는 중괄호 {} 및 , 와 ‘ ’ 을 생략 시 오답 처리 됩니다.

set에 사용되는 함수    
add    | 값 1개를 추가(중복값은 무시)
update| 값 여러개를 추가(중복값은 무시)
remove|    특정 값 제거(값이 없을 경우 무시)

 

16. 다음 성적 테이블에서 과목별 점수의 평균이 90점 이상인 '과목이름', '최소점수', '최대점수' 를 검색하고자 한다. [조건]을 참고하여 적합한 SQL문을 작성하시오.

[조건] 
- WHERE사용하지 말아야 한다.
- SELECT절에 별칭을 사용하여 작성해야 한다.
- SQL 구문 마지막에 세미콜론(;)은 생락 가능하다.
- 반드시 GROUP BY와 HAVING 을 사용해야 한다.
- 집계 함수를 사용해야 한다.
더보기

SELECT 과목이름 ,MIN(점수) AS 최소점수 ,MAX(점수) AS 최대점수
FROM 성적
GROUP BY 과목이름 HAVING AVG(점수) >= 90
- 출제 : [SQL02 – 2.DML]

 

셀프웨구해오

SELECT 컬럼1, 컬럼2, ..., 집계함수
  FROM 테이블명
[WHERE 조건]
GROUP BY 컬럼1, 컬럼2, ...
[HAVING 조건식(집계함수 포함)]

GROUP BY 구문 : 복수행 대상의 데이터 분석 시 그룹핑 대상이 되는 부분을 선별해야 하는 경우 사용

HAVING 구문 : GROUP BY 구문의 기준 항목이나 소그룹 집계 함수를 활용한 조건을 적용하기 위해 사용

 

17. 다음 JAVA 코드에서 알맞는 출력 값을 작성하시오.

abstact class Vehicle {
    String name;
    abstract public String getName(String val);
 
    public String getName() {
            return "Vehicle name: " + name;
    }
}
 
class Car extends Vehicle {
    public Car(String val) {
            name=super.name=val;
    }
 
    public String getName(String val) {
            return "Car name:" + val;
    }
 
    public String getName(byte val[]) {
            return "Car name:" + val;
    }
}
 
 
public class Main {
    public static void main(String[] args) {
    Vehicle obj = new Car("Spark");
    System.out.println(obj.getName());
    }
}
더보기

정답 : Vehicle name:Spark

 

출제 : [프로그래밍 언어 - JAVA언어)생성자, 상속, 오버라이딩, 오버로딩, 추상 클래스]

obj.getName()이 Vehicle의 메소드를 호출한 이유는 Car 클래스에 getName() 메소드가 없기 때문입니다.

 

18. 다음은 스키마와 관련된 내용이다. 각 괄호안에 알맞는 답을 작성하시오.

더보기

스키마

정답 : ㉠ 외부, ㉡ 개념, ㉢ 내부

- 출제 : [데이터베이스01 - 1.데이터베이스 개념]

 

#외개In

외부 : 사용자 뷰

개념 : 전체적인 뷰

내부 : 물리적 저장장치

 

19. 다음 아래 제어 흐름 그래프가 분기 커버리지를 만족하기 위한 테스팅 순서를 쓰시오.

더보기

정답 : ① 1234561  ② 124567 또는 ① 1234567  ② 124561 

 

- 출제 

화이트박스 분기 커버리지 [기출]
결정(분기) 커버리지 : 프로그램 내 전체 결정문이 적어도 한 번은 참/거짓 결과 수행

분기점(branch, 두개로 나뉘는 부분, 마름모) 위주로 테스트

 

YES NO : ① 1234567
NO YES :  ② 124561 

 

YES YES ① 1234561  

NO NO ② 124567 

 

20. 다음 Java 코드에 대한 출력 값을 작성하시오.

class Parent {
    int x = 100;
    Parent() {
        this(500);
    }
 
    Parent(int x) {
        this.x = x;
    }
 
    int getX() {
        return x;
    }
}
 
class Child extends Parent {
    int x = 4000;
    Child() {
        this(5000);
    }
 
    Child(int x) {
        this.x = x;
    }
}
 
public class Main {
    public static void main(String[] args) {
        Child obj = new Child();
        System.out.println(obj.getX());
    }
}
더보기

정답: 500

 

수제비

1) Child obj = new Child();  에서 생성자 호출

  [class Child] Child() { this(5000); } →  Child(int x) { this.x = x; } → [class Parent] Parent() { this(500); } → Parent(int x) { this.x = x; } → Parent의 x값 : 500 → Child의 x값 : 5000

=> obj 객체 내 Parent 클래스의 x값은 500, Child 클래스의 x값은 5000이 된다

 

2) obj.getX();

→ [class Parent] int getX() { return x; }  (Child에서 getX() 메소드를 오버라이드 하지 않았으므로 Parent의 getX() 메소드를 호출한다)

=> obj 객체 내 Parent 클래스의 x값인 500을 리턴