728x90

* 포스팅한 문제는 응시하신 분들의 기억으로 복원된 문제와 가답안이므로 실제와 다를 수 있습니다.

* 유튜브 두목넷 익스터디를 참고해서 정리하였습니다.

 

과목 예상 출제 문제수
1. 요구사항 확인 1
2. 데이터 입출력 구현 1
3. 통합 구현 1
4. 서버프로그램 구현 ☆ 1~3
5. 인터페이스 구현 1
6. 화면 설계 1
7. 애플리케이션 테스트 관리 1
8. SQL 응용 ☆ 1~3
9. 소프트웨어 개발 보안 구축 1
10. 프로그래밍 언어 활용 ☆☆ 3문제이상 출제 가능성 높음
11. 응용 SW 기초 기술 활용 ☆☆ 3문제이상 출제 가능성 높음
12. 제품 소프트웨어 패키징 1
13. 정보처리 실무 일반(IT 관련 지식 등) ☆☆ 3문제이상 출제 가능성 높음

* 시험 주의사항.

 - 단답형에서 약어는 맞췄으나 풀네임이 틀리는 경우 틀리는 것으로 처리.

 - 단답형에서 한글명은 맞췄으나 영어명이 틀리면 틀리는 것으로 처리.

  = 확실한 것 하나만 정답으로 작성.

 - 시험지에 낙서하면 안됌.


1. 요구사항 확인

1. 소프트웨어 개발 프로젝트 방법론을 의미하는 용어(단답형)

ㆍㅁ는 작업 계획을 짧은 단위로 세우고 시제품을 만들어 나가는 사이클을 반복함으로써 고객의 요구 변화에 유연하고도 신속하게 대응하는 개발 방법론이다. 이와 반대되는 개념이 전통적 개발 방법론이라 할 수 있는 '워터풀(Waterfall) 방식'이다. ㅁ는 소프트웨어 개발에 국한되지 않고 조직과 사업 등 기업경영 전반으로 사용 범위가 확산되고 있다.

ㆍㅁ는 짧은 개발 주기를 가지고 프로젝트 계획 수립과 진행에 있어서 최초의 프로젝트 일정 계획에 매이지 않고 고객 중심으로 계획을 융통성 있게 변경한다. 단계별 문서 산출물 확인보다는 해당 소프트웨어 코딩을 제대로 동작하는지(code-oriented)고객에게 확인하는 과정을 꾸준히 진행한다.

ㆍㅁ는 프로젝트 진행 도중에 일부 결과물인 시제품을 고객에게 지속적이며 반복적으로 제공한다. 고객의 요구사항이 정확하게 반영되고 있는지 수시로 점검하게 된다.
더보기

답 : 애자일 / Agile / 애자일 방법론 / Agile 방법론

 

※ 애자일과 나선형(Spiral)모델의 차이.

 - 애자일은 고객 니즈(needs)의 반복(iteraction)적으로 확인 받는 것

 - 나선형은 위험도를 낮추는 것.

 

2. ㅁ안에 들어갈 용어

GoF의 디자인 패턴은 생성, 구조, ㅁ가 있다.
객체의 생성에 관련된 패턴이고 구조 패턴은 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴이며 ㅁ패턴은 클래스 사이의 알고리즘이나 책임 부배에 관련된 패턴이다.
더보기

답 : 행위 / Behavioral

 

3. 다음 그림과 같이 탭이 달린 폴더 안에 요소들을 집어넣어 표현하는 다이어그램으로 컴포넌트 구조 사이의 관계를 표현하며 요소들을 그룹으로 조직하기 위한 매커니즘의 UML 다이어그램이 무엇인지 쓰시오.

더보기

답 : 패키지 / 패키지 다이어그램 / Package Diagram

 

2. 데이터 입출력 구현

1. 비정규화(Denormalization)의 개념(약술형)

더보기

답 : 둘 이상의 릴레이션에 대해 조인한 결과를 빈번하게 이용하는 경우 비정규화해서 질의응답 시간이 단축되어 성능이 향상된다.

 

2. DB 설계의 순서(단답형)

요구사항 분석 → ① → ② → ③ → 구현

더보기

① 개념적 설계 ② 논리적 설계 ③ 물리적 설계

 

 

3. 통합 구현

1. 다음 설명에 부합하는 마크업 언어가 무엇인지 영문 약어.(단답형)

ㆍHTML의 단점을 보완한 인터넷 언어로, SGML의 복잡한 단점을 개선한 다목적 마크업 언어이다.

ㆍ웹상에서 구조화된 문서를 상호교환 가능하도록 설계된 웹 표준 문서 포맷으로 메타데이터 정의가 명확하다.

ㆍ사용자가 새로운 태그와 속성을 정의할 수 있는 확장성을 가진다.

ㆍ유니코드를 사용하여 전 세계의 모든 문자를 처리 가능하며 장치와 시스템에 독립적이다.

 

더보기

답 : XML

 

2. HTTP, HTTPS, SMTP 등을 사용하여 XML 기반의 메시지를 컴퓨터, 네트워크 상에서 교환하는 형태의 프로토콜로써 Envelope, Header, Body의 주요 3요소로 구성된 간접 연계 방식의 웹 서비스의 기본적인 메시지 전송 수단을 의미하는 용어.(단답형)

더보기

답 : SOAP / Simple Object Access Protocol / 솝 프로토콜

 

※ REST와 SOAP의 차이

 - REST는 HTTP를 통해 JSON, XML, HTML, 일반 텍스트 등 반환받을 수 있는 데이터 타입이 많아 경량화됌.

 - SOAP은 XML으로만 반환 받을 수 있고, HTTP, SMTP, TCP 등 통신 방식이 다양하다. 덕분에 보안에 강하고 무겁다.

 

4. 서버프로그램 구현

1. 모듈화를 중심으로 하는 소프트웨어 설계 방법에는 모듈의 독립성을 높게 해주는 것이 좋은 설계 방향이다. 모듈의 독립성을 높여주기 위해서는 각 모듈 간의 관련성을 나타내는 ① (은)는 낮추고, 모듈 안의 요소들이 서로 관련되어 있는 정도를 나타내는 ② (은)는 높이는 것이 가장 바람직하다.(단답형)

더보기

답 : ① 결합도(Coupling) ② 응집도(Cohesion))

 

2. 살충제 패러독스(Pesticide Paradox)의 개념(약술형)

더보기

답 : 동일한 테스트 케이스는 새로운 결함을 발견할 수 없기 때문에 테스트 케이스를 점검 및 개선해야한다.

 

3. 다음은 어떤 프로그램의 구조를 나타낸다. Fan-in의 수가 2이상인 모듈의 이름을 쓰시오.

더보기

답 : F, H

해설 : F는 3개 H는 2개 / Fan-in 은 상위 모듈의 개수 / Fan-out은 하위 모듈의 개수

 

4. ㅁ안에 공통으로 들어갈 용어.

ㆍ소프트웨어 개발 과정에서 변경에 대비하기 위한 소프트웨어 ㅁ는 반드시 필요하다. ㅁ는 소프트웨어 품질 보증을 위한 주요한 요소이며, 주 임무는 변경의 통제이다. 소프트웨어 ㅁ란 소프트웨어의 개발 과정에서 발생하는 산출물의 변경 사항을 관리하기 위한 일련의 활동을 말한다. 소프트웨어 리사이클 기간 동안 개발되는 제품의 무결성을 유지하고 소프트웨어의 식별, 편성 및 수정을 통제하는 프로세스를 제공한다. 실수의 최소화와 생산성의 최대화가 ㅁ의 궁극적인 목표라고 할 수 있다. 대표적인 ㅁ도구로는 CVS, Subversion, Clear Case 등이 있다.
더보기

답 : 형상관리 / SCM / Software Configuration Management

 

5. 형상 통제 설명(약술형)

더보기

답 : 형상 통제는 변경 요청이 있을 경우 변경 여부와 변경 활동을 통제하는 것이다.

/형상 목록의 변경 요구를 검토 및 승인하여 현재의 소프트웨어 기준선에 반영될 수 있도록 통제하는 일력의 과정이다.

/변경된 요구사항에 대한 타당성을 검토하여 변경을 실행(변경 관리)하고, 그에 따라 변경된 산출물에 대한 버전관리를 수행하는 것이 형상 통제의 주요 활동이다.

/소프트웨어 형상변경 요청을 검토 승인하여 현재의 베이스라인에 반영될 수 있도록 통제하는 것을 의미한다.

 

5. 인터페이스 구현

1. 다음 설명 중 빈 칸에 가장 부합하는 프로그래밍 언어를 영문 약어로 쓰시오.

ㆍㅁ는 데이터를 저장하거나 전송할 때 많이 사용되는 경량의 DATA 교환 형식이다.

ㆍㅁ 표현식은 사람과 기계 모두 이해하기 쉬우며 소용량으로 최근에는 XML을 대체해서 데이터 전송 등에 많이 사용된다.

ㆍAjax에서 서버와 통신하며 데이터 교환을 쉽게 하기 위해 ()을 데이터 전송형식으로 많이 사용한다.

ㆍㅁ의 문법은 key와 value가 쌍으로 존재하며 태그로 표현하기 보다는 중괄호() 같은 형식으로 하고, 값을 ','로 나열하기에 그 표현이 간단하다.
더보기

답 : json

 

2. '비동기식 자바스크립트 XML'를 의미하는 용어로 클라이언트와 웹서버 간에 XML 데이터를 내부적으로 통신하는 대화식 웹애플리케이션의 제작을 위해 사용된다. 클라이언트의 요청에 의해 웹서버에서 로딩된 데이터를 웹 브라우저의 페이지에 보여주기 위해 웹 페이지 전체를 '새로고침'할 필요 없이 즉, 새로운 HTML 페이지로 이동할 필요 없이 현재 페이지에서 필요한 일부만 로딩되도록 하는 웹 개발 기법을 의미하는 용어.

더보기

답 : AJAX

 

3. EAI 구축 유형

유형 개념도 설명
ㆍ중간에 미들웨어를 두지 않고 각 애플리케이션간 직접 연결
ㆍ솔루션 구매 없이 통합, 상대적 저렴하게 통합 가능
ㆍ변경, 재사용 어려움
ㆍ단일 접점이 허브 시스템을 통해 데이터를 전송하는 중앙 집중적 방식
ㆍ모든 데이터 전송 보장, 확장 및 유지보수 용이
ㆍ허브 장애 시 전체 영향
ㆍ애플리케이션 사이 미들웨어(버스)를 두어 처리
ㆍ미들웨어 통한 통합 대용량 처리 기능
ㆍ어댑터가 각 시스템과 버스를 두어 연결하므로 뛰어난 확장성
ㆍ유연한 통합 작업이 가능
ㆍ표준 통합 기술, 데이터 병목 현상 최소화
더보기

① Point to Point ② Hub & Spoke ③ Message Bus(ESB 방식) ④ Hybrid

6. 화면 설계

1. UI(User Interface)는 사용자와 컴퓨터 상호 간의 소통을 원활히 할 수 있도록 도와주는 연계 작업을 뜻한다. 다음은 UI의 설계 원칙 4가지.

① 누구나 쉽게 이해하고 사용할 수 있어야 한다.

② 사용자의 목적을 정확하게 달성하여야 한다.

③ 누구나 쉽게 배우고 익힐 수 있어야 한다.

④ 사용자의 요구사항을 최대한 수용하며, 오류를 최소화하여야 한다.
더보기

답 : ① 직관성 ② 유효성 ③ 학습성 ④ 유연성

 

2. UI 설계 원칙 중 직관성에 대해 설명(약술형)

더보기

답 : 누구나 쉽게 이해하고 사용할 수 있어야 한다.

/ 사용자가 한눈에 기능을 쉽게 파악할 수 있도록 해야 한다.

 

 

7. 애플리케이션 테스트 관리

1. 다음 설명 중 빈 칸 ① ~ ③에 가장 부합하는 애플리케이션 성능 측정을 위한 지표를 쓰시오.

ㆍ애플리케이션 성능이란 사용자의 요구 기능을 해당 애플리케이션이 최소의 자원을 사용하면서 얼마나 빨리, 많은 기능을 수행하는가를 육안 또는 도구를 통하여 점검하는 것을 말한다.
ㆍ이를 측정하기 위한 지표로 ①, ②, ③, 자원사용률이 있다.
더보기

답 : ① 처리량(Throughput) ② 응답시간(Response Time)) ③ 경과 시간 or 반환 시간(Turnaround Time)

 

2. 테스트 자동화 도구는 휴먼 에러(Human Error)를 줄이고, 테스트에 소요되는 비용과 시간을 절감하며, 테스트 품질을 향상할 수 있는 도구이다. 테스트 계획, 테스트 분석/설계, 테스트 수행, 테스트 통제 등의 테스트 활동 단계에 따라 다양한 테스트 도구들이 있다. ㅁ는 테스트 수행 단계의 자동화 도구로 만들어진 애플리케이션을 실행하지 않고 분석하는 방법이다. ㅁ는 대부분의 경우 소스 코드에 대한 코딩 표준, 런타임 오류, 코딩 스타일, 코드 복잡도 및 남은 결함을 발견하기 위하여 사용한다. ㅁ는 테스트를 수행하는 사람이 작성된 소스 코드에 대한 이해를 바탕으로 도구를 이용해서 분석하는 것을 말한다.

더보기

답 : 정적 분석 / 정적 분석 도구 / Static Analysis Tools

 

3. 다음 제어 흐름 그래프에 대한 분기 커버리지(Branch Coverage)를 수행하는 경우의 테스트케이스 경로를 순서대로 나열 하기.

 

※ 답안 예시

① : ㅁ - ㅁ - ㅁ - ㅁ - ㅁ - ㅁ - ㅁ

② : ㅁ - ㅁ - ㅁ - ㅁ - ㅁ - ㅁ

더보기

답.

① : 1 - 2 - 3 - 4 - 5 - 6 - 1

② : 1 - 2 - 4 - 5 - 6 - 7

 또는

① : 1 - 2 - 3 - 4 - 5 - 6 - 7

② : 1 - 2 - 4 - 5 - 6 - 1

 

해설 : 화이트박스테스트

①번은 조건문에서 YES로 가는 경우

②번은 조건문에서 NO로 가는 경우

또는

① YES, NO

② NO, YES

 

7. 용어

소프트웨어 테스트 기법 중 프로그램의 외부 사용자 요구사항 명세를 보면서 테스트를 수행하며 주로 구현된 기능을 테스트한다.
명세 기반 테스트라고도 하며, 동치 분할 테스트, 경계 값 테스트 등과 같이 내부 구조를 보이지 않는 테스트 기법에 해당한다.
더보기

답 : 블랙박스 테스트

 

8. 테스트 오라클은 테스트의 결과가 참인지 거짓인지를 판단하기 위해서 사전에 정의된 참값을 입력하여 비교하는 기법 및 활동을 말한다. 테스트 오라클의 유형 중 전수 테스트가 불가한 경우 특정한 몇 개의 입력값에 대해서만 기대하는 결과를 제공해 주는 오라클로 경계값, 구간별 예상값 결과 작성시 사용하는 오라클을 무엇이라 하는지 쓰시오.

더보기

답 : 샘플링 오라클

 

※ 테스트 오라클 유형

유형 설명
참(True) 오라클 모든 입력값에 대하여 기대하는 결과를 생성함으로써 발생한 오류를 모두 검출할 수 있는 오라클이다.
샘플링(Sampling) 오라클 특정한 몇 개의 입력값에 대해서만 기대하는 결과를 제공해주는 오라클이다.
휴리스틱(Heuristic) 오라클 샘플링 오라클을 개선한 오라클로, 특정 입력값에 대해 올바른 결과를 제공하고, 나머지 값들에 대해서는 휴리스틱(추정)으로 처리하는 오라클이다.
일관성 검사(Consistent) 오라클 앱 변경이 있을 때, 수행 전과 후의 결과값이 동일한지 확인하는 오라클이다.

 

9. 다음은 주어진 평가점수별 학점 조건을 토대로 테스트케이스를 작성하여 테스트를 진행한 결과이다. 다음 적용한 테스트 기법은 명세기반 테스트의 기법 중 프로그램의 입력 조건에 중점을 두고, 어느 하나의 입력 조건에 대하여 타당한 값과 그렇지 못한 값을 설정하여 해당 입력 자료에 맞는 결과가 출력되는지 확인하는 테스트 기법이다. 적용한 테스트 기법은?

더보기

답 : 동치 분할 테스트 / 동등 분할 테스트 / 등가 분할 테스트 / Equivalence Partitioning Testing

 

 

 

 

8. SQL 응용

1. 학생(STUDENT) 테이블에 전자과 학생 50명, 정보통신과 학생 100명, 건축과 학생 50명의 정보가 저장되어 있을 때, 각각 SQL 실행 결과 튜플 수.(단, DEPT 컬럼은 학과명이다.)

 ① SELECT DEPT FROM STUDENT; 

 ② SELECT DISTINCT DEPT FROM STUDENT;

 ③ SELECT COUNT(DISTINCT DEPT) FROM STUDENT WHERE DEPT = '정보통신';
더보기

답 : ① 200 ② 3 ③ 1

 

2. <학생> 테이블을 대상으로 <요구사항>을 적용하여 출력하는 SQL문 작성(단, 이름 속성의 데이터는 문자형이고, 학번과 학년 속성의 데이터는 숫자형이다.)

ㆍ <학생> 테이블에서 학년이 3학년이거나 4학년 학생의 학번과 이름을 검색

ㆍ 단, 조건절 작성 시 in(value1, value2)문법을 사용

ㆍ 실행 결과가 일치하더라도 <요구사항>을 적용하지 않은 SQL문을 작성하면 오답으로 간주
더보기

답 : SELECT 학번, 이름 FROM 학생 WHERE 학년 IN(3,4);

 

3. student 테이블의 name 속성에 idx_name을 인덱스명으로 하는인덱스를 추가하는 SQL명령문을 작성하시오.

더보기

답 : CREATE INDEX idx_name ON student(name);

 

4. 소프트웨어 보안의 취약점 중 하나인 SQL Injection(SQL 인젝션)에 대해 간략히 설명하시오.

더보기

답 : SQL Injection은 클라이언트(사용자)의 입력값 등 외부 입력값이 SQL쿼리에 삽입되어 공격하는 것을 의미한다.

 

5. 학생 테이블에 주소 컬럼 추가(단, 데이터 타입은 가변 문자형 20자리 VARCHAR(20)이다.)

더보기

답 : ALTER TABLE 학생 ADD 주소 VARCHAR(20);

 

6. SQL문 작성(약술형)

더보기

답 : SELECT 과목이름, MIN(점수) AS 최소점수, MAX(점수) AS 최대점수 FROM 성적 GROUP BY 과목이름 HAVING AVG(점수) >= 90;

 

7. 학생 테이블에서 이름이 '민수'인 학생 튜플을 삭제하는 SQL문 작성(약술형)

더보기

답 : DELETE FROM 학생 WHERE 이름 = '민수';

 

8. <학생> 테이블을 대상으로 <요구사항>을 적용하여 아래 <결과>와 같이 출력하는 SQL문 작성

더보기

답 : SELECT 학과, COUNT(*) AS 학과별튜플수 FROM 학생 GROUP BY 학과;

 

 

 

9. 소프트웨어 개발 보안 구축

1. 네트워크 공격 유형에 해당하는 용어

ㆍㅁ는 네트워크 패킷의 출발지 IP를 변조하여 공격 대상의 자원을 소모시키는 공격으로 기밀성과 가용성을 치매하는 공격 유형

ㆍ주로 3-Way-Handshaking의 연결지향적 특징을 가지는 서비스에서 발생

ㆍㅁ는 출발지 IP주소의 도착지 IP 주소가 동일한 특징이 있어 네트워크 모니터링 도구인 와이어샤크의 컨버세션(Conversations)기능을 통해 동일 IP 주소 간에 통신 여부를 체크하는 방법으로 공격 여부를 확인할 수 있다. 해당 패킷의 출발지와 도착지의 IP주소가 동일한 패킷을 기본적으로 차단하여 ㅁ를 막을 수 있다.
더보기

답 : 랜드어택(Land Attack)

 

2. 스니핑(Sniffing) 설명

더보기

답 : 네트워크상에 통과하는 패킷들의 내용을 엿보는 행위이다.

/ 이처럼 패킷을 엿봄으로써 로그인 과정 중의 계정명과 패스워드 정보를 비롯하여 주요 내용을 불법으로 추출할 수 있다.

 

3. 정보보안의 목표가 되는 정보보안 3원칙은 기밀성(C), 무결성(I), 가용성(A)을 만족시키는 것이다. 정보보안의 목표 중 가용성에 대하여 설명

더보기

답 : 가용성은 합법적 사용자가 합법적 정보를 요구할 때 적시에 제공되어야 하는 원칙을 말한다.

 

 

10. 프로그래밍 언어 활용

1. C언어로 작성된 프로그램을 실행한 결과.

#include<stdio.h>
int main()
{ int a[] = { 95, 75, 85, 100, 50 };
  int i, j, temp;
  int n = sizeof(a) / sizeof(int);
  for( i=0; i<n-1; i++) {
    for( j=0; j<4-i; j++) {
      if( a[j] > a[j+1] ) {
        temp = a[j];
        a[j] = a[j+1];
        a[j+1] = temp;
      }
    }
  }
  
  for(  i=0; i<5; i++ ) {
    printf("%d", a[i]);
  }
  
  return 0;
}
더보기

답 : 50 75 85 95 100 (띄어서 작성해야 정답, 공백 없으면 안됌)

해설 : (버블정렬 알고리즘)

sizeof[int] 는 정수형 데이터타입의 길이를 뜻하고 값은 4이다. 배열 a는 각각 5개의 정수형 데이터타입을

갖고 있기 때문에 4 * 5는 20이다.(sizeof(a) / sizeof(int) : 20 / 4 = 5 // int n = 5)

※ 데이터타입별 크기

 ① char = 1

 ② short = 2

 ③ int = 4

 ④ long = 4

 ⑤ long long = 8

 

2. Java

public class Exam {
    public static int[] makeArray(int n) {
        int[] t = new int[n];
        for(int i=0; i<n; i++) {
            t[i] = i;
        }
        return t;
    }
    
    public static void main(String[] args) {
        int[] a = makeArray(4);
        for(int i=0; i<a.length; i++)
        System.out.println(a[i] + " ");
    }
}
더보기

답 : 0 1 2 3

 

3. Java

public class Exam {
    public static void main(String[] args) {
        int i=3, k=1;
        switch( i ) {
            case 1: k++;
            case 2: k+=3;
            case 3: k=0;
            case 4: k+=3;
            case 5: k-=10;
            default: k--;
        }
        System.out.print(k);
    }
}
더보기

답 : -8

해설 : break가 없기 때문에 3번째 부터 절차대로 default 끝까지 계산한다.

 

4. Python

>>>asia = {'한국', '중국', '일본'}
>>>asia.add('베트남')
>>>asia.add('중국')
>>>asia.remove('일본')
>>>asia.update(['홍콩','한국','태국'])
>>>print(asia)
더보기

답 : {'한국','중국','베트남','홍콩','태국'}

해설 : 파이썬에서 update는 여러개를 추가하는 함수.

>>> : 파이썬 쉘에서 바로 실행할 때 쓰는 명령어

 

숫자형, 문자열형, 불형
자료구조 중복 순서
리스트 [ ] O 있음
튜플 ( ) O 있음
딕셔너리 [Key, Value] Key X, value O 없음
집합 { } X 없음

 

5. Java < ? > 들어갈 문법

class Parent {
    void show() {
        System.out.println("Parent");
    }
}

class Child extends Parent {
    void show() {
         System.out.println("Child");
    }
}

public class Exam {
    public static void main(String[] args) {
        Parent pa = < ? > Child();
        pa.show();
    }
}
더보기

답 : new

 

6. Java 출력 결과

class A { 
    int a;
    public A(int n) {
        a = n;
    }
    public void print() {
        System.out.println("a="+a);
    }
}
class B extends A {
    public B(int n) {
        super(n);
        super.print();
    }
}
public class Exam {
     public static void main(String[] args) {
         B obj = new B(10);
     }
}
더보기

답 : a=10

 

7. C언어 출력 결과

#include <stdio.h>

void main() {
    int i=0, c=0;
    while (i < 10) {
        i++;
        c*=i;
    }
    printf("%d",c);
}
더보기

답 : 0

 

8. C언어 출력 결과

#include <stdio.h>
int r1() {
    return 4;
}
int r10() {
    return (30 + r1());
}
int r100() {
    return(200 + r10());
}
void main() {
    printf("%d",r100());
}
더보기

답 : 234

 

9. 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.println(sum);
    }
}
더보기

답 : 30

해설 : 0+2+4+6+8+10

 

10. Java 출력 결과

abstract class Vechicle {
    String name;
    abstract public String getName(String val);
    public Vechicle(String val) {
        this.name = val;
    }
    public String getName() {
        return "Vechicle name : " + name;
    }
}
class Car extends Vechicle {
    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) {
        Vechicle obj = new Car("Spark");
        System.out.println(obj.getName());
    }
}
더보기

답 : Vechicle name : Spark

 

11. C++ 언어의 생성자(Constructor)에 대해 간략히 설명하시오.(약술형)

더보기

답 : 객체 생성시 자동으로 호출되는 메소드로 멤버를 초기화하는 목적으로 주로 사용된다.

 

12. C언어 출력 결과

#include <stdio.h>

void main() {
    char *p = "KOREA";
    
    printf("%s\n", p);
    printf("%s\n", p+3);
    printf("%c\n", *p);
    printf("%c\n", *(p+3));
    printf("%c\n", *p+2);
}
더보기

답 :

KOREA

EA

K

E

M

 

해설 : char *p = "KOREA"; → *p에 저장된 구성은 'KOREA\0'의 주소값

%s → 시작주소값부터 \0까지 출력

%c → 시작주소값만 출력

 

 

13. 빈칸 채우기

public class Exam {
    public static void main(String[] args) { 
        int[][] arry = new int[①][②];
        
        for(int i=0; i<3; i++ {
            for(int j=0; j<5; j++) {
                arry[i][j] = j*3 + (i+j);
                System.out.println(arry[i][j]+",");
            }
            System.out.println();
        }
    }
}

// result : 1 2 3 4 5
//          2 3 4 5 6
//          3 4 5 6 7
더보기

답 : ① 3 ② 5

 

14. 빈칸 채우기

public class Exam {
    public static void main(String[] args) {
        int a[] = new int[8];
        int i=0, n=10;
        while( ① ) {
            a[i++] = ②;
            n/=2;
        }
        for(i=7; i>=0; i--) System.out.println("%d", a[i]);
    }
}

// result : 00001010
더보기

답 :

① i < 8 / i <= 7 / i < a.length / n > 0 / n >= 1

② n%2

 

15. 출력 결과

class Parent {
    int compute(int num) {
        if(num <= 1)
            return num;
        return compute(num -1) + compute(num - 2);
    }
}

class Child extends Parent {
    @Override
    int compute(int num) {
        if(num <= 1)
            return num;
        return compute(num - 1) + compute(num - 3);
    }
}

public class Exam {
    public static void main(String[] args) {
        Parent obj = new Child();
        System.out.println(obj.compute(4));
    }
}
더보기

답 : 1

해설 : 객체 obj는 오버라이드한 Child 클래스의 compute 메서드를 작동한다.

num = 4;

4-1 = 3 // 3은 조건문을 타지 않기 때문에 재귀된다.

4-3 = 1 // 1은 조건문을 타고 1로 리턴한다.

 

3-1 = 2 // 재귀

3-3 = 0 // return 0;

 

2-1 = 1 // return 1;

2-3 = -1 // return -1;

 

1+(-1) = 0 // 즉 3=0이되서

// 0 + 1 = 1 이다.

 

16. Python 출력 결과

lol = [[1, 2, 3], [4, 5], [6, 7, 8, 9]]
print(lol[0])
print(lol[2][1])

for sub in lol:
    for item in sub:
        print(item, end=" ")
    print()
더보기

답 : 

[1,2,3]

7

1 2 3

4 5

6 7 8 9

 

 

11. 응용 SW 기초 기술 활용

1. 통신 프로토콜(Communication Protocol)은 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고받는 양식과 규칙의 체계이다. 통신 프로토콜을 구성하는 기본 요소 3가지를 쓰시오.

더보기

답 : 구문, 의미, 타이밍 / Syntax, Semantic, Timing

 

2. 운영체제의 비선점 프로세스 스케줄링 기법 중 하나인 HRN(Highest Response-ratio Next)은 어떤 작업이 서비스받을 시간과 그 작업이 서비스를 기다린 시간으로 결정되는 우선 순위에 따라 CPU를 할당하는 기법이다. HRN의 우선순위를 결정하는 계산식을 쓰시오.

더보기

답 : (대기 시간 + 서비스 시간) / 서비스 시간

해설 : HRN 우선순위 계산식

 

3. 트랜잭션(Transaction)은 데이터베이스 내에서 한꺼번에 모두 수행되어야 할 연산들의 집합으로 하나의 작업 처리를 위한 논리적 작업 단위를 말한다. 특성 4가지의 각각을 작성.

① 트랜잭션의 가장 기본적인 특성으로 트랜잭션 내의 연산은 반드시 모두 수행되어야하며 그렇지 못한 경우 모두 수행되지 않아야한다.

② 트랜잭션이 정상적으로 완료된 후 언제나 일관성 있는 데이터베이스 상태가 되어야하며, 결과에 모순이 생겨서는 안됌.

③ 하나의 트랜잭션이 수행 중에는 다른 트랜잭션이 접근할 수 없고 각각의 트랜잭션은 독립적이어야 함.

④ 지속성이라고도 하며, 트랜잭션이 성공적으로 완료된 후 결과는 지속적으로 유지되어야 함.
더보기

답 : ① 원자성(Atomicity) ② 일관성 ③ 독립성(Isolation) ④ 영속성

 

4. OSI 7 참조 모델 중 두 장비 간의 전송을 위한 연결이나 전달 등의 인터페이스의 기계적, 전기적, 절차적 특성을 정의하며 비트를 물리적인 매체를 통해 전송하는 계층을 쓰시오.

더보기

답 : 물리 계층 / 물리 층 / Physical Layer

 

5. SQL 제어어는 관리자가 데이터의 보안, 무결성 유지, 병행제어, 회복 등을 하기 위해 사용하는 언어를 말한다.

SQL 제어어의 종류에는 COMMIT, ROLLBACK, GRANT, REVOKE 등이 있다. 이 중 ROLLBACK 명령문에 대해 간략히 설명(약술형)

더보기

답 : DB에서 비정상적으로 종료되거나 정상적으로 수행되었어도 이전으로 돌리기 위해 연산 내용을 취소할 때 사용하는 명령어이다. / 트랜잭션을 취소시키는 명령어이다.

 

6. 네트워크 계층(network layer, 3계층)인 IP 계층에서 IP 패킷 단위로 '암호화', '인증', '키 관리'를 통해 보안성을 제공해주는 표준화된 기술(단답형)

더보기

답 : IPSec / IP Security / IP Security Protocol / 아이피 섹

 

7. 리눅스 서버에 a.txt 라는 파일이 있다. 다음 <조건>에 알맞는 명령문을 쓰시오.

ㆍ사용자에게는 읽기, 쓰기, 실행의 세 개의 권한을 모두 부여하고

ㆍ그룹에게는 읽기, 실행 두 개의 권한을 부여하고

ㆍ그룹 외 사용자에게는 실행 권한을 부여한다.

ㆍ단 한 줄로 명령문이 작성되어야 하며, 아라비안 숫자를 사용하여 8진수로 권한을 부여한다.
더보기

답 : chmod 751 a.txt

해설 : 

r : 읽기 4

w : 쓰기 2

x : 실행 1

 

※ 파일 권한 구조

 - 사용자 / 그룹 / 그룹 외

 - rwxrwxrwx 

 

8. 스키마(Schema)에 대해 간략히 설명하시오.

더보기

답 : 스키마는 데이터베이스의 전체적인 구조와 제약조건에 대한 명세를 기술ㆍ정의한 것을 말하며, 스팀(Scheme)이라고도 한다.

 

9. 관계 대수의 기호를 쓰시오.

릴레이션 A에서 릴레이션 B의 모든 조건을 만족하는 튜플을 제외한 후 프로젝션하는 연산자
더보기

답 : ÷

 

연산을 쓰는 경우 : 디비젼 또는 DIVISION

 

※ Tip

구분 연산자 기호 의미
순수 관계 연산자 Select σ 조건에 맞는 튜플을 구하는 수평적 연산
Project π 속성 리스트로 주어진 속성만 구하는 수직적 연산
Join ▷◁ 공통 속성을 기준으로 두 릴레이션을 합하여 새로운 릴레이션을 만드는 연산
Division ÷ 두 릴레이션 A, B에 대해 B 릴레이션의 모든 조건을 만족하는 튜플들을 릴레이션 A에서 분리해 내어 프로젝션하는 연산
일반 집합 연산자 합집합 두 릴레이션의 튜플의 합집합을 구하는 연산
교집합 두 릴레이션의 튜플의 교집합을 구하는 연산
차집합 두 릴레이션의 튜플의 차집합을 구하는 연산
교차곱 Х 두 릴레이션의 튜플들의 교차곱을 구하는 연산

 

 

10. 대규모 네트워크를 안정되게 운영할 수 있는 표준 라우팅 프로토콜로 최적의 경로를 계산할 때 SPF(Shortest path First) 또는 다익스트라(Dijkstra) 알고리즘을 이용하여 각 목적지까지의 최적의 경로를 계산하는 동적 라우팅 프로토콜로 링크 상태 라우팅 프로토콜을 무엇이라고 하는지 영문 약어로 쓰시오.

더보기

답 : OSPF

풀네임 : Open Shortest Path First protocol

 

11. TCP/IP에서 신뢰성 없는 비 연결형 프로토콜인 IP를 대신하여 송신 측으로 네트워크의 IP 상태 및 에러 메시지를 전달해주는 프로토콜을 무엇이라고 하는지 영문 약어로 쓰시오.

더보기

답 : ICMP

풀네임 : Internet Control Message Protocol

 

12. DB 릴레이션을 처리하는데 여러 문제를 초래하는 이상 현상 3가지를 쓰시오.

더보기

답 : 삽입이상, 삭제이상, 갱신이상

 

13. ㅁ안 용어

데이터 회복 기법은 트랜잭션들을 수행하는 도중 장애로 인해 손상된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구시키는 작업을 말한다.
다양한 데이터 회복 기법 중 ㅁ회복 기법은 로그를 이용한 회복 기법으로 데이터베이스에 대한 갱신 로그를 저장함으로서 회복에 대비한다. 일반적으로 데이터베이스와 로그의 동시 손상을 대비하여 별도의 전용 디스크에 로그를 저장할 수 있다.
ㅁ회복 기법은 트랜잭션이 실행(활동) 상태에서 변경되는 내용을 그때그때 바로 데이터베이스에 적용하는 기법이다.
변경되는 모든 내용은 로그에 기록하여 장애 발생 시 로그의 내용을 토대로 회복시킨다.
ㅁ회복 기법은 장애가 발생하면 로그 파일에 기록된 내용을 참조하여, 장애 발생 시점에 따라 Redo나 Undo를 실행하여 데이터베이스를 복구한다.
더보기

답 : 즉시 갱신 / Immediate Update

 

14. 프로세스 상태 전이도의 ① ~ ③ 프로세스 상태 쓰시오.

더보기

답 : ①준비 / Ready ②실행 / Run ③대기 / Wait / Block

 

15. IPv4의 확장형으로 대안으로 나온 것은

더보기

답 : IPv6

 

 

 

 

12. 제품 소프트웨어 패키징

1. 릴리즈 노트(Release Note)는 고객 편의성을 고려하여 조직의 최종 사용자인 고객과 잘 정리된 릴리즈 정보를 공유하는 문서이다. 릴리즈 노트의 내용으로 보통 특정 소프트웨어 릴리즈의 최근 변경 사항, 개선 사항 및 버그 수정을 간결히 요약되어 있다. 릴리즈 노트 작성 항목 중 문서 이름(릴리즈 노트 이름), 제품 이름, 버전 번호, 릴리지 날짜, 참고 날짜, 노트 버전 등을 기술하는 작성항목이 무엇인지 쓰시오.

더보기

답 : 헤더 / Header

 

13. 정보처리 실무 일반(IT 관련 지식 등)

1. 데이터 마이닝(Data Mining)의 개념(약술형)

더보기

답 : 대량의 데이터에서 실제로 존재하지 않는 정보를 얻어내기 위해 각 데이터의 상관관계를 통계적 분석, 인공지능 기법 등을 통해 통계적 규칙(Rule)이나 패턴(Pattern)을 찾아내는 것이다.

 

2. 입력 데이터로부터 128비트의 축약 메시지인 해시 값을 생성하는 해시 함수로 주로 프로그램이나 파일이 원본 그대로인지를 확인하는 무결성 검사 용도로 많이 쓰이고 있다. 1990년 R. Rivert가 MD4를 일방향 해시함수로 개선한 알고리즘이 무엇인지 쓰시오.

더보기

답 : MD5 / Message-Digest algorithm 5

 

3. LOC 기법에 의하여 예측된 총 라인수가 30,000라인일 경우 개발에 투입될 프로그래머의 수가 5명이고, 프로그래머들의 평균 생산성이 월당 300라인일 때, 개발에 소요되는 기간을 구하는 계산식과 기간(개월)을 구하여 쓰시오. (단, 프로젝트에 참여하는 개발자들의 평균 생산성은 모두 동일하다고 가정한다.)

더보기

답 : ① 계산식 : (30,000 / 300) / 5

     ② 답 : 20개월

해설 : (총 라인수 / 월당 라인수) / 개발자 수 : 개발자 수와 월당 라인 수는 순서가 바뀌어도 상관 없다.

 

4. IP 인프라 서비스 관리 실무와 관련된 설명으로 ㅁ안에 가장 적합한 용어를 한글 또는 영문으로 쓰시오.

<실무 사례>

귀하는 (주)한국아이티 보안관제실에서 정보시스템의 정보관리를 위해 모니터링을 담당하며 근무하고 있다. 정보시스템 운영 중 자연재해나 시스템 장애 등의 이유로 대고객 서비스가 불가능한 경우가 종종 발생한다. 이러한 위기 상황을 대비하기 위하여 이번에 최신의 데이터 백업 솔루션을 선정하여 데이터 보호 고도화 작업을 진행하려고 한다. 최신의 데이터 백업 솔루션을 도입하여 백업 시간을 대폭 단축하고 정보시스템 운영의 신뢰성을 도모하기 위해 데이터 백업 솔루션을 선정하는 일은 매우 중요하다 
데이터 백업(보호) 솔루션은 만일의 사태에 대비하여 시스템 내의 데이터 유실을 방지하고, 서비스의 연속성을 보장하는 목적을 가지고 어떤 상황에서도 계획된 ㅁ와 목표 복구 시점(RPO : Recovery Point Objective)를 보장해야 할 수 있는 제품이어야 한다. ㅁ는 시스템 장애와 같은 상황에서의 "비상사태 또는 업무중단 시점부터 업무가 복구되어 다시 정상가동 될 때까지의 시간"을 의미하는 용어이다.ROP는 조직에서 발생한 여러 가지 재난 상황으로 IT시스템이 마비되었을 때 각 업무에 필요한 데이터를 여러 백업 수단을 활용하여 복구할 수 있는 기준점을 의미한다.
귀하가 선정한 데이터 백업 솔루션 DUMOK은 IP망을 통해 재해복구(DR)센터로 데이터를 복제하는 방식을 이용, 목표 복구시점(RPO)으로 원상태에 근접한 복구가 가능하며, 최장 3시간 이내의 최단 ㅁ를 보장한다. 이번 데이터 백업 솔루션을 도입하여 간편한 재해복구 지원이 이루어질 수 있게 되었고 정보시스템의 신뢰성도 크게 향상하게 되었으며 화재, 지진 등의 대형 장애에도 서비스 연속성을 구현할 수 있게 되었다.
더보기

답 : RTO / Recovery Time Objective / 목표 복구시간  / 복구 목표시간

 

5. 디자인 패턴과 관련된 설명에 가장 부합하는 용어를 영문으로 쓰시오.

디자인 패턴은 유사한 문제를 해결하기 위해 설계들을 분류하고 각 문제 유형별로 가장 적합한 설계를 일반화하여 체계적으로 정리해 놓은 것으로 소프트웨어 개발에서 효율성과 재사용성을 높일 수 있다. GoF(Gang of Four)의 25개의 디자인 패턴은 사용 목적에 따라서 생성 패턴, 구조 패턴, 행위 패턴으로 분류할 수 있다.
먼저, 생성 패턴은 객체를 생성하는 것과 관련된 패턴으로 객체의 생성과 변경이 전체 시스템에 미치는 영향을 최소화하도록 하여 시스템 개발을 개발할 때 유연성을 높일 수 있다. 다음으로 구조 패턴은 클래스나 객체를 조합하여 더 큰 구조를 만드는 패턴으로 복잡한 형태의 구조를 갖는 시스템 개발을 쉽게 만들어주는 패턴이다. 마지막으로 행위 패턴은 반복적으로 사용되는 객체들의 상호작용을 패턴화한 것으로 클래스나 객체들이 상호작용하는 방법과 책임을 분산하는 방법을 정의해 주는 패턴이다.
ㆍ디자인 패턴 중 ㅁ는 행위 패턴에 해당하며 1대 다(one-to-many)의 객체 의존관계를 정의한 것으로 한 객체가 상태를 변화시켰을 때 의존관계에 있는 다른 객체들에게 자동으로 통지 알림이 전달되고 변경시킨다.
ㆍㅁ의 객체 간의 데이터 전달 방식은 푸시 방식과 풀 방식이 있으며, 기본적인 디자인의 원칙은 상호 작용하는 객체 사이에서는 가능하면 결합도를 느슨하게 디자인하여 사용해야 한다. 이는 느슨하게 결합(Loose coupling)하는 디자인을 사용하면 변경 사항이 생겨도 무난히 처리할 수 있는 유연한 객체지향 시스템을 구축할 수 있기 때문이다.
더보기

답 : Observer / Observer Pattern

 

6. 다음 신기술 동향과 관련된 설명에 부합하는 용어를 영문 완전이름(Full-name)으로 쓰시오.

ㆍㅁ는 개방형 정부, 개방형 공공 데이터의 시대적 요구와 맞물려 있으며, 기존의 거대한 정보 생태계인 웹을 활용하고 웹 기술과 핵심 개념을 그대로 활용한다는 점에서 주목받고 있다.
ㆍㅁ의 주요 특징은 URI(Uniform Resource Identifier)를 사용한다는 점이다. 흔히 알고 있는 'URL(Uniform Resource Locator)'과 비슷한 개념이다. URL이 특정 정보 지원의 종류와 위치를 가리킨다면 URI는 HTTP 프로토콜을 통해 웹에 저장된 객체(식별자)를 가리킨다는 점에서 다르다.
ㆍ웹 상에 존재하는 전세계 오픈된 정보를 하나로 묶는 RESTful한 방식이며, 링크 기능이 강조된 시멘틱 웹(Semantic Web)의 모형에 속한다고 볼 수 있다. 즉 ㅁ는 '시멘틱 웹을 실현시키기 위한 방법이자 기술적 접근점'으로 볼 수 있다.
ㆍㅁ는 Linked Data 와 Open Data의 합성어이다. Linked Data가 정보 기술적인 면이 강한 반면 Open Data는 정보 문화적인 면이 강한 용어이다.
더보기

답 : Linked Open Data

 

7. 헝가리안 표기법 설명(약술형)

더보기

답 : 컴퓨터 프로그래밍의 변수명, 함수명 등의 식별자 이름을 작성할 때 데이터 타입의 정보를 이름 접두어로 지정하는 코딩의 규칙이다.

예를 들어 인덱스 역할을 하는 int형 변수명을 inum으로 문자열 변수명을 strName으로 이름을 지정하는 표기법이다.

 

8. 리팩토링(Refactoring) 목적에 대해 설명(약술형)

더보기

답 : 목적은 가독성을 높이고 유지보수의 편리성을 높이는 것이다.

리팩토링을 통해 S/W를 쉽게 이해하고 버그를 빨리 찾을 수 있다.

또 프로그램을 빨리 작성할 수 있도록 도와준다.

 

9. ㅁ안에 공통으로 들어갈 용어

ㅁ의 본래 의미는 외교 분야에서의 의례 또는 의정서를 의미하는 용어였다. 심리학자 톰 마릴은 컴퓨터가 메시지를 전달하고, 메시지가 제대로 도착했는지 확인하며, 도착하지 않았을 경우 메시지를 재전송하는 일련의 방법을 가리켜 '기술적 은어'라는 뜻으로 ㅁ라 불렀다.
더보기

답 : 프로토콜(Protocol)

 

10. 컴퓨터 네트워킹에서 쓰이는 용어로 IP패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술로 네트워크 주소 변환이라고 한다.

더보기

답 : NAT

 

11. 온라인 금융 거래 정보를 블록으로 연결하여 피투피(P2P) 네트워크 분산 환경에서 중앙관리서버가 아닌 참여자(피어)들의 개인 디지털 장비에 분산 저장시켜 공동으로 관리하는 방식은?

더보기

답 : 블록체인

 

12. 분산 환경에서 빅 데이터를 저장하고, 처리할 수 있는 자바 기반의 오픈 소스 프레임 워크로, 더그 커팅과 마이크 캐퍼렐라가 개발했으며 구글 맵 리듀스를 대체한다.

더보기

답 : 하둡

 

13. 1960년대 말에 미국 AT&T 벨(Bell) 연구소에서 개발한 운영체제로 거의 C언어로 구현한다. 구조적 파일 시스템, 시스템의 파일이 하나의 트리 구조를 가짐.

더보기

답 : 유닉스

728x90
TOP