국가기술자격 코어: 정보처리기사(필기·실기 신유형: 소프트웨어공학·DB SQL·운영체제·네트워크·C/Java/Python 코딩) & 컴퓨터활용능력 1급
IT·공기업·공무원 가산점 및 취업 필수 자격증인 정보처리기사(2020년 이후 NCS 개편 필기 5과목 및 실기 단답형·알고리즘·SQL·프로그래밍 출력 결과 예측)와 대한상공회의소 컴퓨터활용능력 1급(스프레드시트 엑셀 함수·배열수식·데이터베이스 액세스 쿼리) 핵심 빈출 개념을 다룹니다.
- Level
- advanced
- Languages
- ko → ko
- Cards
- 32
- Markdown
- 국가기술자격 코어: 정보처리기사(필기·실기 신유형: 소프트웨어공학·DB SQL·운영체제·네트워크·C/Java/Python 코딩) & 컴퓨터활용능력 1급 (.md)
Flashcards (32)
| # | Front (Term / Question) | Back (Definition / Answer) | Example | Multiple-Choice Options |
|---|---|---|---|---|
| 1 | 정보처리기사 실기 '애플리케이션 테스트 관리'에서 테스트 오라클(Test Oracle)의 4가지 유형('참 오라클, 샘플링 오라클, 추정[휴리스틱] 오라클, 일관성 검사 오라클')과 McCabe의 순환 복잡도(Cyclomatic Complexity) 계산 공식 $V(G) = E - N + 2$는 무엇인가? | 실기 단답형 최다 출제! **테스트 오라클(테스트 결과가 참인지 거짓인지 판단하기 위해 사전에 정의된 참값을 대입하여 비교하는 기법) 4유형**: ① **참(True) 오라클**: 모든 입력값에 대하여 기대하는 결과를 모두 생성하여 발생된 모든 오류를 검출(항공기·원자력 등 치명적 시스템); ② **샘플링(Sampling) 오라클**: 특정한 몇 개의 선택된 입력값에 대해서만 기대하는 결과를 제공; ③ **추정(Heuristic) 오라클**: 샘플링 오라클을 개선하여 특정 입력값에 대해 올바른 결과를 제공하고, **나머지 입력값들에 대해서는 추정(휴리스틱)으로 처리**; ④ **일관성 검사(Consistent) 오라클**: 애플리케이션의 **변경이 있을 때 수행 전과 수행 후의 결과값이 동일한지** 확인. ⑤ **맥케이브 순환 복잡도 $V(G)$**: 제어 흐름 그래프에서 **$V(G) = \text{화살표(간선 } E\text{) 수} - \text{노드(}N\text{) 수} + 2 = \text{밀폐된 내부 영역 수} + 1$**. | ||
| 2 | GoF(Gang of Four) 디자인 패턴 23가지 중 생성 패턴 5종(싱-팩-추-빌-프), 구조 패턴 7종(어-브-컴-데-퍼-플-프), 행위 패턴 11종(옵-스-스테-템-커-비-미-메-체-인-이터)의 핵심 키워드 매칭은 무엇인가? | 실기 단답형 최빈출 패턴: ① **생성 패턴**: **Singleton**(전역 단일 인스턴스 보장), **Factory Method**(객체 생성을 서브클래스에서 결정), **Abstract Factory**(관련된 객체군 생성), **Builder**(복잡한 객체를 단계별로 조립), **Prototype**(원형 객체를 복제하여 생성); ② **구조 패턴**: **Adapter**(호환되지 않는 인터페이스를 변환), **Bridge**(구현부에서 추상층을 분리해 독립적 확장), **Decorator**(상속 없이 객체에 동적으로 기능 덧씌움), **Facade**(복잡한 서브시스템에 단순한 통합 인터페이스 제공), **Proxy**(대리인 역할로 접근 제어); ③ **행위 패턴**: **Observer**(한 객체의 상태 변화 시 의존 객체들에게 자동 통보), **Strategy**(알고리즘군을 캡슐화해 상호 교체), **State**(객체 내부 상태에 따라 행위 변경), **Mediator**(객체 간 복잡한 상호작용을 중재자 객체로 캡슐화해 결합도 낮춤). | ||
| 3 | 정보처리기사 실기 Python·Java에서 '예외 처리(`try ~ catch/except ~ finally`)' 실행 순서와 '람다식(Lambda: Python `map(lambda x: x*2, list)`, `filter`)', 그리고 '컬렉션 자료형(Python `list [ ]`, `tuple ( )`, `dict {k:v}`, `set { }`)'의 출력 결과 규칙은 무엇인가? | ① **`try ~ catch(except) ~ finally` 실행 순서**: 예외가 발생하든 발생하지 않든, 심지어 `try`나 `catch` 블록 안에 `return`문이 있더라도 **`finally` 블록의 코드는 무조건 실행**된다!; ② **Python 자료형 특성**: **`tuple (1, 2, 3)`**은 한 번 생성하면 요소를 수정·삭제할 수 없는 불변(Immutable) 시퀀스이고, **`set {1, 2, 2, 3}`**은 **중복을 자동으로 제거(`{1, 2, 3}`)**하며 순서가 없는 집합 자료형이다(주의: 빈 중괄호 `{}`는 `set`이 아니라 빈 딕셔너리 `dict`이므로 빈 집합은 반드시 `set()`으로 생성하며, `set` 연산자 `|`는 합집합, `&`는 교집합, `-`는 차집합, `^`는 대칭차집합이다!). | ||
| 4 | 관계대수(Relational Algebra: 순수 관계 연산자 Select $\sigma$, Project $\pi$, Join $\bowtie$, Division $\div$ + 일반 집합 연산자 $\cup, \cap, -, \times$: 절차적 언어)와 관계해석(Relational Calculus: 비절차적 언어, 전칭량자 $\forall$·존재량자 $\exists$) 및 트랜잭션의 4대 특성(ACID)과 병행제어 기법(로킹, 타임스탬프, 낙관적 검증, 다중버전 MVCC)·회복 기법(즉각 갱신 vs 지연 갱신[Redo만 수행], 검사점 Checkpoint, 그림자 페이징)은 무엇인가? | ① **순수 관계 연산자 기호 매칭**: **Select($\sigma_{\text{조건}}(R)$)**: 조건을 만족하는 **수평적 행(튜플)** 추출; **Project($\pi_{\text{속성리스트}}(R)$)**: 특정 **수직적 열(속성)** 추출(중복 자동 제거); **Division($R \div S$)**: $S$의 모든 튜플과 연관된 $R$의 튜플 추출; ② **회복(Recovery) 기법 핵심 차이**: **지연 갱신(Deferred Update)** 기법은 트랜잭션이 부분 완료(Commit 직전)될 때까지 모든 변경 내용을 로그에만 기록하고 실제 데이터베이스에는 반영하지 않으므로, 장애 발생 시 **Undo(취소) 작업이 전혀 필요 없고 Redo(재실행)만 필요**하다! 반면 **즉각 갱신(Immediate Update)** 기법은 트랜잭션 수행 도중에도 변경 내용을 DB에 즉시 반영하므로 장애 발생 시 **Undo와 Redo가 모두 필요**하다. | ||
| 5 | 리눅스/유닉스(Linux/UNIX) 핵심 명령어(`chmod` 8진수 권한 부여 및 `umask`, `chown`, `ps`, `kill`, `fork`, `grep`, `find`)와 파일 디스크립터(0: 표준입력, 1: 표준출력, 2: 표준에러)·이노드(i-node)의 구조는 무엇인가? | ① **`chmod`와 **`umask` 계산**: 파일 기본 최대 권한은 **`666`**(`rw-rw-rw-`), 디렉터리 기본 최대 권한은 **`777`**(`rwxrwxrwx`)이다. 만약 `umask` 값이 `022`라면 새로 생성되는 **파일의 권한은 `666 - 022 = 644` (`rw-r--r--`)**, **디렉터리의 권한은 `777 - 022 = 755` (`rwxr-xr-x`)**가 된다!; ② **i-node(인덱스 노드)**: 유닉스/리눅스 파일 시스템에서 각 파일의 고유 식별 정보(**파일 소유자 UID/GID, 파일 크기, 파일 타입, 접근 권한, 생성·수정 시간, 데이터 블록의 주소 포인터**)를 저장하는 자료구조이다(주의: **【파일 이름(File Name)】은 i-node에 저장되지 않고 디렉터리 엔트리에 저장된다**!). | ||
| 6 | 정보처리기사 실기 '소프트웨어 공학 및 프로젝트 관리'에서 형상 관리(Configuration Management)의 개념·절차(식별 → 통제 → 감사 → 기록)와 버전 관리 도구(공유 폴더 방식[RCS, SCCS] vs 클라이언트/서버 방식[CVS, SVN] vs 분산 저장소 방식[Git]), 그리고 빌드 자동화 도구(Ant, Maven, Gradle, Jenkins)는 무엇인가? | ① **소프트웨어 형상 관리(SCM) 4단계**: **형상 식별**(관리 대상 정의 및 번호 부여) → **형상 통제**(변경 요구를 **형상통제위원회 CCB**가 심의·승인하여 베이스라인 갱신) → **형상 감사**(베이스라인의 무결성 공식 검증) → **형상 기록(상태 보고)**; ② **버전 관리 도구 구분**: **CVS / SVN(Subversion)**은 중앙 서버에 소스를 통합 관리하는 **클라이언트/서버** 방식이고, **Git**은 로컬 저장소와 원격 저장소로 분리되어 오프라인에서도 커밋이 가능한 **분산 저장소** 방식이다; ③ **빌드 자동화 도구**: **Maven**은 XML 기반의 **`pom.xml`** 파일을 이용해 의존성을 관리하고, **Gradle**은 안드로이드 스튜디오의 표준 빌드 도구로서 **Groovy 기반의 DSL(도메인 특화 언어)** 스크립트를 사용하며 실행 속도가 빠르다. | ||
| 7 | 컴퓨터활용능력 1급 데이터베이스(액세스) 실기에서 '크로스탭 쿼리(행 머리글 여러 개 가능, 열 머리글 단 1개, 값 단 1개[집계함수])'와 '매개변수 쿼리(`Like "*" & [메시지] & "*"`)', '불일치 검색 쿼리(`LEFT JOIN ~ WHERE 우측테이블.키 IS NULL`)', 그리고 이벤트 프로시저(`Me.Filter = "조건"`, `Me.FilterOn = True`, `DoCmd.OpenReport "보고서명", acViewPreview, , "조건"`)의 작성 공식은 무엇인가? | 컴활 1급 액세스 실기 쿼리 및 이벤트 프로시저 핵심 공식: ① **크로스탭 쿼리**: **행 머리글은 최대 3개(여러 개)까지 지정 가능**하지만, **열 머리글과 값(집계 함수: 합계, 평균, 개수 등)은 각각 단 1개씩만** 지정할 수 있다; ② **매개변수 쿼리에서 일부 문자열 포함 검색**: 조건란에 **`Like "*" & [검색할 단어를 입력하세요] & "*"`** (액세스 SQL/쿼리 디자인 뷰의 와일드카드는 `%`가 아니라 별표 **`*`**와 물음표 **`?`**가 기본임!); ③ **현재 폼에 필터 적용하기(`cmd조회_Click`)**: **`Me.Filter = "필드명 = '" & txt조회 & "'"`** (숫자면 작은따옴표 제외) 작성 후 반드시 둘째 줄에 **`Me.FilterOn = True`**를 함께 적어야 필터가 활성화된다; ④ **특정 조건에 맞는 레코드만 보고서 미리보기로 열기**: **`DoCmd.OpenReport "보고서이름", acViewPreview, , "필드명 = " & Me.컨트롤명`** (쉼표 개수 주의: 보고서명, 보기모드, 필터명[생략], **4번째 인수가 Where 조건문**!). | ||
| 8 | 컴퓨터활용능력 1급(컴활 1급) 제1과목 '컴퓨터 일반'과 제2과목 '스프레드시트(엑셀)'에서 절대참조(`$A$1`) vs 혼합참조(`$A1`, `A$1`), 배열수식(`Ctrl+Shift+Enter` — `{=SUM((조건1)*(조건2)*(계산범위))}` vs `{=COUNT(IF((조건1)*(조건2), 1))}`), 그리고 찾기/참조 함수(`VLOOKUP, HLOOKUP, INDEX, MATCH, OFFSET, CHOOSE`)의 핵심 규칙은 무엇인가? | 컴활 1급 필기·실기 합격의 핵심인 **엑셀 배열수식과 참조 함수**: ① **혼합참조**: 자동 채우기 핸들을 아래(행 방향)로 드래그할 때 행이 고정되어야 하면 `A$1`, 오른쪽(열 방향)으로 드래그할 때 열이 고정되어야 하면 `$A1`을 쓴다(`F4` 키로 순환); ② **배열수식 공식**: `AND` 조건은 곱하기(`*`), `OR` 조건은 더하기(`+`)로 연결하며 배열수식 내부에서는 `AND()`나 `OR()` 함수를 직접 쓰지 못한다! 특히 **`COUNT` 함수를 이용한 개수 구하기에서는 `IF`문 없이 `*(1)`을 하면 False인 `0`까지 숫자로 인식해 전체 행 개수가 나오므로, 반드시 `{=COUNT(IF((조건1)*(조건2), 1))}`처럼 `IF` 함수를 써서 거짓일 때 `FALSE`가 반환되게 하거나 `{=SUM((조건1)*(조건2)*1)}`을 써야 한다**! ③ **`INDEX(범위, 행번호, 열번호)` + `MATCH(찾을값, 찾을범위, 0[정확히 일치])`**: `VLOOKUP`은 찾을 열이 반드시 범위의 맨 왼쪽 첫 열이어야 하지만, `INDEX+MATCH` 조합은 기준 열의 위치에 상관없이 양방향 조회가 가능하다. | ||
| 9 | 운영체제 교착상태(Deadlock)의 발생 4대 필요충분조건('상호배제, 점유와 대기, 비선점, 환형 대기')과 해결 방법 4가지('예방 Prevention, 회피 Avoidance[은행원 알고리즘 Banker's Algorithm], 발견 Detection[자원할당 그래프], 회복 Recovery')는 무엇인가? | ① **교착상태 발생 4조건(하나라도 성립하지 않으면 교착상태는 발생하지 않음!)**: **상호배제(Mutual Exclusion)**(한 번에 한 프로세스만 공유자원 사용), **점유와 대기(Hold and Wait)**(자원을 최소 하나 보유한 채 다른 프로세스가 가진 자원을 추가로 요구하며 대기), **비선점(Non-preemption)**(다른 프로세스가 사용 중인 자원을 강제로 빼앗을 수 없음), **환형 대기(Circular Wait)**(자원 요구가 원형 사슬을 이룸); ② **예방 vs 회피**: **예방**은 4가지 발생 조건 중 하나를 원천적으로 부정하여 제거하는 기법(자원 낭비 심함)이고, **회피**는 다익스트라의 **【은행원 알고리즘(Banker's Algorithm)】**을 사용하여 자원 할당 후에도 시스템이 **안전 상태(Safe State: 안전 순서열이 존재하는 상태)**를 유지할 수 있을 때만 자원을 할당하는 기법이다. | ||
| 10 | 네트워크 OSI 7계층(물-데-네-전-세-표-응)별 장비·프로토콜·전송단위(PDU: 비트-프레임-패킷-세그먼트-메시지)와 IPv4 서브넷팅(CIDR), 라우팅 프로토콜(IGP: RIP[거리벡터, 최대 15홉, 벨만-포드] vs OSPF[링크상태, 다익스트라, 에어리어] / EGP: BGP), 그리고 정보보안 암호화·공격 기법(SQL Injection, XSS, CSRF, 스니핑, 스푸핑, 스머프 공격, 랜드 어택, 티어드롭)은 무엇인가? | ① **라우팅 프로토콜(실기 단골!)**: 내부 게이트웨이 프로토콜(IGP) 중 **RIP**는 거리 벡터(Distance Vector) 알고리즘에 기반해 **최대 홉 수를 15홉으로 제한**하는 소규모 네트워크용이고, **OSPF**는 **링크 상태(Link State)**를 실시간 반영해 **다익스트라(Dijkstra) 최단 경로 알고리즘**으로 경로를 계산하며 대규모 네트워크를 자치 시스템(AS) 내 Area로 분할 관리한다; AS 간 외부 라우팅 프로토콜(EGP)은 **BGP**이다. ② **네트워크 및 웹 보안 공격 기법 구별**: **Land Attack**(출발지 IP와 목적지 IP를 공격 대상의 동일한 IP로 위조해 자기 자신에게 무한 응답하게 함), **Smurf Attack**(출발지 IP를 피해자 IP로 위조해 네트워크 브로드캐스트 주소로 **ICMP Echo 패킷**을 대량 전송하여 다수의 호스트가 피해자에게 응답 폭탄을 보내게 함 — Direct Broadcast 비활성화로 방어), **Teardrop**(IP 단편화 Fragmentation 시 Offset 값을 조작해 재조립 시 과부하 유발), **XSS(크로스 사이트 스크립팅)**(웹페이지에 악성 스크립트를 삽입해 열람한 사용자의 쿠키/세션 탈취) vs **CSRF(사이트 간 요청 위조)**(사용자가 자신의 의지와 무관하게 공격자가 의도한 수정·삭제·송금 요청을 서버에 보내도록 만듦). | ||
| 11 | 데이터베이스 설계 5단계(요구조건 분석 → 개념적 설계[E-R 다이어그램] → 논리적 설계[정규화, 릴레이션 스키마 변환] → 물리적 설계[인덱스, 저장구조, 반정규화] → 구현)와 반정규화(비정규화 Denormalization: 테이블 통합/분할[수평분할 vs 수직분할], 중복 테이블/컬럼/관계 추가)의 목적은 무엇인가? | ① **DB 설계 단계별 핵심 작업 매칭(순서: 요-개-논-물-구)**: **개념적 설계**(DBMS에 독립적인 추상적 개념 모델인 **E-R 다이어그램** 작성, 트랜잭션 모델링) → **논리적 설계**(특정 목표 DBMS에 맞는 스키마 설계, E-R도를 릴레이션으로 변환, **정규화 수행**, 트랜잭션 인터페이스 설계) → **물리적 설계**(성능 향상을 위한 저장 레코드 양식, **인덱스 설계**, 클러스터링, 파티셔닝, **반정규화**); ② **반정규화(Denormalization)**: 정규화된 데이터 모델이 조인(Join) 과다로 인해 조회 성능이 저하될 때, **데이터의 무결성을 일부 희생하더라도 읽기(조회) 성능을 향상시키기 위해 의도적으로 중복을 허용하거나 테이블을 통합·분할**하는 기법이다. | ||
| 12 | 컴퓨터활용능력 1급 제3과목 '데이터베이스 일반(MS 액세스 Access)'에서 폼과 보고서의 구조(폼 머리글/바닥글 vs 페이지 머리글/바닥글 vs 본문), 하위 폼 연결(기본 필드 연결·하위 필드 연결), 조건부 서식, 도메인 집계 함수(`DSUM, DCOUNT, DAVG, DLOOKUP("필드명", "테이블/쿼리명", "조건")`), 그리고 실행 쿼리 4종(생성, 삭제, 업데이트, 추가 쿼리)의 특징은 무엇인가? | ① **액세스 도메인 함수(`DLOOKUP, DSUM, DCOUNT` 등)의 3가지 인수**: 세 인수는 모두 반드시 **큰따옴표(`" "`)로 묶은 문자열** 형태로 작성해야 하며, 3번째 조건 인수에서 현재 폼의 컨트롤 값을 참조할 때는 데이터 형식에 따라 **숫자는 `"학번 = " & [txt학번]`**, **문자는 작은따옴표로 감싸 `"성명 = '" & [txt성명] & "'"`**, **날짜는 샵(`#`)으로 감싸 `"입사일 = #" & [txt입사일] & "#"`**으로 연결한다!(실기 프로시저·컨트롤 원본 부동의 1위 문제!); ② **보고서 구역별 출력 위치**: **보고서 머리글/바닥글**은 보고서의 **맨 첫 페이지 상단과 맨 마지막 페이지 하단에 딱 1번씩**만 출력되고(보고서 머리글/바닥글의 요약 계산에는 `=Sum([필드])` 사용 가능), **페이지 머리글/바닥글**은 매 페이지마다 출력되나 그 안의 텍스트 상자에는 **`=Sum([필드])`과 같은 집계 함수를 직접 사용할 수 없다**! | ||
| 13 | 소프트웨어 아키텍처와 신기술 용어에서 'SOA(서비스 지향 아키텍처)', 'MSA(마이크로서비스 아키텍처)', '도커(Docker 컨테이너 가상화 vs 하이퍼바이저 전가상화/반가상화)', '쿠버네티스(Kubernetes)', 'SDN(소프트웨어 정의 네트워킹: 제어 평면과 데이터 평면 분리) & NFV(네트워크 기능 가상화)', '블록체인 합의 알고리즘(PoW 작업증명 vs PoS 지분증명 vs PBFT)'의 핵심 정의는 무엇인가? | ① **하이퍼바이저 가상화 vs 컨테이너(Docker)**: 하이퍼바이저 기반 가상머신(VM)은 각 VM마다 독립된 **게스트 OS(Guest OS)** 전체를 설치해야 해 무겁지만, **도커(Docker) 컨테이너**는 호스트 OS의 커널을 공유하면서 애플리케이션과 실행 환경만 격리 패키징하므로 오버헤드가 적고 배포 속도가 압도적으로 빠르다(**쿠버네티스**는 다수의 컨테이너를 자동 배포·스케일링·관리하는 **컨테이너 오케스트레이션** 도구); ② **SDN(Software Defined Networking)**: 네트워크 장비의 **제어부(Control Plane, 두뇌)**를 **데이터 전송부(Data Plane, 하드웨어 패킷 포워딩)**로부터 분리하여 중앙의 소프트웨어 컨트롤러가 OpenFlow 프로토콜로 네트워크 경로를 프로그래밍 방식으로 제어하는 기술. | ||
| 14 | 정보처리기사 제1과목 '소프트웨어 설계'에서 애자일(Agile) 방법론의 대표 유형(XP 5대 핵심 가치·12대 실천항목, Scrum 제품 백로그·스프린트·스크럼 마스터·소멸 차트)과 요구사항 개발 프로세스 4단계(도출 → 분석 → 명세 → 확인)는 무엇인가? | ① 요구사항 개발 4단계(순서 암기 **'도-분-명-확'**): **도출**(인터뷰, 브레인스토밍, 프로토타이핑, 유스케이스) → **분석**(DFD, 자료사전 DD, CASE 도구) → **명세**(정형 명세 기법[수학적 기호, Z, VDM, Petri-Net] vs 비정형 명세 기법[자연어, 다이어그램]) → **확인(검증)**(동료검토, 워크스루, 인스펙션); ② **XP(eXtreme Programming) 5대 가치**: **용기(Courage), 단순성(Simplicity), 의사소통(Communication), 피드백(Feedback), 존중(Respect)**; XP 주요 실천기술: 짝 프로그래밍(Pair Programming), **테스트 주도 개발(TDD)**, 지속적 통합(CI), 리팩토링(기능 변경 없이 내부 코드 구조 개선), 소규모 릴리즈. | ||
| 15 | 컴퓨터활용능력 1급 스프레드시트(엑셀)에서 '고급 필터 논리식 조건 작성법(필드명을 기존 표 필드명과 다르게 적고 첫 행 값을 기준으로 `AND/OR/LARGE/AVERAGE` 수식 작성)'과 '피벗 테이블·시나리오·목표값 찾기·데이터 표·부분합(정렬 선행 필수!)'의 핵심 주의사항은 무엇인가? | 컴활 1급 실기 기본작업·분석작업 감점 방지 1순위 규칙! ① **고급 필터 논리식(수식) 조건**: `AND, OR, LEFT, MID, LARGE, AVERAGE` 등 함수를 사용해 논리식(`TRUE/FALSE` 반환)으로 고급 필터 조건을 작성할 때는, **조건 영역 첫 행의 조건 필드 이름을 반드시 원본 데이터 표에 없는 새로운 이름(예: '조건')으로 적거나 아예 비워두어야 한다**! 또한 수식 안에서 현재 행마다 비교할 대상 셀은 데이터 영역의 첫 번째 데이터 셀을 **상대참조(`C3`)**로 지정하고, 전체 범위와 비교할 통계 함수(`AVERAGE($C$3:$C$30)`, `LARGE($C$3:$C$30, 3)`)의 범위는 반드시 **절대참조(`
| ||
| 16 | 제3과목 '데이터베이스 구축'에서 관계형 데이터 모델의 용어(릴레이션, 튜플=카디널리티[기수], 속성=디그리[차수], 도메인)와 키의 종류(슈퍼키[유일성], 후보키[유일성+최소성], 기본키, 대체키, 외래키) 및 3대 무결성 제약조건(개체 무결성, 참조 무결성, 도메인 무결성)은 무엇인가? | ① **릴레이션의 차수(Degree)와 카디널리티(Cardinality)**: **속성(Attribute, 열/Column)의 개수 = 차수(Degree)**, **튜플(Tuple, 행/Row)의 개수 = 카디널리티(Cardinality, 기수)** (참고로 두 릴레이션 $R_1(\text{차수 } d_1, \text{기수 } c_1)$과 $R_2(d_2, c_2)$를 **카티션 프로덕트($R_1 \times R_2$)** 하면 결과 릴레이션의 **차수는 더하기($d_1 + d_2$), 카디널리티는 곱하기($c_1 \times c_2$)**가 된다!); ② **슈퍼키 vs 후보키**: 모든 튜플을 유일하게 식별할 수 있는 **【유일성】**만 만족하면 **슈퍼키(Super Key)**이고, 유일성에 더해 꼭 필요한 속성만으로 구성된 **【최소성】**까지 만족하면 **후보키(Candidate Key)**이다; ③ **개체 무결성**: 기본키(Primary Key)는 **NULL 값을 가질 수 없으며 중복될 수 없다**; **참조 무결성**: 외래키(Foreign Key) 값은 **참조하는 릴레이션의 기본키 값과 같거나 NULL**이어야 한다. | ||
| 17 | SQL 문법의 3분류(DDL: CREATE, ALTER, DROP, TRUNCATE / DML: SELECT, INSERT, UPDATE, DELETE / DCL: GRANT, REVOKE, COMMIT, ROLLBACK, SAVEPOINT)와 참조 무결성 옵션('ON DELETE CASCADE vs SET NULL vs RESTRICT') 및 실기 SQL 빈출 문법(GROUP BY ~ HAVING, LIKE '%/_', BETWEEN, IS NULL, UNION vs UNION ALL)은 무엇인가? | ① **DDL vs DML 주의점**: 테이블 수정 시 구조를 바꾸는 것은 **`ALTER TABLE 테이블명 ADD/MODIFY/DROP 컬럼`**, 테이블의 데이터를 조건에 따라 수정하는 것은 **`UPDATE 테이블명 SET 컬럼=값 WHERE 조건`**이다!(실기에서 `ALTER`와 `UPDATE`, `DROP`과 `DELETE` 혼동 절대 금지!); ② **`GRANT 권한 ON 테이블 TO 사용자 [WITH GRANT OPTION]`**(권한 부여 및 제3자에게 권한 재부여 허용) vs **`REVOKE 권한 ON 테이블 FROM 사용자 [CASCADE]`**(권한 회수 및 연쇄 회수); ③ `UNION`은 중복 행을 제거하고 정렬하여 합집합을 반환하며, **`UNION ALL`**은 **중복 행을 제거하지 않고 그대로** 합쳐서 반환한다; ④ SQL 와일드카드: **`%`**는 0개 이상의 임의 문자열, **`_`**는 정확히 1개의 임의 문자를 뜻한다. | ||
| 18 | 컴퓨터활용능력 1급 스프레드시트(엑셀) VBA 프로시저 작성에서 '폼 열기(`폼이름.Show`) 및 닫기(`Unload Me`)', '워크시트 셀 값 입력(`Range("A1").Value = txt이름.Value`, `Cells(입력행, 열번호)`)', 그리고 '목록상자/콤보상자 원본 연결(`RowSource = "A2:C10"`, `AddItem`, `ListIndex` 0부터 시작)'의 코딩 패턴은 무엇인가? | 컴활 1급 엑셀 실기 마지막 문제(15점) VBA 3문항 정복 공식: ① 버튼 클릭 시 사용자 정의 폼 띄우기: **`폼이름.Show`**; 폼의 종료 버튼 클릭 시 현재 폼 닫기: **`Unload Me`**; ② 폼 초기화(`UserForm_Initialize`) 이벤트에서 콤보상자/목록상자에 시트 범위 넣기: **`cmb부서.RowSource = "부서목록!A2:A10"`** (문자열 큰따옴표 필수!) 또는 개별 항목 추가 **`cmb부서.AddItem "기획부"`**; ③ 시트의 빈 행을 찾아 폼의 입력값을 추가하는 공식: **`입력행 = Range("A3").CurrentRegion.Rows.Count + 3`** (표가 3행부터 시작할 때 현재 연결된 영역의 행 개수에 시작 행 번호를 더함) → **`Cells(입력행, 1).Value = txt코드.Value`**; ④ 목록상자(`lst목록`)에서 아무것도 선택하지 않았을 때의 **`ListIndex` 값은 `-1`**이며, 첫 번째 행을 선택했을 때의 **`ListIndex` 값은 `0`**이고, 다중 열 목록상자의 값 참조는 **`lst목록.List(lst목록.ListIndex, 열인덱스[0부터])`**이다. | ||
| 19 | 제5과목 '정보시스템 구축관리'에서 소프트웨어 개발 보안(시큐어 코딩 7대 약점, 접근통제 모델: 강제적 접근통제 MAC[벨-라파둘라 기밀성 No Read Up / No Write Down vs 비바 무결성 No Read Down / No Write Up], 임의적 접근통제 DAC, 역할기반 접근통제 RBAC)과 소프트웨어 비용 산정 모형(LOC, COCOMO[조직형·반분리형·내장형], Putnam[Rayleigh-Norden 곡선, SLIM], 기능점수 FP)은 무엇인가? | ① **벨-라파둘라(Bell-LaPadula) 모델 vs 비바(Biba) 모델**: 군대 시스템에서 유래한 **벨-라파둘라 모델**은 **【기밀성(Confidentiality)】** 보장이 최우선으로, 낮은 보안등급 주체가 높은 등급의 문서를 읽을 수 없고(**No Read Up**), 높은 등급 주체가 낮은 등급에 기밀을 기록해 유출할 수 없다(**No Write Down**); 반면 **비바(Biba) 모델**은 **【무결성(Integrity)】** 보장이 최우선으로, 신뢰도가 낮은 데이터를 읽어 오염시키지 못하고(**No Read Down**), 상위 무결성 데이터를 함부로 수정할 수 없다(**No Write Up**)! ② **COCOMO 모형 3유형(코드 라인 수 기준)**: **조직형(Organic, 5만 라인 이하**: 사무처리·업무용) → **반분리형(Semi-detached, 30만 라인 이하**: 컴파일러·인터프리터·OS·DBMS 등 유틸리티) → **내장형(Embedded, 30만 라인 이상**: 미사일 유도·실시간 신호제어 등 초대형 시스템). | ||
| 20 | 데이터베이스 이상(Anomaly) 현상 3가지('삽입 이상, 삭제 이상, 갱신 이상')와 정규화(Normalization) 단계별 진행 순서('두부이걸다조: 도메인 원자값 1NF → 부분 함수 종속 제거 2NF → 이행적 함수 종속 제거 3NF → 결정자이면서 후보키가 아닌 것 제거 BCNF → 다치 종속 제거 4NF → 조인 종속 제거 5NF')는 무엇인가? | 정보처리기사 필기·실기 무조건 출제되는 정규화 공식(**「도-부-이-결-다-조」**): ① 비정규 릴레이션 → **제1정규형(1NF)**: 모든 도메인이 **원자값(Atomic Value)**만으로 구성되도록 분해; ② 1NF → **제2정규형(2NF)**: 기본키가 복합키일 때 기본키의 진부분집합에 종속되는 **【부분 함수적 종속 제거】**(완전 함수적 종속 달성); ③ 2NF → **제3정규형(3NF)**: $X \to Y$이고 $Y \to Z$일 때 $X \to Z$가 되는 **【이행적 함수적 종속 제거】**; ④ 3NF → **보이스/코드 정규형(BCNF)**: 모든 **【결정자가 후보키】**가 되도록 분해(결정자이면서 후보키가 아닌 함수 종속 제거); ⑤ BCNF → **4NF**: **다치 종속** 제거; ⑥ 4NF → **5NF**: 후보키를 통하지 않는 **조인 종속** 제거. | ||
| 21 | 네트워크 계층 프로토콜(IP, ICMP, IGMP, ARP[IP → MAC 주소 변환] vs RARP[MAC → IP 주소 변환])과 전송 계층 프로토콜(TCP[연결지향, 3-Way Handshaking, 흐름제어·혼잡제어] vs UDP[비연결지향, 실시간 스트리밍·DNS])의 헤더 및 동작 차이는 무엇인가? | ① **네트워크 계층 프로토콜**: **ICMP**(인터넷 제어 메시지 프로토콜: `ping`, `tracert` 등에서 통신 오류 보고 및 상태 진단), **IGMP**(인터넷 그룹 관리 프로토콜: **멀티캐스트** 그룹 유지·관리), **ARP**(논리적 IP 주소를 물리적 MAC 주소로 변환 — 요청은 브로드캐스트, 응답은 유니캐스트) vs **RARP**(물리적 MAC 주소를 IP 주소로 역변환); ② **TCP 3-Way Handshaking 연결 설정 순서**: 클라이언트가 서버에 **`SYN`**(연결 요청 플래그) 전송 → 서버가 클라이언트에 **`SYN + ACK`** 응답 → 클라이언트가 서버에 **`ACK`** 전송하여 세션 수립. | ||
| 22 | 제2과목 '소프트웨어 개발'에서 블랙박스 테스트 기법(동치 분할, 경계값 분석, 원인-효과 그래프, 오류 예측, 비교 검사) vs 화이트박스 테스트 기법(기초 경로 검사, 루프 검사, 문장·결정[분기]·조건·조건/결정·변경조건/결정[MC/DC]·다중조건 검증 기준)과 통합 테스트(하향식 Stub vs 상향식 Driver)의 차이는 무엇인가? | ① **통합 테스트**: **하향식(Top-down)** 통합은 상위 모듈에서 하위 모듈 방향으로 통합하며 아직 개발되지 않은 하위 모듈을 대신하는 가짜 시험용 모듈인 **【스텁(Stub)】**을 사용한다(깊이 우선/너비 우선); **상향식(Bottom-up)** 통합은 하위 모듈들을 **클러스터(Cluster)**로 묶고 아직 개발되지 않은 상위 제어 모듈 역할을 하는 **【드라이버(Driver)】**를 사용한다! ② **V-모델 테스트 단계(개발 단계 역순 매칭)**: **단위 테스트**(모듈 정적/동적 테스트) → **통합 테스트**(인터페이스 검증) → **시스템 테스트**(기능·비기능 요구사항 검증) → **인수 테스트**(사용자 요구사항 충족 확인: **알파 테스트**[개발자 앞에서 사용자가 테스트] vs **베타 테스트**[통제되지 않은 실제 환경에서 다수 사용자가 테스트]). | ||
| 23 | EAI(Enterprise Application Integration) 구축 유형 4가지(Point-to-Point, Hub & Spoke, Message Bus[ESB], Hybrid)와 인터페이스 데이터 포맷(JSON, XML, YAML) 및 인터페이스 기술(AJAX, SOAP[UDDI·WSDL], REST)의 특징은 무엇인가? | 실기 단답형 단골 출제! ① **EAI 4유형**: **Point-to-Point**(미들웨어 없이 1:1 직접 연결, 변경·확장 어려움), **Hub & Spoke**(단일 접점인 중앙 허브를 통해 데이터 전송, **허브 장애 시 전체 영향**), **Message Bus(ESB 방식)**(애플리케이션 사이에 미들웨어[버스]를 두어 처리하는 확장성·성능 최우수 방식), **Hybrid**(그룹 내부는 Hub & Spoke, 그룹 간에는 Message Bus 결합); ② **웹 서비스 3요소**: **SOAP**(HTTP/HTTPS/SMTP 기반 XML 메시지 교환 프로토콜), **WSDL**(웹 서비스 기술 언어: 서비스 인터페이스 명세), **UDDI**(WSDL을 등록하고 검색하는 디렉터리 레지스트리). | ||
| 24 | 객체지향 설계 5대 원칙(SOLID: 단일 책임 원칙 SRP, 개방-폐쇄 원칙 OCP, 리스코프 치환 원칙 LSP, 인터페이스 분리 원칙 ISP, 의존 역전 원칙 DIP)과 결합도(Coupling, 낮을수록 좋음: 자-스-제-외-공-내) vs 응집도(Cohesion, 높을수록 좋음: 기-순-교-절-시-논-우) 순서는 무엇인가? | 정보처리기사 필기·실기 1순위 암기 공식! ① **결합도(강함[나쁨] → 약함[좋음], 앞글자 '내-공-외-제-스-자')**: **내용(Content)** 결합도 → **공통(Common, 전역변수 참조)** → **외부(External)** → **제어(Control, 제어 플래그 전달)** → **스탬프(Stamp, 배열·구조체·객체 주소 전달)** → **자료(Data, 단순 값 매개변수만 전달 — 가장 이상적!)**; ② **응집도(약함[나쁨] → 강함[좋음], 앞글자 '우-논-시-절-교-순-기')**: **우연적(Coincidental)** → **논리적(Logical)** → **시간적(Temporal, 초기화 모듈 등 특정 시점에 함께 실행)** → **절차적(Procedural)** → **교환적/통신적(Communication, 동일한 입출력 데이터 사용)** → **순차적(Sequential, 앞 활동의 출력이 다음 활동의 입력)** → **기능적(Functional, 단일 기능 수행 — 가장 이상적!)**. | ||
| 25 | 운영체제 가상기억장치 페이지 교체 알고리즘(OPT, FIFO[Belady의 모순 현상], LRU[Least Recently Used], LFU[Least Frequently Used], NUR[참조비트+변형비트], SCR[2차 기회])의 페이지 부재(Page Fault) 횟수 계산과 구역성(Locality: 시간 구역성 vs 공간 구역성) 및 워킹 셋(Working Set)·스래싱(Thrashing)은 무엇인가? | ① **LRU vs LFU**: **LRU**는 가장 **오랫동안 참조되지 않은(시점 기준)** 페이지를 교체하고, **LFU**는 참조된 **횟수(빈도 기준)가 가장 적은** 페이지를 교체한다(주의: 프레임이 비어 있을 때 처음 적재하는 과정에서도 Page Fault가 1회씩 카운트되는지 문제 조건 확인!); ② **구역성(Locality)**: **시간 구역성**(루프, 스택, 부프로그램, 집계 변수처럼 한 번 참조된 페이지를 가까운 시간 내에 다시 참조) vs **공간 구역성**(배열 순회, 순차적 코드 실행처럼 참조된 페이지 근처의 메모리를 연속 참조); ③ **스래싱(Thrashing)**: 다중 프로그래밍 정도(MPD)가 과도하게 높아져 프로세스 수행 시간보다 **페이지 교체(스와핑)에 쓰는 시간이 더 많아져 CPU 이용률이 급격히 떨어지는 현상**(해결책: **워킹 셋 보장, 페이지 부재 빈도 PFF 조절**, 일부 프로세스 중단 또는 프레임 추가 할당). | ||
| 26 | 자료구조와 알고리즘에서 이진 트리의 순회(Traversal) 3가지('전위 순회 Preorder[뿌리→왼쪽→오른쪽], 중위 순회 Inorder[왼쪽→뿌리→오른쪽], 후위 순회 Postorder[왼쪽→오른쪽→뿌리]')와 정렬 알고리즘(선택, 버블, 삽입, 쉘, 퀵, 합병, 힙, 기수 정렬)의 시간 복잡도($O(n^2)$ vs $O(n\log n)$) 및 중간 회전 결과는 무엇인가? | ① **트리 순회 및 수식 표기법**: 뿌리(Root) 노드를 언제 방문하느냐가 기준이다! **전위(Preorder: Root-L-R)**는 전위 표기법(Prefix, `+AB`), **중위(Inorder: L-Root-R)**는 중위 표기법(Infix, `A+B`), **후위(Postorder: L-R-Root)**는 스택으로 계산하는 **후위 표기법(Postfix, `AB+`)**에 대응된다; ② **정렬 1회전(1 Pass) 결과 판별법**: **선택 정렬(Selection)**은 1회전이 끝나면 **가장 작은 값이 맨 앞(인덱스 0)**에 확정되고, **버블 정렬(Bubble)**은 인접한 두 원소를 비교·교환하여 1회전이 끝나면 **가장 큰 값이 맨 뒤(마지막 인덱스)**에 확정되며, **삽입 정렬(Insertion)**은 두 번째 원소부터 앞의 정렬된 부분 배열에서 자기 자리를 찾아 삽입한다(퀵 정렬은 평균 $O(n\log n)$으로 가장 빠르나 이미 정렬된 자료에서 최악 $O(n^2)$, 합병·힙 정렬은 평균과 최악 모두 $O(n\log n)$). | ||
| 27 | 운영체제(OS) 프로세스 스케줄링 알고리즘(비선점형: FCFS, SJF, HRN, 기한부, 우선순위 / 선점형: Round Robin[RR], SRT, 다단계 큐, 다단계 피드백 큐[MLFQ])에서 HRN 우선순위 계산 공식과 평균 대기시간·평균 반환시간 계산법은 무엇인가? | ① **HRN(Highest Response-ratio Next, 비선점형)**: SJF(단기 작업 우선)의 치명적 단점인 '긴 작업의 무한 연기(기아 현상 Starvation)'를 보완하기 위해 대기시간을 고려한 기법으로, **우선순위 계산식 $= \frac{\text{대기시간(Waiting Time)} + \text{서비스시간(실행시간)}}{\text{서비스시간(실행시간)}}$**이며 계산값이 **클수록** 우선순위가 높다! ② 스케줄링 시간 계산: 각 프로세스의 **반환시간(Turnaround Time) = 완료 시각 - 도착 시각 = 대기시간 + 실행시간**이며, **대기시간(Waiting Time) = 반환시간 - 실행시간**이다(선점형인 SRT나 RR에서는 프로세스가 도착하거나 시간 할당량 Time Quantum이 끝나는 시점마다 간트 차트를 쪼개어 계산!). | ||
| 28 | 제4과목 '프로그래밍 언어 활용'에서 C언어·Java·Python 실기 코드 출력 결과 문제의 5대 함정(C언어 포인터 배열 `*p`, `p+1`, 문자열 배열 `%s` vs `%c`, 증감연산자 전위 `++a` vs 후위 `a++`, 비트연산자 `&, |, ^, ~, <<, >>`, 스태틱 변수 `static`, Java 상속 생성자 호출 순서와 동적 바인딩 오버라이딩, Python 슬라이싱 `a[시작:끝:증감]`과 리스트 컴프리헨션·`set` 중복제거)은 무엇인가? | 정보처리기사 실기 코딩 문제 만점 공식: ① **C언어 포인터와 문자열**: `char *p = "KOREA";`일 때 `printf("%s", p + 2);`는 인덱스 2번 문자 `'R'`부터 널문자(`\0`) 직전까지 문자열 전체를 출력하므로 **`REA`**가 출력되고, `printf("%c", *(p + 2));`는 문자 1개만 출력하므로 **`R`**이 출력된다! ② **`static` 지역변수**: 함수가 종료되어도 소멸하지 않고 프로그램 종료 시까지 **이전 호출에서의 값을 그대로 유지**하며 단 한 번만 초기화된다; ③ **Java 상속과 다형성(`Parent p = new Child();`)**: 부모 타입 참조변수로 자식 인스턴스를 참조할 때, **인스턴스 메서드(오버라이딩된 일반 메서드)는 실제 생성된 객체인 【자식(Child) 클래스】의 메서드가 호출(동적 바인딩)**되지만, **멤버변수(필드)와 `static` 메서드는 참조변수 선언 타입인 【부모(Parent) 클래스】의 것이 호출**된다! ④ **Python 슬라이싱**: `s = "ABCDEF"`일 때 `s[1:5:2]`는 인덱스 1부터 4까지 2칸씩 건너뛰어 `"BD"`가 되며, **`s[::-1]`은 문자열을 역순으로 뒤집은 `"FEDCBA"`**가 된다. | ||
| 29 | 데이터베이스 파티셔닝(Partitioning, 대용량 테이블 분할)의 4가지 기법('범위 분할 Range, 해시 분할 Hash, 목록 분할 List, 합성 분할 Composite')과 RAID 레벨(RAID 0 스트라이핑 vs RAID 1 미러링 vs RAID 5 패리티 분산 vs RAID 6 이중 패리티)의 특징은 무엇인가? | ① **파티셔닝(수평 분할) 4기법**: **Range(범위) 분할**(날짜[월별, 분기별]나 숫자 범위 기준 분할 — 가장 보편적), **Hash(해시) 분할**(해시 함수 결과값으로 균등 분산, 특정 데이터가 어디 있는지 알 수 없으나 고른 분포 보장), **List(목록) 분할**(국가 코드, 지역명 등 미리 정해진 값 목록에 따라 분할), **Composite(합성) 분할**(범위 분할 후 다시 해시 분할 등을 결합); ② **RAID 레벨**: **RAID 0**(스트라이핑: 패리티 없이 분산 저장해 속도 최고이나 디스크 1개만 고장 나도 전체 데이터 유실), **RAID 1**(미러링: 똑같은 데이터를 2배 공간에 중복 저장해 안정성 최고이나 공간 효율 50%), **RAID 5**(최소 3개 디스크 필요, 오류 검출 **패리티 정보를 모든 디스크에 분산 저장**해 디스크 1개 장애 시 복구 가능). | ||
| 30 | 정보처리기사 실기 C언어·Java에서 자주 출제되는 '재귀함수(Recursive Function) 호출 추적(팩토리얼, 피보나치 수열, 하노이의 탑 $2^n - 1$, 최대공약수 유클리드 호제법 `gcd(b, a % b)`)'과 '구조체 포인터 연산자(`->` vs `.`)'의 계산 원리는 무엇인가? | ① **유클리드 호제법 재귀함수**: `int gcd(int a, int b) { return (b == 0) ? a : gcd(b, a % b); }`는 두 정수의 **최대공약수(GCD)**를 구하는 알고리즘이다(최소공배수 $\text{LCM} = (a \times b) / \text{gcd}(a, b)$); ② 재귀함수는 반드시 끝에서부터 거꾸로 값을 대입하며 올라오는 콜스택(Call Stack) 트리를 여백에 그려야 실수하지 않는다(특히 재귀 호출 전후에 `printf` 출력문이 어디에 위치하는지에 따라 출력 순서가 정순인지 역순인지 결정됨!); ③ **C언어 구조체 멤버 접근**: 일반 구조체 변수 `s`는 점 연산자(**`s.age`**)로 접근하고, 구조체 포인터 변수 `p = &s;`는 화살표 연산자(**`p->age`** 또는 **`(*p).age`**)로 접근한다. | ||
| 31 | 정보보안 암호화 알고리즘에서 '대칭키(비밀키) 암호화 방식(블록 암호: DES, 3DES, AES, SEED, ARIA, IDEA / 스트림 암호: LFSR, RC4)'과 '비대칭키(공개키) 암호화 방식(RSA[소인수분해], ECC[타원곡선], Diffie-Hellman[이산대수], ElGamal)', 그리고 '일방향 해시 함수(MD5, SHA, HAS-160)'의 구분은 무엇인가? | 실기 보안 단골 출제! ① **대칭키(비밀키) 암호화**: 암호화 키와 복호화 키가 **동일**하며 속도가 빨라 대용량 데이터 암호화에 적합하나 **키 배송(공유) 문제**가 존재하고 관리해야 할 키의 개수가 **$n(n-1)/2$개**이다(한국 인터넷진흥원 KISA 개발 블록 암호: **SEED[128비트], ARIA[국가정보원·학계 공동, 경량 환경], HIGHT, LEA**); ② **비대칭키(공개키) 암호화**: 암호화 키(공개키)와 복호화 키(개인키)가 **서로 다르며** 관리할 키 개수는 **$2n$개**이다. **기밀성 보장**을 위해서는 **「수신자의 공개키」**로 암호화하고, **부인 방지 및 전자서명(인증)**을 위해서는 **「송신자의 개인키」**로 암호화한다! | ||
| 32 | UML(Unified Modeling Language)의 3대 구성요소(사물, 관계, 다이어그램) 중 '구조적(정적) 다이어그램 6종(클-객-컴-배-복-패)'과 '행위(동적) 다이어그램 7종(유-시-커-상-활-타-상개)'의 구분 및 클래스 간 관계 6종은 무엇인가? | ① **구조(정적) 다이어그램**: **클래스(Class)**, 객체(Object), **컴포넌트(Component)**, **배치(Deployment — 물리적 하드웨어 노드 위치)**, 복합체 구조(Composite Structure), **패키지(Package)** 다이어그램; ② **행위(동적) 다이어그램**: **유스케이스(Use Case — 사용자 관점 기능)**, **시퀀스(Sequence — 시간 흐름에 따른 객체 간 메시지 교환: 액터, 객체, 생명선, 실행 상자, 메시지)**, 커뮤니케이션, **상태(State — 객체의 상태 전이)**, **활동(Activity — 업무 처리 흐름과 분기)**, 타이밍, 상호작용 개요 다이어그램. |