[2023실기] 3회
1. 다음 JAVA로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.
class SuperObject {
public void draw() {
System.out.println("A");
draw();
}
public void paint() {
System.out.print("B");
draw();
}
}
class SubObject extends SuperObject {
public void paint() {
super.paint();
System.out.print("C");
draw();
}
public void draw() {
System.out.print("D");
}
}
public class Test {
public static void main(String[] args) {
SuperObject a = new SubObject();
a.paint();
a.draw();
}
}
2. 다음 설명에 해당하는 용어를 [보기]에서 찾아 쓰시오.
| - 인터넷 애플리케이션에서 사용자 인증에 사용되는 표준 인증 방법으로, 공개 API(Open API)로 구현되었다. - 인터넷 사용자가 웹사이트나 애플리케이션에 비밀번호를 제공하지 않고 자신에게 접근 권한을 부여하여 사용할 수 있다. - 2010년 ETF에서 1.0이 공식 표준안으로 발표되었다. |
[보기]
| OpenID | IDEA | OAuth | SSPI |
| SASL | PEAP | OIDC | JAAS |
OAuth
3. 다음 C언어로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.
#include <stdio.h>
main() {
char* p = "KOREA";
printf("1. %s\n", p);
printf("2. %s\n", p + 1);
printf("3. %c\n", *p);
printf("4. %c\n", *(p + 3));
printf("5. %c\n", *p + 4);
}
4. 다음 C언어 프로그램과 그 <실행결과>를 분석하여 괄호에 공통으로 들어갈 알맞은 답을 쓰시오.
#include <stdio.h>
struct insa {
char name[10];
int age;
struct insa* impl_a;
struct insa* impl_b;
};
main() {
struct insa p1 = { "Kim", 28, NULL, NULL };
struct insa p2 = { "Lee", 36, NULL, NULL };
struct insa p3 = { "Park", 41, NULL, NULL };
p1.impl_a = &p2;
p2.impl_b = &p3;
printf("%s\n", p1.impl_a->name);
printf("%d\n", p2.impl_b->age);
}
<실행결과>
| Lee 41 |
5. 리눅스 또는 유닉스에서 'a.txt' 파일에 대한 다음 <처리 조건>과 같이 권한을 부여하고자 한다. <처리 조건>을 준수하여 식을 완성하시오.
<처리 조건>
| - 사용자에게 읽기, 쓰기, 실행 권한을 부여한다. - 그룹에게 읽기, 실행 권한을 부여한다. - 기타 사용자에게 실행 권한을 부여한다. - 한 줄로 작성하고, 8진법 숫자를 이용한 명령문을 이용한다. |
Chmod 751 a.txt
6. UML 다이어그램에 대한 다음 설명에서 괄호에 공통으로 들어갈 알맞은 용어를 쓰시오.

( ) 다이어그램
| - ( )은(는) UML 정적 모델링의 하나로, 관련 있는 객체들을 하나로 묶어 상위 개념으로 추상화한 것이다. - 위의 그림과 같이 유스케이스나 클래스 등의 요소들을 그룹화하여 의존 관계를 표현하며, 대규모 시스템에서 주요 요소 간의 종속성을 파악하는데 사용한다. - 시스템의 구조를 간략하게 표현할 수 있고 의존 관계를 명확하게 파악할 수 있어, 불필요한 의존 관계를 제거하거나 간략화함으로써 시스템의 복잡도를 낮추는 곳에도 사용할 수 있다. |
패키지
7. 테스트 기법 중 다음과 같이 '평가 점수표'를 미리 정해 놓은 후 각 영역에 해당하는 입력값을 넣고, 예상되는 출력값이 나오는지 실제 값과 비교하는 명세 기반 테스트 기법으로 [보기]에서 찾아 쓰시오.
<평가 점수표>
| 평가점수 | 성적등급 |
| 90~100 | A |
| 80~89 | B |
| 70~79 | C |
| 0~69 | D |
<케이스>
| 테스트 케이스 | 1 | 2 | 3 | 4 |
| 점수범위 | 0~69 | 70~79 | 80~89 | 90~100 |
| 입력값 | 60 | 75 | 82 | 96 |
| 예상 결과값 | D | C | B | A |
| 실제 결과값 | D | C | B | A |
[보기]
| Equivalence Partition | Boundary Value Analysis | Equivalence Value |
| Cause-Effect Graph | Error Guess | Comparison Test |
| Base Path Test | Loop Test | Data Flow Test |
Equivalence Partition (동등 분할 기법)
8. <R>과 <S> 테이블에 대해 <SQL문>을 실행하였을 때 나타나는 결과를 작성하시오.
(SQL을 실행하였을 때 출력되는 속성명과 값들을 모두 답안에 적으시오.)
<R>
| A | B |
| 1 | a |
| 2 | b |
| 3 | c |
<S>
| A | B |
| 1 | a |
| 2 | c |
| 4 | d |
<SQL문>
SELECT A FROM R
UNION
SELECT A FROM S
ORDER BY A DESC;
A
4
3
2
1
9. 다음 C언어로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.
#include <stdio.h>
int isPerfectNum(int num) {
int sum = 0;
for (int i = 1; i < num; i++) {
if (num % i == 0)
sum += i;
}
if (num == sum) return 1;
else return 0;
}
main() {
int r = 0;
for (int i = 1; i <= 100; i++)
if (isPerfectNum(i))
r += i;
printf("%d", r);
}
10. 네트워크 대한 다음 설명에 해당하는 용어를 쓰시오.
| - 우리말로 번역하면 '네트워크 주소 변환' 이라는 의미의 영문 3글자 약어이다. - 1개의 정식 IP 주소에 다량의 가상 사설 IP 주소를 할당 및 연결하는 방식이다. - 1개의 IP 주소를 사용해서 외부에 접속할 수 있는 노드가 어느 시점에 1개로 제한되는 문제가 있으나, 이 때는 IP 마스커레이드(Masquerade)를 이용하면 된다. |
NAT
11. 다음 설명에 해당하는 프로토콜을 쓰시오.
| 자료를 일정한 크기로 정하여 순서대로 전송하는 자료의 전송방식으로, 셀이라 부르는 53Byte의 고정 길이 패킷을 이용하여 처리가 단순하고 고속망에 적합하다. 또한 연속적으로 셀을 보낼 때 다중화를 하지 않고 셀 단위로 동기가 이루어지지만 경우에 따라 동기식 시간 분할 다중화를 사용하기도 한다. CBR, VBR의 처리가 가능하며, B-ISDN과 결합하여 서비스를 제공하기도 한다. |
ATM(Asynchronous Transfer Mod), 비동기 전송 방식
12. 다음은 오류가 발생하는 JAVA 프로그램이다. 프로그램을 분석하여 오류가 발생하는 라인을 쓰시오.
class Person {
private String name;
public Person(String val) {
name = val;
}
public static String get() {
return name;
}
public void print() {
System.out.println(name);
}
}
public class Test {
public static void main(String[] args) {
Person obj = new Person("Kim");
obj.print();
}
}
13. 접근 통제(Access Control)에 대한 다음 설명에서 괄호(1~3)에 들어갈 알맞은 용어를 [보기]에서 찾아 쓰시오.
| ( 1 ) | - 주체와 객체의 등급을 비교하여 접근 권한을 부여하는 방식이다. - 시스템이 접근통제 권한을 지정한다. - 데이터베이스 객체별로 보안 등급을 부여할 수 있다. - 사용자별로 인가 등급을 부여할 수 있다. |
| ( 2 ) | - 사용자의 역할에 따라 접근 권한을 부여하는 방식이다. - 중앙관리자가 접근통제 권한을 지정한다. - 임의 접근통제와 강제 접근통제의 단점을 보완하였다. - 다중 프로그래밍 환경에 최적화된 방식이다. |
| ( 3 ) | - 데이터에 접근하는 사용자의 신원에 따라 접근 권한을 부여하는 방식이다. - 데이터 소유자가 접근통제 권한을 지정하고 제어한다. - 객체를 생성한 사용자가 생성된 객체에 대한 모든 권한을 부여받고, 부여된 권한을 다른 사용자에게 허가할 수도 있다. |
[보기]
| DAC (Discretionary Access Control) | MAC (Mandatory Access Control) | RBAC (Role Based Access Control) |
1. MAC (강제 접근 제어)
2. RBAC (역할 기반 접근 제어)
3. DAC (임의 접근 제어)
14. 다음 JAVA로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.
class P {
public int calc(int n) {
if (n <= 1) return n;
return calc(n - 1) + calc(n - 2);
}
}
class C extends P {
public int calc(int n) {
if (n <= 1) return n;
return calc(n - 1) + calc(n - 3);
}
}
public class Test {
public static void main(String[] args) {
P obj = new C();
System.out.print(obj.calc(7));
}
}
15. 다음 C언어로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.
#include <stdio.h>
int f(int n) {
if (n <= 1) return 1;
else return n * f(n - 1);
}
main() {
printf("%d", f(7));
}
16. 다음 Python 프로그램과 그 <실행결과>를 분석하여 괄호에 들어갈 알맞은 예약어를 쓰시오. (<실행결과> 첫 번째 라인은 '5 10'은 입력받은 값에 해당한다.)
| x, y = input("x, y의 값을 공백으로 구분하여 입력 : ").( )(' ') print("x의 값:" , x) print("y의 값:" , y) |
<실행결과>
| x, y의 값을 공백으로 구분하여 입력 : 5 10 x의 값 : 5 y의 값 : 10 |
17. 클라우드에 대한 다음 설명에서 괄호(1~3)에 들어갈 알맞은 용어를 내용 중에서 찾아 쓰시오.
| 클라우드 컴퓨팅은 각종 컴퓨팅 자원을 중앙 컴퓨터에 두고 인터넷 기능을 가진 단말기로 언제 어디서나 인터넷을 통해 컴퓨터 작업을 수행할 수 있는 환경을 의미한다. 중앙 컴퓨터는 복수의 데이터 센터를 가상화 기술로 통합한 대형 데이터 센터로, 각종 소프트웨어, 데이터, 보안 솔루션 기능 등 컴퓨팅 자원을 보유하고 있다. 사용자는 키보드와 모니터, 마우스를 갖추고 통신 포트만 연결하면 업무 수행이 가능하다. 즉 클라우드 컴퓨팅은 인터넷으로 가상화된 IT 리소스를 서비스로 제공하는 것을 의마하며, 클라우드 컴퓨팅에서 가상화하여 서비스로 제공하는 대상에 따라 IaaS, PaaS, SaaS로 구분되어 있다. |

1. IaaS
2. PaaS
3. SaaS
18. 다음 설명에 해당하는 프로토콜을 쓰시오.
| - 거리 벡터 라우팅 프로토콜이라고도 불리며, 최단 경로 탐색에 Bellman-Ford 알고리즘이 사용된다. - 소규모 동종의 네트워크 내에서는 효율적이나, 최대 홉(Hop) 수가 제한되므로 대규모 네트워크에서는 사용할 수 없다. - 일정 시간 동안 라우팅 정보가 갱신되지 않으면 해당 경로를 이상 상태로 간주한다. |
RIP, 경로 선택 정보 프로토콜
19. 관계 연산자에 대한 다음 설명에서 각 번호(1~4)의 연산자를 의마하는 기호를 <보기>에서 찾아 쓰시오.
| 연산자 | 특징 |
| 1. Join | - 공통 속성을 중심으로 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산이다. - Join의 결과는 Cartesian Product(교차곱)를 수행한 다음 Select를 수행한 것과 같다. |
| 2. Project | - 주어진 릴레이션에서 속성 리스트(Attribute List)에 제시된 속성 값만을 추출하여 새로운 릴레이션을 만드는 연산이다. - 연산 결과에 중복이 발생하면 중복이 제거된다. - 릴레이션의 열에 해당하는 속성을 추출하는 것이므로 수직 연산자라고도 한다. |
| 3. Select | - 릴레이션에 존재하는 튜플 중에서 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만드는 연산이다. - 릴레이션의 행에 해당하는 튜플(Tuple)을 구하는 것이므로 수평 연산이라고도 한다. |
| 4. Division | X⊃Y인 두 개의 릴레이션 R(X)와 S(Y)가 있을 때, R의 속서이 S의 속성값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 연산이다. |
<보기>
| σ | ⋈ | ÷ | ± | ∞ | π |
1. ⋈
2. π
3. σ
4. ÷
20. 무결성에 대한 다음 설명에서 괄호에 들어갈 알맞은 답을 쓰시오.
| 무결성이란 DB에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제 값이 일치하는 정확성을 의미한다. 무결성 제약 조건은 DB에 들어 있는 데이터의 정확성을 보장하기 위해 부정확한 자료가 DB 내에 저장되는 것을 방지하기 위한 제약 조건을 말한다. 아래의 두 테이블에서는 <결제> 테이블의 '회원' 속성이 <회원> 테이블의 '이름' 속성을 참고하는 외래키이므로 ( ) 무결성 제약 조건이 준수되어야 한다. |

참조