정보처리기사 실기 2020년 3회 기출문제 문제복원 입니다.
1. 형상 통제에 대해 간략히 설명하시오.
답 : 형상 통제는 형상 목록의 변경 요구를 검토 및 승인하여 현재의 소프트웨어 기준선에 반영될 수 있도록 통제하는 일련의 과정 |
해설
8. 서버 프로그램 구현
형상 관리의 절차 문제
형상 식별 > 형상 통제 > 형상 감사 > 형상 기록
2. EAI 구축 유형 중 Message Bus와 Hybrid를 제외한 빈칸(① ~ ②)에 해당하는 나머지 두 가지 유형을 쓰시오.
유형 | 개념도 | 설명 |
① |
|
|
② |
|
|
Message Bus (ESB 방식) |
|
|
Hybrid |
|
|
3. UI(User Interface)는 사용자와 컴퓨터 상호 간의 소통을 원활히 할 수 있도록 도와주는 연계 작업을 뜻한다. UI의 설계 원칙 중 직관성에 대해 간략히 설명하시오.
답 : 누구나 쉽게 이해하고 사용할 수 있어야 한다. |
해설
UI 설계 원칙(직관성, 유효성, 학습성, 유연성)
4. 다음 제어 흐름 그래프에 대한 분기 커버리지(Branch Coverage)를 수행하는 경우의 테스트케이스 경로를 순서대로 나열하시오.
<제어 흐름 그래프>
|
해설
동적 테스트 - 화이트박스 테스트
5. 소프트웨어 테스트 기법 중 프로그램의 외부 사용자 요구사항 명세를 보면서 테스트를 수행하며 주로 구현된 기능을 테스트한다. 명세 기반 테스트라고도 하며, 동치 분할 테스트, 경계 값 테스트 등과 같이 내부 구조를 보이지 않는 테스트 기법에 해당하는 용어를 쓰시오.
답 : 블랙박스 테스트 |
해설
*정적 테스트 : 명세서나 소스 코드를 대상(프로그램 실행X)
- 워크스루, 인스펙션, 코드검사
*동적 테스트 : 프로그램 실행하여 오류 찾는 테스트
- 화이트박스 테스트 : 소스 코드를 보면서 프로그램 실행
- 블랙박스 테스트 : 요구사항 명세를 보면서 프로그램 실행
*명세기반 테스트 - 블랙박스 테스트
*구조기반 테스트 - 화이트박스 테스트
*경험기반 테스트 - 에러추정, 체크리스트 등
6. 아래 보기의 <학생> 테이블에 '주소' 컬럼을 추가하는 SQL문을 완성하는 빈 칸 ① ~ ②에 알맞은 용어를 기입하시오.(단, 추가 컬럼의 이름은 '주소'이고, 데이터 타입은 가변 문자형 20자리로 VARCHAR(20)이다.)
<학생>
학번 | 이름 | 학과 | 전화번호 |
2020021 | 철수 | 컴퓨터 | 010-1111-1111 |
2020001 | 민수 | 수학 | 010-2222-2222 |
2021022 | 영희 | 컴퓨터 | 010-3333-3333 |
2022013 | 민호 | 통계 | 010-4444-4444 |
<SQL문>
( ① ) TABLE 학생 ( ② ) 주소 VARCHAR(20); |
|
해설
-- 컬럼 삭제
ALTER TABLE 학생 DROP COLUMN 주소;
-- 컬럼 수정
ALTER TABLE 학생 MODIFY(주소 VARCHAR(50));
-- 컬럼명 변경
ALTER TABLE 학생 RENAME COLUMN 주소 TO 컬럼변경명
7. <성적> 테이블을 대상으로 <요구사항>을 적용하여 아래 <결과>와 같이 출력하는 SQL문을 작성하시오.
<성적>
학번 | 과목번호 | 과목이름 | 학점 | 점수 |
100 | 2000 | 데이터베이스 | A | 95 |
101 | 1000 | 자료구조 | B | 80 |
102 | 2000 | 데이터베이스 | A | 99 |
103 | 2000 | 데이터베이스 | B | 88 |
104 | 1000 | 자료구조 | C | 79 |
<결과>
과목이름 | 최소점수 | 최대점수 |
데이터베이스 | 88 | 99 |
<요구사항>
|
답 : SELECT 과목이름, MIN(점수) AS 최소점수, MAX(점수) AS 최대점수 FROM 성적 GROUP BY 과목이름 HAVING AVG(점수) >= 90; |
8. 아래 보기의 <학생> 테이블에서 이름이 '민수'인 학생 튜플을 삭제하는 SQL문을 작성하시오(단, 다음의 요구사항을 참고하여 작성하시오.)
<요구사항>
|
답 : DELETE FROM 학생 WHERE 이름 = '민수'; |
9. 다음은 C언어로 작성된 프로그램이다. 이를 실행한 출력 결과를 쓰시오.
#include <stdio.h> void main() { int i = 0, c = 0; while (i < 10) { i++; c *= i; } printf("%d", c); } |
답 : 0 |
해설
0 * 1 = 0
0 * 2 = 0
.
.
0 * 10 = 0
10. 다음은 C언어로 작성된 프로그램이다. 이를 실행한 출력 결과를 쓰시오.
#include <stdio.h> int r1( ) { return 4; } int r10( ) { return (30 + r1( )); } int r100( ) { return (200 + r10( )); } void main( ) { printf("%d", r100( )); } |
답 : 234 |
해설
재귀함수 문제
r100( )
(200 + r10( ))
(200 + (30 + r1( )))
(200 + (30 + 4))
(200 + 30 + 4)
11. 다음은 Java로 작성된 프로그램이다. 이를 실행한 출력 결과를 쓰시오.
public class Main { public static void main(String[] args) { int i = 0; int sum = 0; while (i < 10) { i++; if(i%2 == 1) continue; sum += i; } System.out.print(sum); } } |
답 : 30 |
해설
i | sum |
0 | 0 |
1 | |
2 | 0 + 2 |
3 | |
4 | 0 + 2 + 4 |
5 | |
6 | 0 + 2 + 4 + 6 |
7 | |
8 | 0 + 2 + 4 + 6 + 8 |
9 | |
10 | 0 + 2 + 4 + 6 + 8 + 10 |
12. 다음은 Java로 작성된 프로그램이다. 이를 실행한 출력 결과를 쓰시오.
abstract class Vehicle { String name; abstract public String getName(String val); public Vehicle(String val) { this.name = val; } public String getName() { return "Vehicle name : " + name; } } class Car extends Vehicle { public Car(String val) { super(val); } public String getName(String val) { return "Car name : " + val; } public String getName(byte val[]) { return "Car name : " + val; } } public class Exam { public static void main(String[] args) { Vehicle obj = new Car("Spark"); System.out.println(obj.getName()); } } |
답 : Vehicle name : Spark |
해설
추상메소드 + 오버로딩 문제
Car클래스 생성자에서 super(val); 선언할 경우 부모클래스 생성자를 호출한다.(생성자란 클래스명과 동일한 메소드명을 가지며 클래스 호출 시 무조건 실행된다.)
따라서 Vehicle클래스의 생성자에서 전역변수인 name에 "Spark" 값을 담게 된다.
출력 로직에서 getName() 메소드 호출 시 매개변수가 없기 때문에 매개변수가 없는 메소드인 Vehicle클래스 getName() 메소드를 호출하게 되므로 출력 결과는 "Vehicle name : Spark"이다.
클래스 앞에 abstract 선언을 못봤을 경우 단순 상속문제로 봐서 getName()메소드가 자식클래스에서 재정의된 것으로 볼 수 있다.
하지만 Car클래스의 부모클래스가 추상클래스이기 때문에 추상메소드인 getName(String val) 메소드를 자식클래스에서 무조건 선언해야 한다.
그렇기 때문에 getName(), getName(String val), getName(byte[] val) 같은 이름의 메소드가 3개 존재하는 것이다.
같은 메소드명이 존재할 수 있는 이유는 오버로딩 개념을 파악하면 이해가 갈 것이다.
오버로딩의 경우 메소드명은 같아도 매개변수가 다를 경우 중복에러가 발생하지 않는다.
마지막으로 getName() 호출 시 매개변수가 없는 메소드를 호출한 것이므로 Vehicle클래스의 메소드로 봐야한다.
13. C++언어의 생성자(Constructor)에 대해 간략히 설명하시오.
답 : 객체 생성시 자동으로 호출되는 메소드로 멤버를 초기화하는 목적으로 주로 사용된다. |
14. 스키마(Schema)에 대해 간략히 설명하시오.
답 : 스키마는 데이터베이스의 전체적인 구조와 제약조건에 대한 명세를 기술, 정의한 것을 말한다. |
15. 다음에서 설명하는 관계 대수의 기호를 쓰시오.
릴레이션 A에서 릴레에션 B의 모든 조건을 만족하는 튜플을 제외한 후 프로젝션하는 연산자 |
답 : ÷ |
16. 대규모 네트워크를 안정되게 운영할 수 있는 표준 라우팅 프로토콜로 최적의 경로를 계산할 때 SPF(Shortest path First) 또는 다익스트라(dijkstra) 알고리즘을 이용하여 각 목적지까지의 최적 경로를 계산하는 동적 라우팅 프로토콜로 링크 상태 라우팅 프로토콜을 무엇이라고 하는지 영문 약어로 쓰시오
답 : OSPF |
17. TCP/IP에서 신뢰성 없는 비 연결형 프로토콜인 IP를 대신하여 송신 측으로 네트워크 IP 상태 및 에러 메세지를 전달해주는 프로토콜을 무엇이라고 하는지 영문 약어로 쓰시오.
답 : ICMP |
18. 헝가리안 표기법에 대해 간략히 설명하시오.
답 : 컴퓨터 프로그래밍의 변수명, 함수명 등의 식별자 이름을 작성할 때 데이터타입의 정보를 이름 접두어로 지정하는 코딩의 규칙이다. |
19. 리팩토링(Refactoring)의 목적에 대해 간략히 설명하시오.
답 : 가독성을 높이고 유지보수의 편리성을 높이기 위해 기능을 변경하지 않고 내부 구조만 변경하여 이해하기 쉽고, 수정하기 쉽도록 만드는 것이다. |
20. 다음 괄호 ( )안에 공통으로 들어갈 가장 적합한 용어를 쓰시오.
( )의 본래 의미는 외교 분야에서의 의례 또는 의정서를 의미하는 용어였다. 심리학자 톰 마릴은 컴퓨터가 메세지를 전달하고, 메세지가 제대로 도착했는지 확인하며, 도착하지 않았을 경우 메세지를 재전송하는 일련의 방법을 가리켜 '기술적 은어'라는 뜻으로 ( )(이)라 불렀다. |
답 : 프로토콜 |
'자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사 실기] 2021년 1회 기출문제 (0) | 2021.07.19 |
---|---|
[정보처리기사 실기] 2020년 4, 5회 기출문제 (0) | 2021.07.19 |
[정보처리기사 실기] 2020년 2회 기출문제 (0) | 2021.07.15 |
[정보처리기사 실기] 2020년 1회 기출문제 (0) | 2021.07.12 |