모든 답은 아래 교재를 참조합니다. 

 

싸니까 믿으니까 인터파크도서

생년월일 - 출생지 - 출간도서 0종 판매수 0권 (주)익스터디 대표이사, 두목넷 사무자동화 부분 대표 강사로 IT 자격증 분야에서 '왕두목'이라는 애칭으로 활발히 활동하고 있습니다. 경기공업대

book.interpark.com

 

16. 다음은 C언어로 구현된 스택 연산 프로그램이다. 빈 칸 (1) ~ (4)에 들어갈 가장 적합한 표현을 C언어 코드 형식으로 쓰시오. 

#include <stdio.h>
#define max_stack_size 10 // 스택의 최대 크기

int top = -1;
int stack[max_stack_size];

void stackFull(void);
void stackEmpty(void);
void push(int);
int pop(void);

int main()
{
    push(8);
    push(1);
    push(0);
    push(2);
    
    printf("%2d", pop());
    printf("%2d", pop());
    printf("%2d", pop());
    printf("%2d", pop());
    
    return 0; 
}

void stackFull()
{
    printf("\nStack is full, cannot add element.\n");
    exit();
}

void stackEmpty()
{
    printf("\nStack is empty, cannot delete element.\n");
    exit();
}

void push(int item)
{                                    // 전역 stack에 item을 삽입 
    if (top >= max_stack_size - 1)
        stackFull();
    else
        stack[++top] = item;
}

int pop()
{                                    // 전역 stack의 최상위 원소를 삭제하고 변환
    if (top <= -1)
        stackEmpty();
    else
        return stack[top--];
}

[정답]

- 답 (1) : max_stack_size - 1
- 답 (2): item
- 답 (3): -1 
- 답 (4): top--

17. 다음에 제시된 JAVA 프로그램은 5개의 정수 95, 75, 85, 100, 50을 오름차순 정렬한 결과를 출력해주고 있다. Java 프로그램의 빈 칸 (1), (2)에 들어갈 JAVA 표현을 쓰시오. 

public class Exam{

     public static void main(String []args){
        int [] E = {___1___};
        for(int i = 0; i<4; i++) {
            for(int j=0; j<4-i; j++) {
                if(___2___ > E[j+1]) {
                    int temp = ___2___;
                    ___2___ = E[j+1];
                    E[j+1] = temp;
                }
            }
        }
        for(int i = 0; i<5; i++)
            System.out.print(E[i]+" ");
     }
}

[정답]

- 답 (1) : 95, 75, 85, 100, 50
- 답 (2): E[j]

18. 아래 보기의 <학생> 테이블을 대상으로 하는 <지시사항>을 SQL문으로 작성하시오. (단, 이름 속성의 데이터는 문자형이고, 학번과 학년 속성의 데이터는 숫자형(int)이다. 

<학생>

학번 이름 학년 점수
181101 KKK 1 10
171201 HHH 2 30
171302 XXX 3 50
161107 YYY 3 80
151403 QQQ 4 100

<지시사항>

  • <학생> 테이블에서 점수가 10점에서 50점까지에 해당하는 학생의 학번과 이름을 검색하시오. 
  • 단, 조건절 작성 시 between 문법을 사용하여 작성하시오. 

[정답]

SELECT 학번, 이름 FROM 학생 WHERE 점수 BETWEEN 10 AND 50;

 

 

모든 내용은 아래 교재를 참조합니다. 꼭 구매 하십시요! 

 

싸니까 믿으니까 인터파크도서

생년월일 - 출생지 - 출간도서 0종 판매수 0권 (주)익스터디 대표이사, 두목넷 사무자동화 부분 대표 강사로 IT 자격증 분야에서 '왕두목'이라는 애칭으로 활발히 활동하고 있습니다. 경기공업대

book.interpark.com

1. C언어 기본문법 구조와 printf( ) 함수

%d 10진 정수로 변환하여 출력
%f 부동소수점을 실수로 변환하여 출력
%c 한 문자로 변환하여 출력
%s 문자열로 변환하여 출력

2. 비트 연산자

(1) 비트 시프트 연산자

- <<는 비트를 왼쪽으로 이동(Shift)시킨다. 

- >>는 비트를 오른쪽으로 이동(Shift)시킨다. 

  : b = a << 2 --> a의 값을 왼쪽으로 2비트 이동시킨 결과를 b에 저장한다. 

 

(3) 기타 연산자

- int num = (int)3.14 + 5;

  --> (int)3.14는 실수형 상수 3.14를 정수형 상수 3으로 변환 후 3 + 5를 수행한 결과 8을 정수형 변수 num에 대입

#include <stdio.h>

void main(){
    int a = 7 + 6;
    int b = (int)7.3 + (int)6.7;
    printf("%d %d", a, b);
}

 

(4) 포인터 연산자

 

 

3. 제어문(1) - 선택문

(1) switch~case문 예제

#include <stdio.h>
int main()
{
    int season; 
    printf("계절 구분 > 봄(1), 여름(2):");
    scanf("%d", &season);
    switch(season)
    {
        case 1: printf("봄 소풍 가세요 ~\n"); break;
        case 2: printf("바다로 갈까요?\n"); break;
    }
    
    return 0;
}

계절 구분 > 봄(1), 여름(2):1                                   

봄 소풍 가세요 ~ 

(2) if else

#include <stdio.h>
void main()
{
    int a = 3, b = 10;
    if(b >5)
        printf("%d\n", a + b);
    else
        printf("%d\n", b - a);
}
---
13

 

3. 제어문(2) - 반복문

(1) while 예제

int main()
{
    int i; 
    i = 1;
    while(i <= 5)
    {
        printf("정보처리 합격!\n");
        i++;
    }
    return 0;
}

(2) for문 예제

#include <stdio.h>
int main()
{
    int i; 
    printf("=== 구구단: 2단 출력 === \n");
    for(i = 1; i<10; i++)
    {
        printf("%d * %d = %2d\n", 2, i, 2*i);
    }
    return 0;
}
---
=== 구구단: 2단 출력 ===                                       
2 * 1 =  2                                                     
2 * 2 =  4                                                     
2 * 3 =  6                                                     
2 * 4 =  8                                                     
2 * 5 = 10                                                     
2 * 6 = 12                                                     
2 * 7 = 14 
2 * 8 = 16                                                     
2 * 9 = 18

4. 포인터 변수와 관련 연산자

  • & 주소 연산자: 모든 변수에 주소값을 구하는 연산자
  • * 포인터 연산자: 포인터 변수의 자료(내용)를 구하는 연산자
int main()
{
    int num;
    int* p1;
    num = 100;
    p1 = &num; 
    printf("일반변수 접근: %d\n", num);
    printf("포인터변수 접근: %d\n", *p1);
    return 0;
}
--
일반변수 접근: 100
포인터 변수 접근: 100
#include <stdio.h>

int main()
{
    int i;
    int A[] = {10, 20, 30, 40, 50};
    
    int* p;
    p = A;  // p = &A[0];
    for(i=0; i<5; i++)
    {
        printf("%5d", *(p+i)); // printf("%5d", A[i]);
    }
    return 0;
}
---
10 20 30 40 50 

 

모든 답은 아래 교재를 참조합니다. 

 

싸니까 믿으니까 인터파크도서

생년월일 - 출생지 - 출간도서 0종 판매수 0권 (주)익스터디 대표이사, 두목넷 사무자동화 부분 대표 강사로 IT 자격증 분야에서 '왕두목'이라는 애칭으로 활발히 활동하고 있습니다. 경기공업대

book.interpark.com

 

1. 다음은 디자인 패턴에 대한 설명이다. 빈 칸 (    ) 안에 들어갈 가장 적합한 용어를 쓰시오.

디자인 패턴(Design Pattern)은 프로그램을 개발하는 과정에서 빈번하게 발생하는 디자인상의 문제를 정리해서 상황에 따라 간편하게 적용하여 쓸 수 있는 패턴 형태로 만든 것이다. 
에리히 감마, 리처드 햄, 랄프 존슨, 존 블리시데스가 한 자리에 모이게 되었다. goF(Gang of Four)으로 불리는 이 네 명이 여러 개의 패턴을 집대성하여 저술한 책이 유명한 [디자인 패턴: 재사용 가능한 객체 지향 소프트웨어의 요소들(Design Patterns: Elements of Resuable Object-Oriented Software]이다. 
goF의 디자인 패턴에는 생성, 구조, (       )(이)가 있다. 생성 패턴은 객체의 생성에 관련된 패턴이고, 구조 패턴은 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴이며, (     ) 패턴은 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴이다. 

[정답]

  • 행위 

2. 다음 그림과 같이 탭이 달린 폴더 안에 요소들을 집어넣어 표현하는 다이어그램으로 컴포넌트 구조 사이의 관계를 표현하며 요소들을 그룹으로 조직하기 위한 메커니즘의 UML 다이어그램이 무엇인지 쓰시오. (아래 그림과 유사)

[정답]

  • 패키지 다이어그램

3. 테스트 오라클은 테스트의 결과가 참인지 거짓인지를 판단하기 위해서 사전에 정의된 참(True) 값을 입력하여 비교하는 기법 및 활동을 말한다. 테스트 오라클의 유형 중 전수 테스트가 불가한 경우 특정한 몇 개의 입력값에 대해서만 기대하는 결과를 제공해주는 오라클로 경계값, 구간별 예상값 결과 작성 시 사용하는 오라클을 무엇이라 하는지 쓰시오. 

[정답]

  • 샘플링 오라클

4. 다음은 주어진 평가점수별 학점 조건을 토대로 테스트 케이스를 작성하여 테스트를 진행한 결과이다. 다음에 적용한 테스트 기법은 명세 기반 테스트의 기법 중 프로그램의 입력 조건에 중점을 두고, 어느 하나의 입력 조건에 대하여 타당한 값과 그렇지 못한 값을 설정하여 해당 입력 자료에 맞는 결과가 출력되는지 확인하는 테스트 기법이다. 적용한 테스트 기법을 무엇이라 하는지 쓰시오. 

<조건>

평가 점수 학점
0 ~ 60 F
60 ~ 70 D
70 ~ 80 C
80 ~ 90 B
90 ~ 100 A

<결과>

테스트 케이스 1 2 3 4 5
구간 0 ~ 60 60 ~ 70 70 ~ 80 80 ~ 90 90 ~ 100
테스트데이터 55 66 77 88 99
예측값 F D C B A
결과값 F D C B A

 

[정답]

  • 동치 분할 테스트

5. <학생> 테이블을 대상으로 <요구사항>을 적용하여 아래 <결과>와 같이 출력하는 SQL문을 작성하시오. 

<학생>

학번 이름 학과 성적 전화번호
2020021 철수 전기 90 010-1111-1111
2020001 민수 컴퓨터 70 010-2222-2222
2021022 영희 건축 85 010-3333-3333
2022023 민호 건축 95 010-4444-4444
2020007 광철 컴퓨터 100 010-5555-5555

<결과>

학과 학과별튜플수
전기 1
컴퓨터 2
건축 2

<요구사항>

1. WHERE 구문은 사용하지 않고 SQL문을 작성하시오. 
2. GROUP BY 구문과 집계함수를 반드시 사용하여 SQL문을 작성하시오. 
3. 인용 문구를 사용 시 작은따옴표('') 사용 가능합니다. 
4. AS 구문은 반드시 사용하여 작성하시오. 
5. SQL 명령문의 대/소문자를 구별하지 않으며 종결 문자인 세미콜론(;)은 생략 가능합니다. 
6. 실행 결과가 일치하더라도 <요구사항>을 모두 적용하지 않은 SQL문을 작성하면 오답으로 간주합니다. 

[정답]

  • SELECT 학과, COUNT(*) AS 학과별튜플수 FROM 학생 GROUP BY 학과;

6. 스니핑(Sniffing)에 대하여 간략히 설명하시오. 

[정답]

  • 스니핑은 네트워크상에 통과하는 패킷들의 내용을 엿보는 행위이다. 이처럼 패킷을 엿봄으로써 로그인 과정 중의 계정명과 패스워드 정보를 비롯하여 주요 내용을 불법으로 추출할 수 있다. 

7. 정보 보안의 목표가 되는 정보보안 3원칙은 기밀성(C), 무결성(i), 가용성(A)를 만족시키는 것이다. 정보보안의 목표 중 가용성에 대하여 간략히 설명하시오. 

[정답]

  • 가용성은 합법적 사용자가 합법적 정보를 요구할 때 적시에 제공되어야 하는 원칙을 말한다. 

8. 다음은 C언어로 작성된 프로그램이다. 이를 실행한 출력 결과를 쓰시오. 

#include <stdio.h>

int main(void) {
	// your code goes here
	char *p = "KOREA";
	printf("%s\n", p); // 포인터 변수 p의 값의 위치에 문자부터 널('\0') 문자 전까지 연속하여 출력
	printf("%s\n", p+3); // 포인터 변수 p의 값의 위치에서 3간격 떨어진 위치부터 연속하여 출력
	printf("%c\n", *p); // 포인터 변수 p의 값의 위치에 있는 문자 한 문자 출력
	printf("%c\n", *(p+3)); // 포인터 변수 p의 값의 위치에서 3간격 떨어진 위치에 있는 문자 한 문자 출력
	printf("%c\n", *p+2); // 포인터 변수 p의 값의 위치에 있는 문자 한 문자 ('K')에 2를 더한 문자 출력
}

---
KOREA
EA
K
E
M

[정답]

  • KOREA
  • EA
  • K
  • E
  • M

- 출력 형식 문자 %s와 %c를 명확히 구분하여 결과를 작성해야 한다. %s는 문자열 상수를 출력하고 %c는 단일 문자 상수 한 글자만 출력한다. 

 

9. 다음에 제시된 JAVA 프로그램이 <처리결과>와 같이 결과를 출력해주고 있다. JAVA 프로그램의 빈 칸 (1) ~ (2)에 들어갈 내용을 각각 쓰시오. 

<처리결과>

1 4 7 10 13
2 5 8 11 14
3 6 9 12 15
public class Exam {
	public static void main(String[] args) {
		int[][] arry = new int[(1)][(2)];
		for (int i = 0; i < 3; i++) {
			for (int j = 0; j < 5; j++) {
				arry[i][j] = j * 3 + (i + 1);
				System.out.print(arry[i][j] + " ");
			}
			System.out.println();
		}
	}
}

[정답]

  • 답(1): 3
  • 답(2): 5

11. 다음은 JAVA로 작성된 프로그램이다. 이를 실행한 출력 결과를 쓰시오. 

class Parent {
    int compute(int num) {
        if (num <= 1)
            return num;
        return compute(num - 1) + compute(num - 2);
    } 
}

class Child extends Parent {
    @Override
    int compute(int num) {
        if (num <= 1)
            return num;
        return compute(num - 1) + compute(num -3);
    }
}

public class Exam {
    public static void main(String[] args) {
        Parent obj = new Child();
        System.out.print(obj.compute(4));
    }
}

[정답]

  • 1

12. 다음은 Python 언어로 작성된 프로그램이다. 이를 실행한 출력 결과를 쓰시오. 

lol = [[1, 2, 3], [4, 5], [6, 7, 8, 9]]
print(lol[0])
print(lol[2][1])

for sub in lol:
	for item in sub:
		print(item, end = "")
	print()

[정답]

[1, 2, 3]
7
123
45
6789

13. 데이터베이스에서 릴레이션을 처리하는 데 여러 문제를 초래하는 이상 현상 3가지를 쓰시오. 

[정답]

  • 삽입 이상, 삭제 이상, 갱신 이상

14. 다음은 데이터 회복 기법에 대한 설명이다. 빈 칸 (     ) 안에 공통으로 들어갈 가장 적합한 용어를 쓰시오. 

데이터 회복 기법은 트랜잭션들을 수행하는 도중 장애로 인해 손상된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구시키는 작업을 말한다. 다양한 데이터 회복 기법 중 (     ) 회복 기법은 로그를 이용한 회복 기법으로 데이터베이스에 대한 갱신로그를 저장함으로서 회복에 대비한다. 일반적으로 데이터베이스와 로그의 동시 손상을 대비하여 별도의 전용 디스크에 로그를 저장할 수 있다. (     )회복 기법은 트랜잭션이 실행(활동) 상태에서 변경되는 내용을 그때그때 바로 데이터베이스에 적용하는 기법이다. 변경되는 모든 내용은 로그(Log)에 기록하여 장애 발생 시 로그(Log)의 내용을 토대로 회복시킨다. (     ) 회복 기법은 장애가 발생하면 로그 파일에 기록된 내용을 참조하여, 장애 발생 시점에 따라 Redo나 Undo나 실행하여 데이터베이스를 복구한다. 

[정답]

  • 즉시 갱신 또는 Immediate Update

15. 다음 프로세스 상태 전이도의 빈 칸 (1) ~ (3)에 알맞은 프로세스 상태를 각각 쓰시오. 

[정답]

  • 답 (1): 준비 또는 Ready
  • 답 (2): 실행 또는 Run
  • 답 (3): 대기 또는 Wait 또는 Block

16. 다음 설명에 해당하는 용어를 쓰시오. 

IETF(Internet Engineering Task Force)에서 IP Address의 부족과 Mobile IP Address 구현 문제를 해결 방안으로 만들어진 IPv4를 보완하는 차세대 IP Address 주소 체계이다. 주소 유형은 유니캐스트, 멀티캐스트, 브로드캐스트 3가지이며, 주소의 길이는 128bit이고 8개 그룹으로 배열되며 각 그룹은 16비트이다. 각 그룹은 4개의 16진수로 표현되며 그룹 간은 콜론(:)으로 구분된다. 패킷 전송 시 멀티캐스트를 사용한다. 

[정답]

  • IPv6

17. 다음 설명에 해당하는 운영체제를 적으시오.  

- 1960년대 말 벨 연구소(Bell Labs)에서 개발된 운영체제로 다중 사용자, 멀티태스킹 운영체제이다. 
- 이식성이 높으며 대화식 운영체제로 서버 운영에 필수적인 CLI 인터페이스가 강력하다. 
- C언어라는 고급 프로그래밍 언어로 커널까지 대부분 작성된 운영체제이다. 
- 파일 생성, 삭제, 보호 기능을 가지며, 디렉터리 구조는 계층적 트리 구조 형태이다.

[정답]

  • 유닉스 또는 UNIX

18. 다음 설명에 해당하는 용어를 쓰시오. 

- PC처럼 가격이 싼 컴퓨팅 서버들과 저장장치들을 활용하여 가상화된 거대한 저장장치를 형성하고 그안에 빅데이터(Big Data)를 상대적으로 쉽게 저장하고 활용하여 처리할 수 있도록 한 분산 파일 시스템이다. 
- 2004년 미국 프로그래머 더그 컷팅이 방대한 데이터를 처리하기 위하여 구글의 맵리듀스(MapReduce)등을 활용해 이를 개발하였다. 

[정답]

  • 하둡 또는 Hadoop

19. 다음 설명에 해당하는 용어를 쓰시오. 

오픈소스 분산 컴퓨팅 기술로 분산 처리와 암호화 기술을 동시에 적용한 분산 데이터베이스(Distributed Ledger)의 한 형태이다. 가상화폐의 거래 정보를 기록한 원장인 '블록'이라고 하는 소규모 데이터들이 특정 기관의 중앙 서버에서 공동으로 기록 관리되지 않고 P2P 방식을 기반으로 생성된 체인 형태의 연결고리 기반 분산 데이터 저장 환경에 저장된다. 때문에 누구라도 임의로 수정할 수 없지만 누구나 변경의 결과를 열람할 수 있는 기술이다. 

[정답]

  • 블록체인

20. 다음 설명하는 용어를 영문으로(Full name 또는 영문 약어)로 작성하시오. 

우리나라 말로 번역하면 "네트워크 주소 변환"으로 내부에서 사용하는 사설 IP 주소와 외부로 보여지는 공인 IP 주소 간의 IP Address 변환 방식을 말한다. 한정된 하나의 공인 IP를 여러 개의 내부 사설 IP로 변환하여 사용하기 위한 기술이며, 내부 네트워크 주소의 보안을 위해 사용하는 방법 중 하나이다. 

[정답]

  • NAT 또는 Network Address Translation

 

 

 

 

 

 

모든 답은 아래 교재를 참조합니다. 

 

싸니까 믿으니까 인터파크도서

생년월일 - 출생지 - 출간도서 0종 판매수 0권 (주)익스터디 대표이사, 두목넷 사무자동화 부분 대표 강사로 IT 자격증 분야에서 '왕두목'이라는 애칭으로 활발히 활동하고 있습니다. 경기공업대

book.interpark.com

 

1. 형상 통제에 대해 간략히 설명하시오. 

[정답]

  • 형상 통제는 형상에 대한 변경 요청이 있을 경우 변경 여부와 변경 활동을 통제하는 것을 말한다. 변경된 요구사항에 대한 타당성을 검토하여 변경을 실행(변경관리)하고, 그에 따라 변경된 산출물에 대한 버전관리를 수행하는 것이 형상 통제의 주요 활동이다. 즉, 형상 통제는 소프트웨어 형상 변경 요청을 검토 승인하여 현재의 베이스라인(Baseline)에 반영될 수 있도록 통제하는 것을 의미한다. 

 

2. EAI 구축 유형 중 Message Bus와 Hybrid를 제외한 빈 칸 1~2에 해당하는 나머지 두 가지 유형을 쓰시오. 

유형 설명
(   1   ) - 중간에 미들웨어를 두지 않고 각 애플리케이션 간 직접 연결
- 솔루션 구매 없이 통합, 상대적 저렴하게 통합 가능
- 변경, 재사용 어려움
(   2   ) - 단일 접점이 허브 시스템을 통해 데이터를 전송하는 중앙 집중적 방식
- 모든 데이터 전송 보장, 확장 및 유지 보수 용이
- 허브 장애 시 전체 영향
Message Bus (ESB 방식) - 애플리케이션 사이 미들웨어(버스)를 두어 처리
- 미들웨어 통한 통합
- 어댑터가 각 시스템과 버스를 두어 연결하므로 뛰어난 확정성, 대용량 처리 가능
Hybrid - 유연한 통합 작업이 가능
- 표준 통합 기술, 데이터 병목 현상 최소화

[정답]

  • (정답 1) Point to Point 또는 Peer to Peer
  • (정답 2) Hub & Spoke

3. UI(User Interface)는 사용자와 컴퓨터 상호 간의 소통을 원활히 할 수 있도록 도와주는 연계 작업을 뜻한다. UI의 설계 원칙 중 직관성에 대해 간략히 설명하시오. 

[정답]

  • 설계 구조를 누구나 쉽게 이해하고 사용할 수 있어야 한다. 
  • 사용자가 한눈에 기능을 쉽게 파악할 수 있도록 해야 한다. 

4. 다음 제어 흐름 그래프에 대한 분기 커버리지(Branch Coverage)를 수행하는 경우의 테스트 케이스 경로를 7단계와 6단계로 나눠서 순서대로 나열하시오.  

[정답]

  • 7단계: 1 - 2 - 3 - 4 - 5 - 6 - 7
  • 6단계: 1 - 2 - 4 - 5 - 6 - 1

5. 소프트웨어 테스트 기법 중 프로그램의 외부 사용자 요구사항 명세를 보면서 테스트를 수행하며 주로 구현된 기능을 테스트한다. "명세 기반 테스트"라고도 하며,동치 분할 테스트, 경계 값 테스트 등과 같이 내부 구조가 보이지 않는 테스트 기법에 해당하는 용어를 쓰시오. 

[정답]

  • 블랙박스 테스트 또는 블랙박스 검사 또는 Black-box test 또는 Black-box testing

6. 아래 보기의 <학생> 테이블에 '주소' 컬럼을 추가하는 SQL문을 완성하는 빈 칸 1~2에 알맞은 용어를기입하시오. (단, 추가 컬럼의 이름은 '주소'이고, 데이터 타입은 가변 문자형 20자리로 VARCHAR(20)이다.  

<학생>

학번 이름 학과 전화번호
2020021 철수 컴퓨터 010-1111-1111
2020001 민수 수학 010-2222-2222
2021022 영희 컴퓨터 010-3333-3333
2022013 민호 통계 010-4444-4444

<SQL문>

(   1   ) TABLE 학생 (   2   ) 주소 VARCHAR(20);

 

[정답]

  • 답 (1) : ALTER
  • 답 (2): ADD

7. <성적> 테이블을 대상으로 <요구사항>을 적용하여 아래 <결과>와 같이 출력하는 SQL문을 작성하시오.  

<성적>

학번 과목번호 과목이름 학점 점수
100 2000 데이터베이스 A 95
101 1000 자료구조 B 80
102 2000 데이터베이스 A 99
103 2000 데이터베이스 B 88
104 1000 자료구조 C 79

<결과>

과목이름 최소점수 최대점수
데이터베이스 88 99

<요구사항>

1. <성적> 테이블에서 과목별 평균 점수가 90점 이상인 과목이름, 최소점수, 최대점수를 출력하시오. 
2. 단, WHERE 구문은 사용 불가능하며, GROUP BY, HAVING, AS 구문을 반드시 포함하여 작성하시오. 
3. SQL 명령문은 대/소문자를 구분하지 않는다. 
4. SQL 명령문의 종결 문자인 세미콜론(;)은 생략 가능합니다. 
5. 실행 결과가 일치하더라도 <요구사항>을 모두 적용하지 않은 SQL문을 작성하면 오답으로 간주합니다. 

[정답]

SELECT 과목이름, MIN(점수) AS 최소점수, MAX(점수) AS 최대점수
FROM 성적
GROUP BY 과목이름 HAVING AVG(점수) >= 90;

8. 아래 보기의  <학생> 테이블에서 이름이 "민수"인 학생 튜플을 삭제하는 SQL 문을 작성하시오. (단, 다음의 요구사항을 참고하여 작성하시오.)

<요구사항>

1. 이름 속성의 데이터는 문자형이다. 문자형 데이터는 작은따옴표(' ')로 표시하시오. 
2. SQL명령문은 대/소문자를 구분하지 않는다. 
3. SQL명령문의 종결 문자인 세미콜론(;)은 생략 가능합니다. 
4. 실행 결과가 일치하더라도 <요구사항>을 모두 적용하지 않은 SQL문을 작성하면 오답으로 간주합니다. 

<학생>

학번 이름 학과 전화번호
2020021 철수 컴퓨터 010-1111-1111
2020001 민수 수학 010-2222-2222
2021022 영희 컴퓨터 010-3333-3333
2022013 민호 통계 010-4444-4444

[정답]

DELETE FROM 학생 WHERE 이름 = "민수";

9. 다음은 C언어로 작성된 프로그램이다. 이를 실행한 출력 결과를 쓰시오. 

#include <stdio.h>

void main()
{
	int i = 0, c = 0;
	while (i < 10) {
		i++;
		c *= i;
		// printf("%d *= %d \n", c, i);
	}
	printf("%d", c);
}

---
0 *= 1 
0 *= 2 
0 *= 3 
0 *= 4 
0 *= 5 
0 *= 6 
0 *= 7 
0 *= 8 
0 *= 9 
0 *= 10 
0

[정답]

  • 0

 

10. 다음은 C언어로 작성된 프로그램이다. 이를 실행한 출력 결과를 쓰시오. 

#include <stdio.h>

int r1() {
	return 4;
}

int r10() {
	return (30 + r1());
}

int r100() {
	return (200 + r10());
}

void main() {
	printf("%d", r100());
}

[정답]

  • 234

11. 다음은 JAVA로 작성된 프로그램이다. 이를 실행한 출력 결과를 쓰시오. 

public class Main 
{
	public static void main(String[] args){
		int i = 0; 
		int sum = 0;
		while (i < 10) {
			i++;
			if(i % 2 == 1)
				continue;
			System.out.printf("sum: %d, i: %d.%n", sum, i);
			sum += i;
			System.out.printf("sum +=i: %d.%n", sum);
			
		}
		System.out.println("sum: " + sum);
	}
}

---
sum: 0, i: 2.
sum +=i: 2.
sum: 2, i: 4.
sum +=i: 6.
sum: 6, i: 6.
sum +=i: 12.
sum: 12, i: 8.
sum +=i: 20.
sum: 20, i: 10.
sum +=i: 30.
sum: 30

[정답]

  • 30

12. 다음은 JAVA로 작성된 프로그램이다. 이를 실행한 출력 결과를 쓰시오.

abstract class Vehicle {
	String name;
	abstract public String getName(String val);
	
	public Vehicle(String val){
		this.name = val;
	}
	
	public String getName() {
		return "Vehicle name: " + name;
	}
}

class Car extends Vehicle {
	public Car(String val) {
		super(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 Exam {
	public static void main(String[] args) {
		Vehicle obj = new Car("Spark");
		System.out.println(obj.getName());
	}
}

[정답]

  • Vehicle name : Spark

13. C++언어의 생성자(Constructor)에 대해 간략히 설명하시오.

[정답]

  • 생성자는 객체 생성 시 자동으로 호출되는 메소드로 멤버를 초기화하는 목적으로 주로 사용된다. 

14. 스키마(Schema)에 대해 간략히 설명하시오.

[정답]

  • 스키마는 데이터베이스의 전체적인 구조와 제약조건에 대한 명세를 기술 및 정의한 것을 말하며, 스킴(Scheme)이라고도 한다. 

15. 다음에서 설명하는 관계 대수 연산의 기호를 쓰시오.

릴레이션 A에서 릴레이션 B의 모든 조건을 만족하는 튜플을 제외한 후 프로젝션하는 연산자

[정답]

  • ÷

16. 대규모 네트워크를 안정되게 운영할 수 있는 표준 라우팅 프로토콜로 최적의 경로는 계산할 때 SPF(Shortest Path First) 또는 다익스트라(dijkstra) 알고리즘을 이용하여 각 목적지까지의 최적 경로를 계산하는 동적 라우팅 프로토콜로 링크 상태 라우팅 프로토콜을 무엇이라고 하는지 영문 약어로 쓰시오.

[정답]

  • OSPF

17. TCP/IP에서 신뢰성 없는 비연결형 프로토콜인 IP를 대신하여 송신측으로 네트워크의 IP 상태 및 에러 메시지를 전달해주는 프로토콜을 무엇이라고 하는지 영문 약어로 쓰시오. 

[정답]

  • ICMP

18. 헝가리안 표기법에 대해 간략히 설명하시오. 

[정답]

  • 헝가리안 표기법은 컴퓨터 프로그래밍의 변수명, 함수명 등의 식별자 이름을 작성할 때 데이터 타입의 정보를 이름 접두어로 지정하는 코딩의 규칙이다. 예를 들어 인덱스 역할을 하는 int형 변수명을 inum으로 문자열 문자열 변수명을 strName으로 이름을 지정하는 표기법이다.

19. 리팩토링(Refactoring)의 목적에 대해 간략히 설명하시오. 

[정답]

  • 리팩토링의 목적은 가독성을 높이고 유지보수의 편리성을 높이는 것이다. 
  • 겉으로 보이는 소프트웨어의 기능을 변경하지 않고 내구 구조만 변경하여 소프트웨어를 보다 이해하기 쉽고, 수정하기 쉽도록 만드는 것이다.
  • 소프트웨어의 디자인을 개선하기 위해 수행한다.

20. 빈 칸 (   ) 안에 공통으로 들어갈 가장 적합한 용어를 쓰시오. 

(     )의 본래 의미는 외교 분야에서의 의례 또는 의정서를 의미하는 용어였다. 심리학자 톰 마릴은 컴퓨터가 메시지를 전달하고, 메시지가 제대로 도착했는지 확인하며, 도착하지 않았을 경우 메시지를 재전송하는 일련의 방법을 가리켜 '기술적 은어'라는 뜻으로 (    )(이)라 불렀다. 

[정답]

  • 프로토콜 또는 Protocol

+ Recent posts