2022-1 정처기 실기 newbt 기출문제
뉴비티 기출문제 문제은행 - 완전 새로운 CBT, iBT 문제풀이 시스템
기사, 공무원, 공인중개사 등 로그인 필요 없는 수백가지 시험 기출문제 문제은행 시험 자격증 족보 2024년 최신
newbt.kr
* 개념참고
2024.10.12 - [IT자격증] - 2024 정보처리기사 실기 요약
[ 정보처리기사 실기 2022년 1회 ]
* Q.1 ) RAID
리눅스에서의 레이드(RAID)는 여러 개의 하드 드라이브를 묶어서 하나의 논리적인 드라이브로 인식하게 하는 기술로, 데이터의 안정성과 성능을 향상시키는 목적으로 사용됩니다. RAID는 여러 레벨로 구성되며, 각 레벨은 다양한 데이터 보호 및 성능 기능을 제공합니다. 주요 RAID 레벨은 다음과 같습니다:
RAID 0: RAID 0은 스트라이핑(Striping) 기술을 사용하여 데이터를 여러 드라이브에 분산시킵니다. 이로 인해 입출력 성능이 향상되지만, 하나의 드라이브가 손상되면 전체 데이터가 손실될 수 있으므로 데이터 복구 및 안정성이 없습니다.
RAID 1: RAID 1은 미러링(Mirroring) 기술을 사용하여 데이터를 여러 드라이브에 중복 저장합니다. 한 드라이브가 손상되어도 나머지 드라이브에 데이터가 유지되므로 높은 안정성을 제공합니다. 하지만 저장 공간의 절반이 중복되므로 저장 용량은 실제 드라이브의 절반이 됩니다.
RAID 5: RAID 5는 데이터와 패리티 정보를 여러 드라이브에 분산 저장하여 안정성을 제공하는 레벨입니다. 패리티는 손상된 드라이브에서 데이터를 복구하는 데 사용됩니다. 최소 3개의 드라이브가 필요하며, 하나의 드라이브가 손상되어도 데이터를 복구할 수 있습니다.
RAID 6: RAID 6은 RAID 5와 유사하지만 패리티 정보를 두 개의 드라이브에 저장하여 두 개의 드라이브가 동시에 손상되어도 데이터를 복구할 수 있습니다. 최소 4개의 드라이브가 필요합니다.
RAID 10 (RAID 1+0): RAID 10은 RAID 1과 RAID 0을 결합한 방식으로, 미러링과 스트라이핑을 모두 사용하여 안정성과 성능을 모두 제공합니다. 최소 4개의 드라이브가 필요하며, 드라이브의 절반이 데이터 저장용이고 나머지 절반은 미러링에 사용됩니다.
* Q.2 ) 로그기반 회복기법 명령어 - "redo", "undo"
1. 오류가 발생하기 전까지의 사항을 로그(log)로 기록해 놓고, 이전 상태로 되돌아간 후 실패가 발생하기 전까지의 과정을 재실행한다.
>> "redo"
2. 로그를 이용하여 오류와 관련된 내용을 취소하여 복구한다.
>> "undo"
* Q.3 ) 데이터베이스 이상현상 - "삭제현상" 서술
1. 삽입 이상(Insertion Anomaly) : 데이터 삽입 시 원하지 않는 다른 데이터도 삽입됨
2. 삭제 이상(Delete Anomaly) : 데이터 삭제 시 원하지 않는 다른 데이터도 연쇄 삭제됨
3. 갱신 이상(Update Anomaly) : 속성값 갱신 시 일부만 갱신되어 모순 발생
* Q.4 ) 임시 키 무결성 프로토콜의 영문 약어 - TKIP (Temporal Key Integrity Protocol)
ㅇ IEEE 802.11 무성 네트워킹 표준에 사용되는 보안 프로토콜
ㅇ IEEE 802.11i의 작업 그룹과 WiFi 얼라이언스에서 WEP를 하드웨어 교체 없이 대체하기 위해 고안
* Q.5 ) UI 유형 - NUI(Natural User Interface)
- CLI : 명령과 출력이 텍스트 형태로 이루어지는 인터페이스
- GUI : 아이콘이나 메뉴를 마우스로 선탁해여 작업 수행
- NUI : 키보드나 마우스와 같은 장치 없이 말이나 행동 그리고 감정과 같은 인간의 자연스러운 표현으로 컴퓨터나 장치를 제어할 수 있는 환경
* Q.6 ) 소스코드 분석도구의 분석기법 - "정적 분석 기법", "동적 분석 기법"
1. 소스 코드의 실행 없이, 코드의 의미를 분석해 결함을 찾아내는 원시적 코드 분석 기법
>> 정적 분석 기법
2. 소스 코드를 실행하여 프로그램 동작이나 반응을 추적하고 코드에 존재하는 메모리 누수, 스레드 결함 등을 분석하는 기법
>> 동적 분석 기법
* Q.7 ) xUnit의 테스트기법 - JUnit
JUnit( xUnit + JAVA) / Cppunit ( xUnit + C++) / NUnit ( xUnit + .net) / JMockit ( xUnit + mock ) / PHPUnit ( xUnit + PHP)
* Q.8 ) 보기 중에서 블랙박스 테스트 기법을 3가지 고르기 (*블랙박스 테스트 : 각 기능이 완전히 작동되는 것을 입증)
a. Equivalence Partitioning (동등 분할): 입력 데이터를 동등한 부분으로 나누어, 각 부분의 대표값으로 테스트를 수행한다. 이 기법은 모든 가능한 입력 값들을 효율적으로 테스트하고자 할 때 사용된다.
b. Boundary Value Analysis (경계값 분석): 입력 데이터의 경계값 주변에 오류가 발생할 확률이 높다는 가정 하에, 경계값과 그 바로 옆의 값을 테스트하는 기법이다.
e. Cause-effect Graph (원인-결과 그래프): 입력과 그에 따른 출력 결과의 관계를 그래프 형태로 표현하여 테스트 케이스를 도출하는 방법이다. 복잡한 비즈니스 로직을 가진 시스템의 테스트에 유용하다.
c (Base Path Test),
d (Loop Test),
f (Decision Coverage),
g (Statement Coverage)
+ 비교검사 : 여러 버전의 프로그램에 동일한 테스트 자료 제공하여 동일한 결과가 출력되는지 테스트 (블랙박스 테스트)
* [ 화이트박스 테스트 : 원시코드의 논리적인 모든 경로를 테스트 ]
- 기초경로검사 (Base Path Test) : 논리적 복잡성 측정 / 대표적 화이트박스 검사
- 제어구조검사 : 조건검사(모듈 내 논리적 조건) / 루프검사(반복 구조에 초점) / 데이터 흐름검사(변수정의와 변수 사용위치에 초점)
* Q.9 ) ISMS
정부에서 정한 인증기관 및 심사기관에서 기업이 주요 정보자산을 보호하기 위해 수립·관리·운영하는 정보보호 관리체계가 인증 기준에 적합한지를 심사하여 인증을 부여하는 제도
* Q.10 ) 슈퍼키 : 유일성 // 후보키 : 유일성 + 최소성
1. 슈퍼키는 ( A )의 속성을 갖는다.
2. 후보키는 ( A )와(과) ( B )의 속성을 갖는다.
* 후보키 : 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합 / 유일성, 최소성
* 기본키 : 후보키 중 특별히 선정된 주 키 / 중복불가 / 유일성 / Null불가
* 대체키 : 후보키가 둘 이상일 때, 기본키를 제외한 나머지 후보키 / 보조키
* 슈퍼키 : 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키 / 유일성O, 최소성X
* 외래키 : 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
* Q.11 ) 워터링 홀(Watering Hole)
이 공격은 APT 공격에서 주로 쓰이는 공격으로, 공격 대상이 방문할 가능성이 있는 합법적인 웹 사이트를 미리 감염시킨 뒤, 잠복하고 있다가 공격 대상이 방문하면 대상의 컴퓨터에 악성코드를 설치하는 방식이다.
- 워터링홀 : 자주 방문하는 웹사이트를 사전에 감염시켜, 목표 조직의 일원이 사이트 방문시 악성코드에 감염시키도록 함
- 웜 : 네트워크를 통해 연속적으로 자신을 복제하여 시스템의 부하를 높임. 결국 시스템 다운.
- 키로거공격 : 키보드 움직임을 탐지해 중요 정보를 빼감.
- 랜섬웨어 : 사용자의 컴퓨터에 잠입해 내부 문서나 파일등을 암호화함
- 백도어 : 개발자의 액세스 편의를 위해 시스템 보안을 제거하여 만들어놓은 비밀통로
- 트로이목마 : 정상 프로그램으로 위장하여 숨어있다가, 해당 프로그램이 동작할 떄 활성화되어 부작용 발생시킴
* Q.12 ) V다이어그램 - 테스트 : 단통시인
단위 테스트 (Unit Test) | • 인터페이스 테스트 • 자료구조 테스트 • 수행경로 테스트 |
통합 테스트 (Integration Test) | • 하향식 통합 • 상향식 통합 • 백본 통합 |
시스템 테스트 (System Test) | • 보안 테스트 • 민감도 테스트 • 성능 테스트 |
인수 테스트 (Acceptance Test) | • 알파 테스트 : 통제된 환경에서 선별된 사용자들(사내 직원 등)이 개발자와 함께 수행하는 테스트 • 베타 테스트 : 실제와 동일한 환경에서 사외의 사용자들이 테스트하게 하고 피드백을 받는 방법 |
* Q.14 ) Python 함수 : extend, pop, reverse
1. 요소를 확장해준다는 의미를 가지고 있으며, 모든 항목을 하나의 요소로 추가 >> extend
2. 리스트 내부 요소를 꺼내주는 함수로써, 그 요소는 리스트 안에서 삭제하고 그 값을 반환 >> pop
3. 리스트 내부의 요소의 순서는 뒤집는 역할 >> reverse
li.append([4,5,6]) 하면 li = [1, 2, 3, [4, 5, 6]]
li.extend([4,5,6])하면 li = [1, 2, 3, 4, 5, 6]
* Q.15 ) Python 문제
def exam(num1, num2=2):
print('a=', num1, 'b=', num2)
exam(20)
A) a= 20 b= 2 // 파이썬에서 ','는 띄어쓰기 해야한다.
* Q.16 ) JAVA 문제
class Car implements Runnable{
int a;
public void run(){
system.out.println("Hello")
}
}
public class Main{
public static void main(String[] args){
Thread t1 = new Thread(new ___());
t1.start();
}
}
Thread 클래스를 구현하는 두가지 방법
- Thread 클래스를 상속받고, run() 을 오버라이딩
- Runnable 인터페이스를 implement 하고, run()을 오버라이딩
위 문제에서는 (2)번 방법을 선택함.
Car 클래스를 쓰레드로 실행하기 위해서 Runnable을 구현했다는건 당연함.
쓰레드로 실행하려면, 쓰레드 객체를 생성할 때 생성자의 파라미터로 전달해야됨.
즉, t1 = new Thread(new Car())
t1.start() 하면 해당 객체의 run()이 실행 됨. 근데, 아까 오버라이딩 했으니 Car의 run()이 실행됨.
* Q.19 ) C언어 문제
#include <stdio.h>
int main() {
int number = 1234;
int div = 10;
int result = 0;
while (number ( 1 ) 0) {
result = result * div;
result = result + number ( 2 ) div;
number = number ( 3 ) div;
}
printf("%d", result);
return 0;
}
1. > 2. % 3. /
첫 반복문
result = 0 * 10
result = 0 + 4
number = 123
두번째 반복문
result = 4 * 10
result = 40 + 3
number = 12
세번째 반복문
result = 43 * 10
result = 430 + 2
number = 1
네번째 반복문
result = 432 * 10
result = 4320 + 1
number = 0