1. 다음은 C언어 코드이다. 출력 결과를 쓰시오.
#include <stdio.h>
struct SOOJEBI_STRUCT
{
int n;
char c;
};
int main()
{
// 구조체 변수 s 선언
struct SOOJEBI_STRUCT s;
// 구조체 'struct SOOJEBI_STRUCT' 사이즈 8 출력
printf("%1d", sizeof(struct SOOJEBI_STRUCT));
// 구조체 변수 s 사이즈 출력
printf("%1d", sizeof(s));
return 0;
}
▷ 88
구조체를 정의한 후, 구조체 변수 s를 선언했다. 그 다음 구조체와 구조체 변수 s의 사이즈를 출력한다.
2. 다음 직원 테이블이 있다. [조건]에 맞도록 SQL 문을 작성하시오.
[조건]
- 테이블 명은 직원이다.
- 대소문자를 구분하지 않는다.
- UPDATE 구문을 사용한다.
- 직원 테이블에서 이름이 '홍길동'인 직원의 직급을 부장으로 갱신한다.
[직원] 테이블
속성명 | 테이터 타입 | 비고 |
직원번호 | VARCHAR(10) | PRIMARY KEY |
이름 | VARCHAR(20) | |
직급 | VARCHAR(10) | |
연봉 | INT | |
휴대전화 | VARCHAR(11) | |
주소 | VARCHAR(40) |
▷ UPDATE 직원 SET 직급 = '부장' WHERE 이름 = '홍길동';
UPDATE 구문의 WHERE 절에서 이름이 '홍길동'이면 SET 절에서 직급을 '부장'으로 갱신한다.
3. 다음은 자바 코드이다. 출력 결과를 쓰시오.
public class SoojebiClass{
public SoojebiClass(){
System.out.print("1");
}
public SoojebiClass(int a){
System.out.print("2");
}
public void finalize(){
System.out.print("3");
}
public void fn(){
System.out.print("4");
}
public static void main(String[] args){
SoojebiClass a = new SoojebiClass(5);
a.fn();
a.finalize();
}
}
▷ 243
4. 다음은 파이썬 코드이다. 출력 결과를 쓰시오.
a, b = 10, 20
a, b = b, a
print(b)
▷ 10
5. 다음은 C언어 코드이다. 출력 결과를 쓰시오.
#include <stdio.h>
int main()
{
char a = 'A';
int b = 10;
printf("%c%05d", a, b);
return 0;
}
▷ A00010
%c는 문자열 출력, %05d는 5자리 정수를 출력하는데 빈자리를 0으로 채운다.
6. 다음 SQL 문의 실행 결과를 쓰시오.
[EMP_SALARY] 테이블
EMP_ID | SALARY |
2022001 | 15000 |
2022002 | 12000 |
2022003 | 11000 |
2022004 | 14000 |
[EMP_DIV] 테이블
EMP_ID | DIV | EMP_NAME |
2022001 | 기획팀 | 강은미 |
2022002 | 개발팀 | 김정미 |
2022003 | 마케팅팀 | 홍길동 |
SELECT SALARY FROM EMP_SALARY
WHERE EMP_ID = (SELECT EMP_ID FROM EMP_DIV WHERE EMP_NAME = '홍길동');
▷ 11000
이름이 '홍길동'인 직원의 연봉을 구하는 SQL문이다.
7. 다음은 파이썬 소스 코드이다. 출력 결과를 쓰시오.
s = '정보처리기사 빅데이터분석기사 정보처리산업기사 정보처리기능사'
s.count('기사')
▷ 3
count()는 문자열에서 임의의 부분 문자열의 횟수를 반환한다.
8. 다음 Java 프로그램의 실행 결과로 가장 알맞은 것은?
import java.util.Map;
import java.util.HashMap;
import java.util.Collection;
public class SoojebiClass{
public static void main(String args[]){
Map<String, String> map = new HashMap(String, String>();
// 데이터 입력
map.put("Str1", "정보관리기술사");
map.put("Str2", "정보처리기사");
map.put("Str3", "빅데이터분석기사");
map.put("Str4", "정보처리산업기사");
map.put("Str5", "정보처리기능사");
// key가 Str1, Str2, Str3, Str4이면 삭제
for(int i = 0; i < 5; i++){
String key = "Str" + Integer.toString(i);
map.remove(key);
}
// key가 Str5인 경우 출력
System.out.println(map);
}
}
▷ {Str5=정보처리기능사}
9. 다음은 자바 코드이다. 출력 결과를 쓰시오.
class Soojebi{
public static void main(String[] args){
int i = 1;
int sum = 0;
do{
sum = sum + i;
i++;
}while(i < 0);
System.out.print(sum);
}
}
▷ 1
10. 다음은 C언어 코드이다. 출력 결과를 쓰시오.
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]){
char *p = "hello soojebi world";
char *pSoojebi = "soojebi";
char *pTemp;
pTemp = strstr(p, pSoojebi);
if(pTemp != NULL){
printf("%s\n", pTemp);
} else{
printf("%s\n", p);
}
return 0;
}
▷ soojebi world
strstr은 첫번째 매개변수 문자열에서 두번째 매개변수 문자열로부터 부분 문자열을 찾는 함수이다.
"hello soojebi world" 문자열에서 "soojebi" 문자열을 찾고, 찾으면 찾은 위치 주소값, 못 찾으면 NULL을 리턴한다.
11. 다음은 요구사항 확인/검증 단계와 관련된 용어이다. 활호 안에 들어갈 올바른 용어를 보기에서 골라 쓰시오.
- ( 1 )은/는 2~3명이 진행하는 리뷰의 형태로 요구사항 명세서 작성자가 요구사항 명세서를 설명하고 이해 관계자들이 설명을 들으면서 결함을 발견하는 형태로 진행되는 기법이다.
- 또한 ( 2 )은/는 검토 자료를 회의 전에 배포해서 사전 검토한 후 짧은 시간 동안 회의를 진행하는 형태로 리뷰를 통해 오류를 검출하고 문서화하는 기법이다.
[보기]
Peer Review, Walk Through, Inspection, Injection, Code Review, Alpha Test, Beta Test, Open Innovation, Object Modeling, Dynamic Modeling |
▷ 1: Peer Review / 2: Walk Through4
- 인스펙션(Inspection): 워크스루를 발전시킨 형태로 소프트웨어 개발 단계에서 산출된 결과물의 품질을 평가하고, 이를 개선하기 위한 방법을 제시한다.
- 알파 테스트(Alpha Test): 개발자의 장소에서 사용자가 개발자 앞에서 행하는 테스트 기법
- 베타 테스트(Beta Test): 선정된 최종 사용자가 여러 명의 사용자 앞에서 행하는 테스트 기법
12. 다음은 Agile의 방법론에 대한 설명이다. 괄호 안에 들어갈 용어를 쓰시오.
- ( 1 )은/는 1-3주의 반복(Iteration) 개발 주기를 가지며, 5가지 가치와 12개의 실천 항목이 존재하는 개발 방법론이다.
- ( 2 )은/는 도요타의 린 시스템 품질 기법을 소프트웨어 개발 프로세스에 적용해서 낭비 요소를 제거하여 품질을 향상시킨 방법론이다.
▷ 1: (XP)eXtreme Programming / 2: 린(Lean)
13. 다음은 비용 산정과 관련된 용어이다. 괄호 안에 들어갈 올바른 용어를 보기에서 골라 쓰시오.
- ( 1 )은/는 소프트웨어 각 기능의 원시 코드 라인 수의 낙관치, 중간치, 비관치를 측정하여 예측치를 구하고 이를 이용하여 비용을 산정하는 방식이다.
- ( 2 )은/는 보헴(Bohem)이 제안한 모형으로 프로그램 규모에 따라 비용을 산정하는 방식이다. 규모에 따라 유형이 조직형, 반분리형, 임베디드형으로 나뉜다.
[보기]
COCOMO, LoC(Lines of Code), Man Month, Putnam, FP(Function Point), CPM(Critical Path Method), PERT |
▷ 1: LoC(Lines of Code) / 2: COCOMO
- Man Month: 한 사람이 1개월 동안 할 수 있는 일의 양을 기준으로 프로젝트 비용을 산정하는 방식
- Putnam: 소프트웨어 개발 주기의 단계별로 요구할 인력의 분포를 가정하는 방식으로 생명주기 예측 모형이라고 함
- FP(Function Point, 기능점수 모형): 요구 기능을 증가시키는 인자별로 가중치를 부여하고, 요인별 가중치를 합산하여 총 기능의 점수를 계산하여 비용을 산정하는 방식
- PERT: 일의 순서를 계획적으로 정리하기 위한 수렴 기법으로, 비관치/중간치/낙관치의 3점 추점 방식을 통해 일정을 관리하는 기법
14. 다음은 UI 설계원칙에 대한 설명이다. 괄호 안에 들어갈 원칙을 영어로 쓰시오.
- ( 1 )은/는 정확하고 완벽하게 사용자의 목표가 달성될 수 있도록 제작되어야 하는 원칙이다.
- ( 2 )은/는 사용자의 요구사항을 최대한 수용하고, 실수를 방지할 수 있도록 제작되어야 하는 원칙이다.
▷ 1: Efficiency(유효성) / 2: Flexibility(유연성)
- 직관성(Intuitiveness): 누구나 쉽게 이해하고, 쉽게 사용할 수 있어야 함
- 유효성(Efficiency): 정확하고 완벽하게 사용자의 목표가 달성될 수 있도록 제작
- 학습성(Learnability): 초보자와 숙련자 모두가 쉽게 배우고 사용할 수 있게 제작
- 유연성(Flexibility): 사용자의 요구사항을 최대한 수용하고 실수를 방지할 수 있도록 제작
15. 다음은 데이터 모델에 대한 설명이다. 괄호 안에 들어갈 용어를 쓰시오.
- ( 1 ) 데이터 모델은 트랜잭션의 인터페이스를 설계하는 단계로, DBMS에 맞는 논리적 스키마를 설계하고 정규화를 수행한다.
- ( 2 ) 데이터 모델은 사용자의 요구에 대한 트랜잭션을 모델링하는 단계로, 주요 산출물로는 개체관계 다이어그램(ERD)가 있다.
▷ 1: 논리 / 2: 개념
데이터 모델 절차: 요개논물
- 요구 사항 분석
- 개념적 설계: 사용자의 트랜잭션을 모델링하는 단계
- 논리적 설계: 트랜잭션의 인터페이스를 설계하는 단계
- 물리적 설계: 논리 데이터 모델을 특정 DBMS의 특성 및 성능을 고려하여 물리적인 스키마를 만드는 단계
16. 다음은 테스트 관련 용어이다. 괄호 안에 들어갈 용어를 보기에서 골라 쓰시오.
- ( 1 ): 특정한 몇 개의 입력값에 대해서만 기대하는 결과를 제공해 주는 오라클
- ( 2 ): 최종 사용자와 업무의 이해관계자 등이 테스트를 수행함으로써 개발된 제품에 대해 운영 여부를 결정하는 테스트
[보기]
True Oracle, Sampling Oracle, Heuristic Oracle, Consistent Oracle, Unit Test, Integration Test, System Test, Acceptance Test |
▷ 1: Sampling Oracle / 2: Acceptance Test
- True Oracle: 모든 테스트 케이스의 입력 값에 대해 기대하는 결과를 제공하는 오라클
- Heuristic Oracle: 특정 테스트 케이스 입력 값에 대해 기대하는 결과를 제공하고, 나머지 입력 값들에 대해서는 추정으로 처리하는 오라클
- Consistent Oracle: 애플리케이션에 변경이 있을 때, 테스트 케이스의 수행 전과 후의 결과 값이 동일한지를 확인하는 오라클
개발 단계에 따른 애플리케이션 테스트: 단통시인
- 단위 테스트(Unit Test)
- 코딩 직후 소프트웨어 설계의 최소 단위인 모듈이나 컴포넌트에 초점을 맞춰 테스트하는 것
- 인터페이스, 외부적 I/O, 자료 구조, 독립적 기초 경로, 오류 처리 경로, 경계 조건 등을 검사
- 사용자의 요구사항을 기반으로 한 기능성 테스트를 최우선으로 수행
- 구조 기반 테스트와 명세 기반 테스트로 나뉘지만, 주로 구조 기반 테스트 시행
- 통합 테스트(Integration Test)
- 단위 테스트가 완료된 모듈을 결합하여 하나의 시스템으로 완성시키는 과정에서의 테스트
- 모듈 간 또는 통합된 컴포넌트 간의 상호 작용 오류를 검사
- 시스템 테스트(System Test)
- 개발된 소프트웨어가 해당 컴퓨터 시스템에서 완벽하게 수행되는가를 점검하는 테스트
- 기능적 요구사항과 비기능적 요구사항으로 구분하여 각각을 만족하는지 테스트
- 인수 테스트(Acceptance Test)
- 개발된 소프트웨어가 사용자의 요구사항을 충족하는지에 중점을 두고 테스트하는 방법
- 개발된 소프트웨어를 사용자가 직접 테스트
17. 다음은 관계 대수와 관계 해석에 대한 설명이다. 괄호 안에 들어갈 원칙을 쓰시오.
- 관계 해석은 튜플 관계 해석과 도메인 관계 해석을 하는 ( 1 ) 언어이다.
- 관계 대수는 관계형 데이터 베이스에서 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 ( 2 ) 언어이다.
▷ 1: 비절차적 / 2: 절차적
관계 해석
- 관계 데이터의 연산을 표현하는 방법
- 관계 데이터 모델의 제안자인 코드(E. F. Codd)가 수학의 술어 해석에 기반을 두고 관계 데이터베이스를 위해 제안
- 원하는 정보가 무엇이라는 것만 정의하는 비절차적 특성을 지님
관계 대수
- 관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는 가를 기술하는 절차적인 언어
- 릴레이션을 처리하기 위해 연산자와 연간 규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션
- 관계 데이터베이스에 적용하기 위해 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자: 셀프조디
- 일반 집합 연산자: 합교차카
18. 다음은 인터페이스 연계 기술에 대한 설명이다. 괄호 안에 들어갈 용어를 쓰시오.
- ( 1 )은/는 HTML의 단점을 보완한 인터넷 언어로, SGML의 복잡한 단점을 개선한 특수한 목적을 갖는 마크업 언어이다.
- ( 2 )은/는 속성-값(Attribute-Value Pair) 쌍 또는 "키-값 쌍"으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷이다.
▷ 1: XML / 2: JSON
- EAI(Enterprise Application Intergation): 기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션 간의 정보를 전달, 연계, 통합이 가능하도록 해주는 솔루션
- EBS(Enterprise Service Bus): 기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션들을 하나의 시스템으로 관리할 수 있도록 서비스 중심의 통합을 지향하는 아키텍처
- JSON(JavaScript Object Notation): 속성-값 쌍(Attribute-Value-Pair) 또는 "키-값-쌍"으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷
- AJAX에서 많이 사용되고 XML을 대체하는 주요 데이터 포맷
- XML(eXtensible Markup Language): HTML의 단점을 보완한 인터넷 언어로, SGML의 복잡한 단점을 개선한 특수한 목적을 갖는 마크업 언어
- 송수신 시스템 간 데이터 연계의 편의성을 위해 전송되는 데이터 구조를 동일한 형태로 정의, 사용자가 직접 문서의 태그를 정의할 수 있음
- AJAX(Asynchronous Javascript And XML): 자바스크립트를 사용하여 웹 서버와 클라이언트 간 비동기적으로 XML 데이터를 교환하고 조작하기 위한 웹 기술
- 브라우저가 가지고 있는 XMLHttpRequest 객체를 이용해서 전체 페이지를 새로 로드하지 않고 필요한 일부 페이지의 데이터만을 로드하는 기법
- REST(Representation State Transfer): 웹과 같은 분산 하이퍼미디어 환경에서 존재/상태 정보를 표준화된 HTTP 메서드로 주고 받는 웹 아키텍처
- 웹의 창시자(HTTP) 중 한 사람인 Roy Fielding의 2000년 논문에 의해서 소개됨
19. 하둡 분산 파일 시스템(HDFS)를 기반으로 구현되어 실시간 랜덤 조회 및 업데이트를 할 수 있고, 각각의 프로세스는 개인의 데이터를 비동기적으로 업데이트할 수 있는 컬럼 기반의 분산 데이터베이스는 무엇인가?
▷ Hbase
- Hadoop 플랫폼을 위한 BigTable을 본보기로 자바를 기반으로 만들어진 데이터 비관계형 분산 데이터베이스
- NoSQL로 분류되며 스키마 지정 및 변경 없이 데이터를 저장할 수 있으며 하둡 분산 파일 시스템인 HDFS에서 동작하기 때문에 가용성 및 확장성을 그대로 이용할 수 있음
- 구글의 BigTable 논문에 설명된 Bloom 필터 기능을 제공하며 자바를 기반으로 만들어져 자바 API, REST, Avro, Thrift를 통해 접근 가능
20. 다음은 객체지향 기법에 대한 설명이다. 괄호 안에 들어갈 용어를 영어로 쓰시오.
- 메시지에 의해 객체가 연산을 수행하게 될 때 하나의 메시지에 대해 각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력
- 서로 연관성이 많은 데이터와 이와 관련된 함수들을 한 묶음으로 처리하는 기법
▷ 1: Polymorphism / 2: Encapsulation
객체 지향(Object-Oriented)
- 소프트웨어의 각 요소들을 객체(Object)로 만든 후, 객체들을 조립해서 소프트웨어를 개발하는 기법
- 구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 채택되어 사용되고 있음
- 소프트웨어의 재사용 및 확장이 용이하여 고품질의 소프트웨어를 빠르게 개발할 수 있고 유지보수가 쉬움
객체 지향의 구성 요소: 객클메
- 객체(Object): 데이터와 이를 처리하기 위한 함수를 묶어 놓은 소프트웨어 모듈
- 클래스(Class): 공통된 속성과 연산을 갖는 객체의 집합으로 각각의 객체들이 갖는 속성과 연산을 정의하고 있는 틀
- 클래스에 속한 각각의 객체를 인스턴스(Instance)라고 함
- 메시지(Message): 객체들 간의 상호작용에 사용되는 수단으로, 객체의 동작이나 연산을 일으키는 외부의 요구 사항
객체 지향의 특징: 캡상다연
- 캡슐화(Encapsulation): 외부에서 접근을 제한하기 위해 인터페이스를 제외한 세부 내용을 은닉하는 것
- 상속(Inheritance): 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것
- 다형성(Polymotphism): 하나의 메시지에 대해 각각의 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력
- 연관성(Relationship): 두 개 이상의 객체들이 상호 참조하는 관계
'정보처리기사' 카테고리의 다른 글
[11. 응용 SW 기초 기술 활용] 핵심 키워드 정리 (0) | 2023.04.15 |
---|---|
[문제 & 풀이] 정보처리기사 실기 족보_2 (0) | 2023.04.13 |
[9. 소프트웨어 개발 보안 구축] 핵심 키워드 정리 (0) | 2023.04.10 |
[8. SQL 응용] 핵심 키워드 정리 (2) | 2023.04.07 |
[7. 애플리케이션 테스트 관리] 핵심 키워드 정리 (0) | 2023.04.06 |