01. 다음 설명에 해당하는 용어를 쓰시오.
|
AD-hoc-Network(애드혹 네트워크)
02. 다음 ①, ②에 설명하는 알맞은 답안을 쓰시오.
|
① UI(User Interface) , ② UX(User Experience)
* UI 설계 원칙
- 직관성 : 화면의 버튼, 항목, 입력란 등 누구나 쉽게 이해하고 사용할 수 있어야 한다.
- 유효성 : 사용자의 목적을 정확히 달성할 수 있도록 유용하고 효과적이어야 한다.
- 학습성 : 사용자가 쉽게 배우고 익힐 수 있어야 한다.
- 유연성 : 사용자의 요구를 최대한 수용하면서 오류를 최소화해야 한다.
03. 디자인 패턴 중 클래스나 서로 상호작용하는 방법이나 책임 분배 방법을 정의하는 패턴으로, Chain of Responsibility, Command, Iterator, Observer 패턴 등이 있다.
행위 패턴
2024.09.23 - [기술 노트] - [Study] 디자인 패턴(Design Pattern)
04. 데이터베이스에서 트랜잭션의 특징인 ACID 중 원자성(Atomicity)의 개념에 대하여 간략히 설명하시오.
연산의 결과는 모두 반영되거나, 모두 반영되지 않아야 한다. (Commit, Rollback)
* 원자성(Atomicity)
- 하나의 트랜잭션이 완료될 때, 처리가 완료되거나 그 이전의 상태여야 한다.
- 트랜잭션 연산은 완전하게 수행이 완료되지 않으면 전혀 수행되지 않아야 한다.
- 트랜잭션 연산 시 Commit, Rollback 을 이용하여 적용 또는 취소로 한꺼번에 완료되어야 하는 성질이다.
05. 부분 함수적 종속성을 제거하여 완전 함수 종속을 만족하는 정규형이 무엇인지 쓰시오.
제 2정규형 (2NF)
* 정규화 과정
비정규 릴레이션
⬇️
원자값이 아닌 도메인을 분해
1NF ⬇️
부분 함수 종속 제거
2NF ⬇️
이행 함수 종속 제거
3NF ⬇️
결정자나 후보키가 아닌 함수 종속 제거
BCNF ⬇️
다치 종속성 제거
4NF ⬇️
조인 종속
5NF ⬇️
06. 평문의 길이와 동일한 스트림(Stream)을 생성하여 비트 단위로 암호화하며 DES를 대신하여 새로운 표준이 된, 블록 크기는 128bit이고 키 길이는 128/192/256bit인 SPN(Substitution-Permutation Network) 구조의 비밀키 암호화 기법을 의미하는 용어를 쓰시오.
AES(Advanced Encryption Standard, 고급 암호 표준)
* 스트림 방식의 비밀키 암호화 기법
DES (Data Encryption Standard) |
- 1970년대 초 IBM이 개발한 알고리즘이다. - 16라운드 Feistel 구조를 가진다. - 평문을 64bit로 블록화를 하고, 실제 키의 길이는 56bit를 이용한다. - 전사 공격(Brute-Force Attack)에 취약하다. |
AES (Advanced Encryption Standard) |
- DES를 대신하여 새로운 표준이 되었다. - 블록 크기는 128bit이고, 키 길이는 128/192/256bit이다. - SPN(Substitution_Permutation Network) 구조이다. |
* 블록암호 알고리즘
DES | 64비트 블록, 56비트 키, 16라운드, Feistel 구조 |
3-DES | 2개의 키, 암호화, 복호화, Feistel 구조 |
AES | 128비트 블록, 80비트 키, 32라운드, Feistel 변형구조 |
SKIPJACK | 64비트 블록, 80비트 키, 32라운드, Feistel 변형구조 |
IDEA | 64비트 블록, 128비트 키, 8라운드, Feistel+SPN구조(스위스) |
SEED | 128비트블록, 128비트 키, 16라운드, Feistel 구조(한국) |
ARIA | 128비트블록, 128/192/256비트 키, 12/14/16라운드, SPN 구조(한국) |
LEA | 128비트블록, 128/192/256비트 키, 24/28/32라운드, SPN 구조(한국, 경량) |
* 스트림암호 알고리즘
- LFSR : 선형 피드백 시프트 레지스터
- RC4 : 인터넷 보안 프로토콜에서 널리 사용
- A5 : GSM 통신에서 사용
* 공개키암호 알고리즘
- 소인수 분해 : RSA, Rabin
- 이산대수 : Diffie-Hellman, DSA, ELGamal
- 타원곡선 : ECC
* 단방향암호 알고리즘
- MD5 : 빠른 계산 속도, 취약점 발견
- SHA : NIST(미국 국립표준기술연구소)에 의해 개발된 해시 함수
- HAS-160 : 한국에서 개발된 해시 함수, KCDSA(디지털서명)에 사용
07. 다음 <학생> 테이블에서 이름이 '이'씨로 시작하는 사람을 내림차순 정렬로 출력하는 SQL 문을 완성하시오.
학번 | 이름 | 학년 | 학과 |
181101 | KKK | 1 | 컴퓨터공학과 |
171201 | HHH | 2 | 전자공학과 |
171302 | XXX | 3 | 컴퓨터공학과 |
161107 | YYY | 3 | 건축공학과 |
151403 | QQQ | 4 | 전자공학과 |
SELECT *
FROM 학생
WHERE 이름 LIKE '이%' ORDER BY 이름 DESC;
* 문자열 부분 매치(LIKE절)와 정렬(오름차순, 내림차순)
- 부분 매치 질의문은 조건문 작성 시 자료의 일부를 가지고 비교하여 검색하는 질의문이다.
- 부분 매치 질의문에서 '%'는 여러 문자를 대신하고, '_'는 한 자리를 대신한다.
- '%'나 '_'를 이용하여 조건문을 작성할 때는 '='를 대신하여 'LIKE'를 이용한다.
08. 하나의 트랜잭션이 데이터를 액세스하는 동안 다른 트랜잭션이 그 데이터 항목을 액세스할 수 없도록 하는 병행 제어 기법이 무엇인지 쓰시오.
로킹(Locking)
* 병행제어
- 병행제어를 하지 않았을 때의 문제점
- 갱신 분실
- 비완료 의존성
- 모순성
- 연쇄 복귀
- 병행제어 기법
- 로킹
- 2단계 로킹
- 타임스탬프
- 낙관적 병행제어
- 다중 버전 병행 제어
* 회복 기법
- 로그 기반 회복 기법
- 검사점 회복 기법
- 그림자 페이징 회복 기법
- 미디어 회복 기법
- ARIES 회복 기법(분석, REDO, UNDO)
09. 다음 ①, ②, ③에 설명하는 알맞은 답안을 쓰시오.
|
① 절차적 응집도 , ② 통신적(교환적) 응집도 , ③ 기능적 응집도
* 응집도(Cohesion)
- 모듈 안의 요소들이 서로 기능적으로 관련되어 있는 정도
- 응집도가 강할수록 높은 품질의 모듈이다.
* 응집도 유형
기능적 (Functional) |
모듈 내부의 모든 기능 요소들이 한 문제와 연관되어 수행되는 경우 | 응집도 강함 |
순차적 (Sequential) |
한 모듈 내부의 한 기능요소에 의한 출력 자료가 다음 기능 요소의 입력 자료로 제공되는 경우 | |
통신적 (Communication) |
동일한 입력과 출력을 사용하는 소작업들이 모인경우 | |
절차적 (Procedural) |
모듈이 다수의 관련 기능을 가질 때 모듈 내부의 기능 요소들이 그 기능을 순차적으로 수행할 경우 | |
시간적 (Temporal) |
특정 시간에 처리되는 여러 기능을 모아 한 개의 모듈로 작성할 경우 | |
논리적 (Logical) |
유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우 | |
우연적 (Coincidental) |
모듈 내부의 각 기능 요소들이 서로 관련이 없는 요소로만 구성된 경우 | 응집도 약함 |
10. 학생 테이블에서 점수가 90점 이상인 학생의 과목평가를 'A'로 수정하는 SQL문을 완성하시오.
( ① ) 학생
( ② ) 과목평가 = 'A' WHERE 점수 >= 90 |
① UPDATE , ② SET
* UPDATE 명령문
- SQL의 DML 명령어 중 UPDATE 명령문은 테이블의 자료(튜플) 중에서 값을 변경하고자 하는 경우에 사용되는 명령문이다.
- 형식 : UPDATE 테이블명 SET 변경속성명 = 변경값 WHERE 조건식;
11. 다음 패킷 교환방식에 대한 설명으로 ①, ②에 알맞은 용어를 쓰시오.
|
① 가상 회선 방식(Virtual Circuit) , ② 데이터그램 방식(Datagram)
* 패킷 교환 방식(Packet Switching)
- 메시지를 일정한 길이의 전송 단위인 패킷으로 나누어 전송하는 방식이다.
- 다수의 사용자 간에 비대칭적 데이터 전송을 원할하게 하므로 모든 사용자 간에 빠른 응답 시간 제공이 가능하다.
- 전송에 실패한 패킷의 경우 재전송이 가능하다.
- 패킷 단위로 헤더를 추가하므로 패킷별 오버헤드가 발생한다.
- 현재 컴퓨터 네트워크에서 주로 사용하는 방식이며, 패킷교환공중데이터통신망(PSDN)이라고도 한다.
- 패킷 교환 방식은 축적 후 전달(Store-and-Forward) 방식이다.
- 메시지를 작은 데이터 조각인 패킷으로 블록화한다.
- 종류 : 가상 회선 방식, 데이터그램 방식
12. 학생 정보와 학과 정보를 조인하여 결과값을 출력하는 SELECT문을 완성하시오.
SELECT * FROM 학생정보 T1 JOIN 학과정보 T2
( ① ) T1.학과 = T2.( ② ) |
① ON , ② 학과
* 동등 조인(Equi Join)에서의 JOIN~ON
- 동등 조인은 조인 대상 테이블에서 공통 속성을 '='(equal) 비교를 통해 같은 값을 가지는 행을 연결한다.
- 임의의 조건을 지정하거나 조인할 컬럼을 지정하려면 ON절을 사용한다.
- 두 테이블을 JOIN 연산한 뒤 자료를 검색하는 형태의 질의문을 말한다.
- 형식 : [테이블1] JOIN [테이블2] ON [조인조건]
13. 테스트 하네스 도구 구성요소 중 하향식 테스트 시 상위 모듈은 존재하나 하위 모듈이 없는 경우의 테스트를 위해 임시 제공되는 모듈로 골격만 있는 또는 특별한 목적의 소프트웨어 컴포넌트를 구현한 것을 의미하는 용어를 쓰시오.
스텁(stup)
* 테스트 스텁 (Test Stub)
- 하향식 테스트 시 상위 모듈은 존재하나 하위 모듈이 없는 경우의 테스트를 위해 임시 제공되는 모듈이다.
- 골격만 있는 또는 특별한 목적의 소프트웨어 컴포넌트를 구현한 것을 의미한다.
- 스텁을 호출하거나 스텁에 의존적인 컴포넌트를 개발하거나 테스트할 때 사용한다.
14. 화이트박스 테스트에서 수행하는 구조적 커버리지의 설명으로 알맞은 것을 쓰시오.
|
① 구문 커버리지(문장 커버리지) , ② 결정 커버리지(분기 커버리지) , ③ 조건 커버리지
* 코드 커버리지
- 구문 커버리지 : 구문에 대해 한 번 이상 수행
- 조건 커버리지 : 개별 조건식에 대해 수행
- 결정 커버리지 : 결정포인트 내의 모든 분기문에 대해 수행
- 조건/결정 커버리지 : 결정 포인트 T/F, 개별 조건식 T/F
- 변경 조건/결정 커버리지 : 모든 결정포인트 내의 개별 조건식은 적어도 한 번 T/F
- 다중 조건 커버리지 : 가능한 조합을 100% 보장
15. 다음은 데이터 모델링에 대한 설명이다. 빈칸에 들어갈 가장 적합한 용어를 골라 쓰시오.
|
① 기능 모델링 (Functional Modeling) , ② 동적 모델링 (Dynamic) , ③ 정보 모델링 (Information)
* 객체지향 분석 방법론
- Rumbaugh(럼바우) 방법
- 객체 모델링 : 객체 다이어그램
- 동적 모델링 : 상태 다이어그램
- 기능 모델링 : DFD
- Booch(부치) 방법 : 미시적 및 거시적 개발 프로세스
- Jacobson 방법 : Use case를 중심으로 한 분석 방법
- Coad와 Yourdon 방법 : E-R 다이어그램을 사용
- Wirfs-Brcock 방법 : 분석과 설계의 구분 없음
* 정보 모델링
- 정보모델링(Information Modeling)은 시스템에 필요한 엔티티(객체)들을 정의하고 이들 엔티티 사이의 연관성을 규명하는 작업이다.
- 이 모델은 시스템의 기능이나 동작에 초점을 맞추기 보다는 시스템을 구성하고 있는 객체를 중심으로 객체의 특성을 정의한다.
- 정보 모델링은 객체 모델링(Object Modeling), 개념적 데이터 모델링(Conceptual Data Modeling), 의미 데이터 모델링(Semantic Data Modeling)으로도 불린다.
[출처] 8장 정보모델링(Information Modeling)|작성자 EJ
16. 클래스를 생성하지 않고 사용할 수 있는 메소드를 선언할 때 사용하는 명령어이다. 아래 JAVA 소스코드에 들어갈 명령어가 무엇인지 쓰시오.
public class CAlssA{
public static void main(String args[]){
System.out.println(check(1));
}
( ) String check(int num) {
return num;
}
}
static
* Java의 static 메소드의 기본 형태
static 반환형 메소드명(매개변수) {
실행 코드;
return 반환값;
}
- 정적 필드처럼 static을 반환형 앞부분에 붙여 선언한 메소드를 정적 메소드(static 메소드)라고 한다.
- 정적 메소드는 객체를 생성하지 않고도 호출 가능하다.
- main() 메소드에서 check() 메소드는 Test.check()와 같이 클래스를 통해 호출할 수 있다.
- 보기의 private, protected, public은 자바의 접근 제어자(Access Modifier)이다.
17. 다음 JAVA 프로그램의 실행결과를 쓰시오.
public class Class01 {
public static void main(String[] args){
Class01 c1 = new Class01();
Class02 c2 = new Class02();
System.out.println(c1.sun(3, 2) + c2.sun(3, 2));
}
int sun(int x, int y){
return x+y;
}
}
class Class02 extends Class01 {
int sun(int x, int y) {
return x - y + super.sun(x, y);
}
}
11
- 해당 프로그램은 클래스 상속 시 부모 객체와 자식 객체 간 오버라이드된 메소드를 호출하여 반환값을 덧셈한 결과를 출력하는 Java 프로그램이다.
- a1.sun(3, 2)의 메소드 호출은 부모 객체 sun메소드를 호출하여 3+2의 결과를 반환하여 결과값은 5이다.
- a2.sun(3, 2)의 메소드 호출은 자식 객체 sun메소드를 호출하여 3-2+super.sun(3, 2)가 실행되어, 부모의 sun메소드를 호출하여 얻는 결과값 5를 반환하여 3-2+5를 수행한다. 결과값은 6이다.
- 최종 출력 결과는 5+6인 11이다.
18. 다음 C 프로그램의 실행결과를 쓰시오.
int main(){
int array[3];
int s = 0;
*(array + 0) = 1; // arr[0] = 1;
array[1] = *(array + 0) + 2; // arr[1] = 1 + 2 = 3;
array[2] = *array + 3; // arr[2] = 1 + 3 = 4;
for(int i=0; i<3; i++){
s = s + array[i];
}
printf("%d", s);
}
8
- 1차원 배열에서 배열의 이름은 배열의 첫 요소(0번지 요소)의 주소를 의미한다.
- 3개의 정수값을 지정하는 배열 arr에 포인터 연산자(*)를 통해 배열의 요소에 접근하며 배열의 요소 값을 할당한다.
i | 0 | 1 | 2 |
array[i] | 1 | 3 | 4 |
- for 반복 구조를 통해 1 + 3 + 4 = 8이 된다.
19. 다음 파이썬 프로그램의 실행결과를 쓰시오.
a = 100
result = 0
for i in range(1, 3):
result = a >> i
result = result + 1
print(result)
26
- for 명령문에 range() 함수를 결합하여 2회 반복 구조 내의 명령을 실행하도록 한다.
- range() 함수는 두 인수를 통해 반복의 횟수를 지정한다.
- range(1, 3)의 경우 1 이상부터 3 미만까지의 정수 리스트 객체를 생성하여 [1, 2]의 결과를 얻는다.
- 100의 2진수 표현은 1100100 이다.
- 100 >> 1 은 오른쪽 한개를 없애라는 것으로, 110010 이다.
- 이를 다시 10진수로 바꾸면, 50이다. 즉, result = 50
- result = result + 1 = 51
- 100 >> 2 는 오른쪽 2개를 없애라는 것으로, 11001 이다.
- 이를 다시 10진수로 바꾸면, 25이다. 즉, result = 25
- result = result + 1 = 26
- 100 >> 1 은 오른쪽 한개를 없애라는 것으로, 110010 이다.
- for 반복 구조를 통해 실행되는 동안의 디버깅은 다음과 같다.
i | a >> i | result | result + 1 | |
1 2 |
100 >> 1 100 >> 2 |
50 25 |
50 25 |
51 26 |
최종 출력 print(result) | 26 |
20. 다음 C 프로그램의 실행결과를 쓰시오.
int fp(int base, int exp) {
int result = 1;
for(int i=0; i<exp; i++){
result = result*base;
}
return res;
}
int main(){
int result;
result = fp(2, 10);
printf("%d", result);
return 0;
}
1024
- 거듭제곱을 구하는 C프로그램이다.
- 주어진 두 변수 중 변수 base를 변수 exp 횟수만큼 곱하는 연산을 mp() 함수를 통해 구현하였다. 변수 base를 밑수로 변수 exp를 지수로 거듭제곱한 결과 baseexp가 출력 결과가 된다.
- result = 1*2*2*2*2*2*2*2*2*2*2 = 2^10 = 1024
- main() 함수에서 mp(2, 10)를 통해 함수가 호출된다. mp() 함수로 Call by Value의 매개변수 전달 기법으로 각 가인수 base로 2, exp로 10이 전달된다.
- mp() 함수에서의 for 반복 구조를 통해 실행된다.
- mp() 함수는 10회 반복하여 1로 초기화된 변수 res에 2를 10회 곱하여 1024를 main() 함수에 최종 반환하게 된다.
해설은 유투브 흥달쌤 강의와, 이기적 실기 기본서를 참고하였습니다 :)
https://youtu.be/_shX4WLAZzE?si=D3RaBubjc4ROKPjk
https://youtu.be/uBhc-GUvbXs?si=s--taUB45ls1jeEM
'정보처리기사' 카테고리의 다른 글
[정보처리기사 실기 기출] 2022년 1회 (17) | 2024.10.11 |
---|---|
[정보처리기사 실기 기출] 2021년 3회 (3) | 2024.10.11 |
[정보처리기사 실기 기출] 2021년 1회 (2) | 2024.10.08 |
[정보처리기사 실기 기출] 2020년 4회 (11) | 2024.10.07 |
[정보처리기사 실기 기출] 2020년 3회 (7) | 2024.09.28 |