)**로 고정해야 한다! ② **부분합(Subtotal)**: 부분합을 실행하기 전에 반드시 **【그룹화할 기준 필드를 기준으로 먼저 정렬(오름차순/내림차순)】**을 수행해야 하며, 두 번째 부분합을 추가할 때는 **'새로운 값으로 대치' 체크박스를 반드시 해제**해야 기존 첫 번째 부분합이 지워지지 않는다!"}},{"@type":"Question","position":16,"name":"제3과목 '데이터베이스 구축'에서 관계형 데이터 모델의 용어(릴레이션, 튜플=카디널리티[기수], 속성=디그리[차수], 도메인)와 키의 종류(슈퍼키[유일성], 후보키[유일성+최소성], 기본키, 대체키, 외래키) 및 3대 무결성 제약조건(개체 무결성, 참조 무결성, 도메인 무결성)은 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"① **릴레이션의 차수(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**이어야 한다."}},{"@type":"Question","position":17,"name":"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)은 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"① **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개의 임의 문자를 뜻한다."}},{"@type":"Question","position":18,"name":"컴퓨터활용능력 1급 스프레드시트(엑셀) VBA 프로시저 작성에서 '폼 열기(`폼이름.Show`) 및 닫기(`Unload Me`)', '워크시트 셀 값 입력(`Range(\"A1\").Value = txt이름.Value`, `Cells(입력행, 열번호)`)', 그리고 '목록상자/콤보상자 원본 연결(`RowSource = \"A2:C10\"`, `AddItem`, `ListIndex` 0부터 시작)'의 코딩 패턴은 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"컴활 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부터])`**이다."}},{"@type":"Question","position":19,"name":"제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)은 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"① **벨-라파둘라(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만 라인 이상**: 미사일 유도·실시간 신호제어 등 초대형 시스템)."}},{"@type":"Question","position":20,"name":"데이터베이스 이상(Anomaly) 현상 3가지('삽입 이상, 삭제 이상, 갱신 이상')와 정규화(Normalization) 단계별 진행 순서('두부이걸다조: 도메인 원자값 1NF → 부분 함수 종속 제거 2NF → 이행적 함수 종속 제거 3NF → 결정자이면서 후보키가 아닌 것 제거 BCNF → 다치 종속 제거 4NF → 조인 종속 제거 5NF')는 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"정보처리기사 필기·실기 무조건 출제되는 정규화 공식(**「도-부-이-결-다-조」**): ① 비정규 릴레이션 → **제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**: 후보키를 통하지 않는 **조인 종속** 제거."}},{"@type":"Question","position":21,"name":"네트워크 계층 프로토콜(IP, ICMP, IGMP, ARP[IP → MAC 주소 변환] vs RARP[MAC → IP 주소 변환])과 전송 계층 프로토콜(TCP[연결지향, 3-Way Handshaking, 흐름제어·혼잡제어] vs UDP[비연결지향, 실시간 스트리밍·DNS])의 헤더 및 동작 차이는 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"① **네트워크 계층 프로토콜**: **ICMP**(인터넷 제어 메시지 프로토콜: `ping`, `tracert` 등에서 통신 오류 보고 및 상태 진단), **IGMP**(인터넷 그룹 관리 프로토콜: **멀티캐스트** 그룹 유지·관리), **ARP**(논리적 IP 주소를 물리적 MAC 주소로 변환 — 요청은 브로드캐스트, 응답은 유니캐스트) vs **RARP**(물리적 MAC 주소를 IP 주소로 역변환); ② **TCP 3-Way Handshaking 연결 설정 순서**: 클라이언트가 서버에 **`SYN`**(연결 요청 플래그) 전송 → 서버가 클라이언트에 **`SYN + ACK`** 응답 → 클라이언트가 서버에 **`ACK`** 전송하여 세션 수립."}},{"@type":"Question","position":22,"name":"제2과목 '소프트웨어 개발'에서 블랙박스 테스트 기법(동치 분할, 경계값 분석, 원인-효과 그래프, 오류 예측, 비교 검사) vs 화이트박스 테스트 기법(기초 경로 검사, 루프 검사, 문장·결정[분기]·조건·조건/결정·변경조건/결정[MC/DC]·다중조건 검증 기준)과 통합 테스트(하향식 Stub vs 상향식 Driver)의 차이는 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"① **통합 테스트**: **하향식(Top-down)** 통합은 상위 모듈에서 하위 모듈 방향으로 통합하며 아직 개발되지 않은 하위 모듈을 대신하는 가짜 시험용 모듈인 **【스텁(Stub)】**을 사용한다(깊이 우선/너비 우선); **상향식(Bottom-up)** 통합은 하위 모듈들을 **클러스터(Cluster)**로 묶고 아직 개발되지 않은 상위 제어 모듈 역할을 하는 **【드라이버(Driver)】**를 사용한다! ② **V-모델 테스트 단계(개발 단계 역순 매칭)**: **단위 테스트**(모듈 정적/동적 테스트) → **통합 테스트**(인터페이스 검증) → **시스템 테스트**(기능·비기능 요구사항 검증) → **인수 테스트**(사용자 요구사항 충족 확인: **알파 테스트**[개발자 앞에서 사용자가 테스트] vs **베타 테스트**[통제되지 않은 실제 환경에서 다수 사용자가 테스트])."}},{"@type":"Question","position":23,"name":"EAI(Enterprise Application Integration) 구축 유형 4가지(Point-to-Point, Hub & Spoke, Message Bus[ESB], Hybrid)와 인터페이스 데이터 포맷(JSON, XML, YAML) 및 인터페이스 기술(AJAX, SOAP[UDDI·WSDL], REST)의 특징은 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"실기 단답형 단골 출제! ① **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을 등록하고 검색하는 디렉터리 레지스트리)."}},{"@type":"Question","position":24,"name":"객체지향 설계 5대 원칙(SOLID: 단일 책임 원칙 SRP, 개방-폐쇄 원칙 OCP, 리스코프 치환 원칙 LSP, 인터페이스 분리 원칙 ISP, 의존 역전 원칙 DIP)과 결합도(Coupling, 낮을수록 좋음: 자-스-제-외-공-내) vs 응집도(Cohesion, 높을수록 좋음: 기-순-교-절-시-논-우) 순서는 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"정보처리기사 필기·실기 1순위 암기 공식! ① **결합도(강함[나쁨] → 약함[좋음], 앞글자 '내-공-외-제-스-자')**: **내용(Content)** 결합도 → **공통(Common, 전역변수 참조)** → **외부(External)** → **제어(Control, 제어 플래그 전달)** → **스탬프(Stamp, 배열·구조체·객체 주소 전달)** → **자료(Data, 단순 값 매개변수만 전달 — 가장 이상적!)**; ② **응집도(약함[나쁨] → 강함[좋음], 앞글자 '우-논-시-절-교-순-기')**: **우연적(Coincidental)** → **논리적(Logical)** → **시간적(Temporal, 초기화 모듈 등 특정 시점에 함께 실행)** → **절차적(Procedural)** → **교환적/통신적(Communication, 동일한 입출력 데이터 사용)** → **순차적(Sequential, 앞 활동의 출력이 다음 활동의 입력)** → **기능적(Functional, 단일 기능 수행 — 가장 이상적!)**."}},{"@type":"Question","position":25,"name":"운영체제 가상기억장치 페이지 교체 알고리즘(OPT, FIFO[Belady의 모순 현상], LRU[Least Recently Used], LFU[Least Frequently Used], NUR[참조비트+변형비트], SCR[2차 기회])의 페이지 부재(Page Fault) 횟수 계산과 구역성(Locality: 시간 구역성 vs 공간 구역성) 및 워킹 셋(Working Set)·스래싱(Thrashing)은 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"① **LRU vs LFU**: **LRU**는 가장 **오랫동안 참조되지 않은(시점 기준)** 페이지를 교체하고, **LFU**는 참조된 **횟수(빈도 기준)가 가장 적은** 페이지를 교체한다(주의: 프레임이 비어 있을 때 처음 적재하는 과정에서도 Page Fault가 1회씩 카운트되는지 문제 조건 확인!); ② **구역성(Locality)**: **시간 구역성**(루프, 스택, 부프로그램, 집계 변수처럼 한 번 참조된 페이지를 가까운 시간 내에 다시 참조) vs **공간 구역성**(배열 순회, 순차적 코드 실행처럼 참조된 페이지 근처의 메모리를 연속 참조); ③ **스래싱(Thrashing)**: 다중 프로그래밍 정도(MPD)가 과도하게 높아져 프로세스 수행 시간보다 **페이지 교체(스와핑)에 쓰는 시간이 더 많아져 CPU 이용률이 급격히 떨어지는 현상**(해결책: **워킹 셋 보장, 페이지 부재 빈도 PFF 조절**, 일부 프로세스 중단 또는 프레임 추가 할당)."}},{"@type":"Question","position":26,"name":"자료구조와 알고리즘에서 이진 트리의 순회(Traversal) 3가지('전위 순회 Preorder[뿌리→왼쪽→오른쪽], 중위 순회 Inorder[왼쪽→뿌리→오른쪽], 후위 순회 Postorder[왼쪽→오른쪽→뿌리]')와 정렬 알고리즘(선택, 버블, 삽입, 쉘, 퀵, 합병, 힙, 기수 정렬)의 시간 복잡도($O(n^2)$ vs $O(n\\log n)$) 및 중간 회전 결과는 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"① **트리 순회 및 수식 표기법**: 뿌리(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)$)."}},{"@type":"Question","position":27,"name":"운영체제(OS) 프로세스 스케줄링 알고리즘(비선점형: FCFS, SJF, HRN, 기한부, 우선순위 / 선점형: Round Robin[RR], SRT, 다단계 큐, 다단계 피드백 큐[MLFQ])에서 HRN 우선순위 계산 공식과 평균 대기시간·평균 반환시간 계산법은 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"① **HRN(Highest Response-ratio Next, 비선점형)**: SJF(단기 작업 우선)의 치명적 단점인 '긴 작업의 무한 연기(기아 현상 Starvation)'를 보완하기 위해 대기시간을 고려한 기법으로, **우선순위 계산식 $= \\frac{\\text{대기시간(Waiting Time)} + \\text{서비스시간(실행시간)}}{\\text{서비스시간(실행시간)}}$**이며 계산값이 **클수록** 우선순위가 높다! ② 스케줄링 시간 계산: 각 프로세스의 **반환시간(Turnaround Time) = 완료 시각 - 도착 시각 = 대기시간 + 실행시간**이며, **대기시간(Waiting Time) = 반환시간 - 실행시간**이다(선점형인 SRT나 RR에서는 프로세스가 도착하거나 시간 할당량 Time Quantum이 끝나는 시점마다 간트 차트를 쪼개어 계산!)."}},{"@type":"Question","position":28,"name":"제4과목 '프로그래밍 언어 활용'에서 C언어·Java·Python 실기 코드 출력 결과 문제의 5대 함정(C언어 포인터 배열 `*p`, `p+1`, 문자열 배열 `%s` vs `%c`, 증감연산자 전위 `++a` vs 후위 `a++`, 비트연산자 `&, |, ^, ~, \u003c\u003c, >>`, 스태틱 변수 `static`, Java 상속 생성자 호출 순서와 동적 바인딩 오버라이딩, Python 슬라이싱 `a[시작:끝:증감]`과 리스트 컴프리헨션·`set` 중복제거)은 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"정보처리기사 실기 코딩 문제 만점 공식: ① **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\"`**가 된다."}},{"@type":"Question","position":29,"name":"데이터베이스 파티셔닝(Partitioning, 대용량 테이블 분할)의 4가지 기법('범위 분할 Range, 해시 분할 Hash, 목록 분할 List, 합성 분할 Composite')과 RAID 레벨(RAID 0 스트라이핑 vs RAID 1 미러링 vs RAID 5 패리티 분산 vs RAID 6 이중 패리티)의 특징은 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"① **파티셔닝(수평 분할) 4기법**: **Range(범위) 분할**(날짜[월별, 분기별]나 숫자 범위 기준 분할 — 가장 보편적), **Hash(해시) 분할**(해시 함수 결과값으로 균등 분산, 특정 데이터가 어디 있는지 알 수 없으나 고른 분포 보장), **List(목록) 분할**(국가 코드, 지역명 등 미리 정해진 값 목록에 따라 분할), **Composite(합성) 분할**(범위 분할 후 다시 해시 분할 등을 결합); ② **RAID 레벨**: **RAID 0**(스트라이핑: 패리티 없이 분산 저장해 속도 최고이나 디스크 1개만 고장 나도 전체 데이터 유실), **RAID 1**(미러링: 똑같은 데이터를 2배 공간에 중복 저장해 안정성 최고이나 공간 효율 50%), **RAID 5**(최소 3개 디스크 필요, 오류 검출 **패리티 정보를 모든 디스크에 분산 저장**해 디스크 1개 장애 시 복구 가능)."}},{"@type":"Question","position":30,"name":"정보처리기사 실기 C언어·Java에서 자주 출제되는 '재귀함수(Recursive Function) 호출 추적(팩토리얼, 피보나치 수열, 하노이의 탑 $2^n - 1$, 최대공약수 유클리드 호제법 `gcd(b, a % b)`)'과 '구조체 포인터 연산자(`->` vs `.`)'의 계산 원리는 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"① **유클리드 호제법 재귀함수**: `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`**)로 접근한다."}},{"@type":"Question","position":31,"name":"정보보안 암호화 알고리즘에서 '대칭키(비밀키) 암호화 방식(블록 암호: DES, 3DES, AES, SEED, ARIA, IDEA / 스트림 암호: LFSR, RC4)'과 '비대칭키(공개키) 암호화 방식(RSA[소인수분해], ECC[타원곡선], Diffie-Hellman[이산대수], ElGamal)', 그리고 '일방향 해시 함수(MD5, SHA, HAS-160)'의 구분은 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"실기 보안 단골 출제! ① **대칭키(비밀키) 암호화**: 암호화 키와 복호화 키가 **동일**하며 속도가 빨라 대용량 데이터 암호화에 적합하나 **키 배송(공유) 문제**가 존재하고 관리해야 할 키의 개수가 **$n(n-1)/2$개**이다(한국 인터넷진흥원 KISA 개발 블록 암호: **SEED[128비트], ARIA[국가정보원·학계 공동, 경량 환경], HIGHT, LEA**); ② **비대칭키(공개키) 암호화**: 암호화 키(공개키)와 복호화 키(개인키)가 **서로 다르며** 관리할 키 개수는 **$2n$개**이다. **기밀성 보장**을 위해서는 **「수신자의 공개키」**로 암호화하고, **부인 방지 및 전자서명(인증)**을 위해서는 **「송신자의 개인키」**로 암호화한다!"}},{"@type":"Question","position":32,"name":"UML(Unified Modeling Language)의 3대 구성요소(사물, 관계, 다이어그램) 중 '구조적(정적) 다이어그램 6종(클-객-컴-배-복-패)'과 '행위(동적) 다이어그램 7종(유-시-커-상-활-타-상개)'의 구분 및 클래스 간 관계 6종은 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"① **구조(정적) 다이어그램**: **클래스(Class)**, 객체(Object), **컴포넌트(Component)**, **배치(Deployment — 물리적 하드웨어 노드 위치)**, 복합체 구조(Composite Structure), **패키지(Package)** 다이어그램; ② **행위(동적) 다이어그램**: **유스케이스(Use Case — 사용자 관점 기능)**, **시퀀스(Sequence — 시간 흐름에 따른 객체 간 메시지 교환: 액터, 객체, 생명선, 실행 상자, 메시지)**, 커뮤니케이션, **상태(State — 객체의 상태 전이)**, **활동(Activity — 업무 처리 흐름과 분기)**, 타이밍, 상호작용 개요 다이어그램."}}]}

국가기술자격 코어: 정보처리기사(필기·실기 신유형: 소프트웨어공학·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)ExampleMultiple-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$**.
2GoF(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)`)의 범위는 반드시 **절대참조(` 국가기술자격 코어: 정보처리기사(필기·실기 신유형: 소프트웨어공학·DB SQL·운영체제·네트워크·C/Java/Python 코딩) & 컴퓨터활용능력 1급 — Flashcards & Practice Quiz | Flashcards World )**로 고정해야 한다! ② **부분합(Subtotal)**: 부분합을 실행하기 전에 반드시 **【그룹화할 기준 필드를 기준으로 먼저 정렬(오름차순/내림차순)】**을 수행해야 하며, 두 번째 부분합을 추가할 때는 **'새로운 값으로 대치' 체크박스를 반드시 해제**해야 기존 첫 번째 부분합이 지워지지 않는다!"}},{"@type":"Question","position":16,"name":"제3과목 '데이터베이스 구축'에서 관계형 데이터 모델의 용어(릴레이션, 튜플=카디널리티[기수], 속성=디그리[차수], 도메인)와 키의 종류(슈퍼키[유일성], 후보키[유일성+최소성], 기본키, 대체키, 외래키) 및 3대 무결성 제약조건(개체 무결성, 참조 무결성, 도메인 무결성)은 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"① **릴레이션의 차수(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**이어야 한다."}},{"@type":"Question","position":17,"name":"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)은 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"① **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개의 임의 문자를 뜻한다."}},{"@type":"Question","position":18,"name":"컴퓨터활용능력 1급 스프레드시트(엑셀) VBA 프로시저 작성에서 '폼 열기(`폼이름.Show`) 및 닫기(`Unload Me`)', '워크시트 셀 값 입력(`Range(\"A1\").Value = txt이름.Value`, `Cells(입력행, 열번호)`)', 그리고 '목록상자/콤보상자 원본 연결(`RowSource = \"A2:C10\"`, `AddItem`, `ListIndex` 0부터 시작)'의 코딩 패턴은 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"컴활 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부터])`**이다."}},{"@type":"Question","position":19,"name":"제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)은 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"① **벨-라파둘라(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만 라인 이상**: 미사일 유도·실시간 신호제어 등 초대형 시스템)."}},{"@type":"Question","position":20,"name":"데이터베이스 이상(Anomaly) 현상 3가지('삽입 이상, 삭제 이상, 갱신 이상')와 정규화(Normalization) 단계별 진행 순서('두부이걸다조: 도메인 원자값 1NF → 부분 함수 종속 제거 2NF → 이행적 함수 종속 제거 3NF → 결정자이면서 후보키가 아닌 것 제거 BCNF → 다치 종속 제거 4NF → 조인 종속 제거 5NF')는 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"정보처리기사 필기·실기 무조건 출제되는 정규화 공식(**「도-부-이-결-다-조」**): ① 비정규 릴레이션 → **제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**: 후보키를 통하지 않는 **조인 종속** 제거."}},{"@type":"Question","position":21,"name":"네트워크 계층 프로토콜(IP, ICMP, IGMP, ARP[IP → MAC 주소 변환] vs RARP[MAC → IP 주소 변환])과 전송 계층 프로토콜(TCP[연결지향, 3-Way Handshaking, 흐름제어·혼잡제어] vs UDP[비연결지향, 실시간 스트리밍·DNS])의 헤더 및 동작 차이는 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"① **네트워크 계층 프로토콜**: **ICMP**(인터넷 제어 메시지 프로토콜: `ping`, `tracert` 등에서 통신 오류 보고 및 상태 진단), **IGMP**(인터넷 그룹 관리 프로토콜: **멀티캐스트** 그룹 유지·관리), **ARP**(논리적 IP 주소를 물리적 MAC 주소로 변환 — 요청은 브로드캐스트, 응답은 유니캐스트) vs **RARP**(물리적 MAC 주소를 IP 주소로 역변환); ② **TCP 3-Way Handshaking 연결 설정 순서**: 클라이언트가 서버에 **`SYN`**(연결 요청 플래그) 전송 → 서버가 클라이언트에 **`SYN + ACK`** 응답 → 클라이언트가 서버에 **`ACK`** 전송하여 세션 수립."}},{"@type":"Question","position":22,"name":"제2과목 '소프트웨어 개발'에서 블랙박스 테스트 기법(동치 분할, 경계값 분석, 원인-효과 그래프, 오류 예측, 비교 검사) vs 화이트박스 테스트 기법(기초 경로 검사, 루프 검사, 문장·결정[분기]·조건·조건/결정·변경조건/결정[MC/DC]·다중조건 검증 기준)과 통합 테스트(하향식 Stub vs 상향식 Driver)의 차이는 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"① **통합 테스트**: **하향식(Top-down)** 통합은 상위 모듈에서 하위 모듈 방향으로 통합하며 아직 개발되지 않은 하위 모듈을 대신하는 가짜 시험용 모듈인 **【스텁(Stub)】**을 사용한다(깊이 우선/너비 우선); **상향식(Bottom-up)** 통합은 하위 모듈들을 **클러스터(Cluster)**로 묶고 아직 개발되지 않은 상위 제어 모듈 역할을 하는 **【드라이버(Driver)】**를 사용한다! ② **V-모델 테스트 단계(개발 단계 역순 매칭)**: **단위 테스트**(모듈 정적/동적 테스트) → **통합 테스트**(인터페이스 검증) → **시스템 테스트**(기능·비기능 요구사항 검증) → **인수 테스트**(사용자 요구사항 충족 확인: **알파 테스트**[개발자 앞에서 사용자가 테스트] vs **베타 테스트**[통제되지 않은 실제 환경에서 다수 사용자가 테스트])."}},{"@type":"Question","position":23,"name":"EAI(Enterprise Application Integration) 구축 유형 4가지(Point-to-Point, Hub & Spoke, Message Bus[ESB], Hybrid)와 인터페이스 데이터 포맷(JSON, XML, YAML) 및 인터페이스 기술(AJAX, SOAP[UDDI·WSDL], REST)의 특징은 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"실기 단답형 단골 출제! ① **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을 등록하고 검색하는 디렉터리 레지스트리)."}},{"@type":"Question","position":24,"name":"객체지향 설계 5대 원칙(SOLID: 단일 책임 원칙 SRP, 개방-폐쇄 원칙 OCP, 리스코프 치환 원칙 LSP, 인터페이스 분리 원칙 ISP, 의존 역전 원칙 DIP)과 결합도(Coupling, 낮을수록 좋음: 자-스-제-외-공-내) vs 응집도(Cohesion, 높을수록 좋음: 기-순-교-절-시-논-우) 순서는 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"정보처리기사 필기·실기 1순위 암기 공식! ① **결합도(강함[나쁨] → 약함[좋음], 앞글자 '내-공-외-제-스-자')**: **내용(Content)** 결합도 → **공통(Common, 전역변수 참조)** → **외부(External)** → **제어(Control, 제어 플래그 전달)** → **스탬프(Stamp, 배열·구조체·객체 주소 전달)** → **자료(Data, 단순 값 매개변수만 전달 — 가장 이상적!)**; ② **응집도(약함[나쁨] → 강함[좋음], 앞글자 '우-논-시-절-교-순-기')**: **우연적(Coincidental)** → **논리적(Logical)** → **시간적(Temporal, 초기화 모듈 등 특정 시점에 함께 실행)** → **절차적(Procedural)** → **교환적/통신적(Communication, 동일한 입출력 데이터 사용)** → **순차적(Sequential, 앞 활동의 출력이 다음 활동의 입력)** → **기능적(Functional, 단일 기능 수행 — 가장 이상적!)**."}},{"@type":"Question","position":25,"name":"운영체제 가상기억장치 페이지 교체 알고리즘(OPT, FIFO[Belady의 모순 현상], LRU[Least Recently Used], LFU[Least Frequently Used], NUR[참조비트+변형비트], SCR[2차 기회])의 페이지 부재(Page Fault) 횟수 계산과 구역성(Locality: 시간 구역성 vs 공간 구역성) 및 워킹 셋(Working Set)·스래싱(Thrashing)은 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"① **LRU vs LFU**: **LRU**는 가장 **오랫동안 참조되지 않은(시점 기준)** 페이지를 교체하고, **LFU**는 참조된 **횟수(빈도 기준)가 가장 적은** 페이지를 교체한다(주의: 프레임이 비어 있을 때 처음 적재하는 과정에서도 Page Fault가 1회씩 카운트되는지 문제 조건 확인!); ② **구역성(Locality)**: **시간 구역성**(루프, 스택, 부프로그램, 집계 변수처럼 한 번 참조된 페이지를 가까운 시간 내에 다시 참조) vs **공간 구역성**(배열 순회, 순차적 코드 실행처럼 참조된 페이지 근처의 메모리를 연속 참조); ③ **스래싱(Thrashing)**: 다중 프로그래밍 정도(MPD)가 과도하게 높아져 프로세스 수행 시간보다 **페이지 교체(스와핑)에 쓰는 시간이 더 많아져 CPU 이용률이 급격히 떨어지는 현상**(해결책: **워킹 셋 보장, 페이지 부재 빈도 PFF 조절**, 일부 프로세스 중단 또는 프레임 추가 할당)."}},{"@type":"Question","position":26,"name":"자료구조와 알고리즘에서 이진 트리의 순회(Traversal) 3가지('전위 순회 Preorder[뿌리→왼쪽→오른쪽], 중위 순회 Inorder[왼쪽→뿌리→오른쪽], 후위 순회 Postorder[왼쪽→오른쪽→뿌리]')와 정렬 알고리즘(선택, 버블, 삽입, 쉘, 퀵, 합병, 힙, 기수 정렬)의 시간 복잡도($O(n^2)$ vs $O(n\\log n)$) 및 중간 회전 결과는 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"① **트리 순회 및 수식 표기법**: 뿌리(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)$)."}},{"@type":"Question","position":27,"name":"운영체제(OS) 프로세스 스케줄링 알고리즘(비선점형: FCFS, SJF, HRN, 기한부, 우선순위 / 선점형: Round Robin[RR], SRT, 다단계 큐, 다단계 피드백 큐[MLFQ])에서 HRN 우선순위 계산 공식과 평균 대기시간·평균 반환시간 계산법은 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"① **HRN(Highest Response-ratio Next, 비선점형)**: SJF(단기 작업 우선)의 치명적 단점인 '긴 작업의 무한 연기(기아 현상 Starvation)'를 보완하기 위해 대기시간을 고려한 기법으로, **우선순위 계산식 $= \\frac{\\text{대기시간(Waiting Time)} + \\text{서비스시간(실행시간)}}{\\text{서비스시간(실행시간)}}$**이며 계산값이 **클수록** 우선순위가 높다! ② 스케줄링 시간 계산: 각 프로세스의 **반환시간(Turnaround Time) = 완료 시각 - 도착 시각 = 대기시간 + 실행시간**이며, **대기시간(Waiting Time) = 반환시간 - 실행시간**이다(선점형인 SRT나 RR에서는 프로세스가 도착하거나 시간 할당량 Time Quantum이 끝나는 시점마다 간트 차트를 쪼개어 계산!)."}},{"@type":"Question","position":28,"name":"제4과목 '프로그래밍 언어 활용'에서 C언어·Java·Python 실기 코드 출력 결과 문제의 5대 함정(C언어 포인터 배열 `*p`, `p+1`, 문자열 배열 `%s` vs `%c`, 증감연산자 전위 `++a` vs 후위 `a++`, 비트연산자 `&, |, ^, ~, \u003c\u003c, >>`, 스태틱 변수 `static`, Java 상속 생성자 호출 순서와 동적 바인딩 오버라이딩, Python 슬라이싱 `a[시작:끝:증감]`과 리스트 컴프리헨션·`set` 중복제거)은 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"정보처리기사 실기 코딩 문제 만점 공식: ① **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\"`**가 된다."}},{"@type":"Question","position":29,"name":"데이터베이스 파티셔닝(Partitioning, 대용량 테이블 분할)의 4가지 기법('범위 분할 Range, 해시 분할 Hash, 목록 분할 List, 합성 분할 Composite')과 RAID 레벨(RAID 0 스트라이핑 vs RAID 1 미러링 vs RAID 5 패리티 분산 vs RAID 6 이중 패리티)의 특징은 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"① **파티셔닝(수평 분할) 4기법**: **Range(범위) 분할**(날짜[월별, 분기별]나 숫자 범위 기준 분할 — 가장 보편적), **Hash(해시) 분할**(해시 함수 결과값으로 균등 분산, 특정 데이터가 어디 있는지 알 수 없으나 고른 분포 보장), **List(목록) 분할**(국가 코드, 지역명 등 미리 정해진 값 목록에 따라 분할), **Composite(합성) 분할**(범위 분할 후 다시 해시 분할 등을 결합); ② **RAID 레벨**: **RAID 0**(스트라이핑: 패리티 없이 분산 저장해 속도 최고이나 디스크 1개만 고장 나도 전체 데이터 유실), **RAID 1**(미러링: 똑같은 데이터를 2배 공간에 중복 저장해 안정성 최고이나 공간 효율 50%), **RAID 5**(최소 3개 디스크 필요, 오류 검출 **패리티 정보를 모든 디스크에 분산 저장**해 디스크 1개 장애 시 복구 가능)."}},{"@type":"Question","position":30,"name":"정보처리기사 실기 C언어·Java에서 자주 출제되는 '재귀함수(Recursive Function) 호출 추적(팩토리얼, 피보나치 수열, 하노이의 탑 $2^n - 1$, 최대공약수 유클리드 호제법 `gcd(b, a % b)`)'과 '구조체 포인터 연산자(`->` vs `.`)'의 계산 원리는 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"① **유클리드 호제법 재귀함수**: `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`**)로 접근한다."}},{"@type":"Question","position":31,"name":"정보보안 암호화 알고리즘에서 '대칭키(비밀키) 암호화 방식(블록 암호: DES, 3DES, AES, SEED, ARIA, IDEA / 스트림 암호: LFSR, RC4)'과 '비대칭키(공개키) 암호화 방식(RSA[소인수분해], ECC[타원곡선], Diffie-Hellman[이산대수], ElGamal)', 그리고 '일방향 해시 함수(MD5, SHA, HAS-160)'의 구분은 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"실기 보안 단골 출제! ① **대칭키(비밀키) 암호화**: 암호화 키와 복호화 키가 **동일**하며 속도가 빨라 대용량 데이터 암호화에 적합하나 **키 배송(공유) 문제**가 존재하고 관리해야 할 키의 개수가 **$n(n-1)/2$개**이다(한국 인터넷진흥원 KISA 개발 블록 암호: **SEED[128비트], ARIA[국가정보원·학계 공동, 경량 환경], HIGHT, LEA**); ② **비대칭키(공개키) 암호화**: 암호화 키(공개키)와 복호화 키(개인키)가 **서로 다르며** 관리할 키 개수는 **$2n$개**이다. **기밀성 보장**을 위해서는 **「수신자의 공개키」**로 암호화하고, **부인 방지 및 전자서명(인증)**을 위해서는 **「송신자의 개인키」**로 암호화한다!"}},{"@type":"Question","position":32,"name":"UML(Unified Modeling Language)의 3대 구성요소(사물, 관계, 다이어그램) 중 '구조적(정적) 다이어그램 6종(클-객-컴-배-복-패)'과 '행위(동적) 다이어그램 7종(유-시-커-상-활-타-상개)'의 구분 및 클래스 간 관계 6종은 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"① **구조(정적) 다이어그램**: **클래스(Class)**, 객체(Object), **컴포넌트(Component)**, **배치(Deployment — 물리적 하드웨어 노드 위치)**, 복합체 구조(Composite Structure), **패키지(Package)** 다이어그램; ② **행위(동적) 다이어그램**: **유스케이스(Use Case — 사용자 관점 기능)**, **시퀀스(Sequence — 시간 흐름에 따른 객체 간 메시지 교환: 액터, 객체, 생명선, 실행 상자, 메시지)**, 커뮤니케이션, **상태(State — 객체의 상태 전이)**, **활동(Activity — 업무 처리 흐름과 분기)**, 타이밍, 상호작용 개요 다이어그램."}}]}
)**로 고정해야 한다! ② **부분합(Subtotal)**: 부분합을 실행하기 전에 반드시 **【그룹화할 기준 필드를 기준으로 먼저 정렬(오름차순/내림차순)】**을 수행해야 하며, 두 번째 부분합을 추가할 때는 **'새로운 값으로 대치' 체크박스를 반드시 해제**해야 기존 첫 번째 부분합이 지워지지 않는다!
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**이어야 한다.
17SQL 문법의 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 **베타 테스트**[통제되지 않은 실제 환경에서 다수 사용자가 테스트]).
23EAI(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$개**이다. **기밀성 보장**을 위해서는 **「수신자의 공개키」**로 암호화하고, **부인 방지 및 전자서명(인증)**을 위해서는 **「송신자의 개인키」**로 암호화한다!
32UML(Unified Modeling Language)의 3대 구성요소(사물, 관계, 다이어그램) 중 '구조적(정적) 다이어그램 6종(클-객-컴-배-복-패)'과 '행위(동적) 다이어그램 7종(유-시-커-상-활-타-상개)'의 구분 및 클래스 간 관계 6종은 무엇인가?① **구조(정적) 다이어그램**: **클래스(Class)**, 객체(Object), **컴포넌트(Component)**, **배치(Deployment — 물리적 하드웨어 노드 위치)**, 복합체 구조(Composite Structure), **패키지(Package)** 다이어그램; ② **행위(동적) 다이어그램**: **유스케이스(Use Case — 사용자 관점 기능)**, **시퀀스(Sequence — 시간 흐름에 따른 객체 간 메시지 교환: 액터, 객체, 생명선, 실행 상자, 메시지)**, 커뮤니케이션, **상태(State — 객체의 상태 전이)**, **활동(Activity — 업무 처리 흐름과 분기)**, 타이밍, 상호작용 개요 다이어그램.
국가기술자격 코어: 정보처리기사(필기·실기 신유형: 소프트웨어공학·DB SQL·운영체제·네트워크·C/Java/Python 코딩) & 컴퓨터활용능력 1급 — Flashcards & Practice Quiz | Flashcards World )**로 고정해야 한다! ② **부분합(Subtotal)**: 부분합을 실행하기 전에 반드시 **【그룹화할 기준 필드를 기준으로 먼저 정렬(오름차순/내림차순)】**을 수행해야 하며, 두 번째 부분합을 추가할 때는 **'새로운 값으로 대치' 체크박스를 반드시 해제**해야 기존 첫 번째 부분합이 지워지지 않는다!"}},{"@type":"Question","position":16,"name":"제3과목 '데이터베이스 구축'에서 관계형 데이터 모델의 용어(릴레이션, 튜플=카디널리티[기수], 속성=디그리[차수], 도메인)와 키의 종류(슈퍼키[유일성], 후보키[유일성+최소성], 기본키, 대체키, 외래키) 및 3대 무결성 제약조건(개체 무결성, 참조 무결성, 도메인 무결성)은 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"① **릴레이션의 차수(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**이어야 한다."}},{"@type":"Question","position":17,"name":"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)은 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"① **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개의 임의 문자를 뜻한다."}},{"@type":"Question","position":18,"name":"컴퓨터활용능력 1급 스프레드시트(엑셀) VBA 프로시저 작성에서 '폼 열기(`폼이름.Show`) 및 닫기(`Unload Me`)', '워크시트 셀 값 입력(`Range(\"A1\").Value = txt이름.Value`, `Cells(입력행, 열번호)`)', 그리고 '목록상자/콤보상자 원본 연결(`RowSource = \"A2:C10\"`, `AddItem`, `ListIndex` 0부터 시작)'의 코딩 패턴은 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"컴활 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부터])`**이다."}},{"@type":"Question","position":19,"name":"제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)은 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"① **벨-라파둘라(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만 라인 이상**: 미사일 유도·실시간 신호제어 등 초대형 시스템)."}},{"@type":"Question","position":20,"name":"데이터베이스 이상(Anomaly) 현상 3가지('삽입 이상, 삭제 이상, 갱신 이상')와 정규화(Normalization) 단계별 진행 순서('두부이걸다조: 도메인 원자값 1NF → 부분 함수 종속 제거 2NF → 이행적 함수 종속 제거 3NF → 결정자이면서 후보키가 아닌 것 제거 BCNF → 다치 종속 제거 4NF → 조인 종속 제거 5NF')는 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"정보처리기사 필기·실기 무조건 출제되는 정규화 공식(**「도-부-이-결-다-조」**): ① 비정규 릴레이션 → **제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**: 후보키를 통하지 않는 **조인 종속** 제거."}},{"@type":"Question","position":21,"name":"네트워크 계층 프로토콜(IP, ICMP, IGMP, ARP[IP → MAC 주소 변환] vs RARP[MAC → IP 주소 변환])과 전송 계층 프로토콜(TCP[연결지향, 3-Way Handshaking, 흐름제어·혼잡제어] vs UDP[비연결지향, 실시간 스트리밍·DNS])의 헤더 및 동작 차이는 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"① **네트워크 계층 프로토콜**: **ICMP**(인터넷 제어 메시지 프로토콜: `ping`, `tracert` 등에서 통신 오류 보고 및 상태 진단), **IGMP**(인터넷 그룹 관리 프로토콜: **멀티캐스트** 그룹 유지·관리), **ARP**(논리적 IP 주소를 물리적 MAC 주소로 변환 — 요청은 브로드캐스트, 응답은 유니캐스트) vs **RARP**(물리적 MAC 주소를 IP 주소로 역변환); ② **TCP 3-Way Handshaking 연결 설정 순서**: 클라이언트가 서버에 **`SYN`**(연결 요청 플래그) 전송 → 서버가 클라이언트에 **`SYN + ACK`** 응답 → 클라이언트가 서버에 **`ACK`** 전송하여 세션 수립."}},{"@type":"Question","position":22,"name":"제2과목 '소프트웨어 개발'에서 블랙박스 테스트 기법(동치 분할, 경계값 분석, 원인-효과 그래프, 오류 예측, 비교 검사) vs 화이트박스 테스트 기법(기초 경로 검사, 루프 검사, 문장·결정[분기]·조건·조건/결정·변경조건/결정[MC/DC]·다중조건 검증 기준)과 통합 테스트(하향식 Stub vs 상향식 Driver)의 차이는 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"① **통합 테스트**: **하향식(Top-down)** 통합은 상위 모듈에서 하위 모듈 방향으로 통합하며 아직 개발되지 않은 하위 모듈을 대신하는 가짜 시험용 모듈인 **【스텁(Stub)】**을 사용한다(깊이 우선/너비 우선); **상향식(Bottom-up)** 통합은 하위 모듈들을 **클러스터(Cluster)**로 묶고 아직 개발되지 않은 상위 제어 모듈 역할을 하는 **【드라이버(Driver)】**를 사용한다! ② **V-모델 테스트 단계(개발 단계 역순 매칭)**: **단위 테스트**(모듈 정적/동적 테스트) → **통합 테스트**(인터페이스 검증) → **시스템 테스트**(기능·비기능 요구사항 검증) → **인수 테스트**(사용자 요구사항 충족 확인: **알파 테스트**[개발자 앞에서 사용자가 테스트] vs **베타 테스트**[통제되지 않은 실제 환경에서 다수 사용자가 테스트])."}},{"@type":"Question","position":23,"name":"EAI(Enterprise Application Integration) 구축 유형 4가지(Point-to-Point, Hub & Spoke, Message Bus[ESB], Hybrid)와 인터페이스 데이터 포맷(JSON, XML, YAML) 및 인터페이스 기술(AJAX, SOAP[UDDI·WSDL], REST)의 특징은 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"실기 단답형 단골 출제! ① **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을 등록하고 검색하는 디렉터리 레지스트리)."}},{"@type":"Question","position":24,"name":"객체지향 설계 5대 원칙(SOLID: 단일 책임 원칙 SRP, 개방-폐쇄 원칙 OCP, 리스코프 치환 원칙 LSP, 인터페이스 분리 원칙 ISP, 의존 역전 원칙 DIP)과 결합도(Coupling, 낮을수록 좋음: 자-스-제-외-공-내) vs 응집도(Cohesion, 높을수록 좋음: 기-순-교-절-시-논-우) 순서는 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"정보처리기사 필기·실기 1순위 암기 공식! ① **결합도(강함[나쁨] → 약함[좋음], 앞글자 '내-공-외-제-스-자')**: **내용(Content)** 결합도 → **공통(Common, 전역변수 참조)** → **외부(External)** → **제어(Control, 제어 플래그 전달)** → **스탬프(Stamp, 배열·구조체·객체 주소 전달)** → **자료(Data, 단순 값 매개변수만 전달 — 가장 이상적!)**; ② **응집도(약함[나쁨] → 강함[좋음], 앞글자 '우-논-시-절-교-순-기')**: **우연적(Coincidental)** → **논리적(Logical)** → **시간적(Temporal, 초기화 모듈 등 특정 시점에 함께 실행)** → **절차적(Procedural)** → **교환적/통신적(Communication, 동일한 입출력 데이터 사용)** → **순차적(Sequential, 앞 활동의 출력이 다음 활동의 입력)** → **기능적(Functional, 단일 기능 수행 — 가장 이상적!)**."}},{"@type":"Question","position":25,"name":"운영체제 가상기억장치 페이지 교체 알고리즘(OPT, FIFO[Belady의 모순 현상], LRU[Least Recently Used], LFU[Least Frequently Used], NUR[참조비트+변형비트], SCR[2차 기회])의 페이지 부재(Page Fault) 횟수 계산과 구역성(Locality: 시간 구역성 vs 공간 구역성) 및 워킹 셋(Working Set)·스래싱(Thrashing)은 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"① **LRU vs LFU**: **LRU**는 가장 **오랫동안 참조되지 않은(시점 기준)** 페이지를 교체하고, **LFU**는 참조된 **횟수(빈도 기준)가 가장 적은** 페이지를 교체한다(주의: 프레임이 비어 있을 때 처음 적재하는 과정에서도 Page Fault가 1회씩 카운트되는지 문제 조건 확인!); ② **구역성(Locality)**: **시간 구역성**(루프, 스택, 부프로그램, 집계 변수처럼 한 번 참조된 페이지를 가까운 시간 내에 다시 참조) vs **공간 구역성**(배열 순회, 순차적 코드 실행처럼 참조된 페이지 근처의 메모리를 연속 참조); ③ **스래싱(Thrashing)**: 다중 프로그래밍 정도(MPD)가 과도하게 높아져 프로세스 수행 시간보다 **페이지 교체(스와핑)에 쓰는 시간이 더 많아져 CPU 이용률이 급격히 떨어지는 현상**(해결책: **워킹 셋 보장, 페이지 부재 빈도 PFF 조절**, 일부 프로세스 중단 또는 프레임 추가 할당)."}},{"@type":"Question","position":26,"name":"자료구조와 알고리즘에서 이진 트리의 순회(Traversal) 3가지('전위 순회 Preorder[뿌리→왼쪽→오른쪽], 중위 순회 Inorder[왼쪽→뿌리→오른쪽], 후위 순회 Postorder[왼쪽→오른쪽→뿌리]')와 정렬 알고리즘(선택, 버블, 삽입, 쉘, 퀵, 합병, 힙, 기수 정렬)의 시간 복잡도($O(n^2)$ vs $O(n\\log n)$) 및 중간 회전 결과는 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"① **트리 순회 및 수식 표기법**: 뿌리(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)$)."}},{"@type":"Question","position":27,"name":"운영체제(OS) 프로세스 스케줄링 알고리즘(비선점형: FCFS, SJF, HRN, 기한부, 우선순위 / 선점형: Round Robin[RR], SRT, 다단계 큐, 다단계 피드백 큐[MLFQ])에서 HRN 우선순위 계산 공식과 평균 대기시간·평균 반환시간 계산법은 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"① **HRN(Highest Response-ratio Next, 비선점형)**: SJF(단기 작업 우선)의 치명적 단점인 '긴 작업의 무한 연기(기아 현상 Starvation)'를 보완하기 위해 대기시간을 고려한 기법으로, **우선순위 계산식 $= \\frac{\\text{대기시간(Waiting Time)} + \\text{서비스시간(실행시간)}}{\\text{서비스시간(실행시간)}}$**이며 계산값이 **클수록** 우선순위가 높다! ② 스케줄링 시간 계산: 각 프로세스의 **반환시간(Turnaround Time) = 완료 시각 - 도착 시각 = 대기시간 + 실행시간**이며, **대기시간(Waiting Time) = 반환시간 - 실행시간**이다(선점형인 SRT나 RR에서는 프로세스가 도착하거나 시간 할당량 Time Quantum이 끝나는 시점마다 간트 차트를 쪼개어 계산!)."}},{"@type":"Question","position":28,"name":"제4과목 '프로그래밍 언어 활용'에서 C언어·Java·Python 실기 코드 출력 결과 문제의 5대 함정(C언어 포인터 배열 `*p`, `p+1`, 문자열 배열 `%s` vs `%c`, 증감연산자 전위 `++a` vs 후위 `a++`, 비트연산자 `&, |, ^, ~, \u003c\u003c, >>`, 스태틱 변수 `static`, Java 상속 생성자 호출 순서와 동적 바인딩 오버라이딩, Python 슬라이싱 `a[시작:끝:증감]`과 리스트 컴프리헨션·`set` 중복제거)은 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"정보처리기사 실기 코딩 문제 만점 공식: ① **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\"`**가 된다."}},{"@type":"Question","position":29,"name":"데이터베이스 파티셔닝(Partitioning, 대용량 테이블 분할)의 4가지 기법('범위 분할 Range, 해시 분할 Hash, 목록 분할 List, 합성 분할 Composite')과 RAID 레벨(RAID 0 스트라이핑 vs RAID 1 미러링 vs RAID 5 패리티 분산 vs RAID 6 이중 패리티)의 특징은 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"① **파티셔닝(수평 분할) 4기법**: **Range(범위) 분할**(날짜[월별, 분기별]나 숫자 범위 기준 분할 — 가장 보편적), **Hash(해시) 분할**(해시 함수 결과값으로 균등 분산, 특정 데이터가 어디 있는지 알 수 없으나 고른 분포 보장), **List(목록) 분할**(국가 코드, 지역명 등 미리 정해진 값 목록에 따라 분할), **Composite(합성) 분할**(범위 분할 후 다시 해시 분할 등을 결합); ② **RAID 레벨**: **RAID 0**(스트라이핑: 패리티 없이 분산 저장해 속도 최고이나 디스크 1개만 고장 나도 전체 데이터 유실), **RAID 1**(미러링: 똑같은 데이터를 2배 공간에 중복 저장해 안정성 최고이나 공간 효율 50%), **RAID 5**(최소 3개 디스크 필요, 오류 검출 **패리티 정보를 모든 디스크에 분산 저장**해 디스크 1개 장애 시 복구 가능)."}},{"@type":"Question","position":30,"name":"정보처리기사 실기 C언어·Java에서 자주 출제되는 '재귀함수(Recursive Function) 호출 추적(팩토리얼, 피보나치 수열, 하노이의 탑 $2^n - 1$, 최대공약수 유클리드 호제법 `gcd(b, a % b)`)'과 '구조체 포인터 연산자(`->` vs `.`)'의 계산 원리는 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"① **유클리드 호제법 재귀함수**: `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`**)로 접근한다."}},{"@type":"Question","position":31,"name":"정보보안 암호화 알고리즘에서 '대칭키(비밀키) 암호화 방식(블록 암호: DES, 3DES, AES, SEED, ARIA, IDEA / 스트림 암호: LFSR, RC4)'과 '비대칭키(공개키) 암호화 방식(RSA[소인수분해], ECC[타원곡선], Diffie-Hellman[이산대수], ElGamal)', 그리고 '일방향 해시 함수(MD5, SHA, HAS-160)'의 구분은 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"실기 보안 단골 출제! ① **대칭키(비밀키) 암호화**: 암호화 키와 복호화 키가 **동일**하며 속도가 빨라 대용량 데이터 암호화에 적합하나 **키 배송(공유) 문제**가 존재하고 관리해야 할 키의 개수가 **$n(n-1)/2$개**이다(한국 인터넷진흥원 KISA 개발 블록 암호: **SEED[128비트], ARIA[국가정보원·학계 공동, 경량 환경], HIGHT, LEA**); ② **비대칭키(공개키) 암호화**: 암호화 키(공개키)와 복호화 키(개인키)가 **서로 다르며** 관리할 키 개수는 **$2n$개**이다. **기밀성 보장**을 위해서는 **「수신자의 공개키」**로 암호화하고, **부인 방지 및 전자서명(인증)**을 위해서는 **「송신자의 개인키」**로 암호화한다!"}},{"@type":"Question","position":32,"name":"UML(Unified Modeling Language)의 3대 구성요소(사물, 관계, 다이어그램) 중 '구조적(정적) 다이어그램 6종(클-객-컴-배-복-패)'과 '행위(동적) 다이어그램 7종(유-시-커-상-활-타-상개)'의 구분 및 클래스 간 관계 6종은 무엇인가?","eduQuestionType":"Flashcard","acceptedAnswer":{"@type":"Answer","text":"① **구조(정적) 다이어그램**: **클래스(Class)**, 객체(Object), **컴포넌트(Component)**, **배치(Deployment — 물리적 하드웨어 노드 위치)**, 복합체 구조(Composite Structure), **패키지(Package)** 다이어그램; ② **행위(동적) 다이어그램**: **유스케이스(Use Case — 사용자 관점 기능)**, **시퀀스(Sequence — 시간 흐름에 따른 객체 간 메시지 교환: 액터, 객체, 생명선, 실행 상자, 메시지)**, 커뮤니케이션, **상태(State — 객체의 상태 전이)**, **활동(Activity — 업무 처리 흐름과 분기)**, 타이밍, 상호작용 개요 다이어그램."}}]}
)**로 고정해야 한다! ② **부분합(Subtotal)**: 부분합을 실행하기 전에 반드시 **【그룹화할 기준 필드를 기준으로 먼저 정렬(오름차순/내림차순)】**을 수행해야 하며, 두 번째 부분합을 추가할 때는 **'새로운 값으로 대치' 체크박스를 반드시 해제**해야 기존 첫 번째 부분합이 지워지지 않는다!","created_at":"2026-11-11T20:27:38.345538Z","updated_at":"2026-11-11T20:27:38.345538Z"},{"id":"card_6a6afb3deffe4d278b104c639443aec3d615908d74974c523ff2b1c9d5d48330","set_id":"26df6733-748e-49b9-aa03-4107cb908e14","front":"제3과목 '데이터베이스 구축'에서 관계형 데이터 모델의 용어(릴레이션, 튜플=카디널리티[기수], 속성=디그리[차수], 도메인)와 키의 종류(슈퍼키[유일성], 후보키[유일성+최소성], 기본키, 대체키, 외래키) 및 3대 무결성 제약조건(개체 무결성, 참조 무결성, 도메인 무결성)은 무엇인가?","back":"① **릴레이션의 차수(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**이어야 한다.","created_at":"2026-11-11T20:27:38.345538Z","updated_at":"2026-11-11T20:27:38.345538Z"},{"id":"card_7b852392fd69b902da20af572a3ca0e311b7a8e144514c4f1948a502ba21ffc6","set_id":"26df6733-748e-49b9-aa03-4107cb908e14","front":"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)은 무엇인가?","back":"① **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개의 임의 문자를 뜻한다.","created_at":"2026-11-11T20:27:38.345538Z","updated_at":"2026-11-11T20:27:38.345538Z"},{"id":"card_7ea2977949ef1706488d376cfcc8268807c3e9cfb1fd9e53afde434221c54b46","set_id":"26df6733-748e-49b9-aa03-4107cb908e14","front":"컴퓨터활용능력 1급 스프레드시트(엑셀) VBA 프로시저 작성에서 '폼 열기(`폼이름.Show`) 및 닫기(`Unload Me`)', '워크시트 셀 값 입력(`Range(\"A1\").Value = txt이름.Value`, `Cells(입력행, 열번호)`)', 그리고 '목록상자/콤보상자 원본 연결(`RowSource = \"A2:C10\"`, `AddItem`, `ListIndex` 0부터 시작)'의 코딩 패턴은 무엇인가?","back":"컴활 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부터])`**이다.","created_at":"2026-11-11T20:27:38.345538Z","updated_at":"2026-11-11T20:27:38.345538Z"},{"id":"card_8f5fd393c4e3e927e44562c4f71f56876352fe0d53c9c0ad4841ce67f45c11dd","set_id":"26df6733-748e-49b9-aa03-4107cb908e14","front":"제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)은 무엇인가?","back":"① **벨-라파둘라(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만 라인 이상**: 미사일 유도·실시간 신호제어 등 초대형 시스템).","created_at":"2026-11-11T20:27:38.345538Z","updated_at":"2026-11-11T20:27:38.345538Z"},{"id":"card_9362bc0a30bd93b36f3ad5bc86480320313cc34651731600b98c7de2b0177dff","set_id":"26df6733-748e-49b9-aa03-4107cb908e14","front":"데이터베이스 이상(Anomaly) 현상 3가지('삽입 이상, 삭제 이상, 갱신 이상')와 정규화(Normalization) 단계별 진행 순서('두부이걸다조: 도메인 원자값 1NF → 부분 함수 종속 제거 2NF → 이행적 함수 종속 제거 3NF → 결정자이면서 후보키가 아닌 것 제거 BCNF → 다치 종속 제거 4NF → 조인 종속 제거 5NF')는 무엇인가?","back":"정보처리기사 필기·실기 무조건 출제되는 정규화 공식(**「도-부-이-결-다-조」**): ① 비정규 릴레이션 → **제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**: 후보키를 통하지 않는 **조인 종속** 제거.","created_at":"2026-11-11T20:27:38.345538Z","updated_at":"2026-11-11T20:27:38.345538Z"},{"id":"card_9fe9b7742d7c79bcd00d001a700bb5dad76e9708276dbf80bc98b0ac268e2604","set_id":"26df6733-748e-49b9-aa03-4107cb908e14","front":"네트워크 계층 프로토콜(IP, ICMP, IGMP, ARP[IP → MAC 주소 변환] vs RARP[MAC → IP 주소 변환])과 전송 계층 프로토콜(TCP[연결지향, 3-Way Handshaking, 흐름제어·혼잡제어] vs UDP[비연결지향, 실시간 스트리밍·DNS])의 헤더 및 동작 차이는 무엇인가?","back":"① **네트워크 계층 프로토콜**: **ICMP**(인터넷 제어 메시지 프로토콜: `ping`, `tracert` 등에서 통신 오류 보고 및 상태 진단), **IGMP**(인터넷 그룹 관리 프로토콜: **멀티캐스트** 그룹 유지·관리), **ARP**(논리적 IP 주소를 물리적 MAC 주소로 변환 — 요청은 브로드캐스트, 응답은 유니캐스트) vs **RARP**(물리적 MAC 주소를 IP 주소로 역변환); ② **TCP 3-Way Handshaking 연결 설정 순서**: 클라이언트가 서버에 **`SYN`**(연결 요청 플래그) 전송 → 서버가 클라이언트에 **`SYN + ACK`** 응답 → 클라이언트가 서버에 **`ACK`** 전송하여 세션 수립.","created_at":"2026-11-11T20:27:38.345538Z","updated_at":"2026-11-11T20:27:38.345538Z"},{"id":"card_ada4edc26ee275c4a8f594b46b0af3a599679fe75b7f1a63eecf8327d3825ad6","set_id":"26df6733-748e-49b9-aa03-4107cb908e14","front":"제2과목 '소프트웨어 개발'에서 블랙박스 테스트 기법(동치 분할, 경계값 분석, 원인-효과 그래프, 오류 예측, 비교 검사) vs 화이트박스 테스트 기법(기초 경로 검사, 루프 검사, 문장·결정[분기]·조건·조건/결정·변경조건/결정[MC/DC]·다중조건 검증 기준)과 통합 테스트(하향식 Stub vs 상향식 Driver)의 차이는 무엇인가?","back":"① **통합 테스트**: **하향식(Top-down)** 통합은 상위 모듈에서 하위 모듈 방향으로 통합하며 아직 개발되지 않은 하위 모듈을 대신하는 가짜 시험용 모듈인 **【스텁(Stub)】**을 사용한다(깊이 우선/너비 우선); **상향식(Bottom-up)** 통합은 하위 모듈들을 **클러스터(Cluster)**로 묶고 아직 개발되지 않은 상위 제어 모듈 역할을 하는 **【드라이버(Driver)】**를 사용한다! ② **V-모델 테스트 단계(개발 단계 역순 매칭)**: **단위 테스트**(모듈 정적/동적 테스트) → **통합 테스트**(인터페이스 검증) → **시스템 테스트**(기능·비기능 요구사항 검증) → **인수 테스트**(사용자 요구사항 충족 확인: **알파 테스트**[개발자 앞에서 사용자가 테스트] vs **베타 테스트**[통제되지 않은 실제 환경에서 다수 사용자가 테스트]).","created_at":"2026-11-11T20:27:38.345538Z","updated_at":"2026-11-11T20:27:38.345538Z"},{"id":"card_b0565d948b01f44191cb9c4f80f2854065511b228fe20e4e608a20e957579041","set_id":"26df6733-748e-49b9-aa03-4107cb908e14","front":"EAI(Enterprise Application Integration) 구축 유형 4가지(Point-to-Point, Hub & Spoke, Message Bus[ESB], Hybrid)와 인터페이스 데이터 포맷(JSON, XML, YAML) 및 인터페이스 기술(AJAX, SOAP[UDDI·WSDL], REST)의 특징은 무엇인가?","back":"실기 단답형 단골 출제! ① **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을 등록하고 검색하는 디렉터리 레지스트리).","created_at":"2026-11-11T20:27:38.345538Z","updated_at":"2026-11-11T20:27:38.345538Z"},{"id":"card_b07e6f209e7e6e5124fbba6ffb1a0c410892da8995f5f2863da2c91307e5f03c","set_id":"26df6733-748e-49b9-aa03-4107cb908e14","front":"객체지향 설계 5대 원칙(SOLID: 단일 책임 원칙 SRP, 개방-폐쇄 원칙 OCP, 리스코프 치환 원칙 LSP, 인터페이스 분리 원칙 ISP, 의존 역전 원칙 DIP)과 결합도(Coupling, 낮을수록 좋음: 자-스-제-외-공-내) vs 응집도(Cohesion, 높을수록 좋음: 기-순-교-절-시-논-우) 순서는 무엇인가?","back":"정보처리기사 필기·실기 1순위 암기 공식! ① **결합도(강함[나쁨] → 약함[좋음], 앞글자 '내-공-외-제-스-자')**: **내용(Content)** 결합도 → **공통(Common, 전역변수 참조)** → **외부(External)** → **제어(Control, 제어 플래그 전달)** → **스탬프(Stamp, 배열·구조체·객체 주소 전달)** → **자료(Data, 단순 값 매개변수만 전달 — 가장 이상적!)**; ② **응집도(약함[나쁨] → 강함[좋음], 앞글자 '우-논-시-절-교-순-기')**: **우연적(Coincidental)** → **논리적(Logical)** → **시간적(Temporal, 초기화 모듈 등 특정 시점에 함께 실행)** → **절차적(Procedural)** → **교환적/통신적(Communication, 동일한 입출력 데이터 사용)** → **순차적(Sequential, 앞 활동의 출력이 다음 활동의 입력)** → **기능적(Functional, 단일 기능 수행 — 가장 이상적!)**.","created_at":"2026-11-11T20:27:38.345538Z","updated_at":"2026-11-11T20:27:38.345538Z"},{"id":"card_b2a4c9c666acf2157b21412cb2c36e50949d9dc4fb144f406c3b47fa5826d117","set_id":"26df6733-748e-49b9-aa03-4107cb908e14","front":"운영체제 가상기억장치 페이지 교체 알고리즘(OPT, FIFO[Belady의 모순 현상], LRU[Least Recently Used], LFU[Least Frequently Used], NUR[참조비트+변형비트], SCR[2차 기회])의 페이지 부재(Page Fault) 횟수 계산과 구역성(Locality: 시간 구역성 vs 공간 구역성) 및 워킹 셋(Working Set)·스래싱(Thrashing)은 무엇인가?","back":"① **LRU vs LFU**: **LRU**는 가장 **오랫동안 참조되지 않은(시점 기준)** 페이지를 교체하고, **LFU**는 참조된 **횟수(빈도 기준)가 가장 적은** 페이지를 교체한다(주의: 프레임이 비어 있을 때 처음 적재하는 과정에서도 Page Fault가 1회씩 카운트되는지 문제 조건 확인!); ② **구역성(Locality)**: **시간 구역성**(루프, 스택, 부프로그램, 집계 변수처럼 한 번 참조된 페이지를 가까운 시간 내에 다시 참조) vs **공간 구역성**(배열 순회, 순차적 코드 실행처럼 참조된 페이지 근처의 메모리를 연속 참조); ③ **스래싱(Thrashing)**: 다중 프로그래밍 정도(MPD)가 과도하게 높아져 프로세스 수행 시간보다 **페이지 교체(스와핑)에 쓰는 시간이 더 많아져 CPU 이용률이 급격히 떨어지는 현상**(해결책: **워킹 셋 보장, 페이지 부재 빈도 PFF 조절**, 일부 프로세스 중단 또는 프레임 추가 할당).","created_at":"2026-11-11T20:27:38.345538Z","updated_at":"2026-11-11T20:27:38.345538Z"},{"id":"card_b9aaba952fddef71eb1a5347a59386e55f9d73f976fb10c1db8e5692f2a881db","set_id":"26df6733-748e-49b9-aa03-4107cb908e14","front":"자료구조와 알고리즘에서 이진 트리의 순회(Traversal) 3가지('전위 순회 Preorder[뿌리→왼쪽→오른쪽], 중위 순회 Inorder[왼쪽→뿌리→오른쪽], 후위 순회 Postorder[왼쪽→오른쪽→뿌리]')와 정렬 알고리즘(선택, 버블, 삽입, 쉘, 퀵, 합병, 힙, 기수 정렬)의 시간 복잡도($O(n^2)$ vs $O(n\\log n)$) 및 중간 회전 결과는 무엇인가?","back":"① **트리 순회 및 수식 표기법**: 뿌리(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)$).","created_at":"2026-11-11T20:27:38.345538Z","updated_at":"2026-11-11T20:27:38.345538Z"},{"id":"card_bdaf5c9da08e145d88bb8ba52e8438bfdce5bd999d99e9f54620324d77c3c5ff","set_id":"26df6733-748e-49b9-aa03-4107cb908e14","front":"운영체제(OS) 프로세스 스케줄링 알고리즘(비선점형: FCFS, SJF, HRN, 기한부, 우선순위 / 선점형: Round Robin[RR], SRT, 다단계 큐, 다단계 피드백 큐[MLFQ])에서 HRN 우선순위 계산 공식과 평균 대기시간·평균 반환시간 계산법은 무엇인가?","back":"① **HRN(Highest Response-ratio Next, 비선점형)**: SJF(단기 작업 우선)의 치명적 단점인 '긴 작업의 무한 연기(기아 현상 Starvation)'를 보완하기 위해 대기시간을 고려한 기법으로, **우선순위 계산식 $= \\frac{\\text{대기시간(Waiting Time)} + \\text{서비스시간(실행시간)}}{\\text{서비스시간(실행시간)}}$**이며 계산값이 **클수록** 우선순위가 높다! ② 스케줄링 시간 계산: 각 프로세스의 **반환시간(Turnaround Time) = 완료 시각 - 도착 시각 = 대기시간 + 실행시간**이며, **대기시간(Waiting Time) = 반환시간 - 실행시간**이다(선점형인 SRT나 RR에서는 프로세스가 도착하거나 시간 할당량 Time Quantum이 끝나는 시점마다 간트 차트를 쪼개어 계산!).","created_at":"2026-11-11T20:27:38.345538Z","updated_at":"2026-11-11T20:27:38.345538Z"},{"id":"card_c302191cecedf1afcccec2d463295365154a4b4aff70117a4cbff70eddb0d1b0","set_id":"26df6733-748e-49b9-aa03-4107cb908e14","front":"제4과목 '프로그래밍 언어 활용'에서 C언어·Java·Python 실기 코드 출력 결과 문제의 5대 함정(C언어 포인터 배열 `*p`, `p+1`, 문자열 배열 `%s` vs `%c`, 증감연산자 전위 `++a` vs 후위 `a++`, 비트연산자 `&, |, ^, ~, \u003c\u003c, >>`, 스태틱 변수 `static`, Java 상속 생성자 호출 순서와 동적 바인딩 오버라이딩, Python 슬라이싱 `a[시작:끝:증감]`과 리스트 컴프리헨션·`set` 중복제거)은 무엇인가?","back":"정보처리기사 실기 코딩 문제 만점 공식: ① **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\"`**가 된다.","created_at":"2026-11-11T20:27:38.345538Z","updated_at":"2026-11-11T20:27:38.345538Z"},{"id":"card_c364979802a1c547fd13802dc5818ca0d8a42f9901e57459f2c7a4738d9992ee","set_id":"26df6733-748e-49b9-aa03-4107cb908e14","front":"데이터베이스 파티셔닝(Partitioning, 대용량 테이블 분할)의 4가지 기법('범위 분할 Range, 해시 분할 Hash, 목록 분할 List, 합성 분할 Composite')과 RAID 레벨(RAID 0 스트라이핑 vs RAID 1 미러링 vs RAID 5 패리티 분산 vs RAID 6 이중 패리티)의 특징은 무엇인가?","back":"① **파티셔닝(수평 분할) 4기법**: **Range(범위) 분할**(날짜[월별, 분기별]나 숫자 범위 기준 분할 — 가장 보편적), **Hash(해시) 분할**(해시 함수 결과값으로 균등 분산, 특정 데이터가 어디 있는지 알 수 없으나 고른 분포 보장), **List(목록) 분할**(국가 코드, 지역명 등 미리 정해진 값 목록에 따라 분할), **Composite(합성) 분할**(범위 분할 후 다시 해시 분할 등을 결합); ② **RAID 레벨**: **RAID 0**(스트라이핑: 패리티 없이 분산 저장해 속도 최고이나 디스크 1개만 고장 나도 전체 데이터 유실), **RAID 1**(미러링: 똑같은 데이터를 2배 공간에 중복 저장해 안정성 최고이나 공간 효율 50%), **RAID 5**(최소 3개 디스크 필요, 오류 검출 **패리티 정보를 모든 디스크에 분산 저장**해 디스크 1개 장애 시 복구 가능).","created_at":"2026-11-11T20:27:38.345538Z","updated_at":"2026-11-11T20:27:38.345538Z"},{"id":"card_d0eef4e3d2287632acfb0f3d845d724008eabc665c497ca3a1eb4ea50664af5d","set_id":"26df6733-748e-49b9-aa03-4107cb908e14","front":"정보처리기사 실기 C언어·Java에서 자주 출제되는 '재귀함수(Recursive Function) 호출 추적(팩토리얼, 피보나치 수열, 하노이의 탑 $2^n - 1$, 최대공약수 유클리드 호제법 `gcd(b, a % b)`)'과 '구조체 포인터 연산자(`->` vs `.`)'의 계산 원리는 무엇인가?","back":"① **유클리드 호제법 재귀함수**: `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`**)로 접근한다.","created_at":"2026-11-11T20:27:38.345538Z","updated_at":"2026-11-11T20:27:38.345538Z"},{"id":"card_d63d3abddd3d2b30f39fcc4f52de2426d72d8124265ff7d161be3296437ff5b7","set_id":"26df6733-748e-49b9-aa03-4107cb908e14","front":"정보보안 암호화 알고리즘에서 '대칭키(비밀키) 암호화 방식(블록 암호: DES, 3DES, AES, SEED, ARIA, IDEA / 스트림 암호: LFSR, RC4)'과 '비대칭키(공개키) 암호화 방식(RSA[소인수분해], ECC[타원곡선], Diffie-Hellman[이산대수], ElGamal)', 그리고 '일방향 해시 함수(MD5, SHA, HAS-160)'의 구분은 무엇인가?","back":"실기 보안 단골 출제! ① **대칭키(비밀키) 암호화**: 암호화 키와 복호화 키가 **동일**하며 속도가 빨라 대용량 데이터 암호화에 적합하나 **키 배송(공유) 문제**가 존재하고 관리해야 할 키의 개수가 **$n(n-1)/2$개**이다(한국 인터넷진흥원 KISA 개발 블록 암호: **SEED[128비트], ARIA[국가정보원·학계 공동, 경량 환경], HIGHT, LEA**); ② **비대칭키(공개키) 암호화**: 암호화 키(공개키)와 복호화 키(개인키)가 **서로 다르며** 관리할 키 개수는 **$2n$개**이다. **기밀성 보장**을 위해서는 **「수신자의 공개키」**로 암호화하고, **부인 방지 및 전자서명(인증)**을 위해서는 **「송신자의 개인키」**로 암호화한다!","created_at":"2026-11-11T20:27:38.345538Z","updated_at":"2026-11-11T20:27:38.345538Z"},{"id":"card_da88385e361fcd958cd910099645574df761a6ab1bb2f58d684f1dcb22699017","set_id":"26df6733-748e-49b9-aa03-4107cb908e14","front":"UML(Unified Modeling Language)의 3대 구성요소(사물, 관계, 다이어그램) 중 '구조적(정적) 다이어그램 6종(클-객-컴-배-복-패)'과 '행위(동적) 다이어그램 7종(유-시-커-상-활-타-상개)'의 구분 및 클래스 간 관계 6종은 무엇인가?","back":"① **구조(정적) 다이어그램**: **클래스(Class)**, 객체(Object), **컴포넌트(Component)**, **배치(Deployment — 물리적 하드웨어 노드 위치)**, 복합체 구조(Composite Structure), **패키지(Package)** 다이어그램; ② **행위(동적) 다이어그램**: **유스케이스(Use Case — 사용자 관점 기능)**, **시퀀스(Sequence — 시간 흐름에 따른 객체 간 메시지 교환: 액터, 객체, 생명선, 실행 상자, 메시지)**, 커뮤니케이션, **상태(State — 객체의 상태 전이)**, **활동(Activity — 업무 처리 흐름과 분기)**, 타이밍, 상호작용 개요 다이어그램.","created_at":"2026-11-11T20:27:38.345538Z","updated_at":"2026-11-11T20:27:38.345538Z"}]}