2020년 1회 정보처리기사 실기 기출문제
1. 살충제 패러독스(Pesticide Paradox)
: 동일한 테스트를 반복하면 더 이상 결함이 발견되지 않는 현상
+. 파레토의 법칙(Pareto principle)
: 80%의 결과가 20%의 원인에 의해 발생한다.
+. 오류 - 부재의 궤변
: 소프트웨어 결함을 모두 제거해도, 결국 사용자의 요구사항을 만족시키지 못하면 해당 소프트웨어는 품질이 높지 않다.
2. 데이터 마이닝
: 대규모로 저장된 데이터 안에서 체계적이고 자동적으로 통계적 규칙이나 패턴을 찾아내는 기술
3. 프로토콜의 기본 요소 3가지
- 구문(Syntax), 의미(Semantics), 순서(Timing)
구문 : 데이터의 형식이나 부호화 및 신호 레벨 등을 규정
의미 : 전송의 조작이나 오류 제어를 위한 제어 정보에 대한 규정
순서 : 접속되어 있는 개체 간의 통신 속도의 조정이나 메세지의 순서 제어 등을 규정
4. XML(eXtensible Markup Language)
- W3C(World wide Web Consortium)에서 개발되었고, 웹 브라우저 간 호환이 되지 않는 문제와 SGML(Standard Generalized Markup Language)의 복잡함을 해결하기 위해 개발된 다목적 마크업 언어이다.
5. JSON(JavaScript Object Notation)
- 속성 - 값( Attribute-value Pair)으로 이루어진 데이터 오브젝트를 전달하기 위해 사용하는 개방형 표준 포멧이다. Ajax(Asynchronous JavaScript and XML)에서 많이 사용되고 XML(eXtensible Markup Language)을 대체하는 주요 데이터 포멧이다. 언어 독립형 데이터 포멧으로 다양한 데이터 프로그래밍 언어에서 사용하고 있는 기술
6. STUDENT 테이블내에서 컴퓨터학과 학생 50명, 인터넷과 학생 100명, 사무자동화학과 50명의 정보가 저장되어 있을 떄 ,튜플의 수?(단, DEPT 칼럼은 학과명이다.)
1) SELECT DEPT FROM STUDENT; 답) 200
2) SELECT DISTINCT DEPT FROM STUDENT; 답) 3
3) SELECT COUNT(DISTINCT DEPT) FROM STUDENT WHERE DEPT = '컴퓨터과'; 답) 1
7. 스케쥴링 방식에서 HRN(Highest Response ratio Next) 우선순위 계산식
답) (대기 시간 + 서비스 시간) / 서비스 시간
HRN 스케줄링 기법은 SJF 스케줄링 기법의 약점인 긴 작업과 짧은 작업 사이의 불평등을 보완하기 위한 방법으로, 위에 우선순위 계산식은스템의 응답시간이 커질수록 우선순위가 높아진다는 의미 입니다.
위의 HRN를 비롯하여, SJF와 FIFO, 우선순위, 기반부는 비선점형 프로세스 스케줄링에 속합니다.
SJF(Shortest Job First) : 프로세스의 실행시간이 가장 적은 프로세스를 먼저 실행시키는 기법입니다.
FIFO(First In First Out)는 각 페이지가 주기억장치에 적재될 때마다 가장 먼저 들어왔던 페이지가 가장 오래 있었기 때문에 해당 페이지를 교체하는 기법입니다.
우선순위 : 미리 정의한 알고리즘대로 프로세스의 우선순위를 결정하는 방식기한부 : 프로세스마다 정해진 시간할당량만큼만 실행되도록 지정하는 방식
8. 트랜잭션의 특징
원자성 : 트랜잭션이 데이터베이스에 모두 반영되던가, 전혀 반영되지 않아야 한다는 점
일관성 : 트랜잭션의 작업 처리 결과가 항상 일관성이 있어야 한다는 점
독립성 : 둘 이상의 트랜잭션이 동시에 실행되고 있을 경우, 어떤 하나의 트랜잭션이라도 다른 트랜잭션의 연산에 끼어들 수 없다는 점
지속성: 트랜잭션이 성공적으로 완료되었을 경우, 결과는 영구적으로 반영되어야 한다는 점
9. 네트워크 공격
랜드 어택(Land Attack)
- 공격자가 패킷의 출발지 주소나 포트를 임의로 변경해 출발지와 목적지 주소를 동일하게 함으로써 공격 대상 컴퓨터의 실행속도를 느리게 하거나 동작을 마비시켜 서비스 거부 상태에 빠지도록 하는 공격 방법
서비스 거부 공격(DOS-Denial of Service)
- 표적이 되는 서비스 자원을 고갈시킬 목적으로 다수의 공격자 또는 시스템에서 대량의 데이터를 한 곳의 서버에 집중적으로 전송함으로써 표적이 되는 서버의 정상적인 기능을 방행하는 공격 방법으로, DDoS와의 차이점은 Attackert가 직접 공격을 수행
분산 서비스 거부(DDoS-Distributed Denial of Service)
- Attacker가 여러 대의 컴퓨터를 감염시켜 동시에 한 타깃 시스템을 집중적으로 공격하는 방법으로써, 짧은 시간 안에 서버를 마비시킬 수 있으며 Dos보다 치명적이고 Dos와의 차이점은 실질적인 Attacker가 아닌 Attacker가 감염시킨 좀비 PC가 공격을 수행한다는 점
Ping of Death
- ping 명령을 전송할 때 패킷의 크기를 인터넷 프로토콜 허용 범위 이상으로 전송하여 네트워크 마비시키는 공격 방법
Smurfing
- IP또는 ICMP의 특성을 악용하여 엄청난 양의 데이터를 한 사이트에 집중적으로 보내냄으로써 네트워크 불능 상태로 만드는 공격
SYN Flooding : 공격자가 가상의 클라이언트로 위장하여 3-way-handshake 과정을 의도적으로 중단 시킴으로써 공격 대상자인 서버가 대기 상태에 놓여 정상적으로 서비스를 수행하지 못하게 하는 공격 방법
TearDrop : 데이터의 송수신 과정에서 패킷의 크기가 여러 개로 분할되어 전송할 때 분할 순서를 변경시켜 수신측에서 패킷을 재조립할 때 오류로 인한 과부하를 발생시킴으로써 시스템이 다운되도록 하는 공격 방법
10. MD5
- RFC 1321로 지정되어 있으며, 주로 프로그램이나 파일이 원본 그대로 인지를 확인하는 무결성 검사 등에 사용된다. 1991년 로널드 라이베스트가 예전에 쓰이던 MD4를 대체하기 위해 고안된 128비트 암호화 해시 함수는
11. 공통 모듈 구현의 개념
- 소프트웨어 개발에 있어 기능을 분할하고 추상화하여 성능을 향상시키고 유지보수를 효과적으로 하기 위한 공통 컴포넌트 구현 기법이다.
- 인터페이스 모듈, 데이터베이스 접근 모듈 등 필요한 공통 모듈을 구현한다.
- 모듈 간의 (결합도)는 줄이고, (응집도)는 높은 공통 모듈 구현을 권한하고 있다.
12. C언어 버블 정렬 오름차순
#include <stdio.h>
#define SIZE 5
int main(void){
int arr[SIZE] = {75, 100, 95, 50, 85};
int i, j, tmp;
for(i=1; i<SIZE; i++){
for(j=0; j < SIZE-i; j++){
if(arr[j] > arr[j+1]){
tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
}
for(i=0; i<SIZE; i++){
printf("%d", arr[i]);
}
}
답 : 50, 75, 85, 95, 100
13. Java 배열
public class Test{
static int nSize = 4;
public static void main(String[] args){
int[] arr = new int[nSize];
makeArray(arr);
for(int i=0; i<nSize; i++){
System.out.print(arr[i] + " ");
}
}
public static void makeArray(int[] arr){
for(int i=0; i<nSize; i++){
arr[i] = i;
}
}
}
답 : 0 1 2 3
14. Java
public class Test{
public static void main(String[] args){
int i = 3, k = 1;
switch(i){
case 0 :
case 1 :
case 2 :
case 3 : k=0;
case 4 : k+=3;
case 5 : k-=10;
default : k--;
}
System.out.println(k);
}
}
답 -8
switch case문에 break가 없는 점을 주의하셔야 합니다.
15. 제품 패키지 릴리스 노트
해더 -> 문서 이름(릴리스 노트 이름), 제품 이름, 버전 번호, 릴리스 날짜, 참고 날짜, 노트 버전 등의 정보
릴리스 노트 : 개발 과정에서 정리된 릴리스 정보를 소프트웨어의 최종 사용자인 고객과 공유하기 위한 문섭입니다.
릴리스 노트 항목 : 헤더, 개요, 목적, 문제요약, 재현항목, 수정/개선 내용, 사용자 영향도, SW지원 영향도, 노트, 면책조항, 연락처
릴리스 노트 작성 순서 : 모듈 식별 > 릴리스 정보 확인 > 릴리스 노트 개요 작성 > 영향도 체크 > 정식 릴리스 노트 작성 > 추가 개선 항목 식별
16. LoC(Line of Code)가 30,000라인이고, 개발자가 5명이며, 개발자가 월평균 300라인을 개발한다. 이때 프로젝트 개발 기간과 계산식을 쓰시오
-> 프로젝트 개발 기간 : 20개월
-> 계산식 : (30,000라인/ 300라인)/5명 = 20개월
17. 비정규화(De-Normalization)의 개념
-> 정규화된 엔티티, 속성, 관계에 대해 성능 향상과 개발 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터모델링 기법
18. OSI 계층 중 비트를 전송하는 계층
-> 물리 계층(Physical Layer)
물리 계층(Physical Layer)
- 0과 1의 비트 정보를 회선에 보내기 위한 전기적 신호 변환
데이터 링크 계층(Data Link Layer)
- 인접 시스템 간 데이터 전송, 전송 오류 제어, 동기화, 오류 제어, 흐름 제어, 회선 제어
네트워크 계층(Network Layer)
- 단말기 간 데이터 전송을 최적화된 경로 제공
전송 계층(Transport Layer)
- 송수신 프로세스 간의 연결. 신뢰성 있는 통신 보장. 데이터 분할, 재조립, 흐름 제어, 오류 제어, 혼잡 제어.
세션 계층(Session Layer)
- 송수신 간의 논리적 연결. 연결 접속 동기 제어
표현 계층(Presentation Layer)
- 데이터 형식 설정, 부호 교환, 암/복호화
응용 계층(Application Layer)
- 사용자와 네트워크 간 응용서비스 연결, 데이터 생성
물-데-네-전-세-표-응
19. 애플리케이션의 서능을 측정하기 위한 지표
- 처리량, 응답 시간, 경과 시간, 자원 사용률
처리량 : 애플리케이션이 주어진 시간에 처리할 수 있는 트랜잭션의 수
응답 시간 : 사용자가 입력이 끝난 후, 애플리케이션의 응답 출력이 개시될 때까지의 시간
경과 시간 : 애플리케이션에 사용자가 요구를 입력한 시점부터 트랜잭션 처리 후 그 결과의 출력이 완료될 때까지 걸리는 시간
자원 사용률 : 애플리케이션이 트랜잭션을 처리하는 동안 CPU 사용량, 메모리 사용량, 네트워크 사요량
20. 모듈의 관계
- 모듈에서 화살표가 나가는 경우 팬아웃이고 모듈에서 화살표가 들어오는 경우 팬인이라고 합니다.
2020년 2회 정보처리기사 실기 기출문제
1.정보시스템 운영 중 서버가 다운되거나 자연재해나 시스템 장애 등의 이유로 고객에게 서비스가 불가능한 경우가 종종 발생한다. 이와같은 상황에서 비상사태 또는 업무중단 시점부터 업무가 복구되어 다시 정상 가동될때까지의 시간
- 재해 복구 시간 or RTO(Recovery Time Objective) : 재해 발생시, 데이터 손실을 수용 손실 허용 시점
네트워크복구시간(RCO : Recovery Communication Objective) : 주 영업점과 DR 센터 간 네트워크 복구 수준
재해복구범위(RSO : Recovery Scope Objective) : 업무 중요도에 따른 복구 대상시스템 선정
2. 파이썬 코드
a = {'일본', '중국', '한국'}
a.add('베트남');
a.add('중국');
a.remove('일본');
a.update(['홍콩', '한국', '태국']);
print(a)
답 : {"중국", "한국", "베트남", "홍콩", "태국"}
3. 비동기 통신 기법 or AJAX(Asynchronous JavaScript and XML)
브라우저가 가지고 있는 XMLHttpRequest 객체를 이용해서 전체 페이지를 새로 고치지 않고도 페이지의 일부분만을 위한 데이터를 로드하는 기법이며, 하이퍼텍스트 표기 언어(HTML)만으로 어려운 다양한 작업을 웹 페이지에서 구현해 이용자가 웹 페이지와 자유롭게 상호작용할 수 있도록 하는 기술
4. 애자일 방법론
절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속 적응적 경량 개발방법론으로, 개발 기간이 짧고 신속하며, 워토폴에 대비되는 방법론으로 최근 회사에거 각광받는 방법론
5. 자바 코드
class Parent{
void show() {
System.out.println("Parent");
}
}
class Child extends Parent {
void show() {
System.out.println("Child");
}
}
public class Main{
public static void main(String[]args) {
Parent pa = (___________) Child();
pa.show();
}
}
출력결과: Child
답 : new
6. 학생 테이블은 학번, 이름, 학년, 수강과목, 점수, 연락처를 속성으로 가진다. 아래 조건을 만족하는 SQL 문을 작성
1) SELECT 학번, 이름 FROM 학생 WHERE 학년 IN(3, 4);
7. 트랜잭션 Rollback에 대해 설명하시오.
트랜잭션 처리 중 오류가 발생했을 때, 오류 이전의 특정 시점(SAVEPOINT, CHECKPOINT) 상태로 되돌려주는 제어어(명령문)이다.
8. IPSec(Internet Protocol Security)
무결성과 인증을 보장하는 인증해더(AH)와 기밀성을 보장하는 암호화(ESP)를 이용한 프로토콜로 네트워크 계층(Network Layer)인 인터넷 프로토콜(IP)에 보안성을 제공해주는 표준화된 기술
9. 정적 분석 도구
애플리케이션을 실행하지 않고, 소스 코드에 대한 코딩 표준, 코딩 스타일, 코드 복잡도 및 남은 결함을 발견하기 위해 사용하는 도구
10. 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들이 연락이 가고 자동으로 내용이 갱신되는 방법으로 일대 다의 의존성을 가지며 상호작용하는 객체 사이에서는 가능하면 느슨하게 결합하는 디자인을 사용해야 한다.
답 : Observer Pattern
11. 안드로이드
Linux 운영체제 위에서 구동하며 휴대폰 전화를 비롯한 휴대용 장치를 위한 운영체제와 미들웨어, 사용자 인터페이스 그리고 표준 응용프로그램(웹 브라우저 등) 등을 포함하고 있는 소프트웨어 스택이자 리눅스 모바일 운영체제로 개발자들이 자바와 코틀린 응용 프로그램을 작성할 수 있게 했고, 컴파일 된 바이트 코드를 구동할 수 있는 런타임 라이브러리를 제공하는 운영체제
12 . 학생 테이블 name속성에 IDX_NAME 이름으로 인덱스 생성하는 SQL문을 작성
CREATE INDEX IDX_NAME ON 학생(NAME);
13. HTTP, HTTPS SMTP를 통해서 XML 기반의 데이터를 주고받는 프로토콜로 웹 서비스 방식에 HTTP 기반의 ( ) 을/를 사용하여 송수신한다. ( ) 을/를 사용하여 송수신한다.( ) 대신 레스트풀(RESTful)프로토콜로 대체할 수 있다.
SOAP(Simple Object Access Protocol)
14. SQL Ingection
응용 프로그램의 보안 취약점을 이용해서 악의적인 SQL 구문을 삽입, 실행시켜서 데이터베이스의 접근을 통해 정보를 탈취하거나 조작 등의 행위를 하는 공격 기법
15. 사용자에게 읽기 / 쓰기 / 실행 권한을 부여하고 그룹에게는 읽기 /실행을 부여하고 그 이외에는 실행 권한을 a.txt에 부여하는 명령어(8진법을 사용)
답 : chmod 751 a.txt
16. UI 설계 원칙
- 직관성, 학습성, 유연성, 유효성
직관성 : 누구나 쉽게 이해하고 사용할 수 있어야 한다.
학습성 : 누구나 쉽게 배우고 익힐 수 있어야 한다.
유연성 : 사용자의 요구사항을 최대한 수용하며 오류를 최소화해야 한다.
유효성 : 사용자의 목적을 정확하게 달성하여야 한다.
17. LOD(Linked Open Data)
- 전 세계 오픈된 정보를 하나로 묶는 방식으로 link data 와 open data의 합성어
18. 데이터 모델링 절차
요구사항 분석 > 개념적 데이터 모델링 > 논리적 데이터 모델링 > 물리적 데이터 모델링
19. 자바 상속, super 키워드 이용 결과값
class A {
int a;
A(int a) {
this.a=a;
}
void display() {
System.out.println("a="+a);
}
}
class B extends A {
B(int a) {
super(a);
super.display();
}
}
public class Main {
public static void main(String[]args) {
B obj = new B(10);
}
}
답 : a = 10
20. 소프트웨어 개발 과정에서 변경 사항을 관리하는 기법은 ( ) 기법이라고 하며, ( ) 기법을 활용하는 도구로는 CVS, SVN, Git 등이 있다.
답 : 형상관리