
-
GoF(Gang of Four) 디자인 패턴을 생성, 구조, 행동 패턴의 세 그룹으로 분류할 때, 구조 패턴이 아닌 것은?
- Adapter 패턴
- Bridge 패턴
- Builder 패턴
- Proxy 패턴
생성패턴 : 객체를 생성하는 것에 대한 패턴
- 추상 팩토리 패턴(abstract factory), 빌더 패턴(builder), 팩토리 메소드 패턴(factory method), 프로토타입 패턴(prototype), 싱글톤 패턴(singleton)
구조패턴 : 구조를 통해 확장성을 꾀하는 패턴
- 어댑터 패턴(adapter), 브릿지 패턴(bridge), 컴포지트 패턴(composite), 데코레이터 패턴(decorator), 퍼사드 패턴(facade), 플라이웨잇 패턴(flysweight), 프록시 패턴(proxy)
행위 패턴 : 행위의 변경, 수정 등을 위한 패턴
- 역할 사슬 패턴(책임 연쇄, chain of reposibility), 커맨드 패턴(command), 인터프리터 패턴(interpreter), 이터레이터 패턴(반복자, iterator), 미디에이터 패턴(중재자, mediator), 메멘토 패턴(memento), 옵저버 패턴(observer), 상태 패턴(state), 전략 패턴(strategy), 템플릿 메소드 패턴(template method), 비지터 패턴(방문자, visitor)
-
통합 테스트(Integration Test)와 관련한 설명으로 틀린 것은?
- 시스템을 구성하는 모듈의 인터페이스와 결합을 테스트하는 것이다.
- 하향식 통합 테스트의 경우 넓이 우선(Breadth First) 방식으로 테스트를 할 모듈을 선택할 수 있다.
- 상향식 통합 테스트의 경우 시스템 구조도의 최상위에 있는 모듈을 먼저 구현하고 테스트한다.
- 모듈 간의 인터페이스와 시스템의 동작이 정상적으로 잘되고 있는지를 빨리 파악하고자 할 때 상향식 보다는 하향식 통합 테스트를 사용하는 것이 좋다.
상향식 통합 테스트 (Bottom Up Integration Test)
- 프로그램의 하위 모듈에서 상위 모듈 방향으로 통합
- 하나의 주요 제어 모듈과 관련된 종속 모듈의 그룹인 클러스터(Cluster)필요
- 드라이버(Driver) 이용(하위 모듈 호출, 매개변수 전달, 테스트 후 결과 도출)
하향식 통합 테스트 (Top Down Integration Test)
- 상위 모듈에서 하위 모듈 방향으로 통합
- 깊이 우선 통합법, 넓이 우선 통합법 사용
- 초기부터 사용자에게 시스템 구조를 보여줌
- 스텁(Stub) 이용(모듈 기능만 수행)
- 다음과 같이 레코드가 구성되어 있을 때, 이진 검색 방법으로 14를 찾을 경우 비교되는 횟수는?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15- 2
- 3
- 4
- 5
이진 탐색 동작 방식
- 배열의 중간 값을 찾음
- 중간 값과 검색 값을 비교
2-1. 중간 값이 검색 값과 같으면 끝.
2-2. 중간 값보다 검색 값이 크다면 오른쪽 구간을 탐색
2-3. 중간 값보다 검색 값이 작다면 왼쪽 구간을 탐색 - 값을 찾거나 간격이 비었을 때까지 반복
열 원소의 개수가 짝수일 때는 중간 인덱스 mid를 (left + right) // 2로 설정하여 중앙의 두 값 중 왼쪽 값을 중간값으로 선택
-
소프트웨어 공학에서 워크스루(Walkthrough)에 대한 설명으로 틀린 것은?
- 사용사례를 확장하여 명세하거나 설계 다이어그램, 원시코드, 테스트 케이스 등에 적용할 수 있다.
- 복잡한 알고리즘 또는 반복, 실시간 동작, 병행 처리와 같은 기능이나 동작을 이해하려고 할 때 유용하다.
- 인스펙션(Inspection)과 동일한 의미를 가진다.
- 단순한 테스트 케이스를 이용하여 프로덕트를 수작업으로 수행해 보는 것이다.
워크스루: 요구사항 명세서 작성자를 포함하여 사전 검토한 후에 짧은 검토 회의를 통해 결함을 발견
인스펙션: 요구사항 명세서 작성자를 제외한 다른 검토 전문가들이 요구사항 명세서를 확인하면서 결함을 발견.
-
동시에 소스를 수정하는 것을 방지하며 다른 방향으로 진행된 개발 결과를 합치거나 변경 내용을 추적할 수 있는 소프트웨어 버전 관리 도구는?
- RCS(Revision Control System)
- RTS(Reliable Transfer Service)
- RPC(Remote Procedure Call)
- RVS(Relative Version System)
RPC : 별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 리모트의 함수나 프로시저를 실행 할 수 있게 해주는 프로세스간 통신
RTS : 데이터 통신에서 신뢰성이 보장된 전송 서비스를 제공하는 프로토콜
RPC : 네트워크상에서 원격지의 다른 프로세스나 컴퓨터에서 실행중인 함수나 프로시저를 호출하는 프로토콜
RVS : 파일의 상대적인 버전을 관리하는 도구로 각 파일 버전의 차이를 저장해 파일 복원과 변경 이력을 추적
-
다음은 인스펙션(Inspection) 과정을 표현한 것이다. (가)~(마)에 들어갈 말을 보기에서 찾아 바르게 연결한 것은?

- (가) - ㉡, (나) - ㉢
- (나) - ㉠, (다) - ㉢
- (다) - ㉢, (라) - ㉤
- (라) - ㉣, (마) - ㉢
-
단위 테스트(Unit Test)와 관련한 설명으로 틀린 것은?
- 구현 단계에서 각 모듈의 개발을 완료한 후 개발자가 명세서의 내용대로 정확히 구현되었는지 테스트한다.
- 모듈 내부의 구조를 구체적으로 볼 수 있는 구조적 테스트를 주로 시행한다.
- 필요 데이터를 인자를 통해 넘겨주고, 테스트 완료 후 그 결과값을 받는 역할을 하는 가상의 모듈을 테스트 스텁(Stub)이라고 한다.
- 테스트할 모듈을 호출하는 모듈도 있고, 테스트할 모듈이 호출하는 모듈도 있다.
필요 데이터를 인자를 통해 넘겨주고, 테스트 완료 후 그 결과값을 받는 역할을 하는 가상의 모듈을 테스트 드라이버(test driver)라고 한다. 반대로 테스트 스텁(test stub)은 인자를 통해 받은 값을 가지고 수행한 후 그 결과를 테스트할 모듈에 넘겨주는 역할을 한다.
- 아래 Tree 구조에 대하여 후위 순회(Postorder) 한 결과는?
- a → b → d → c → e → g → h → f
- d → b → g → h → e → f → c → a
- d → b → a → g → e → h → c → f
- a → b → d → g → e → h → c → f
전위 운행 (PreOrder) => Root, Left, Right 순서
중위 운행 (InOrder) => Left, Root, Right 순서
후위 운행 (PostOrder) => Left, Right, Root 순서
- 데이터베이스의 트랜잭션 성질들 중에서 다음 설명에 해당하는 것은?
트랜잭션의 모든 연산들이 정상적으로 수행 환료 되거나 아니면 어떠한 연산도 수행되지 않은 원래 상태가 되도록 해야한다.- Atomicity
- Consistency
- Isolation
- Durability
트랜잭션의 특성
- 원자성(Atomicity) : 완전하게 수행 완료되지 않으면 전혀 수행되지 않아야 함
- 일관성(Consistency) : 시스템의 고정 요소는 트랜잭션 수행 전후에 같아야 함
- 격리성(Isolation, 고립성) : 트랜잭션 실행 시 다른 트랜잭션의 간섭을 받지 않아야 함
- 영속성(Durability, 지속성) : 트랜잭션의 완료 결과가 데이터베이스에 영구히 기억됨
-
SQL의 명령을 사용 용도에 따라 DDL, DML, DCL로 구분할 경우, 그 성격이 나머지 셋과 다른 것은?
- SELECT
- UPDATE
- INSERT
- GRANT
<문제 해설>
- DML
- SELECT : 테이블에서 조건에 맞는 튜플 검색
- INSERT : 테이블에 새로운 튜플 삽입
- UPDATE : 테이블에서 조건에 맞는 튜플의 내용 갱신
- DELETE : 테이블에서 조건에 맞는 튜플 삭제
- DCL
- COMMIT : 명령에 의해 수행된 결과를 실제 물리적 디스크로 저장하고, 데이터베이스 조작 작업이 정상적으로 완료 됐음을 알려주는 명령어
- ROLLBACK : 아직 COMMIT 되지 않은 변경된 모든내용 들을 취소하고 , 데이터베이스를 이전 상태로 되돌리는 명령어
- GRANT : 데이터베이스 사용자에게 사용 권한 부여
- REVOKE : 데이터베이스 사용자의 사용 권한 취소
-
키의 종류 중 유일성과 최소성을 만족하는 속성 또는 속성들의 집합은?
- Atomic key
- Super key
- Candidate key
- Test key
후보키(Candidate Key): 기본키로 사용 가능한 속성, 유일성/최소성 만족
기본키(Primary Key): 후보키 중에서 선택됨, 중복된 값과 Null값 가질 수 없음. 반드시 필요한 키
슈퍼키(Super Key): 한 릴레이션 내 속성들의 집합으로 구성된 키, 유일성O, 최소성X
-
데이터 모델의 구성 요소 중 데이터 구조에 따라 개념 세계나 컴퓨터 세계에서 실제로 표현된 값들을 처리하는 작업을 의미하는 것은?
- Relation
- Data Structure
- Constraint
- Operation
데이터 모델링의 구성요소
- 논리적구조(Structure)
- 연산(Operation)
- 제약조건(Constraint)
논리 데이터 모델의 구성요소 - 개체
- 속성
- 관계
-
C언어에서 문자열 처리 함수의 서식과 그 기능의 연결로 틀린 것은?
- strlen(s) - s의 길이를 구한다.
- strcpy(s1, s2) - s2를 s1으로 복사한다.
- strcmp(s1, s2) - s1과 s2를 연결한다.
- strrev(s)-s를 거꾸로 변환한다.
함수명에 용도를 의미하는 약어가 포함되어 있음
str -> string
len -> length
cpy -> copy
cmp -> compare
rev -> reverse
-
다음 C언어 프로그램이 실행되었을 때, 실행 결과는?
#include <stdio.h> int main(int argc, char *argv[]){ int a = 5, b = 3, c = 12; int t1, t2, t3; t1 = a && b; t2 = a || b; t3 = !c; printf("%d", t1 + t2 + t3); return 0; }- 0
- 2
- 5
- 14
<문제 해설>
a && b -> 1 AND연산
a || b -> 1 OR연산
!c -> 0 NOT연산
1 + 1 + 0 = 2
C언어 연산자에서는 0이 아닌 모든값은 1(TRUE)로 본다.
그래서 a=1 b=1 c=1 로 바꿔서 대입해도 같은결과가 나온다
비트연산자랑 헷갈릴 수 있는데 비트연산자는 & 하나만 있어야함 -
다음 Python 프로그램의 실행 결과가 [실행결과]와 같을 때, 빈칸에 적합한 것은?
x = 20 if x == 10 : print('10') ( ) x == 20 : print('20') else : print('other') # 실행결과 : 20- either
- elif
- else if
- else
python 조건문 if, elif, else
-
RIP 라우팅 프로토콜에 대한 설명으로 틀린 것은?
- 경로 선택 메트릭은 홉 카운트(hop count)이다.
- 라우팅 프로토콜을 IGP와 EGP로 분류했을 때 EGP에 해당한다.
- 최단 경로 탐색에 Bellman-Ford 알고리즘을 사용한다.
- 각 라우터는 이웃 라우터들로부터 수신한 정보를 이용하여 라우팅 표를 갱신한다.
RIP(Routing Information Protocol)
- 최단 경로 탐색에는 Bellman-Ford 알고리즘을 사용하는 거리 벡터 라우팅 프로토콜
- 라우팅 프로토콜을 IGP와 EGP로 분류했을 때 IGP에 해당한다.
- 최단경로탐색에는 Bellman-Ford 알고리즘을 사용한다.
- 최적의 경로를 산출하기 위한 정보로서 홉(거리 값)만을 고려하므로, RIP을 선택한 경로가 최적의 경로가 아닌 경우가 많이 발생할 수 있다.
- 소규모 네트워크 환경에 적합하다.
- 최대 홉 카운트를 15홉 이하로 한정하고 있다.
- 자율 시스템(AS : Autonomous System)
- 하나의 기관 내부를 나타내는 것으로 라우터들과 통신기기들의 집합. 예를 들면 하나의 학내망
- IGP(Interior Gateway Protocol, 내부 게이트웨이 프로토콜)
- 학내망 내부에서 라우팅하는것. 즉 하나의 AS 내에서의 라우팅에 사용되는 프로토콜
- EGP(Exterior Gateway Protocol, 외부 게이트웨이 프로토콜)
- 학내망과 다른 학내망의 라우팅에 사용. 즉 AS간의 라우팅에 사용되는 프로토콜
RIP는 OSPF와 함께 IGP(내부 게이트웨이 프로토콜)에 해당한다
RIP = 홉 기반 + 소규모 + Bellman-Ford + 최대 15홉
IGP = 내부용 (RIP, OSPF)
EGP = 외부용 (BGP)
- 다음에서 설명하는 프로세스 스케줄링은?
- FIFO 스케줄링
- RR 스케줄링
- HRN 스케줄링
- MQ 스케줄링
HRN 스케줄링 방식
- 비선점 스케줄링
실행시간이 긴 프로세스에 불리한 SJF 을 보완하기 위해
대기시간 및 서비스 시간을 이용
긴 작업과 짧은 작업 간의 지나친 불평등을 해소할 수 있다.
우선순위를 계산 숫자가 높은것부터 낮은순으로 순위 부여
(대기시간 + 서비스시간) / 서비스시간 = 우선순위값 이 클수록 우선순위가 높다.
-
UDP 프로토콜의 특징이 아닌 것은?
- 비연결형 서비스를 제공한다.
- 단순한 헤더 구조로 오버헤드가 적다.
- 주로 주소를 지정하고, 경로를 설정하는 기능을 한다.
- TCP와 같이 트랜스포트 계층에 존재한다.
UDP(User Datagram Protocol)
- 비연결형 및 비신뢰성 전송 서비스를 제공한다.
- 흐름 제어나 순서 제어가 없어 전송 속도가 빠르다.
- 수신된 데이터의 순서 재조정 기능을 지원하지 않는다.
- 복구 기능을 제공하지 않는다.
(③ 번은 IP Protocol에 관한 설명이다.)
-
Python 데이터 타입 중 시퀀스(Sequence) 데이터 타입에 해당하며 다양한 데이터 타입들을 주어진 순서에 따라 저장할 수 있으나 저장된 내용을 변경할 수 없는 것은?
- 복소수(complex) 타입
- 리스트(list) 타입
- 사전(dict) 타입
- 튜플(tuple) 타입
시퀀스- 리스트 - 순서있고,가변 [1,2,3]
시퀀스- 튜플 - 순서있고,불변 (1,2,3)
세트 - 세트 - 순서없고,중복x {1,2,3}
맵 - 딕셔너리- 순서없고,key-value쌍 {'a':1,'b:2,'c':3}
-
사용자 수준에서 지원되는 스레드(thread)가 커널에서 지원되는 스레드에 비해 가지는 장점으로 옳은 것은?
- 한 프로세스가 운영체제를 호출할 때 전체 프로세스가 대기할 필요가 없으므로 시스템 성능을 높일 수 있다.
- 동시에 여러 스레드가 커널에 접근할 수 있으므로 여러 스레드가 시스템 호출을 동시에 사용할 수 있다.
- 각 스레드를 개별적으로 관리할 수 있으므로 스레드의 독립적인 스케줄링이 가능하다.
- 커널 모드로의 전환 없이 스레드 교환이 가능하므로 오버헤드가 줄어든다.
1,2,3 : 커널수준 스레드의 장점
-
한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 참조하는 경우의 결합도는?
- 내용 결합도(Content Coupling)
- 제어 결합도(Control Coupling)
- 공통 결합도(Common Coupling)
- 스탬프 결합도(Stamp Coupling)
스탬프 결합도 - 두 모듈이 매개변수로 자료를 전달할 때, 자료구조 형태로 전달되어 이용될 때 데이터가 결합되어 있다고 한다.
내용 결합도 - 하나의 모듈이 직접적으로 다른 모듈의 내용을 참조할 때 두 모듈은 내용적으로 결합되어 있다고 한다.
공통 결합도 - 두 모듈이 동일한 전역 데이터를 접근한다면 공통결합 되어 있다고 한다.
결합도 - 두 모듈간의 상호작용, 또는 의존도 정도를 나타내는 것이다
내용 참조, 자료 참조 (단어가 있으면) 내용 결합도
"전역변수" (단어가 있으면) 공통 결합도
-
a[0]의 주소값이 10일 경우 다음 C언어 프로그램이 실행되었을 때의 결과는? (단, int 형의 크기는 4Byte로 가정한다.)
#include <stdio.h> int main(int argc, char *argv[]){ int a[] = {14, 22, 30, 38}; printf("%u ", &a[2]); printf("%u ", a); return 0; }- 14, 10
- 14, 14
- 18, 10
- 18, 14
{14 ,22, 30, 38 }
주소값 10,11,12,13 / 14,15,16,17 / 18,19,20,21 / 22,23,24,25
자리값 a(0) a(1) a(2) a(3)
*1개의 주소값 : 1Byte
printf("%u, ", &a[2]; a[2]자리의 첫번째 주소값 18
printf("%u", a); a[0]자리의 첫번째 주소값 10
-
어떤 외부 컴퓨터가 접속되면 접속 인가 여부를 점검해서 인가된 경우에는 접속이 허용되고, 그 반대의 경우에는 거부할 수 있는 접근제어 유틸리티는?
- tcp wrapper
- trace checker
- token finder
- change detector
tcp/ip 통신에서, tcp는 3-way handshake 를 통해 통신이 원활히 이뤄질 수 있는지를 확인합니다.
tcp wrapper는 tcp 3-way handshake 인증 과정 직후에 수행됩니다.
-
기기를 키오스크에 갖다 대면 원하는 데이터를 바로 가져올 수 있는 기술로 10㎝ 이내 근접 거리에서 기가급 속도로 데이터 전송이 가능한 초고속 근접무선통신(NFC : Near Field Communication) 기술은?
- BcN(Broadband Convergence Network)
- Zing
- Marine Navi
- C-V2X(Cellular Vehicle To Everything)
1번 BcN은 음성·데이터·유무선 등 통신·방송·인터넷이 융합된 품질 보장형 광대역 멀티미디어 서비스를 공간에 제한없이 실시간으로 이용할 수 있는 차세대 네트워크 환경이다.
3번 Marine Navi는 소형 선박에 설치된 GPS 기반 선박자동 식별장치(AIS: Automatic Identification System)를 기본으로 주변 선박의 이동 속도와 위치를 파악한다.
4번 엘티이(LTE), 5G와 같은 셀룰러 이동통신망을 통해 차량이 다른 차량이나 교통 인프라, 보행자, 네트워크 등과 정보를 서로 주고받는 차량 통신 기술.
-
소프트웨어 개발 프레임워크와 관련한 설명으로 가장 적절하지 않은 것은?
- 반제품 상태의 제품을 토대로 도메인별로 필요한 서비스 컴포넌트를 사용하여 재사용성 확대와 성능을 보장 받을 수 있게 하는 개발 소프트웨어이다.
- 라이브러리와는 달리 사용자 코드에서 프레임워크를 호출해서 사용하고, 그에 대한 제어도 사용자 코드가 가지는 방식이다.
- 설계 관점에 개발 방식을 패턴화시키기 위한 노력의 결과물인 소프트웨어 디자인 패턴을 반제품 소프트웨어 상태로 집적화시킨 것으로 볼 수 있다.
- 프레임워크의 동작 원리를 그 제어 흐름의 일반적인 프로그램 흐름과 반대로 동작한다고 해서 IoC(Inversion of Control)이라고 설명하기도 한다.
사용자 코드에서 호출해서 사용하고 그에 대한 제어를 할 수 있는 것은 라이브러리이다. 프레임워크는 이미 정해진 코드를 호출해 사용하고 자체적인 흐름을 가지고 있음.
- 다음 내용이 설명하는 기술로 가장 적절한 것은?
- Virtual Local Area Network
- Simple Station Network
- Mesh Network
- Modem Network
그물 = mesh
- 다음 설명에 해당하는 소프트웨어는?
- 전역 함수 라이브러리
- 소프트웨어 개발 프레임워크
- 컨테이너 아키텍처
- 어휘 분석기
프레임워크는 뼈대 골조를 의미하고 특정 기능을 수행하기 위한 "클래스"나 "인터페이스"를 모아둔 집합체
-
접근 통제 방법 중 조직 내에서 직무, 직책 등 개인의 역할에 따라 결정하여 부여하는 접근 정책은?
- RBAC
- DAC
- MAC
- QAC
MAC (Mandatory Access Control)
- 강제 접근 통제
- 미리 정해진 자원의 보안 레벨과 사용자에게 허락된 접근 권한 비교
DAC (Discretionary Access Control)
- 임의적 접근통제
- 자원에 대한 접근을 사용자나 그룹의 신분에 따라 제한
- 자원의 소유권을 가진 사람이 다른 사람의 접근을 허용하거나 제한할 수 있음
RBAC (Role Based Access Control)
- 사용자 역할에 따른 접근 통제
- 개별적인 신분이 아니라 조직 내 그룹 / 역할에 따라 부여
-
COCOMO(Constructive Cost Model) 모형의 특징이 아닌 것은?
- 프로젝트를 완성하는데 필요한 man-month로 산정 결과를 나타낼 수 있다.
- 보헴(Boehm)이 제안한 것으로 원시코드 라인 수에 의한 비용 산정 기법이다.
- 비교적 작은 규모의 프로젝트 기록을 통계 분석하여 얻은 결과를 반영한 모델이며 중소 규모 소프트웨어 프로젝트 비용 추정에 적합하다.
- 프로젝트 개발유형에 따라 object, dynamic, function의 3가지 모드로 구분한다.
COCOMO 모형
- 원시 프로그램 규모(LOC)에 의한 비용 산정 기법
- 보헴(Boehm)이 제안
- 비교적 작은 규모의 프로젝트들을 통계 분석한 결과를 반영한 모델 -> 중소 규모 소프트웨어 프로젝트 비용 추정에 적합
- 비용 산정 결과는 Man-Month로 표현
소프트웨어 개발유형에 따른 분류
조직형(Organic)
- 5만 라인 이하
- 사무 처리용, 업무용, 과학용 소프트웨어 개발에 적합
반분리형(Semi-Detached)
- 30만 라인 이하
- 컴파일러, 인터프리터 개발에 적합
내장형(Embedded)
- 30만 라인 이상
- 미사일 유도 시스템, 실시간 처리 시스템 개발에 적합
1~3은 COCOMO, 4는 럼바우(Rumbaugh) => 객체, 동적, 기능(object, dynamic, function)
- 시스템의 사용자가 로그인하여 명령을 내리는 과정에 대한 시스템의 동작 중 다음 설명에 해당하는 것은?
- Aging
- Accounting
- Authorization
- Authentication
자신의 신원을 시스템에 증명하는 과정을 인증(Authentication)이라고 합니다.
추가적으로 3번 보기는 인가(Authorization)를 의미하며
보기 4번인 인증하고 용어가 유사하니 혼돈하지 않을 정도로 숙지