1. 목적에 따른 디자인 패턴의 유형에는 생성, 구조, () 이/가 있다. 괄호 () 안에 알맞은 유형을 쓰시오.
- 디자인 패턴
- 목적: 생성 / 구조 / 행위
- 범위: 클래스 / 객체
👉 행위
2. UML을 이용한 판매와 관련된 다이어그램이다. 해당 다이어그램의 명칭을 쓰시오.
- 구조적 다이어그램(Structure Diagram)
- 클래스 다이어그램
- 시스템을 구성하는 클래스들의 사이의 관계를 표현한다.
- 패키지 다이어그램
- 클래스나 유스케이스 등으 포함한 여러 모델 요소들을 그룹화하여 패키지를 구성하고 패키지들 사이의 관계를 표현한다.
- 복합체 구조 다이어그램
- 복합 구조의 클래스와 컴포넌트 내부 구조를 표현한다.
- 객체 다이어그램
- 컴포넌트 다이어그램
- 배치 다이어그램
- 소프트웨어, 하드웨어, 네트워크를 포함한 실행 시스템의 물리 구조를 표현한다.
- 행위 다이어그램(Behavior Diagram)
- 유스케이스 다이어그램
- 활동 다이어그램
- 업무 처리 과정이나 연산이 수행되는 과정을 표현한다.
- 콜라보레이션 다이어그램
- 순차 다이어그램(Sequence Diagram)과 같으며 모델링 공간에 제약이 없어 구조적인 면을 중시한다.
- 생태 머신 다이어그램
- 순차 다이어그램
- 시간 흐름에 따른 객체 사이의 상호작용을 표현한다.
- 통신 다이어그램
- 객체 사이의 관계를 중심으로 상호작용을 표현한다.
- 상호작용 개요 다이어그램
- 여러 상호작용 다이어그램 사이의 제어 흐름을 표현한다.
- 타이밍 다이어그램
- 객체 상태 변화와 시간 제약을 명시적으로 표현한다.
👉 패키지 다이어그램
3. 일반, 업무용, 게임, 오락 등의 일반적인 업무에 사용하는 테스트 오라클로 특정한 몇 개의 입력 값에 대해서만 기대하는 결과를 제공해 주는 오라클을 쓰시오.
- 테스트 오라클
- 참(True) 오라클
- 모든 입력값에 적합한 결과를 생성하여, 발생한 오류를 모두 검출
- 일관성 검사(Consistent) 오라클
- 애플리케이션 변경이 있을 때, 수행 전과 후의 결괏값이 같은지 확인
- 샘플링(Sampling) 오라클
- 임의로 선정한 몇 개의 입력값에 대해서만 기대하는 결과를 제공
- 휴리스틱(Heuristic) 오라클
- 임의의 입력값에 대해 올바른 결과를 제공하고, 나머지 값들에 대해서는 휴리스틱(추청)으로 처리
👉 샘플링 오라클
4. 테스트 기법 중 다음과 같이 입력값을 넣고, 출력값을 비교하는 테스트 기법을 쓰시오.
테스트 케이스 | 1 | 2 | 3 | 4 |
---|
구간 | 0 ~ 59 | 60 ~ 79 | 80 ~ 89 | 90 ~ 100 |
테스트 데이터 | 45 | 70 | 85 | 95 |
예측값 | F | C | B | A |
결괏값 | F | C | B | A |
- 블랙박스 테스트
- 동등 분할 기법
- 입력 자료에 초점을 맞춰 테스트 케이스를 만들어 검사하는 방법
- 경곗값 분석
- 입력 조건의 경곗값을 테스트 케이스로 선정하는 방법
- 원인-효과 그래프 검사
- 입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음 효용성이 높은 테스트 케이스를 선정하여 검사하는 기법
- 오류 예측 검사
- 과거의 경험이나 테스터의 감각으로 테스트하는 기법
- 비교 검사
- 여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 동일한 결과가 출력되는지 테스트하는 기법
👉 동등분할 테스트
5. 다음 조건을 만족하면서 학과별로 튜플 수가 얼마인지 구하는 SQL문을 작성하시오.
<요구사항>
- 대소문자를 구분하지 않는다.
- WHERE 구문을 사용하지 않는다.
- GROUP BY를 사용한다.
- 세미콜론(;)은 생략 가능하다.
- 별칭(AS)을 사용해야 한다.(별칭 사용 시 별칭은 작은 따옴표를 써야 함)
- 집계 함수를 사용해야 한다.
학생
학과 | 학생 |
---|
전기 | 이순신 |
컴퓨터 | 안중근 |
컴퓨터 | 윤봉길 |
전자 | 이봉창 |
전자 | 강우규 |
결과
- 집계함수
- AVG, SUM, MIN, MAX, COUNT
👇
SELECT
학과, COUNT(학과) AS '학과별튜플수'
FROM 학생
GROUP BY 학과 ← 학과를 기준으로 묶음
6. 스니핑(Sniffing)에 대하여 서술하시오.
👉 네트워크상에 통과되는 패킷들의 내용을 엿보는 행위이다.
7. 정보보안의 3요소 중 가용성에 대해서 서술하시오.
👉 인가된 사용자가 정보를 요구할 때 적시에 제공되어야 하는 원칙이다.
8. 데이터베이스의 이상(Anomaly)의 종류 3가지를 쓰시오.
👉 삽입이상, 삭제이상, 갱신이상
9. 데이터베이스의 회복(Recovery) 기법 중 Rollback 시 Redo, Undo가 모두 실행되는 트랜잭션 처리법으로 트랜잭션 수행 중 갱신 결과를 바로 DB에 반영하는 기법은 무엇인가?
👉 즉시 갱신 회복 기법
10. 다음은 프로세스 상태 전이도이다. 1,2,3에 알맞은 상태를 쓰시오. (잘나옴!)
👉 1. 준비, 2. 실행, 3. 대기
11. 현재 IPv4의 확장형으로 IPv4가 가지고 있는 주소 고갈, 보안성, 이동성 지원 등의 문제점을 해결하기 위해서 개발된 128비트 주소체계를 갖는 차세대 인터넷 프로토콜은 무엇인가?
👉 IPv6
12. 데니스 리치와 켄톰슨 등이 함께 벨 연구소를 통해 만든 운영체제이며, 90% 이상 C언어로 구현되어 있고, 시스템 프로그램이 모듈화되어 있어서 다른 하드웨어 기종으로 쉽게 이식 가능하며 계층적 트리 구조를 가짐으로써 통합적인 파일 관리가 용이한 운영체제는 무엇인가?
👉 유닉스(UNIX)
13. 오픈 소스 기반으로 한 분산 컴퓨팅 플랫폼으로, 일반 PC급 컴퓨터들로 가상화된 대형 스토리지를 형성하고 그 안에 보관된 거대한 데이터 세트를 병렬로 처리할 수 있도록 개발된 자바 소프트웨어 프레임워크로 구글, 야후 등에 적용한 기술은 무엇인가?
- 데이터베이스 기초 활용하기
- 빅데이터
- 빅데이터 관련 용어 참고!(수제비 3-41~3-45)
👉 하둡
14. 분산 컴퓨팅 기술 기반의 데이터 위변조 방지 기술로 P2P방식을 기반으로 하여 소규모 데이터들이 연결되어 형성된 '블록'이라는 분산 데이터 저장 환경에 관리 대상 데이터를 저장함으로써 누구도 임의로 수정할 수 없고 누구나 변경의 결과를 열람할 수 있게끔 만드는 기술은 무엇인가?
👉 블록체인
15. IP 패킷에서 외부의 공인 IP주소와 포트 주소에 해당하는 내부 IP주소를 재기록하여 라우터를 통해 네트워크 트래픽을 주고받는 기술은 무엇인가?
👉 NAT(Network Address Transformation)
16. 다음은 C언어로 작성된 프로그램이다. 이를 실행한 출력 결과를 쓰시오.
#include <stdio.h>
void main(){
char *p = "KOREA"
printf("%s\n" , p);
printf("%s\n" , p+3);
printf("%c\n" , *p);
printf("%c\n" , *(p+3));
printf("%c\n" , p+2);
- 포인터 조심하기
- 마지막 문자는 아스키코드를 알아야 풀 수 있음
👇
KOREA
EA
K
E
M
17. 다음은 자바 소스 코드이다. 출력 결과를 보고 (1), (2)에 알맞는 값을 적으시오.
public class good {
public static void main(String[] args) {
int[][]a = new int[(1)][(2)];
for(int i = 0; i <3; i++){
for(int j=0; j < 5; j++){
a[i][j] = j*3+(i+1);
System.out.print(a[i][j]+"");
}
System.out.println();
}
}
}
---
[출력 결과]
1 4 7 10 13
2 5 8 11 14
3 6 9 12 15
👉 (1): 3, (2): 5
18. 다음은 n이 10일 때, 10을 2진수로 변환하는 자바 소스 코드이다. (1), (2)에 알맞는 값을 적으시오.
class good {
public static void main (String[] args) {
int[]a = new int[8];
int i=0; int n=10;
while ( 1. ) {
a[i++] = ( 2. );
n /= 2;
}
for(i=7; i>=0; i--){
System.out.print(a[i]);
}
}
}
---
[출력결과]
00001010
👇
(1): i < 8
(2): n%2
19. 다음은 자바 소스 코드이다. 출력 결과를 쓰시오.
class parent{
public int compute(int num){
if(num <=1) return num;
return compute(num-1) + compute(num-2);
}
}
class Child extends parent {
public int compute(int num){
if(num<=1) return num;
return compute(num-1) + compute(num-3);
}
}
class good{
public static void main (String[] args){
parent obj = new Child();
System.out.print(obj.compute(4));
}
}
👉 1
20. 다음은 파이썬 소스 코드이다. 출력 결과를 쓰시오.
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
1 2 3
4 5
6 7 8 9