2022년 4월
2022년 4월 정보처리기사 기출문제 풀이 후 작성한 오답노트입니다.
요약
- 이론 학습 전 연습용으로 풀어본 기출 문제
- 3, 4과목이 많이 약한 것으로 파악되며 이론 학습 시 해당 과목을 집중적으로 학습하면 좋을 듯
- 67번 이후의 오답 노트는 캡쳐를 유실하여 추후 다시 풀고 추가하기
2과목
22. 이진 탐색 동작 방식
mid = (low + high) / 2 를 통해 중간 인덱스를 찾고 이를 반복한다.
- 해당 문제의 경우 다음 순서로 탐색이 진행되며 총 3번의 탐색을 통해 찾을 수 있다.
low = 0,high = 14,mid = (0 + 14) // 2 = 7→arr[7] = 8(오른쪽 탐색)low = 8,high = 14,mid = (8 + 14) // 2 = 11→arr[11] = 12(오른쪽 탐색)low = 12,high = 14,mid = (12 + 14) // 2 = 13→arr[13] = 14🎯
28. 위험 모니터링
위험 모니터링이란 위험 요소 징후들에 대하여 계속적으로 인지하는 것이다.
31. 알고리즘
검색을 수행하기 전에 반드시 데이터의 집합이 정렬되어 있어야 하는 것은 이진 검색이다.
선형 검색은 처음부터 끝까지 하나씩 순서대로 비교하며 원하는 값을 찾아내는 검색이다.
- 주어진 작업을 수행하는 컴퓨터 명령어를 순서대로 나열한 것으로 볼 수 있다.
- 검색(Searching)은 정렬이 되지 않은 데이터 혹은 정렬이 된 데이터 중에서 키값에 해당되는 데이터를 찾는 알고리즘이다.
- 정렬(Sorting)은 흩어져있는 데이터를 키값을 이용하여 순서대로 열거하는 알고리즘이다.
선형 검색은 검색을 수행하기 전에 반드시 데이터의 집합이 정렬되어 있어야 한다.
32. 버블 정렬
버블 정렬
버블 정렬은 첫 위치부터 시작해서 오른쪽 값과 비교하는 방식으로 진행되며, PASS 1은 첫 버블 정렬이 끝난 상태다.
- PASS 1의 결과 도출 과정은 아래와 같다.
9 > 6→ 스왑 →6, 9, 7, 3, 59 > 7→ 스왑 →6, 7, 9, 3, 59 > 3→ 스왑 →6, 7, 3, 9, 59 > 5→ 스왑 →6, 7, 3, 5, 9
33. 인스펙션(Inspection) 과정
진행 과정
계획 → 사전 교육 → 준비 → 인스펙션 회의 → 수정 → 후속 조치 순으로 진행되며, 수정이 발생하면 계획으로 돌아간다.
35. 단위 테스트(Unit Test)
필요 데이터를 인자를 통해 넘겨주고, 테스트 완료 후 그 결과값을 받는 역할을 하는 가상의 모듈은 테스트 드라이버(test driver)다.
테스트 스텁(test stub)은 인자를 통해 받은 값을 가지고 수행한 후 그 결과를 테스트할 모듈에 넘겨주는 역할을 한다.
- 구현 단계에서 각 모듈의 개발을 완료한 후 개발자가 명세서의 내용대로 정확히 구현되었는지 테스트한다.
- 모듈 내부의 구조를 구체적으로 볼 수 있는 구조적 테스트를 주로 시행한다.
필요 데이터를 인자를 통해 넘겨주고, 테스트 완료 후 그 결과값을 받는 역할을 하는 가상의 모듈을 테스트 스텁(Stub)이라고 한다.- 테스트할 모듈을 호출하는 모듈도 있고, 테스트할 모듈이 호출하는 모듈도 있다.
37. 트리(Tree) 구조의 순회 방식
후위 순회는 왼쪽 → 오른쪽 → 루트 순서로 순회한다.
| 순회 방식 | 진행 방향 | 결과 순서 |
|---|---|---|
| 전위 순회 | 루트 → 왼쪽 → 오른쪽 | a → b → d → c → e → g → h → f |
| 중위 순회 | 왼쪽 → 루트 → 오른쪽 | d → b → a → g → e → h → c → f |
| 후위 순회 | 왼쪽 → 오른쪽 → 루트 | d → b → g → h → e → f → c → a |
| 레벨 순회 | 위 → 아래, 좌 → 우 | a → b → c → d → e → f → g → h |
3과목
40. 단위 테스트 도구
CppUnit은 C++ 단위 테스트 도구, JUnit은 Java 단위 테스트 도구, HttpUnit은 브라우저 없이 웹사이트 테스트를 수행하기 위한 테스트 프레임워크다.
- CppUnit
- JUnit
- HttpUnit
IgpUnit
41. 정규형
조건에 맞는 정규형 찾기
정규형의 경우 이전 단계를 충족해야 하기 때문에, 가장 높은 단계를 선택해야 한다.
- 1NF: 테이블 내의 속성값은 원자값을 가지고 있어야 한다.
- 2NF: 부분 함수 종속을 제거한다. (완전 함수 종속 관계).
- 3NF: 이행 함수 종속을 제거한다.
- BCNF: 결정자가 후보키인 정규형이며, 함수 종속을 제거한다.
- 4NF: 다치 종속을 제거한다.
- 5NF: 조인 종속을 제거한다.
42. 트랜잭션의 특성
트랜잭션이란
트랜잭션(Transaction)이란 데이터베이스의 상태를 변화시키기 해서 수행하는 작업의 단위다.
- 원자성(Atomicity): 완전하게 수행 완료되지 않으면 전혀 수행되지 않아야 함
- 일관성(Consistency): 시스템의 고정 요소는 트랜잭션 수행 전후에 같아야 함
- 격리성(Isolation, 고립성): 트랜잭션 실행 시 다른 트랜잭션의 간섭을 받지 않아야 함
- 영속성(Durability, 지속성): 트랜잭션의 완료 결과가 데이터베이스에 영구히 기억됨
45. 데이터베이스 인덱스
인덱스(Index)란
데이터베이스에 저장된 자료를 빠르게 조회하기 위하여 별도로 구성한 순서 데이터를 말하며, 테이블과 클러스터에 연관되어 독립적인 저장 공간을 보유한다. 또한, 대부분의 데이터베이스에서 테이블을 삭제하면 인덱스도 같이 삭제된다.
인덱스 생성 명령어는 CREATE, 삭제 명령어는 DROP 이다.
- 문헌의 색인, 사전과 같이 데이터를 쉽고 빠르게 찾을 수 있도록 만든 데이터 구조이다.
- 테이블에 붙여진 색인으로 데이터 검색 시 처리 속도 향상에 도움이 된다.
인덱스의 추가, 삭제 명령어는 각각 ADD, DELETE이다.- 대부분의 데이터베이스에서 테이블을 삭제하면 인덱스도 같이 삭제된다.
47. SQL 명령어
SQL이란
SQL(Structured Query Language)은 관계형 데이터베이스에서 데이터를 정의, 조작, 검색, 수정, 삭제하고, 트랜잭션을 관리하는 표준 프로그래밍 언어다.
48. 데이터 사전(Data Dictionary)
데이터 사전은 데이터베이스 시스템의 관리자 또는 DBA(Database Administrator)에 의해 관리되며, 일반 사용자가 이를 수정하는 것은 보통 권한상 제한된다.
- 시스템 카탈로그 또는 시스템 데이터베이스라고도 한다.
데이터 사전 역시 데이터베이스의 일종이므로 일반 사용자가 생성, 유지 및 수정 할 수 있다.- 데이터베이스에 대한 데이터인 메타데이터(Metadata)를 저장하고 있다.
- 데이터 사전에 있는 데이터에 실제로 접근하는 데 필요한 위치 정보는 데이터 디렉토리(Data Directory)라는 곳에서 관리한다.
49. 데이터베이스 릴레이션(Relation)
릴레이션(Relation)과 튜플(Tuple)
릴레이션은 데이터를 표 형태로 표현한 2차원 테이블이며, 튜플은 릴레이션의 각 행으로, 릴레이션에서 정의된 속성 값들을 가지는 하나의 데이터 레코드입니다. 또한, 튜플의 유일성, 튜플의 무순서성, 속성의 원자성, 속성의 무순서성의 특징을 가진다.
하나의 릴레이션에 포함된 튜플은 순서가 없으며, 순서에 의미가 없다.
- 모든 튜플은 서로 다른 값을 가지고 있다.
하나의 릴레이션에서 튜플은 특정한 순서를 가진다.- 각 속성은 릴레이션 내에서 유일한 이름을 가진다.
- 모든 속성 값은 원자 값(atomic value)을 가진다.
50. 데이터베이스 뷰(View)
데이터베이스 뷰란
데이터베이스 뷰는 하나 이상의 테이블에서 데이터를 추출하여 가상 테이블 형태로 제공하며, 실제 데이터는 저장하지 않고 쿼리 결과를 동적으로 보여주는 논리적 구조다.
- 뷰는 다른 뷰를 기반으로 새로운 뷰를 만들 수 있다.
- 뷰는 일종의 가상 테이블이며, update에는 제약이 따른다.
- 뷰는 기본 테이블을 만드는 것처럼 create view를 사용하여 만들 수 있다.
뷰는 논리적으로 존재하는 기본 테이블과 다르게 물리적으로만 존재하며 카탈로그에 저장된다.
51. 트랜잭션 상태
- 활성(Active): 트랜잭션이 실행 중인 상태로, 아직 커밋되거나 롤백되지 않은 상태다.
- 부분 커밋(Partial Commit): 트랜잭션이 일부 작업을 완료하고 커밋을 기다리고 있는 상태다.
- 커밋(Committed): 트랜잭션이 정상적으로 완료되어, 변경 사항이 영구적으로 데이터베이스에 반영된 상태다.
- 롤백(Rolled Back): 트랜잭션이 중단되거나 오류가 발생하여, 변경 사항을 모두 취소하고 데이터베이스 상태를 트랜잭션 시작 이전으로 되돌린 상태다.
- 실패(Failed) : 트랜잭션이 작업 수행 도중 오류가 발생하여 중단된 상태이다.
- 철회(Aborted): 트랜잭션이 비정상적으로 종료되어, 이후 Rollback 연산이 수행된 상태.
52. SQL 명령 구분짓기
47번 문제의 SQL 명령어 참고
53. 테이블 키의 종류
키의 종류 중 유일성과 최소성을 만족하는 속성 또는 속성들의 집합은 후보키(Candidate key)다.
- 슈퍼키(Super Key): 유일성을 만족하는 키.
- 복합키(Composite Key): 2개 이상의 속성(attribute)를 사용한 키.
- 후보키(Candidate key): 유일성과 최소성을 만족하는 키. 기본키가 될 수 있는 후보이기 때문에 후보키라고 불린다.
- 기본키(Primary key): 후보 키에서 선택된 키. NULL값이 들어갈 수 없으며, 기본키로 선택된 속성(Attribute)은 동일한 값이 들어갈 수가 없다.
- 대체키(Surrogate key): 후보 키 중에 기본 키로 선택되지 않은 키.
- 외래키(Foreign Key): 어떤 테이블(Relation) 간의 기본 키(Primary key)를 참조하는 속성이다. 테이블(Relation)들 간의 관계를 나타내기 위해서 사용된다.
55. 테이블의 기본키(Primary Key)
53번 문제의 테이블 키의 종류 참고
기본키는 검색할 때 반드시 필요하지는 않지만, 기본키로 조회하면 유일한 튜플을 조회할 수 있다.
- NOT NULL로 널 값을 가지지 않는다.
- 릴레이션에서 튜플을 구별할 수 있다.
- 외래키로 참조될 수 있다.
검색할 때 반드시 필요하다.
56. 데이터 모델 구성요소
DBMS에서의 실제 표현과 동작을 정의한 것으로, 데이터 모델이 어떻게 동작하고 표현되는지를 정의하는 핵심 요소다.
| 항목 | 설명 |
|---|---|
| 데이터 구조(Structure) | 데이터 구조 및 정적 성질을 표현한다. (테이블, 열, 행 구조 등) |
| 연산(Operation) | 데이터 구조에 따라 개념 세계나 컴퓨터 세계에서 실제로 표현된 값을 처리하는 작업이다. (조회, 삽입, 삭제 등) |
| 제약 조건(Constraint) | 데이터의 논리적 제한 명시 및 조작의 규칙이다. (무결성 유지, 중복 방지 등) |
57. SQL 구문 분석
- 하위 질의문은 하위 질의를 먼저 처리하고 검색된 결과는 상위 질의에 적용되어 검색된다.
- 직원 테이블에서 “정도일” 팀원의 팀 코드를 검색하여 상위 질의에 반환한다.
59. 관계 데이터 모델
관계 데이터 모델(Relational Data Model)이란
데이터를 행(Row)과 열(Column)로 구성된 2차원 테이블(릴레이션) 형태로 표현하는 데이터 모델이다.
- Degree(차수): 속성의 수
- Cardinality(기수): 튜플의 수
60. SQL 구문
- 권한 부여:
GRANT CREATE TABLE FROM [TARGET]; - 권한 취소:
REVOKE CREATE TABLE FROM [TARGET];
4과목
63. C언어
- 정답은
ob1.a + ob2.a = 20 + 40 = 60 - 짝수 인덱스만 더하는 부분을 놓치고 실수한 문제
64. IP 프로토콜
IP 프로토콜
데이터를 송신지에서 수신지까지 전달하기 위해 IP 주소를 기반으로 경로를 지정하고 패킷을 전송하는 네트워크 계층 프로토콜이다.
Packet Length는 IP 헤더와 데이터를 포함한 IP 패킷 전체의 길이를 바이트 단위로 나타내는 필드이다.
- Header Length는 IP 프로토콜의 헤더 길이를 32비트 워드 단위로 표시한다.
Packet Length는 IP 헤더를 제외한 패킷 전체의 길이를 나타내며 최대 크기는 2³²-1 비트이다.- Time To Live는 송신 호스트가 패킷을 전송하기 전 네트워크에서 생존할 수 있는 시간을 지정한 것이다.
- Version Number는 IP 프로토콜의 버전번호를 나타낸다.
65. Python
- 파이썬 조건문 키워드는
if,elif,else다. - 정답은
elif
66. RIP
라우팅 프로토콜을 IGP와 EGP로 분류했을 때 RIP는 OSPF와 함께 IGP에 해당한다.
RIP(Routing Information Protocol)
Bellman-Ford 알고리즘을 사용하는 거리 벡터(distance-vector) 기반의 라우팅 프로토콜로, 네트워크 내에서 최적의 경로를 결정하기 위해 홉 수(hop count)를 주요 지표로 사용한다.
IGP(Interior Gateway Protocol)
내부 게이트 프로토콜로 학내망 내부에서 라우팅 하는 것을 의미한다. 즉, 하나의 AS 내에서 라우팅에 사용되는 프로토콜이다.
EGP(Exterior Gateway Protocol)
외부 게이트 프로토콜로 다른 학내망의 라우팅에 사용된다. 즉, AS 간의 라우팅에 사용되는 프로토콜이다.
- 경로 선택 메트릭은 홉 카운트(hop count)이다.
라우팅 프로토콜을 IGP와 EGP로 분류했을 때 EGP에 해당한다.- 최단 경로 탐색에 Bellman-Ford 알고리즘을 사용한다.
- 각 라우터는 이웃 라우터들로부터 수신한 정보를 이용하여 라우팅 표를 갱신한다.
67. 프로세스 스케줄링
스케줄링
프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에 할당하는 작업을 의미한다.
- 선점 스케줄링: 할당된 CPU를 우선순위가 높은 프로세스가 빼앗아 사용할 수 있는 기법
- 라운드 로빈(Round Robin): 프로세스마다 같은 크기의 CPU 시간을 할당하고, 시간 내 처리 못하면 큐 리스트 마지막으로 이동
- SRT(Shortest Remaining Time First): 가장 짧은 시간이 소요되는 프로세스를 먼저 수행
- 다단계 큐(Multi Level Queue): 작업들을 여러 종류 그룹으로 분할하고, 여러 개의 큐를 이용하여 상위 단계 작업이 선점
- 다단계 피드백 큐(Multi Level Feedback Queue): 입출력 위주와 CPU 위주인 프로세스 특성에 따라 큐마다 서로 다른 CPU 시간 할당량 부여. FCFS와 라운드 로빈 기법 혼합
- 비선점 스케줄링: 할당된 CPU를 강제로 빼앗을 수 없는 기법
- 우선순위(Priority): 각 프로세스 별로 우선순위가 주어지고, 우선순위에 따라 배정
- 기한부(Deadline): 작업들이 명시된 기간이나 기한 내에 완료하도록 계획
- FCFS(First Come First Serve)/FIFO: 먼저 요청한 프로세스가 먼저 CPU를 배정
- SJF(Shortest Job First): 프로세스 도착 시점에서 가장 짧은 프로세스가 종료까지 CPU 선점
- HRN(Highest Response Ratio Next): 대기 중인 프로세스 중
Response Ratio(
(대기 시간 + 서비스 시간) / 서비스 시간)이 가장 높은 것을 선택
Last updated on