11. 객체에 대한 설명으로 틀린 것은?
1. 객체는 상태, 동작, 고유 식별자를 가진 모든 것이라 할 수 있다.
2. 객체는 공통 속성을 공유하는 클래스들의 집합이다.
3. 객체는 필요한 자료 구조와 이에 수행되는 함수들을 가진 하나의 독립된 존재이다.
4. 객체의 상태는 속성값에 의해 정의된다.
내가 선택한 오답 [4]
- 객체의 상태는 속성값에 의해 정의되는게 맞다.
정답[2]
- 클래스는 공통 속성을 공유하는 객체들의 집합이기 때문이다.
15. GoF(Gang of Four) 디자인 패턴을 생성, 구조, 행동 패턴의 세 그룹으로 분류할 때, 구조 패턴이 아닌 것은?
1. Adapter 패턴
2. Bridge 패턴
3. Builder 패턴
4. Proxy 패턴
내가 선택한 오답 [4] Proxy 패턴은 구조 패턴 중 하나다.
정답 [3] Builder 패턴은 생성패턴 중 하나다
생성 패턴 : 객체 인스턴스를 생성하는 패턴
- 싱글턴
- 추상 팩토리
- 팩토리 메소드
- 빌더
- 프로토 타입
행동 패턴: 클래스와 객체들이 상호작용하는 방법과 역할을 분담하는 방법을 다루는 패턴
- 템플릿 메소드
- 싱글턴
- 반복자
- 옵저버
- 상태
- 전략
- 비지터
- 중재자
- 인터프리터
- 메멘토
구조 패턴: 클래스와 객체를 더 큰 구조로 만들 수 있게 구성을 사용하는 것
- 데코레이터
- 프록시
- 컴포지트
- 퍼사드
- 브리지
- 플라이웨이트
- 어댑터
20. 소프트웨어 아키텍처 모델 중 MVC(Model-View-Controller)와 관련한 설명으로 틀린 것은?
1. MVC 모델은 사용자 인터페이스를 담당하는 계층의 응집도를 높일 수 있고, 여러 개의 다른 UI를 만들어 그 사이에 결합도를 낮출 수 있다.
2. 모델(Model)은 뷰(View)와 제어(Controller) 사이에서 전달자 역할을 하며, 뷰마다 모델 서브시스템이 각각 하나씩 연결된다.
3. 뷰(View)는 모델(Model)에 있는 데이터를 사용자 인터페이스에 보이는 역할을 담당한다.
4. 제어(Controller)는 모델(Model)에 명령을 보냄으로써 모델의 상태를 변경할 수 있다.
정답 [2]
- 한 개의 모델에 대해 여러 개의 뷰를 만들 수 있다.
내가 선택한 오답[1]
- 응집도와 결합도의 의미를 헷갈렸음
- 제어(controller)는 뷰(view)와 모델(model)사이에서 전달자 역할을 수행한다. (출처 : [해설작성자 : comcbt.com 이용자])
22. 다음과 같이 레코드가 구성되어 있을 때, 이진 검색 방법으로 14를 찾을 경우 비교되는 횟수는?
1. 2
2. 3
3. 4
4. 5
내가 선택한 오답 [3]
정답 [2]
이진 탐색 동작 방식
1. 배열의 중간 값을 찾음
2. 중간 값과 검색 값을 비교
2-1. 중간 값이 검색 값과 같으면 끝.
2-2. 중간 값보다 검색 값이 크다면 오른쪽 구간을 탐색
2-3. 중간 값보다 검색 값이 작다면 왼쪽 구간을 탐색
3.값을 찾거나 간격이 비었을 때까지 반복
인덱스를 기준으로 본다.
low : 0
high : 14
middle : (0 + 14 / 2) → 7
arr[middle] : arr[7] → 8
8 < 14 : low 변경
low : middle + 1 → 8
high : 14
middle : (8 + 14) / 2 → 11
arr[middle] : arr[11] → 12
12 < 14 : low 변경
low : middle + 1 → 12
high : 14
middle : (12 + 14) / 2 → 13
arr[middle] : arr[13] → 14
14 == 14
[해설작성자 : 닥터컴 송박사]
23. 소프트웨어 공학에서 워크스루(Walkthrough)에 대한 설명으로 틀린 것은?
1. 사용사례를 확장하여 명세하거나 설계 다이어그램, 원시코드, 테스트 케이스 등에 적용할 수 있다.
2. 복잡한 알고리즘 또는 반복, 실시간 동작, 병행 처리와 같은 기능이나 동작을 이해하려고 할 때 유용하다.
3. 인스펙션(Inspection)과 동일한 의미를 가진다.
4. 단순한 테스트 케이스를 이용하여 프로덕트를 수작업으로 수행해 보는 것이다.
정답[3]
- 인스펙션: 요구사항 명세서 작성자 제외 다른 검토 담당자들이 요구사항 명세서를 확인하면서 결함을 발견
- 워크스루: 요구사항 명세서 작성자를 포함하여 사전 검토한 후에 짧은 검토 회의를 통해 결함을 발견
32. 버블 정렬을 이용하여 다음 자료를 오름차순으로 정렬할 경우 PASS 1의 결과는?
1. 6, 9, 7, 3, 5
2. 3, 9, 6, 7, 5
3. 3, 6, 7, 9, 5
4. 6, 7, 3, 5, 9
내가 선택한 오답 [1]
- PASS 1 의 의미를 몰랐음.
- PASS 1 첫 버블 정렬이 끝난상태
정답 [4]
버블 정렬 : index = 0 부터 시작해서 오른쪽 값과 비교 후 정렬
9, 6, 7, 3, 5
6, 9, 7, 3, 5
6, 7, 9, 3, 5
6, 7, 3, 9, 5
6, 7, 3, 5, 9
35. 단위 테스트(Unit Test)와 관련한 설명으로 틀린 것은?
1. 구현 단계에서 각 모듈의 개발을 완료한 후 개발자가 명세서의 내용대로 정확히 구현되었는지 테스트한다.
2. 모듈 내부의 구조를 구체적으로 볼 수 있는 구조적 테스트를 주로 시행한다.
3. 필요 데이터를 인자를 통해 넘겨주고, 테스트 완료 후 그 결과값을 받는 역할을 하는 가상의 모듈을 테스트 스텁(Stub)이라고 한다.
4. 테스트할 모듈을 호출하는 모듈도 있고, 테스트할 모듈이 호출하는 모듈도 있다.
내가 선택한 오답 [1]
구현 단계에서 각 모듈의 개발을 완료한 후 개발자가 명세서의 내용대로 구현되었는지 테스트하는게 맞다.
모듈별보다 더 작은 단위로 테스트 한다고 생각했다.
정답 [3]
테스트 드라이버 : 필요 데이터를 인자를 통해 넘겨주고, 테스트 완료 후 그 결과값을 받는 역할을 하는 가상의 모듈
테스트 스텁 : 인자를 통해 받은 값을 가지고 수행한 후 그 결과를 테스트할 모듈에 넘겨주는 역할
dummy객체가 마치 실제로 동작하는 것 처럼 보이도록 만들어놓은 것
41. 다음 조건을 모두 만족하는 정규형은?
1. BCNF
2. 제1정규형
3. 제2정규형
4. 제3정규형
정답 [1] BCNF
정규형의 단계가 높아질 수록 하위 조건을 만족한다.
1. 제 1 정규화 : 모든 컬럼 값이 원자값을 가지도록 테이블 구조화
원자값이란 속성 값이 더 이상 논리적으로 분해될 수 없는 값이다.
릴레이션의 모든 열과 행의 위치에서 있는 데이터 값은 단 하나의 값만 가질 수 있음
하나의 속성에 있는 도메인이 {1학년, 2학년} 과 같이 다중값을 가질 수 없다.
학번 | 이름 | 전공 | 성적1 | 성적2 |
1 | 김철수 | 컴퓨터공학과 | 100 | 90 |
2 | 박영희 | 전자공학과 | 60 | 80 |
3 | 이승호 | 경제학과 | 50 | 70 |
학번 | 이름 | 전공 | 성적1 |
1 | 김철수 | 컴퓨터공학과 | 100 |
1 | 김철수 | 컴퓨터공학과 | 90 |
2 | 박영희 | 전자공학과 | 60 |
2 | 박영희 | 전자공학과 | 80 |
3 | 이승호 | 경제학과 | 50 |
3 | 이승호 | 경제학과 | 70 |
2. 제 2 정규화 : 테이블에 존재하는 모든 컬럼이 기본키에 대해 완전 함수적 종속 관계를 가지도록 테이블 분리
완전 함수적 종속 관계 : 종속자가 기본키에만 종속되는 경우, 기본키가 여러 칼럼으로 구성되어있는 경우 모든 속성으로 구성된 부분집합에 종속되는 경우다.
기본키를 구성하는 특정 칼럼에만 종속될 경우, 완전 함수적 종속관계가 아니다.
주문번호 | 상품번호 | 상품명 | 고객명 | 수량 |
1001 | 1 | 노트북 | 김철수 | 2 |
1001 | 2 | 마우스 | 김철수 | 1 |
1002 | 3 | 키보드 | 박영희 | 3 |
1003 | 2 | 마우스 | 이승호 | 2 |
주문번호 -> 고객명 (부분 함수적 종속 관계)
상품번호 -> 상품명 (부분 함수적 종속 관계)
주문번호, 상품번호 -> 수량 (완전 함수적 종속 관계)
완전 함수적 종속관계로 정규화하면 다음과 같다.
주문번호 | 상품번호 | 수량 |
1001 | 1 | 2 |
1001 | 2 | 1 |
1002 | 3 | 3 |
1003 | 2 | 2 |
상품번호 | 상품명 |
1 | 노트북 |
2 | 마우스 |
3 | 키보드 |
주문번호 | 고객명 |
1001 | 김철수 |
1002 | 박영희 |
1003 | 이승호 |
3. 제 3 정규화 : 모든 비기본키 칼럼이 기본키에만 의존하고, 다른 비기본키 칼럼에는 의존하지 않도록 보장하는 것입니다.
이행적 함수 종속 관계란 X, Y, Z 라는 속성이 있을때, X-> Y -> Z 의 관계로
X 를 알고 있을때, Y를 알수 있고, Y와 Z가 종속관계로 Y를 알면, Z 를 알 수 있는 관계다.
1) key 가 아닌 컬럼은 key 에 완전히 종속되어야 한다.
2) 모든 non-key 칼럼은 key 에만 종속되어야 한다.
학번 | 이름 | 메일 | 대학 | 전공 |
101 | Tom | tom@naver.com | 이과대학 | 생물학과 |
102 | Dan | Dan@naver.com | IT대학 | 컴퓨터과 |
103 | Jin | jin@google.com | 정경대학 | 경제학과 |
릴레이션에서 전공은 비기본키 칼럼인 대학에 종속되어있다.
학번 -> 전공 -> 대학 (이행적 함수 종속 관계)
전공 | 대학 |
생물학과 | 이과대학 |
컴퓨터과 | IT대학 |
경제학과 | 정경대학 |
정치학과 | 정경대학 |
4. 보이스-코드 정규화 : 모든 결정자가 후보키가 되도록 테이블을 분리한다.
후보 키
각 데이터를 유일하게 식별할 수 있는 "최소한의" 속성 집합
Trivial FD 란 Y가 X 의 부분 집합인 경우를 말한다. {A, B} -> {B} 와 같이 당연한 경우를 말한다.
고로 모든 결정자가 후보키 인 경우 BCNF 를 말한다.
제3정규형 | ||
학번 | 과목 | 교수 |
1234 | 데이터베이스 | 김용주 |
1234 | 자료구조 | 이우정 |
5678 | 프로그래밍 | 박정미 |
3457 | 자료구조 | 고현주 |
3654 | 데이터베이스 | 김용주 |
학번, 과목 -> 교수
교수 -> 과목
학번, 과목
교수 -> 과목
5. 제 4 정규화 : 다중값 종속 관계가 있는 컬럼을 분리
1. BCNF를 만족해야 한다.2. 다치 종속(Multi-valued Dependency)이 없어야 한다.
다치 종속이란
1. A->B 일 때 하나의 A값에 여러 개의 B값이 존재하면 다치 종속성을 가진다고 하고 A↠B라고 표시한다
2. 최소 3개의 칼럼이 존재한다.
3. R(A, B, C)가 있을 때 A와 B 사이에 다치 종속성이 있을 때 B와 C가 독립적이다.
학생ID | 과목 | 클럽 |
1001 | 수학 | 축구부 |
1001 | 과학 | 축구부 |
1001 | 수학 | 독서부 |
1002 | 영어 | 음악부 |
1002 | 역사 | 음악부 |
1003 | 과학 | 미술부 |
1003 | 과학 | 축구부 |
출처: https://code-lab1.tistory.com/270 [코드 연구소:티스토리]
6. 제 5 정규화 : 조인을 통해 유도 가능한 데이터 분리
댓글