본문 바로가기
  • 문과생의 백엔드 개발자 성장기
|Developer_Study/정보처리기사

[정보처리기사] 예상 문제3

by 케리's 2023. 3. 15.

81. 다음은 악성 프로그램에 대한 설명이다. 괄호( ) 안에 들어갈 용어를 영문 Full-name으로 쓰시오.

- ( ① )은/는 어떤 제품이나 컴퓨터 시스템, 암호시스템 혹은 알고리즘에서 정상적인 인증 절차를 우회하는 기법이다.
- ( ② )은/는 시스템 침입 후 침입 사실을 숨긴 채 차후의 침입을 위한 백도어, 트로이 목마 설치, 원격 접근, 내부 사용 흔적 삭제, 관리자 권한 획득 등 주로 불법적인 해킹에 사용되는 기능을 제공하는 프로그램의 모음이다.
더보기

1. 백도어 (Backdoor)
2. 루트킷 (Rootkit)


2) 백도어 (Backdoor)

어떤 제품이나 컴퓨터 시스템, 암호 시스템 혹은 알고리즘에서 정상적인 인증 절차를 우회하는 기법

 

(3) 주요 시스템 보안 공격 기법

공격기법 설명
포맷 스트링 공격
(Format String Attack)
포맷스트링을 인자로 하는 함수의 취약점을 이용한 공격으로 외부로부터 입력된값을 검증하지 않고 입출력 함수의 포맷스트링을 그대로 사용하는 경우 발생
레이스 컨디션 공격
(Race Condition Attack)
레이스 컨디션은 둘 이상의 프로세스나 스레드가 공유자원을 동시에 접근할 떄 접근 순서에 따라 비정상적인 결과가 발생하는 조건/상황
키로거 공격
(Key Logger Attack)
컴퓨터의 사용자 키보드 움직임을 탐지해서 ID, PW 계좌번호 , 카드번호 등 개인중요정보를 몰래 빼가는 해킹공격
루트킷
(Rootkit)
시스템 침입 후 침입 사실을 숨긴채 차후 침입을 위한 백도어, 트로이목마 설치, 원격접근 내부사용흔적삭제 관리자 권한 획득 등 주로 불법적 해킹에 사용되는 기능제공

 

 

 

82. 다음은 C 코드이다. 출력 결과를 쓰시오.

#include <stdio.h>
#include <stdlib.h>

#define SIZE 5

int main()
{
    int i = 0;
    int *p = NULL;
    int *p2 = NULL;

    p = (int *)malloc(sizeof(int)*SIZE);
    if( p == NULL ){   
      exit(1);         
    }

    for( i=0;i<SIZE;i++){ 
        p[i] = i+1;
    }
    
    p2 = p;
    p2++;
    
    printf("%d", *p2);
    
    if(p != NULL){
        free(p);
    }
    return 0;
}
더보기

답 2


#include <stdio.h>
#include <stdlib.h>

#define SIZE 5

int main()
{
    int i = 0;
    int *p = NULL; 
    int *p2 = NULL;

    p = (int *)malloc(sizeof(int)*SIZE); // sizeof(int) = 4, * SIZE = 5 = 즉, 20짜리 메모리 할당
    if( p == NULL ){   // 메모리 할당이 안되었다면
      exit(1);         // 종료
    }

    for( i=0;i<SIZE;i++){ // 0 ~ 4 까지 for문
        p[i] = i+1;		  // p[0] = 1 ~ p[4] = 5 대입
    }
    
    p2 = p; p2의 주소값에 p의 주소값 대입
    p2++; // p2가 가리키는 주소값 이 만약 100이라면 101로 이동
    
    printf("%d", *p2); //101의값을 출력 즉, [1,2,3,4,5] 이고 100의 값이 1이면 101의 값은 2이다. 따라서 2 출력
    
    if(p != NULL){ // p가 null이 아니면
        free(p);   // 메모리 해제
    }
    return 0;
}

 

 

 

 

83. 다음은 C 코드이다. 출력 결과를 쓰시오.

#include <stdio.h>

typedef struct soojebi *SjbPointer;

typedef struct soojebi{
  char gender;
  int age;
  int (*pfunc)(SjbPointer);
}sjb;

int func1(SjbPointer p){
    printf("%c", p->gender);
    return 0; 
}

int func2(SjbPointer p){
    printf("%d", p->age);
    return 0; 
}

int main() 
{
    sjb s[2] = {'F', 21, func1, 'M', 20, func2};
    SjbPointer p = s;
    p++;
    
    printf("%d", p->pfunc(p));
    
    return 0;
}​

 

더보기

200


func2함수 printf(“%d/n”, p->age)로 바꿔서 출력해보면
20
0
결국 /n 개행 문자열이 없어 붙여서 출력되어 200

#include <stdio.h>

typedef struct soojebi *SjbPointer;

typedef struct soojebi{
  char gender;
  int age;
  int (*pfunc)(SjbPointer);
}sjb; // 구조체 sjb 변수 생성

int func1(SjbPointer p){
    printf("%c", p->gender);
    return 0; 
}

int func2(SjbPointer p){ 
    printf("%d", p->age); //넘어온 p의 age는 20 출력
    return 0; 
}

int main() 
{
    sjb s[2] = {'F', 21, func1, 'M', 20, func2}; //2행짜리 구조체 배열을 만들고
    SjbPointer p = s; // 포인터 p에 s의 주소값을 대입한다. 
    p++; // 배열에서의 주소값 ++은 그 다음행을 가르킨다. 
    
    printf("%d", p->pfunc(p));// 2행의 pfunc의 값은 func2를 가리킨다.
    
    return 0;
}​

[출처] [2022년 제3회 기사 실기 출제예상 문제] (6과목) 프로그래밍 활용 - 12 (수제비- IT 커뮤니티 (정보처리기사,빅데이터분석기사 등)) | 작성자 보안쌤

 

 

 

 

84. 다음 중 아래 설명에 나오는 이것이 무엇인지 쓰시오.

- A 은행은 사용자의 가입정보를 보관하고 있고, 사용자가 B 은행의 상품 가입을 하려고 하고 있다.
- B 은행에서 사용자의 가입정보를 새롭게 수집하지 않고, 사용자의 동의하에 이것을 통해서 A 은행에서 가지고 있는 사용자의 가입정보를 B 은행에서 받아서 사용하려고 한다.
더보기

​마이데이터


마이 데이터(My Data)는 개인이 자신의 정보를 관리, 통제할 뿐만 아니라 이러한 정보를 신용이나 자산관리 등에 능동적으로 활용하는 일련의 과정을 의미한다.
마이 데이터에서 개인은 데이터 주권인 자기 정보결정권으로 개인 데이터의 활용과 관리에 대한 통제권을 개인이 가진다는 것이 핵심 원리이다.
마이데이터를 통해서 개인의 동의하에 타 기업에 저장된 개인정보를 받아서 필요한 곳에 활용할 수 있게 된다.

 

 

 

 

85. 학생(STUDENT) 테이블에 컴퓨터공학과 학생 120명, 인공지능학과 학생 160명, 빅데이터학과 학생 80명에 관한 데이터가 있다고 했을 때, 다음에 주어지는 SQL 문 ①, ​​​​​​​​​​②를 각각 실행시킨 결과 튜플 수는 각각 몇 개인가? (단, DEPT는 학과 컬럼명임)

① SELECT DISTINCT DEPT FROM STUDENT;
② SELECT DEPT FROM STUDENT;

 

 

 

86. 다음은 통합 인증과 관련된 내용이다. 괄호( ) 안에 들어갈 용어를 쓰시오.

- 1980년대 중반 MIT의 Athena 프로젝트의 일환으로 개발된 ( ① )은/는 클라이언트/서버 모델에서 동작하며 대칭키 암호기법에 바탕을 둔 프로토콜이다. ( ① )은/는 "티켓"(ticket)을 기반으로 동작하는 컴퓨터 네트워크 인증 암호화 프로토콜로서 비보안 네트워크에서 통신하는 노드가 보안 방식으로 다른 노드에 대해 식별할 수 있게 허용한다.
- ( ② )은/는 한 번의 시스템 인증을 통하여 여러 정보시스템에 재인증 절차 없이 접근할 수 있는 통합 로그인 솔루션이다.
더보기

1. 커버로스

2. SSO (Single Sign On)


커버로스는 컴퓨터 네트워크 인증 암호화 프로토콜입니다. 비보안 네트워크에서 통신하는 노드가 보안 방식으로 다른 노드에 대해 식별할 수 있게 허용합니다1. 커버로스는 티켓 기반의 컴퓨터 네트워크 인증 암호화 프로토콜이며, 티켓을 가진 유저만 서버에 접속할 수 있도록 제어할 수 있으므로 서버 접근 권한 관리가 편해집니다

 

 

 

 

 

87. 다음은 애플리케이션 성능 개선과 관련된 내용이다. 괄호( ) 안에 들어갈 용어를 쓰시오.

- ( ① )은/는 잘 작성되어 가독성이 높고, 단순하며, 의존성을 줄이고, 중복을 최소화하여 깔끔하게 잘 정리된 코드이다.
- ( ② )은/는 매우 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 몹시 어려운 코드이다.
- ( ③ )은/는 컴퓨터 프로그램의 소스 코드가 복잡하게 얽혀 있고 작동은 정상적으로 하지만, 사람이 코드를 읽으면서 그 코드의 작동을 파악하기는 어려운 코드이다.
더보기
1. 클린코드 (Clean Code)
2. 외계인코드 (Alien Code)
3. 스파게티 코드 (Spaghetti Code)

 

 

 

 

88. 다음은 요구사항 분석에 사용하는 기능 모델링 기법과 관련된 내용이다. 괄호( ) 안에 들어갈 용어를 쓰시오.

- ( ① )은/는 데이터가 각 프로세스를 따라 흐르면서 변환되는 모습을 나타내고 시스템 분석과 설계에서 매우 유용하게 사용된다.
- ( ① )의 구성 요소 중 입력된 데이터를 원하는 형태로 변환하여 출력하기 위한 과정이며, 원으로 표시하는 것은 ( ② )이다.
더보기

1. 자료흐름도 (DFD; Data Flow Diagram)
2. 처리기 (Process)

 

 

DFD는 크게 4가지 요소로 구성됩니다:

엔티티(Entity): 데이터를 생성하거나 저장하는 기관이나 부서 등을 나타냅니다.
프로세스(Process): 데이터를 처리하는 과정을 나타냅니다.
데이터 플로우(Data Flow): 데이터가 처리 과정에서 어떻게 흐르는지 나타냅니다.
데이터 저장소(Data Store): 데이터를 저장하는 장소를 나타냅니다.


DFD는 데이터 흐름도(Data Flow Diagram)의 약자입니다. DFD는 소프트웨어 및 정보시스템의 분석과 설계에서 매우 유용하게 사용되는 다이어그램으로, 데이터가 소프트웨어 내의 각 프로세스를 따라 흐르면서 변환되는 모습을 나타냅니다1. DFD는 구조적 방법론을 대표하는 다이어그램 중 하나로, 구조적 분석/설계 혹은 구조적 방법론은 1968년 Dijskstra가 GOTO문의 폐해를 들어 구조적 프로그래밍(Structured Programming)의 개념을 소개하면서 시작되었습니다1.

 

 

 

 

89. 다음 파이썬 코드의 결과를 쓰시오

s = "수제비.정보처리기사.정보처리산업기사.정보처리기능사.빅데이터분석기사"
r = s.split('.')
print(r[1])
더보기

정보처리기사

 

 

 

 

90. 다음은 각종 재해, 장애, 재난으로부터 위기관리를 기반으로 재해복구, 업무복구 및 재개, 비상계획 등을 통해 비즈니스 연속성을 보장하는 체계인 BCP에 대한 설명이다. 괄호( ) 안에 들어갈 용어를 영문 약자 또는 영문 Full-name으로 쓰시오.

- ( ① )은/는 장애나 재해로 인해 운영상의 주요 손실을 볼 것을 가정하여 시간 흐름에 따른 영향도 및 손실평가를 조사하는 BCP를 구축하기 위한 분석이다.
 
- ( ② )은/는 조직의 최고 경영층이 주요 지원 서비스의 중단으로 인한 업무의 영향에 대해 허용할 수 있는 최대의 시간을 의미한다.
더보기

1. BIA(Business Impact Analysis)
2. MTD(Maximum Tolerable Downtime)


BCP에서 MTD란 Maximum Tolerable Downtime의 약자로, 재해나 장애가 발생했을 때 기업이나 조직에서 정한 최대 허용 가능한 시간을 말합니다1. 이 시간을 초과하면 기업이나 조직에 심각한 영향을 미칠 수 있습니다.

 

 

 


91. 다음 C코드의 결과를 쓰시오

#include <stdio.h>
typedef struct _SOOJEBI_STRUCT
{
  int n;
  char c;
}SOOJEBI;

int soojebi(SOOJEBI *p, int length)
{
  int i;    
  if(p == NULL || length < 0){
    return -1;
  }    
  for(i=0;i<length;i++){
    p[i].n = i+1;
    p[i].c = i+65;
    printf("%d%c", p[i].n, p[i].c );
  }
  return 1;
}

int main()
{
  SOOJEBI s[3];
  int i, ret=0;
  int len = sizeof(s)/sizeof(s[0]);
  ret = soojebi(s, len);    
  if(ret < 0) printf("%d", ret);
  return 0;
}
더보기

답 1A2B3C


#include <stdio.h>
typedef struct _SOOJEBI_STRUCT
{
  int n; // 4바이트
  char c; // 1바이트
}SOOJEBI;

int soojebi(SOOJEBI *p, int length)
{
  int i;    
  if(p == NULL || length < 0){
    return -1;
  }    
  for(i=0;i<length;i++){
    p[i].n = i+1;
    p[i].c = i+65; //c 65는 A이다.
    printf("%d%c", p[i].n, p[i].c );
  }
  return 1;
}

int main()
{
  SOOJEBI s[3];
  int i, ret=0;
  int len = sizeof(s)/sizeof(s[0]);  // len = 크기 5짜리 3개배열 = 15/5 라서 3이된다.
  ret = soojebi(s, len);    
  if(ret < 0) printf("%d", ret);
  return 0;
}

 

 

92. 다음은 프로세스 스케줄링 알고리즘에 대한 설명이다. 괄호( ) 안에 들어갈 용어를 영문 약자 또는 영문 Full-name으로 쓰시오.

- ( ① )은/는 가장 짧은 시간이 소요되는 프로세스를 먼저 수행하고, 남은 처리 시간이 더 짧다고 판단되는 프로세스가 준비 큐에 생기면 언제라도 프로세스가 선점되는 알고리즘이다.
- ( ② )은/는 대기 중인 프로세스 중 현재 응답률(Response Ratio)이 가장 높은 것을 선택하는 방법으로 긴 작업과 짧은 작업 간의 불평등을 완화하여 기아 현상을 방지하는 알고리즘이다.
더보기

1. SRT (Shortest Remaining Time First)

2. HRN (Highest Response Ratio Next) 


프로세스 스케줄링 유형 설명
선점형 스케줄링
(SMMR)
쇼 미더 머니 라운드 진출!
우선 순위가 높은 프로세스가 CPU를 점유하는 스케줄링
SRT
(Shortest Remaining Time First)
가장 짧은 시간이 소요되는 프로세스를 먼저 수행
CPU를 점유하고 있는 프로세스보다 남은 CPU 처리 시간이 짧은 프로세스가 준비 큐에 들어오면서 새로운 프로세스가 CPU를 선점할 수 있다.
RR
(Round Robbin)
프로세스는 같은 크기의 CPU할당
프로세스들에게 정해진 시간 할당량을 주고 그 시간안에 작업을 수행하게함
시간 할당량이 끝나면 다른 프로세스에게 CPU를 넘기고 맨 뒤에가서 다시 기다림
다단계 큐
(Multi Level Queue)
여러개의 큐를 이용하여 상위 단계 작업에 의한 하위단계 작업이 선점
준비 큐를 여러개의 큐로 나누고 각 큐에 우선순위를 부여하는 스케줄링 방식
ex) 대화형 프로세스 , 장기 실행 배치 프로세스 각각 다른 그룹 배치
다단계 피드백 큐
(Multi Level Feedback Queue)
큐마다 서로 다른 CPU시간 할당량을 부여, FIFO+라운드로빈 스케줄링 기법 혼합
프로세스들이 큐를 갈아탈 수 있는 스케줄링 방식

비 선점형 스케줄링
(우기HFS)
우리 기업은 홈패밀리서비슬르 한다.
한 프로세스가 CPU를 할당 받으면 작업 종료 전까지 다른 프로세스는 CPU 점유 불가능한 스케줄링
우선순위
(Priority)
프로세스별 우선순위에 따라 CPU 할당
우선순위가 높은 프로세스가 먼저 CPU사용, 우선순위가 같은 프로세스는 FCFS방식 처리
기한부
(Deadline)
작업들이 명시된 기한 내에 완료되도록 계획
실시간 시스템에서 중요
HRN
(Highest Response Ratio Next)
대기중인 프로세스 중 현재 응답률이 가장 높은 것을 선택, 기아 현상 최소화 기법
프로세스의 우선순위를 CPU처리기간과 대기시간을 동시에 고려해 결정함
* 우선순위 = (대기시간+서비스시간)/서비스시간
FCFS
(First Come First Service)
프로세스가 대기 큐에 도착한 순서에 따라 CPU할당 = FIFO
SJF
(Shortest Job First)
가장 짧은 작업부터 수행, 평균 대기 시간 최소화, 기아현상 발생

 

 

 

 

 

 

93. 다음은 보안 공격에 대한 설명이다. 괄호( ) 안에 들어갈 용어를 쓰시오.

- ( ① )은/는 악의적인 해커가 불특정 웹 서버와 웹 페이지에 악성 스크립트를 설치하고, 불특정 사용자 접속 시 사용자 동의 없이 실행되어 의도된 서버(멀웨어 서버)로 연결하여 감염시키는 공격기법이다.
- ( ① )은/는 사용자가 특정 웹사이트에 접속하였을 때(이메일 메세지에 포함된 사이트 주소를 클릭하는 경우 포함), 사용자도 모르게, 악성 SW가 사용자의 디바이스(PC나 스마트폰)에 download 되도록 하는 해킹기법이라고 할 수 있다.
- ( ② )은/는 특정인에 대한 표적 공격을 목적으로 특정인이 잘 방문하는 웹 사이트에 악성코드를 심거나 악성코드를 배포하는 URL로 자동으로 유인하여 감염시키는 공격기법이다.
더보기

1. 드라이브 바이 다운로드 (Drive By Download)
2. 워터링 홀 (Watering Hole)


드라이브 바이 다운로드(Drive-by download)는 인터넷에서 컴퓨터 소프트웨어의 의도되지 않은 다운로드와 관련해서, 각각 다음과 같은 두 가지를 의미합니다:

결과에 대한 이해가 없는 개인이 허가한 다운로드들(예를 들면 알려지지 않은 위조 실행 파일이나, 액티브X 컴포넌트 또는 자바 애플릿).
컴퓨터 바이러스, 스파이웨어, 악성 소프트웨어 같은 개인의 인식 없이 일어나는 다운로드.
드라이브 바이 다운로드들은 웹 사이트를 방문하거나 이메일 메시지를 볼 때 또는 유혹하는 팝업 윈도우를 클릭할 때 발생합니다.

드라이브바이다운로드(Drive-by download), XSS(Cross-site scripting), CSRF(Cross-site request forgery)는 모두 웹 보안 공격의 유형입니다. 그러나 이들은 서로 다른 유형의 공격입니다123.

드라이브바이다운로드는 사용자가 의도하지 않은 다운로드를 유도하는 공격입니다.
XSS는 악성 스크립트를 삽입하여 사용자의 브라우저에서 실행되게 하는 공격입니다.
CSRF는 인증된 사용자가 의도하지 않은 요청을 보내게 하는 공격입니다.

 

① XSS : XSS는 공격자가 취약한 웹 사이트에 악의적인 스크립트를 삽입하여 사용자가 실행(자신의 PC에서)하도록 유도한 후에 사용자의 정보를 탈취하는 공격기법이다.

② CSRF : CSRF는 공격자가 웹 서버의 취약점을 이용하여 악성 스크립트 구문을 삽입하고, 정상적인 사용자로 하여금 자신의 의지와는 무관하게 게시판 설정 변경, 회원 정보 변경 등 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격이다.

* XSS와 CSRF의 차이점은
- XSS는 악성코드가 클라이언트 PC에서 실행되서 클라이언트 PC의 정보(쿠키 정보 등)가 공격자에게 탈취되는 것이고,
- CSRF는 공격자의 악의적인 요청이 클라이언트로 하여금 희생자 서버에서 실행되게 되는 공격입니다.

(희생자 은행 사이트에 피해자의 계좌에서 공격자의 계좌로 돈을 이체시키는 행위를 피해자가 나도 모르게 하게됩니다.)
(웹서버, 사용자 모두 피해를 입습니다.)

 [출처] [2022년 제3회 기사 실기 출제예상 문제] (9과목) 소프트웨어 개발 보안 구축 - 22 (수제비- IT 커뮤니티 (정보처리기사,빅데이터분석기사 등)) | 작성자 수제비쌤

 

 

 

94. 다음은 서버와 저장 장치를 연결하는 기술에 대한 설명이다. 괄호( ) 안에 들어갈 용어를 영문 약자 또는 영문 Full-name으로 쓰시오.

- ( ① )은/는 하드 디스크와 같은 데이터 저장 장치를 호스트 버스 어댑터에 직접 연결하는 방식이다.
- ( ② )은/는 저장 장치와 서버를 직접 연결하는 것이 아니라 네트워크를 통해 스토리지에 접속하고, 파일 단위로 관리하는 방식이다.
더보기

1. DAS (Direct Attached Storage)
2. NAS (Network Attached Storage)


1. DAS (Direct Attached Storage)

서버와 저장장치를 전용 케이블로 직접 연결하는 방식

서버에서 저장장치를 관리

저장장치를 직접 연결하므로 속도가 빠르고 설치 및 운영이 쉬움

다른 서버에서 스토리지에 접근하여 사용 불가

 

2. NAS (Network Attached Storage)

서버와 저장장치를 네트워크를 통해 연결하는 방식

별도의 파일 관리기능이 있는 NAS Storage가 내장된 저장장치를 직접관리

DAS에 비해 확장성 및 유연성이 좋음

서버들이 자유롭게 스토리지에 접근하여 파일 공유

 

3. SAN ( Storage Area Network)

DAS의 빠른처리와 NAS의 파일공유 장점을 혼합한 방식

서버와 저장장치를 연결하는 전용 네트워크를 별도로 구성

파이버 채널 스위치를 이용하여 네트워크 구성

- 파이버 채널 : 장치간 데이터 전송 속돌르 기가바이트로 높이기 위한 네트워크 기술

서버나 저장장치를 광케이블로 연결하므로 처리 속도가 빠름

서버들이 저장장치 및 파일을 자유롭게 공유

 

 

95. 파이썬 코드의 결과를 쓰시오

s = "Soojebi"
print(s*2)
더보기

답 SoojebiSoojebi

 

 

 

 

96. 다음은 객체 지향 설계에 대한 설명이다. 괄호( ) 안에 들어갈 용어를 쓰시오.

- ( ① )은/는 객체 지향 구성요소 중 특정 객체 내에 있는 변수와 메서드를 정의하는 일종의 틀이자 객체 지향 프로그래밍에서 데이터를 추상화하는 단위이다.
- 객체 지향 기법 중 ( ② )은/는 하나의 메시지에 대해 각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력이자 상속받은 여러 개의 하위 객체들이 다른 형태의 특성을 갖는 객체로 이용될 수 있는 성질이다.
더보기

1. 클래스 (Class)
2. 다형성 (Polymorphism)


객체 지향 설계의 구성요소는 클래스(Class), 객체(Object), 캡슐화(Encapsulation), 상속(Inheritance), 다형성(Polymorphism)입니다

클래스는 같은 종류(또는 문제 해결을 위한)의 집단에 속하는 속성(Attribute)과 행위(Behavior)를 정의한 것으로 객체지향 프로그램의 기본적인 사용자 정의 데이터형(User Defined Data Type)이라고 할 수 있습니다1.

객체는 데이터와 그 데이터에 관련된 메서드(Method)로 구성된 것으로, 클래스의 인스턴스(Instance)라고 할 수 있습니다.

캡슐화는 객체의 속성과 행위를 하나로 묶고, 실제 구현 내용 일부를 외부에 감추어 은닉하는 것입니다.

상속은 부모 클래스(Parent Class)가 가지고 있는 속성과 메서드를 자식 클래스(Child Class)가 물려받아 사용하는 것입니다.

다형성은 같은 타입 또는 같은 기능을 수행하는 함수나 메서드가 다른 동작을 하는 것입니다3.

 

[출처] [2022년 제3회 기사 실기 출제예상 문제] (1과목) 요구사항 확인 - 25 (수제비- IT 커뮤니티 (정보처리기사,빅데이터분석기사 등)) | 작성자 수제비쌤

 

 

 

 

 

 

97. 다음은 보안 공격에 대한 설명이다. 괄호( ) 안에 들어갈 용어를 쓰시오.

- ( ① )은/는 사용자 계정을 탈취해서 공격하는 유형 중 하나로, 다른 곳에서 유출된 아이디와 비밀번호 등의 로그인 정보를 다른 웹 사이트나 앱에 무작위로 대입해 로그인이 이루어지면 타인의 정보를 유출시키는 기법이다.
- ( ② )은/는 컴퓨터의 소프트웨어나 하드웨어 및 컴퓨터 관련 전자 제품의 버그, 보안 취약점 등 설계상 결함을 이용해 공격자의 의도된 동작을 수행하도록 만들어진 절차나 일련의 명령, 스크립트, 프로그램을 사용한 공격 행위이다.
더보기

1. 크리덴셜 스터핑 (Credential Stuffing)

2. 익스플로잇(Exploit)


 

크리덴셜 스터핑(Credential Stuffing) 공격은 공격자가 여러 사이트에서 수집한 사용자들의 로그인 인증 정보(Credential)를 다른 사이트의 계정 정보에 대입(Stuffing)하는 공격 방식입니다. 반면 키로거(Keylogger) 공격은 사용자가 입력한 키보드 입력을 가로채어 저장하는 악성 코드를 이용해 사용자의 비밀번호 등을 탈취하는 공격 방식입니다12.
즉, 크리덴셜 스터핑 공격은 이미 탈취된 로그인 정보를 이용해 다른 사이트에 로그인하는 것이고, 키로거 공격은 사용자가 입력한 정보를 가로채어 탈취하는 것입니다12.

 

익스플로잇(Exploit)은 컴퓨터 소프트웨어나 하드웨어의 버그나 보안 취약점 등 설계상 결함을 이용해 공격자가 의도한 동작을 수행하도록 만들어진 명령어, 스크립트, 프로그램 또는 특정한 데이터 조각을 말합니다12. 즉, 익스플로잇은 취약점 공격 행위를 수행하는 데 사용되는 것입니다1.

 

 

 

 

 

98. 다음 성적 테이블에서 과목이 자료구조이고, 학점이 A인 학생의 이름을 내림차순으로 정렬 하시오

[성적]

이름
과목
학점
김철수
C언어
A
한유리
자료구조
A
신짱구
자료구조
A
이훈이
알고리즘
B
공분산
자료구조
B
더보기

select 이름

from 성적

where 과목 = '자료구조' AND 학점 = 'A'

order by 이름 desc;

[출처] [2022년 제3회 기사 실기 출제예상 문제] (7과목) SQL 응용 - 27 (수제비- IT 커뮤니티 (정보처리기사,빅데이터분석기사 등)) | 작성자 보안쌤

 

 

 

 

 

 

99. 다음은 애플리케이션 성능 개선과 관련된 사항이다. 괄호( ) 안에 들어갈 용어를 쓰시오.

- ( ① )은/는 애플리케이션 성능 측정 지표 중 애플리케이션에 사용자가 요구를 입력한 시점부터 트랜잭션을 처리 후 그 결과의 출력이 완료할 때까지 걸리는 시간을 말한다.
- ( ② )은/는 소스 코드 품질분석 도구 중 동적 분석 도구로 자동화된 메모리 및 스레드 결함 발견 분석 도구이다.
더보기

1. Turnaround Time
2. Valgrind


Valgrind는 C/C++ 프로그램에서 발생할 수 있는 메모리 누수 등의 문제를 찾을 수 있는 오픈 소스 툴입니다1. Valgrind는 Memcheck이나 Addrcheck 툴을 사용하여 실행중인 프로그램에서 메모리 누출(leak)/오염(corruption)을 찾아낼 수 있습니다1. Valgrind는 크게 코어(Core)와 도구(Tool)로 구성되어 있으며, 코어는 클라이언트 프로그램(valgrind에 입력으로 들어가는)의 실행 코드를 실행 시간에 직접 가공하는 기회를 제공합니다2.

 [출처] [2022년 제3회 기사 실기 출제예상 문제] (10과목) 애플리케이션 테스트 관리 - 28 (수제비- IT 커뮤니티 (정보처리기사,빅데이터분석기사 등)) | 작성자 수제비쌤

 

 

 

100. 다음은 암호 알고리즘에 대한 설명이다. 괄호( ) 안에 들어갈 용어를 보기에서 골라 기호로 쓰시오.

- ( ① )은/는 유한체 위에서 정의된 타원곡선 군에서의 이산대수의 문제에 기초한 공개키 암호화 알고리즘으로 키의 비트 수를 적게하면서 동일한 성능을 제공한다.
- ( ② )은/는 국내 표준 서명 알고리즘 KCDSA(Korean Certificate-based Digital Signature Algorithm)를 위하여 개발된 해시함수로 MD5와 SHA1의 장점을 취하여 개발된 해시 알고리즘이다.

| 보기 |

ⓐ DES, ⓑ SEED, ⓒ AES, ⓓ RSA, ⓔ pmd, ⓕ ARIA, ⓖ IDEA, ⓗ LFSR, ⓘ ECC, ⓙ HAS-160, ⓚ HAVAL
더보기

1. i
2. j


암호화 알고리즘 

종류 설명
DES 
(Data Encryption Standard)
블록크기 64bit, 키 길이 56bit 인 페이스텔구조, 미국 연방 표준국(NIST) 암호화 알고리즘
AES DES  대체, 3DES의 성능 문제를 극복하기 위해 개발, 미국 표준 기술 연구소 
SEED 한국 인터넷 진흥원(KISA) 개발
ARIA 경량 환경 및 하드웨어에서 효율성 향상을 위해 개발, 국가정보원 + 산학연구협회가 개발
IDEA 스위스 연방기술 기관에서 개발
LFSR 선형 되먹임 시프트 레지스터
디피-헬만 최초의 공개키 알고리즘, 이산대수
RSA MIT 수학교수가 고안, 소인수분해 수학적 알고리즘
ECC RSA암호방식 대안, 타원곡선암호
ELGamal 이산대수 계산이 어려운 문제를 기본 원리로 함
MD5 MD4개선, 프로그램이나 파일의 무결성 검사에 사용
SHA-1 NSA에서 미 정부 표준으로 지정, DSA사용
SHA-256/384/512 256비트의 해시값을 생성하는 해시함수
HAS-160 국내 표준 서명 알고리즘을 위해 개발된 해시함수,  MD5 장점 + SHA-1장점

 

 


 

101. 다음은 응집도, 결합도에 대한 설명이다. 괄호( ) 안에 들어갈 용어를 쓰시오. 

- ( ① ) 결합도: 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우의 결합도로 두 모듈이 동일한 자료 구조를 조회하는 경우의 결합도이며, 자료 구조의 어떠한 변화는 모든 모듈에 영향을 미치게 된다.
- ( ② ) 응집도: 모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우의 응집도이다.
더보기

1. 스탬프 (Stamp)
2. 순차적 (Sequential)


결합도 - 내공외제스자 (자료 결합도가 좋음, 자료 결합도는 낮음)

모듈 내부가 아닌 외부의 모듈과 연관도 또는 모듈간의 상호 의존성

유형 설명
내용 결합도
(Content Coupling)
다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도
ex) 서로 얽혀있는 스파게티 코드일때
공통 결합도
(Common Coupling)
파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수 참조하고 전역 변수를 갱신하는 식으로 상호작용 하는 경우 결합도
ex) 전역 변수 참조할때
외부 결합도
(External Coupling)
두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜, 또는 디바이스 인터페이스를 공유할 경우 결합도
ex) 외부의 있는 변수를 참조했을때  
제어 결합도
(Control Coupling)
단순 처리할 대상인 값만 전달되는게 아니라 어떻게 처리를 해야 한다는 제어 요소가 전달되는 경우 결합도
ex) 제어 요소 전달 : f a(x, y, z) → if (x > 10) 일때 전달
스탬프 결합도
(Stamp Coupling)
모듈간의 인터페이스로 배열이나 오브젝트, 스트럭처 등 전달되는 경우
ex) 자료구조를 넘김 : int (*X) → 포인터 또는 [] 배열을 넘길때
자료 결합도
(Data Coupling)
모듈 간의 인터페이스로 값이 전달되는 경우
ex) 데이터 전달 : f a(int x) → a(10) 파라미터 전달

 

응집도 - 우논시절통순기 (기능적 응집도 좋음, 응집도가 높음)

모듈의 독립성을 나타내는 정도, 모듈 내부 구성요소간 연관 정도, 하나의 모듈은 하나의 기능을 수행할 수록 응집도가 높다.

유형 설명
우연적 응집도
(Coincidental Cohesion)
모듈 내부의 각 구성요소가 연관이 없을 경우
ex) 아무상관 없는 모듈끼리 모아둠
논리적 응집도
(Logical Cohesion)
유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우
ex) 비슷한 모듈끼리 모아둠
시간적 응집도
(Temporal Cohesion)
연관된 기능이라기 보다 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우
ex) 같은 시간대에 일어나는 모듈을 모아둠
절차적 응집도
(Procedural Cohesion)
모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우
ex) 모듈 내부의 기능이 순차적으로 수행되는 경우
통신적 응집도
(Communication Cohesion)
동일한 입, 출력을 사용하여 다른 기능을 수행하는 활동들이 모여있을 경우 응집도
ex) 동일한 입력 동일한 출력을 모아둔것
순차적 응집도
(Sequential Cohesion)
모듈 내에서 한 활동으로 부터 나온 출력값을 다른 활동이 사용할 경우
ex) 출력값이 나왔으면 그 출력값을 입력값으로 사용하는것
기능적 응집도
(Functional Cohesion)
모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우 
ex) +함수의 기능을 하기위해 똘똘 뭉쳐져있음, + 말고는 아무것도 안함

 

[출처] [2022년 제3회 기사 실기 출제예상 문제] (8과목) 서버 프로그램 구현 - 30 (수제비- IT 커뮤니티 (정보처리기사,빅데이터분석기사 등)) | 작성자 수제비쌤

 

 

 

 

 

102. 인터넷과 같은 공중망에 인증, 암호화, 터널링 기술을 활용하여 마치 전용망을 사용하는 효과를 가지는 보안 솔루션은?

더보기

가상사설망(VPN; Virtual Private Network)

 

[출처] [2022년 제3회 기사 실기 출제예상 문제] (9과목) 소프트웨어 개발 보안 구축 - 31 (수제비- IT 커뮤니티 (정보처리기사,빅데이터분석기사 등)) | 작성자 보안쌤

 

 

 

 

103. 다음은 XP의 12가지 기본 원리에 대한 설명이다. 괄호( ) 안에 들어갈 용어를 영문 약자 또는 영문 Full-name으로 쓰시오.

- ( ① )은/는 작성해야 하는 프로그램에 대한 테스트를 먼저 수행하고 이테스트를 통과할 수 있도록 실제 프로그램의 코드를 작성한다는 원리이다.
- ( ② )은/는 소프트웨어를 보다 쉽게 이해할 수 있고 적은 비용으로 수정할 수 있도록 겉으로 보이는 동작의 변화 없이 내부구조를 변경하고 재구성한다는 원리이다.
더보기

1. TDD (Test Driven Development)
2. Refactoring


XP

(eXtreame Programming)

' 의사소통 개선과 즉각적인 피드백으로 소프트웨어 품질을 높이기 위한 방법론
' 1~3주의 반복 개발 주기
  XP 5가지 가치 용기 (Courage) 용기를 가지고 자신감 있게 개발
    단순성 (Simplicity) 필요한 것만 하고 그 이상의 것들은 하지 않음
    의사소통 (Communication) 개발자, 관리자, 고객간의 원활한 소통
    피드백 (Feedback) 의사 소통에 대한 빠른 피드백
    존중 (Respect) 팀원간의 상호 존중
  XP 12가지 기본원리 짝 프로그래밍(Pair Programming) 개발자 둘이서 짝으로 코딩하는 원리
    공동 코드 소유 (Collective Ownership) 시스템에 있는 코드는 누구든지 언제라도 수정 가능
    지속적인 통합 (Continuous Integration) 매일 여러번씩 소프트웨어를 통합하고 빌드
    계획세우기 (Planning Process) 고객이 요구하는 비즈니스 가치 정의, 개발자가 필요한것은 무엇이며 어떤 부분에서 지연될 수 있는지 알려주어야 한다는 원리
    작은릴리즈 ( Small Release) 작은 시스템을 먼저 만들고, 짧은 단위로 업데이트 한다
    메타포어 (Metaphor) 공통적인 이름 체계와 시스템 서술서를 통해 고객과 개발자간의 의사소통을 원활하게 한다는 원리
    간단한디자인(Simple Desing) 현재의 요구사항에 적합한 가장 단순한 시스템을 설계한다는 원리
    테스트 기반 개발 (TDD; Test Driven Develop) 작성해야 하는 프로그램에 대한 테스트를 먼저 수행하고 이 테스트를 통과할 수 있도록 실제 프로그램의 코드를 작성
    리팩토링 (Refactoring) 프로그램의 기능을 바꾸지 않으면서 중복제거, 단순화 등을 위해 시스템 재구성 한다는 원리
    40시간 작업 (40-Hour-Work) 개발자가 피곤으로 인해 실수하지 않도록 일주일에 40시간이상을 일하지 말아야 한다는 원리
    고객상주 (On Site Customer) 개발자들의 질문에 즉각 대답해 줄 수 있는 고객을 프로젝트에 풀타임으로 상주시켜야한다는 원리
    코드표준 (Coding Standard) 효과적인 공동 작업을 위해 모든 코드에 대한 코딩 표준을 정의해야 한다는 원리

 

[출처] [2022년 제3회 기사 실기 출제예상 문제] (1과목) 요구사항 확인 - 32 (수제비- IT 커뮤니티 (정보처리기사,빅데이터분석기사 등)) | 작성자 수제비쌤

 

 

 

 

 

104. 다음은 인터페이스 간의 통신을 위하여 이용되는 데이터 포맷에 대한 설명이다. 괄호( ) 안에 들어갈 용어를 쓰시오.

- ( ① )은/는 비동기 브라우저 / 서버 통신(AJAX)을 위해 "속성-값 쌍", "키-값 쌍"으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷이다.
- ( ② )은/는 데이터를 사람이 쉽게 읽을 수 있는 형태로 표현하기 위해 사용하는 데이터 직렬화 양식이다.
- ( ③ )은/는 HTML의 단점을 보완한 인터넷 언어로, SGML의 복잡한 단점을 개선한 특수한 목적을 갖는 마크업 언어이다.
더보기

1. JSON (Javascript Object Notaion)

2. YAML (YAML Ain't Markup Language)

3. XML (Extensible Markup Language)

 

 

 

 

105. 다음은 인증 기술의 유형에 대한 설명이다. 괄호( ) 안에 들어갈 유형을 쓰시오.

- ( ① )기반 인증은 '그가 가지고 있는 것(Something You Are)'으로 예시로는 홍채, 정맥 등이 있다.
- ( ② )기반 인증은 '그가 하는 것(Something You Do)'으로 예시로는 서명, 움직임, 음성 등이 있다.

 

 

더보기

1. 생체

2. 행위(특징)


1) 인증 기술 유형 - 지소생특

유형 설명 예시
지식기반 사용자가 기억하고 있는 지식 ID/PW
소지기반 소지하고 있는 사용자 물품 공인인증서, OTP
생체기반 고유한 사용자 생체정보 홍채, 정맥, 얼굴, 지문
특징기반 사용자의 특징 활용 서명, 발걸음, 몸짓

 

 

 

 

 

106. 다음은 단위 테스트와 관련된 내용이다. 괄호( ) 안에 들어갈 용어를 쓰시오.

- ( ① )은/는 필요 테스트를 인자를 통해 넘겨주고, 테스트 완료 후 그 결괏값을 받는 역할을 하는 가상의 모듈로 하위 모듈을 호출하는 상위 모듈의 역할을 수행한다.
- ( ② )은/는 일시적으로 필요한 조건만을 가지고 임시로 제공되는 시험용 모듈로 상위 모듈에 의해 호출되는 하위 모듈의 역할을 수행한다.
더보기

1. 드라이버

2. 스텁

 

 

 

 

 

107. 다음은 Agile 방법론과 관련된 내용이다. 괄호( ) 안에 들어갈 용어를 쓰시오.

- ( ① )은/는 스크럼에서 해당 스프린트가 계획된 대로 나아가고 있는지, 정해진 목표를 달성하기 위해 팀 차원의 조정이 필요한지 알 수 있게 하고, 백로그 대비 남아있는 시간을 확인할 수 있는 도구이다.
- ( ② )은/는 Toyota에서 처음 사용한 Agile 프로젝트 관리에 사용되는 시각화 도구로 전체 워크플로를 카드 형태로 나타내고 수행된 활동, 진행 중인 작업 및 보류 중인 활동을 구별할 수 있는 도구이다.
더보기

1. 번다운차트 (Burn Down Chart)
2. 칸반보드 (Kanban boad)

 

 

 

 

 

108. 다음은 UML에 대한 설명이다. 괄호( ) 안에 들어갈 용어를 영어 Full-name으로 쓰시오.

- ( ① )은/는 시스템이 제공하고 있는 기능 및 그와 관련된 외부 요소를 사용자의 관점에서 표현하는 다이어그램이다.
- ( ② )은/는 시스템이 어떤 기능을 수행하는지를 객체의 처리 로직이나 조건에 따른 처리의 흐름을 순서대로 표현하는 다이어그램이다.
더보기

1. Usecase Diagram

2. Activity Diagram


구분 다이어그램 설명 예시
구조적 다이어그램
(Structural)/ 정적 (Static)
클래스
(Class)
객체지향 모델링 시 클래스의 속성 및 연산과 클래스간 정적인 관계를 표현한 다이어그램  
객체
(Object)
클래스에 속한 사물(객체)들, 즉 인스턴스를 특정 시점의 객체와 객체 사이의 관계로 표현
연관된 모든 인스턴스를 표현함
 
컴포넌트
(Component)
시스템을 구성하는 물리적인 컴포넌트와 그들 사이의 의존관계를 나타냄  
배치
(Deployment)
컴포넌트의 사이의 종속성을 표현하고 결과물, 프로세스, 컴포넌트등 물리적 요소들의 위치 표현  
복합체구조
(Composite structure)
클래스나 컴포넌트가 복합구조를 갖는 경우 그 내부 구조를 표현하는 다이어그램   
패키지
(Package)
유스케이스나 클래스 등의 모델 요소들을 그룹화 한 패키지들의 관계를 표현   
행위적 다이어그램
(Begavioral)/ 동적 (Dynamic)
유스케이스
(Usecase)
시스템이 제공하고 있는 기능 및 그와 관련된 외부요소를 사용자의 관점에서 표현  
시퀀스
(Sequence)
객체 간 동적 상호작용을 시간적 개념을 중심으로 메시지 흐름으로 표현  
커뮤니케이션
(Communication)
동작에 참여하는 객체들이 주고 받는 메시지를 표현하고, 메시지 뿐만 아니라 객체 간의 연관까지 표현  
상태 (State) 하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호 작용에 따라 상태가 어떻게 변화하는지 표현  
활동 (Activity) 시스템이 어떤 기능을 수행하는지 객체의 처리 로직이나 조건에 따른 처리의 흐름을 순서대로 표현  
타이밍
(Timing)
객체의 상태 변화와 시간 제약을 명시적으로 표현  

 

 

 

 

 

109. 다음은 데이터베이스에서 조건을 만족하는 튜플을 찾거나 순서대로 정렬할 때 다른 튜플들과 구별할 수 있는 기준이 되는 속성인 키와 관련된 용어이다. 괄호( ) 안에 들어갈 용어를 정확하게 쓰시오.

- ( ① )은/는 식별자에 의해 엔터티 타입 내에 모든 엔터티들이 유일하게 구분하는 키의 특성이다.
- 키의 종류 중 ( ② )은/는 릴레이션을 구성하는 모든 튜플에 대해 ( ① )은 만족하지만, 최소성(Minimality)은 만족하지 못하는 키이다.

 

더보기

1. 유일성 (Unique)

2. 슈퍼키 (Super Key)


  •  
 
  • 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때
  • 기준이 되는 속성을 말한다.
  • 키의 종류
    • 후보키(Candidate Key) : 기본키가 될 수 있는 것
    • 기본키(Primary Key)
    • 대체키(Alternate Key) : 기본키 외 나머지 후보키
    • 슈퍼키(Super Key) : 유일성은 만족, 최소성은 만족 못함
    • 외래키(Foregin Key)
후보키
(Candidate Key)
  • 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분 집합.
  • 기본키로 사용할 수 있는 속성들로, 하나일 수도 있고, 여러 개 일 수도 있다.
  • 후보키는 유일성(Unique)과 최소성(Minimality)을 모두 만족시켜야 한다.
  • 유일성
    • 하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 있어야 함
  • 최소성
    • 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성되어야함
기본키
(Primary Key)
  • 기본키는 후보키 중에서 특별히 선정된 주키(Main Key)로 중복된 값을 가질 수 없다.
  • 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성
  • 기본키는 후보키의 성질을 갖는다. 즉, 유일성과 최소성을 가지며 튜플을 식별하기 위해 반드시 필요한 키
  • 기본키는 NULL 값을 가질 수 없다. 즉 튜플에서 기본키로 설정된 속성에는 NULL 값이 있어서는 안됨
대체키(Alternate Key)
  • 대체키는 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미한다. 보조키라고도 한다.
슈퍼키
(Super Key)
  • 슈퍼키는 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키로서 릴레이션을 구성하는 모든 튜플들 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않는다.
    슈퍼키는 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족시키지만, 최소성은 만족시키지 못한다.
외래키
(Foreign Key)
  • 외래키는 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합을 의미한다.
  • 외래키는 참조되는 릴레이션의 기본키와 대응되어 릴레이션 간의 참조 관계를 표현하는데 중요한 도구
  • 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되었을 때의 속성 A를 외래키라고 함
  • 외래키로 지정되면 참조 릴레이션의 기본키에 없는 값은 입력할 수 없다.

 

 

 

 

 

 

110. 다음은 인터페이스 기술 관련 용어이다. 괄호( ) 안에 들어갈 용어를 쓰시오.

- ( ① )은/는 자바스크립트를 사용하여 웹 서버와 클라이언트 간 비동기적으로 ( ② ) 데이터를 교환하고 조작하기 위한 웹 기술이다.
- ( ① )은/는 브라우저가 가지고 있는 XMLHttpRequest 객체를 이용해서 전체 페이지를 새로 로드하지 않고 필요한 일부 페이지의 데이터만을 로드하는 기법이다.
​- ( ② )은/는 HTML의 단점을 보완한 인터넷 언어로, SGML의 복잡한 단점을 개선한 특수한 목적을 갖는 마크업 언어이다.
더보기

1. AJAX (Asynchronous Javascript And XML)

2. XML (Extensible Markup Language)

 


111. 다음은 인터페이스 동작 상태를 검증하고 모니터링할 수 있는 도구인 인터페이스 구현 검증 도구에 대한 설명이다. 다음에서 설명하는 도구 명칭을 쓰시오.

- ( ① )은/는 서비스 호출, 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임워크로 각 테스트 대상 분산 환경에 데몬을 사용하여 테스트 대상 프로그램을 통해 테스트를 수행하고, 통합하며 자동화하는 검증 도구이다.

​- ( ② )은/는 루비(Ruby) 기반 웹 애플리케이션 테스트 프레임워크로 모든 언어 기반의 웹 애플리케이션 테스트와 브라우저 호환성 테스팅 가능한 도구이다.
더보기

1. STAF

2. watir


인터페이스 구현 검증 도구 - 엑스피 엔셀웨

도구 설명
xUnit * 자바(Junit), C++(Cppunit), .Net(Nunit)등 다양한 언어를 지원하는 단위테스트 프레임워크
* 소프트웨어의 함수나 클래스같은 서로 다른 구성 원소(단위)를 테스트 할 수 있게 해주는 도구
STAF * 서비스 호출, 컴포넌트 재사용등 다양한 환경을 지원하는 테스트 프레임워크
* 각 테스트 대상 분산환경에 데몬을 사용하여 테스트 대상 프로그램을 통해 테스트를 수행하고 통합하며 자동화하는 검증도구
* 다양한 플랫폼 및 운영 체제에서 테스트 작업을 자동화하는 데 사용할 수 있는 프로세스 호출, 리소스 관리, 데이터 관리 및 로깅을 비롯한 다양한 서비스를 제공
FitNesse * 웹 기반 테스트 케이스 설계/실행/결과 확인 등을 지원하는 테스트 프레임워크
* 사용자가 테스트 케이스 테이블을 작성하면 빠르고 편하게 자동으로 원하는 값에 대해 테스트를 할 수 있는 장점
* 승인테스트를 만들고 관리하기 위한도구
NTAF * Fitnesse의 장점인 협업기능과 STAF의 장점인 재사용및 확장성을 통합한 NHN의 자동화 테스트 프레임워크
Selenium * 다양한 브라우저 지원 및 개발언어를 지원하는 웹 애플리케이션 테스트 프레임워크
* 테스트 스크립트 언어를 학습할 필요 없이 기능 테스트를 만들기 위한 도구를 제공
watir * 루비 기반 웹 애플리케이션 테스트 프레임워크
* 모든 언어 기반의 웹 애플리케이션 테스트와 브라우저 호환성 테스팅 가능

STAF와 FITNESSE는 모두 인터페이스 구현 검증 도구입니다. 그러나 STAF는 서비스 호출, 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임워크이고, FitNesse는 웹 기반 테스트 케이스 설계/실행/결과 확인 등을 지원하는 테스트 프레임워크입니다12. 또한 NTAF는 STAF와 FitNesse를 통합한 테스트 자동화 프레임워크입니다2.

 

 

 

 

112. 다음은 통합 구현을 위한 주요 연계 기술에 대한 설명이다. 괄호( ) 안에 들어갈 연계 기술을 쓰시오.

- ( ① )은/는 네트워크를 경유하는 프로세스 간 통신의 접속점으로 클라이언트와 서버 프로그램 사이에 데이터를 송수신할 수 있다.
- ( ① )은/는 IP address와 Port 넘버가 합쳐진, 네트워크상에서 서버 프로그램과 클리어언트 프로그램이 통신할 수 있도록 해주는 교환 기술이다.
​- ( ② )은/는 데이터베이스에서 자료를 조회하거나 업데이트하기 위해서 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다.
더보기

1. 소켓
2. jdbc

 

[출처] [2023년 제1회 기사 실기 출제예상 문제] (4과목) 통합 구현 - 6 (수제비- IT 커뮤니티 (정보처리기사,빅데이터분석기사 등)) | 작성자 수제비쌤

 

 

 

113.  다음은 C언어 코드이다. 출력 결과를 쓰시오

#include <stdio.h>
void main( ){
  int low, high;
  int mid;
  int data[9] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
  int key = 7;
  int count = 0;

  low = 0;
  high = 8;

  while(low <= high){
	  count++;
	  mid = (low + high) / 2;
	  if(key == data[mid]){
		  printf("%d", count);
		  low = high + 1;
	  }
	  else if(key < data[mid]){
		  high = mid - 1;
	  }
	  else{
		  low = mid + 1;
	  }
  }
}
더보기

답 2

 

 

114. 다음은 C언어 코드이다. 출력 결과를 쓰시오

#include <stdio.h>

void main( ){
  int i;
  int sum = 0;
  int arr[5] = {2, 3, 5, 7, 11};
  int *p = arr+2;
  
  for(i=-1; i<2; i++){
  	sum += p[i];
  }

  printf("%d", sum);
}
더보기

답 : 15

#include <stdio.h>

void main( ){
  int i;
  int sum = 0;
  int arr[5] = {2, 3, 5, 7, 11};
  int *p = arr+2; // p는 arr+2 즉 arr[2]의 주소를 가지고 있다.  즉 p[0]은 arr[2]와 동일
  
  for(i=-1; i<2; i++){ //반복문을 돌릴 때 1번째 반복 p[-1] = arr[1]과 동일, 2번째 반복 p[0] =arr[2]와 동일, 세 번째 반복 p[1] = arr[3]과 동일
  	sum += p[i]; 
    // 1 번째 반복 sum = 0 + arr[1] = 0 + 3 = 3
	// 2번째 반복 sum = 3 + arr[2] = 3 + 5 = 8
	// 3번째 반복 sum = 8 + arr[3] = 8 + 7 = 15 이 되어 최종적으로 15가 나온다.
  }

  printf("%d", sum);
}

 

 

 

 

 

115. 다음은 C언어이다. 출력 결과를 쓰시오

#include <stdio.h>

void fn(int n){
	if(n > 1)
		fn(n-1);

	printf("%d", n);
}

void main( ){
	fn(4);
}
더보기

답 1,2,3,4


#include <stdio.h>

void fn(int n){
	if(n > 1)
		fn(n-1); // 여기에서 n은 4가 들어오면, if는 참이니깐 fn(3);을 호출. 여기서 중요한게 fn(3)이 끝나야 print를 한다.
				 // f(1)이 될 때 까지 재귀함수를 호출하고 f(1)이 if가 거짓이라 printf를 출력하는데 그전에 n값도 차례로 출력되서 1,2,3,4 출력됨 
	printf("%d", n);
}

void main( ){
	fn(4);
}

 

 

 

 

116. 다음은 자바 코드이다. 출력 결과를 쓰시오.

public class Soojebi{
	public static void main(String[] args){
		System.out.print(("1"+2)+(3+4));
	}
}​
더보기

답 127

[출처] [2023년 제1회 기사 실기 출제예상 문제] (6과목) 프로그래밍 언어 활용 - 10 (수제비- IT 커뮤니티 (정보처리기사,빅데이터분석기사 등)) | 작성자 두음쌤

 

 

 

117. 다음은 자바 코드이다. 출력 결과를 쓰시오.

public class Soojebi{
	public static void main(String[] args){
		int arr[][][] = new int[2][3][2];
		 
		for (int i = 1; i < 2; i++) {
		    for (int j = i; j < 3; j++) {
		        for (int k = j; k < 2; k++) {
		        	arr[i][j][k] = i * j * k;
		        }
		    }
		}

		for (int i = 0; i < 2; i++) {
		    for (int j = 0; j < 3; j++) {
		        for (int k = 0; k < 2; k++) {
		            System.out.print(arr[i][j][k]);
		        }
		    }
		}
	}
}
더보기

 답 000000000100


public class Soojebi{
	public static void main(String[] args){
		int arr[][][] = new int[2][3][2];
		 
		for (int i = 1; i < 2; i++) { //i=1
		    for (int j = i; j < 3; j++) { j=1,2가 가능하지만 
		        for (int k = j; k < 2; k++) { //k=j 즉 1,2중에 2는안되기 때문에 이 for문의 조건은 111만 가능하다
		        	arr[i][j][k] = i * j * k; // arr[1][1][1] = 1; 이렇게 선언과 동시 대입
		        }
		    }
		}

		for (int i = 0; i < 2; i++) {
		    for (int j = 0; j < 3; j++) {
		        for (int k = 0; k < 2; k++) {
		            System.out.print(arr[i][j][k]); // 여기에 출력되는 수는 아래와 같다.
		        }
		    }
		}
	}
}
//arr[0][0][0] = 0 (대입은 위에서 arr[1][1][1] = 1만 대입하고 이후 대입값이 없으므로 0을 출력한다. 이하 숫자만 보여주겠다
//001 = 0
//010 = 0
//011 = 0
//020 = 0
//021 = 0
//100 = 0
//101 = 0
//110 = 0
//111 = 1  -- 여기만 1 대입하고 나머지 모두 0
//120 = 0
//121 = 0
// 결국 개행안한 프린트문엔 000000000100 출력하게됨

 

[출처] [2023년 제1회 기사 실기 출제예상 문제] (6과목) 프로그래밍 언어 활용 - 11 (수제비- IT 커뮤니티 (정보처리기사,빅데이터분석기사 등)) | 작성자 두음쌤

 

 

 

 

 

118. 다음은 자바 코드이다. 출력 결과를 쓰시오.

class Parent{
  public Parent( ){
    System.out.print("A");
  }
  public Parent(int a){
	System.out.print("B");
  }
  public void fn( ){
    System.out.print("C");
  }
}

class Child extends Parent{
  public Child( ){
	super();
    System.out.print("D");
  }
  public Child(int a){
	super(a);
	System.out.print("E");
  }
  public void fn( ){
    System.out.print("F");
  }
}

public class Soojebi{
  public static void main(String args[]){
    Parent c = new Child(5);
    Parent d = new Child();
    c.fn();
    System.out.print("G");
  }
}
더보기

답 BEADFG

 

 

 

119. 다음은 파이썬 코드이다. 출력 결과를 쓰시오.

for i in range(1, 5):
    for j in range(0, i):
        print('*', end='')
    print()
더보기

*

**

***

****

 

 

120.다음은 C언어 코드이다. 출력 결과를 쓰시오.

 

#include <stdio.h>
void main(){
  int a = 0x78;
  int b = 78;

  printf("%d %d", a & b, a || b);
}
더보기

721


비트연산자의 종류는 다음과 같습니다12345:

AND 연산(&): 두 비트가 모두 1일 때만 1을 반환합니다.
OR 연산(|): 두 비트 중 하나라도 1이면 1을 반환합니다.
NOT 연산(~): 비트를 반전시킵니다.
XOR 연산(^): 두 비트가 다르면 1을 반환합니다.

 

a = 8진수 78이다. 이를 10진수로 바꾸면 120이다. 이를 2진수로바꾸면 1111000

b = 78이다. 이를 2진수로 바꾸면 1001110

비트연산을 하기위해

1111000

1001110

a & b = 비트연산자로, 둘다 1이면 1 아니면 0 -> 1001000 = 72

a || b = 논리연산자로 값이 있음 참 (1), 없으면 거짓(0)이다. 그래서 1 

답은 721

 

댓글