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) (a)와 (b) 프로그램의 출력 결과를 제시하시오. (4점)
- (2) (a)의 2차원 배열과 (b)의 포인터 배열의 메모리 할당을 그리고 설명하시오. (6점)
제2문 (10점)
다음 물음에 답하시오. (총 10점)
- (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) 대부분의 언어에서 스트링은 불변 객체로 사용된다. 스트링 객체를 불변으로 사용하는 장점을 설명하시오. (5점)
제3문 (10점)
다음 C 언어 코드에 대해 물음에 답하시오. (총 10점)
int x = 5;
if (10 < x < 20 ) x++;
if (10 < x < 20 ) x++;
- (1) 제시된 코드를 C 언어 컴파일러를 이용하여 컴파일하고 실행하였을 때의 x 값을 제시하고, 그 이유를 설명하시오. (5점)
- (2) 제시된 코드의 if 조건식과 같은 경우를 제한하기 위해서 Java 언어에서는 어떠한 방법을 사용하고 있는지 설명하시오. (5점)
제4문 (10점)
다음 Java 언어에 대해 물음에 답하시오. (총 10점)
- (1) Java 언어에서 final 키워드의 3가지 용도를 설명하시오. (5점)
- (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;
}
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) 위의 프로그램은 컴파일 오류가 발생한다. 컴파일 오류가 발생하는 부분과 오류가 발생하는 이유를 설명하시오. (5점)
- (2) 1)에서 발생한 컴파일 오류를 해결하는 방법을 설명하시오. (5점)