5급 공채 2차

2020년 5급 공채 기술 2차 프로그래밍언어론

문제 5개 · 50점. 참고 답안·채점 기준은 앱에서 볼 수 있습니다.

제1문 (10점)

다음 C 언어 프로그램에 대해 물음에 답하시오. (총 10점)
(a)(b)
#include <stdio.h>
int main(void) {
char menu[][10] = {
"New", "Save",
"Save As", "Exit"
};
printf("%d", sizeof(menu));
return 0;
}







#include <stdio.h>
#include <string.h>
int main(void) {
char *menu[] = {
"New", "Save",
"Save As", "Exit"
};
int cnt, sum;

sum = 0;

for (cnt = 0; cnt <= 3; cnt++)
sum += strlen(menu[cnt]);

printf("%d", sum);
return 0;
}
  1. (1) (a)와 (b) 프로그램의 출력 결과를 제시하시오. (4점)
  2. (2) (a)의 2차원 배열과 (b)의 포인터 배열의 메모리 할당을 그리고 설명하시오. (6점)

제2문 (10점)

다음 물음에 답하시오. (총 10점)
  1. (1) 아래와 같은 두 개의 Java 코드에서 run 함수의 실행 결과를 보이고, 그 이유를 설명하시오. (단, Person 클래스가 정의되어 있고, name이라는 필드를 가진다) (5점)
    void extend(String token) {
    token = "(" + token + ")";
    }
    void run() {
    String name = "홍길동";
    extend(name);
    System.out.println(name);
    }
    void extend(Person a) {
    a.name = "(" + a.name + ")";
    }
    void run() {
    Person p = new Person();
    p.name = "홍길동";
    extend(p);
    System.out.println(p.name);
    }
  2. (2) 대부분의 언어에서 스트링은 불변 객체로 사용된다. 스트링 객체를 불변으로 사용하는 장점을 설명하시오. (5점)

제3문 (10점)

다음 C 언어 코드에 대해 물음에 답하시오. (총 10점)
int x = 5;
if (10 < x < 20 ) x++;
  1. (1) 제시된 코드를 C 언어 컴파일러를 이용하여 컴파일하고 실행하였을 때의 x 값을 제시하고, 그 이유를 설명하시오. (5점)
  2. (2) 제시된 코드의 if 조건식과 같은 경우를 제한하기 위해서 Java 언어에서는 어떠한 방법을 사용하고 있는지 설명하시오. (5점)

제4문 (10점)

다음 Java 언어에 대해 물음에 답하시오. (총 10점)
  1. (1) Java 언어에서 final 키워드의 3가지 용도를 설명하시오. (5점)
  2. (2) 아래의 Java 코드 실행결과를 제시하시오. (5점)
    class Base {
    public Base() { }
    public Base(int val) { System.out.println("Base " + val); }
    }

    class Derived extends Base {
    public Derived() { System.out.println("Derived"); }
    public Derived(int val) { System.out.println("Derived " + val); }
    }

    public class Construct {
    public static void main(String[] args) {
    Base base = new Base();
    Base base2 = new Base(10);
    Derived derived = new Derived();
    Derived derived2 = new Derived(10);
    }
    }

제5문 (10점)

다음 C++ 프로그램에 대해 물음에 답하시오. (총 10점)
class BaseIO {
public:
int mode;
};
class In : public BaseIO {
public:
int readPos;
};
class Out : public BaseIO {
public:
int writePos;
};
class InOut : public In, public Out {
public:
bool safe;
};
int main(void) {
InOut ioObj;

ioObj.readPos = 10;
ioObj.writePos = 20;
ioObj.safe = true;
ioObj.mode = 5;
return 0;
}
  1. (1) 위의 프로그램은 컴파일 오류가 발생한다. 컴파일 오류가 발생하는 부분과 오류가 발생하는 이유를 설명하시오. (5점)
  2. (2) 1)에서 발생한 컴파일 오류를 해결하는 방법을 설명하시오. (5점)