정보처리기사 실기: 최근 출제 항목
Programing Lang.
💙 C언어:
- 조건문, 반복문, 구조체
- 구조체 :
ptr->field
== (*ptr).field
- 변수로 접근:
.
, *d1.numPtr
- 포인터로 접근:
→
, d2→numPtr
- 구조체는 함수에 값으로 전달하면 복사됨. 포인터로 전달하면 원본에 영향을 줌.
- 포인터와 증감연산자
- ASCII Code:
'0': 48
, 'A': 65
, 'a': 97
- 문자열 함수
- bit 연산자
&
: AND 연산자
|
: OR 연산자, 비트 값이 하나라도 1이면 해당 비트 값은 1
^
: XOR 연산자, 비트 값이 서로 다르면 해당 비트 값은 1
~
: NOT 연산자, 비트의 값을 반대로 바꾸는 연산자
- num1
<<
num2: num2 만큼 앞에 삭제
- num1
>>
num2: num2 만큼 앞에 추가
00011101 << 2 → 01110100
00011101 >> 2 → 00000111
💙 자바:
- 상속:
- 키워드?
extends
, implements
- 오버라이딩(Overriding): 상속 관계에 있는 클래스에서 부모 클래스의 메서드를 자식 클래스가 재정의
- 오버로딩(Overloading): 동일한 이름을 공유하지만 서로 다른 인수를 갖는 여러 메서드를 설계
- 업캐스팅(Upcasting):
- 부모 형태에서 자식의 생성자?
P p = new Child()
- 서브 클래스의 객체를 슈퍼 클래스 타입으로 변환하는 것
- 하이딩(Field/Method Hiding):
- 키워드?
static
- 부모 클래스의 필드(변수)나 정적(static) 메서드를 자식 클래스에서 동일한 이름으로 다시 정의하는 것을 의미
equal()
: 내용
==
: 자료형, 주소값
- 재귀함수
💙 파이썬:
- 문자열 슬라이싱
질문) 인덱스가 마이너스인 문자열은 어떻게?
s[:] : s의 원소를 모두 출력
s[:n] : 맨 앞부터 n-1 번까지 출력
s[n:] : n 번째부터 끝까지 출력
s[n:m] : n 번째부터 m-1 번까지 출력
s[-n:] : 뒤에서 n-1번째부터 끝까지 출력
s[::k] : 맨 앞부터 k개씩 건너뛰며 출력
s[::-1] : 거꾸로 출력
- 자료형의 메소드:
class
, dict = {}
, set = ()
, tuple = ()
, list = []
....
print(f'ab{3} ca{3}')
→ ab3 ca3
💙 SQL:
https://velog.io/@m_ngyeong/series/DataBase
- DML: CREATE...ON, ALTER, DROP
- DROP: CASCADE : 함께 제거 / RESTRICT : 제거 취소
- DDL: SELECT, INSERT INTO... VALUES, DELETE FROM..., UPDATE... SET...
- WHERE절: LIKE 연산자, IN연산자
- DESC: 내림차순(5,4,3,2,1) / ASC : 오름차순
- DCL: COMMIT, ROLLBACK(REDO-재작업/UNDO-취소), GRANT(권한부여), REVOKE(권한취소)
- 즉각 갱신 회복 기법
💙 Linux/Unix 명령어
https://velog.io/@m_ngyeong/Utilization-of-application-Software-Technology-2
읽기/쓰기/실행 권한을 부여하고, 그룹에게는 읽기/실행을 부여하고, 그 이외에는 실행 권한을
test.txt파일에 부여하기 위한 명령어를 작성하시오.(8진법 사용)
chmod 751 test.txt
1️⃣ rwx r-x --x
↓ ('-'는 0, 나머지는 1로 바꿈)
2️⃣ 111 101 001
↓ (3자리 2진수를 8진로 변환)
3️⃣ 7 5 1
- Unix: 데니스 리치와 켄톰슨 등이 함께 벨 연구소를 통해 만든 운영체제이며, 90% 이상 C언어로 구현되어 있고...
이론
🖤 DB:
- 병행제어기법: 로킹(접근한 데이터에 대한 연산을 모두 마칠때까지 상호배제하는 기법), 타임 스탬프 순서, 최적 병행 수행, 다중 버전 기법
- 데이터 모델 구성요소: 개체-연산, 논리-구조, 제약조건-참조/개체 무결성
- 트랜잭션: 데이터베이스의 상태를 변화 시키는 하나의 논리적인 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미
- Atomictiy(원자성): (All or Nothing)
- Consistency(일관성)
- Isolation(독립성, 격리성, 순차성)
- Durability(영속성, 지속성)
- REDO: 트랜잭션들을 재작업
- UNDO: 트랜잭션을 전부 취소
- 릴레이션
- 집합 연산자
- UNION(합집합): ∪, 중복된 행은 한 번만 출력
- UNION ALL
- INTERSECTION(교집합) : ∩
- EXCEPT(차집합) / DIFFERENCE(차집합) : −
- CARTESIAN PRODUCT(교집합) : ×, 두 릴레이션에 있는 튜플들의 순서쌍을 구하는 연산
SELECT 𝜎 | PROJECT 𝜋 | JOIN ⋈ | DIVISION ÷
- THETA JOIN(세타 조인) : 비교
- EQUI JOIN(동등 조인) : =
- NATURAL JOIN(자연 조인) : EQUI JOIN에서 중복된 속성을 제거
- INNTER JOIN(내부 조인) : 값이 같은 경우
- OUTER JOIN(외부 조인) :
- LEFT OUTER JOIN(왼쪽 외부 조인) : 왼쪽 테이블의 모든 데이터와 오른쪽 데이블의 동일한 데이터를 추출하는 기법.
- RIGHT OUTER JOIN(오른쪽 외부 조인) : 오른쪽 테이블의 모든 데이터와 왼쪽 데이블의 동일한 데이터를 추출하는 기법.
- FULL OUTER JOIN(완전 외부 조인) : 양쪽의 모든 데이터를 추출하는 기법.
- SEMI JOIN(세미 조인) : 프로젝트(PROJECT) 연산을 수행
- Cross Join(크로스 조인): 조건 없이 두 테이블을 모두 조합하는 방식으로, 카테시안 곱(Cartesian Product)을 생성
DB 설계: 개념적 설계 → 논리적 설계 → 물리적 설계
DB 보안
- MAC: 강제 접근 통제, 규칙 기반(Rule-Based)
- RBAC: 역할(Role)에 기초
- DAC: 임의 접근 통제, 신분 기반(Identity-Based)
정규화(Normalization):
데이터 중복을 줄이고, 이상(anomaly)을 방지하며, 구조를 효율적으로 만드는 과정이다.
두 부 이 걸 다 줘

🌱 1정규형(1NF) – 원자값(Atomic Value)
조건: 테이블의 모든 컬럼은 원자값(Atomic Value)만 가져야 함 (즉, 값이 더 이상 나눌 수 없는 상태)

🌿 2정규형(2NF) – 부분 함수 종속 제거
조건: 1NF 만족 + 기본키의 부분집합에 종속된 컬럼 제거
| 기본키가 복합키(예: 학생ID + 과목명)인 경우, 그 일부에만 종속되는 속성이 있으면 안 됨

🌳 3정규형(3NF) – 이행적 함수 종속 제거
조건: 2NF 만족 + 이행적 함수 종속 제거
| X → Y, Y → Z 이면 X → Z 인 상황 방지 (중간 단계 종속 제거)

🖤 디자인 패턴:
- https://velog.io/@m_ngyeong/Design-Pattern
- 생성:
- Abstract Factorty : 객체 집합, 캡슐화, 인터페이스 의존, kit패턴
- Builder: 동일 객체 → 다른 결과, 분리된 인스턴스 건축
- Factorty Method : 객체 생성을 서브 클래스에 위임, 객체지향, 가상 생성자 패턴
- Prototype: 복제
- Singletone : 하나만을 보장, 어디서든 참조, 동시 참조 ❌
- 구조:
- Adapter: 서로 다른걸 일관되게
- Bridge : 독립적으로 확장, 별도의 클래스 구현 → 확장
- Composite: 트리 구조로 부분-전체 계층 표현, 복합/단일 객체 구분 ❌
- Decorator: 수정 없이 동적 확장
- Facade: Wrapper 객체, 복잡 → 간단
- Flywieght: 메모리 절약
- Proxy : 대리자
- 행위:
- Chain of Responsibility
- Command: 요청
- Interpreter: 문법
- Iterator : Cusror, 순차적 탐색
- Mediator
- Memento: 복원, Command + z
- Observer : 상속, 객체 상태 전달
- State
- Strategy: 알고리즘 군을 정의하고 런타임에 교체, 캡슐화
- Template Method: 상위, 하위(구체적)
- Visitor : 구조 변경 ❌ → 확장, 내부 구조 노출 ❌, 클래스 변경 없이 추가
🖤 응집도 / 결합도
모듈화는 모듈간 결합도(Coupling)의 최소화와 모듈 내 요소들의 응집도(Cohesion)를 최대화하는 것이 목표이다.
- 응집도(Cohesion) / 높→낮: (기)(순)(교) (절)(시) (논)(우)
- 기능적: 하나의 기능에..
- 순차적: 출력 자료가 다음 기능 원소의 입력 자료로써 제공
- 교환[통신]적: 서로 다른 기능, 동일한 입출력
- 절차적: 순차적
- 시간적
- 논리적: 유사
- 우연적
- 결합도(Coupling) / 높→낮: (내)(공) (외)(제) (쓰)(자)
- 내용: 지역 변수
- 공유: 전역 변수
- 외부: 참조
- 제어
- 스탬프: 자료구조 전달, 모듈간 인터페이스 전달
- 자료: 인터페이스, 파라미터
🖤 테스트
https://velog.io/@m_ngyeong/Application-Testing
화이트박스:
- SC(Statement Coverage, 문장[구문] 검증 기준)
- BC(Branch Coverage, 분기 검증 기준) DC(Decision Coverage, 결정[선택] 검증 기준): 전체
- CC(Condition Coverage, 조건 검증 기준): 개별
- C/DC(Codition/Decision Coverage, 조건/결정 커버리지): 전체 + 개별
- MC/DC(Modified Condition/Decistion Coverage, 변형 조건/결정 커버리지): 독릭접
블랙박스 테스트
- Equivalence Partitioning Testing(동치 분할 검사): 입력 자료 개수 균등
- Boundary Value Analysis(경계값[한계값] 분석)
- Cause-Effect Graphing Testing(원인-효과 그래프 검사)
단위 테스트 → 통합 테스트 → 시스템 테스트 → 인수 테스트
- 단위 테스트: 개별 모듈
- 통합 테스트: 인터페이스 간, 하향식 - 스텁(Stub), 상향식 - 드라이버(Driver)
- 인수 테스트: 알파 - 개발자, 베타 - 사용자
🖤 웹 개발 / 객체지향:
- SOA(Service-Oriented Architecture, 서비스 지향 아키텍처):
- UDDI(Universal Description, Discovery, and Integration): 서비스들의 정보를 저장하고 관리하는 서비스 레지스트리
- SOAP: 컴퓨터 네트워크 상에서 HTTP/HTTPS, SMTP등을 이용하여 XML을 교환하기 위한 통신 규약
- RESTful: HTTP와 URI 기반으로 자원에 접근할 수 있도록 제공하는 애플리케이션 개발 인터페이스
- WSDL: XML 기반의 언어로, 웹 서비스의 인터페이스(요청/응답 형식, 프로토콜, 엔드포인트 등)를 정의하는 문서
- MVC 패턴
- 객체지향의 설계 원칙(SOLID 원칙):
SRP(단일 책임), OCP(개방-폐쇄), LSP(자식이 최소한 부모 기능 수행),
ISP(인터페이스 분리), DIP(의존 역전 원칙)
- 형상관리: CVS, SVN, Git
🖤 통신 프로토콜:
- 패킷 교환: 가상 회선 방식-연결형 / 데이터그램 방식-비연결형
- NAT: 네트워크 주소 변환, IP..., 라우터를 통해 네트워크 트래픽을 주고받는 기술
- IPC: 공유메모리, 소켓, 세마포어, 메세지 큐 등 프로세스 간 통신하는 기술
- EAI: 시스템 통합에 사용되는 솔루션으로 구축 유형에는 Point to Point, Hub & Spoke, Message Bus, Hybrid가 있음
- 블록체인: P2P
- RTO: 재해 복구 시간
- LOD: link data + open data
🖤 OSI 7계층:
- 물리 계층: bit
- 데이터링크 계층: L2TP(PPTP+L2F), ATM:가상 채널 기반
- 네트워크 계층: RARP: MAC→IP / ICMP:제어 메세지
- 전송 계층
- 세션 계층
- 표현 계층: 수신자에서 데이터의 압축을 풀수 있는 방식으로 된 데이터 압축
- 응용 계층: SSH-포트번호(22),TELNET-포트번호(23), DNS-포트번호(53), DHCP-포트번호(67), SNMP-포트번호(161),
- IPsec: 네트워크 계층에서..., AH + ESP
- SSL: TCP/IP 계층과 애플리케이션 계층.. 세션 기반 보안, 브라우저–서버 간 보안 통신에 가장 널리 쓰임
- S-HTTP: 클라이언트-서버 간 보안
🖤 소프트웨어 보안:
- 보안 솔루션 종류
- Trustzone: 독립적인 보안 구역 따로..
- OAuth: 타사 계정 인증 위임
- VPN: 보안 기술, SSL VPN, IPSec VPN
- 템퍼 프루핑(Tamper proofing): 소프트웨어 변조 공격을 방어
- SIEM: 로그 및 보안 이벤트를 통합하여 관리
- ISMS: 정보 보호, 한국인터넷진흥원(KISA)에서 운영중
- SW개발 보안의 3개 요소 : 기밀성 / 무결성 / 가용성(원하는 서비스를 지속 사용할 수 있도록 보장)
암호화 방식:
- 대칭키 : DES(IBM개발), SEED(KISA), AES(NIST), ARIA(Academy, Research Iastitue, Agenct), IDEA(PES→IPES), Skipjack(Clipper칩), LFSR, TKIP(WEP 취약성을 보완)
- 비대칭키: RSA(Mit, 소인수분해), ECC, Diffie-Helllman, ElGamal(이산대수)
- HASH: SHA 시리즈, HAVAL, MD4, MD5, N-NASH, SNEFRU...
임의의 길이의 입력 데이터나 메시지를 고정된 길이의 값이나 키로 변환하는 것
3A
- Authentication(인증) : 사용자의 신원을 검증
- Authorization(인가) : 특정된 권한과 서비스를 허용
- Accounting(과금, 계정 관리) : 서비스, 자원 사용 기록 및 보관
🖤 공격:
- 세션 하이재킹(Session Hijacking): 재연결 시 공격자에게 연결
- ARP 스누핑(ARP Spoofing): 자신의 물리적 주소를 공격대상의 것으로 변조
- 사회 공학(Social Engineering): 신뢰 바탕으로 침입
- 다크 데이터(Dark Data): 활용하지 않고 저장만 되어 있는 다량의 데이터
- Typosquatting(타이포스쿼팅): 타이핑 실수...
- Sniffing(스니핑): 패킷 정보 도청
- Watering Hole(워터링 홀): 사전에 감염..
- Worm(웜) : 자가 복제, 스스로 전파 가능
- Trojan Horse(트로이 목마): 정상인척 위장
- Virus(바이러스): 자가 복제 가능
- Smurfing(스머핑): ICMP, 집중 공격, 자금세탁
- LAND Attack: 송신 IP주소와 수신 IP주소를 모두 공격 대상의 IP주소로...
- Rootkit: 시스템 깊숙이 숨어서 탐지 회피하는 도구
- APT: 지능적인 방법을 사용하여 지속적으로 가하는 공격
- 애드훅 네트워크: 군대, 구성하지 않고 직접 통신
🖤 UX/UI
- CLI: 명령과 출력이 텍스트 형태로 이뤄지는 인터페이스
- GUI: 아이콘이나 메뉴를 마우스로 선택하여 작업을 수행하는 그래픽 환경의 인터페이스
- NUI: 사용자의 말이나 행동 등 자연스러운 움직임을 통해 기기를 조작하는 인터페이스
- UI 설계 원칙 : 직관성/학습성/유연성/유효성
🖤 UML
- 구성요소: 사물, 관계, 다이어그램
- 클래스 다이어그램 - 정적인 관계
- 인터페이스 - 클래스와 같이 오퍼레이션 세트를 정의
Use Case 다이어그램
- 시스템/시스템 범위
- 액터: 시스템과 상호작용 하는 모든 외부 요소, 사람, 외부 시스템
- Use Case: 시스템의 요구사항/기능
- 관계: 연관/포함/확장/일반화
계산식:
서브넷, 프로세스 스케줄링, 디스크 스케줄링, 크론 표현식, 퍼미션, 임계경로
💚 페이지 교체:
https://velog.io/@m_ngyeong/Utilization-of-application-software-technology
- OPT: 가장 오랫동안 사용하지 않을 페이지를 교체
- FIFO: 가장 먼저 들어와서 가장 오래 있었던 페이지를 교체
- LRU(Least Recently Used): 시간 순서에 민감함 → 가장 오래 안 쓴 페이지 교체

- LFU(Least Frequently Used): 사용 횟수에 민감함 → 가장 적게 참조된 페이지 교체, 사용 횟수가 같다면 오래된 순으로 제거

- NUR: 최근에 사용하지 않은 페이지를 교체하는 기법
- SCR: 가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지하기 위한 기법으로 FIFO 기법의 단점을 보완하는 기법
💚 선점 스케줄링:
https://velog.io/@m_ngyeong/Preemptive선점-스케줄링
구분 | 기법 | 설명 | 문제/해결 |
---|
비 | FCFS | 먼저 들어온 프로세스 먼저 처리 | Convoy Effect 발생 |
선 | SJF | 처리시간이 짧은 프로세스부터 처리 | Starvation 발생 |
점 | HRN | 짧은 작업시간이면서 대기시간이 긴 프로세스부터 처리 | Starvation 해결 |
선 | RR | 먼저 들어온 순서대로 일정 시간만큼만 처리 | |
| SRT | 남은 시간이 짧은 프로세스부터 처리 | |
점 | MLQ | 우선순위별로 큐를 분리하여 다양한 스케줄링 적용 | Starvation 발생 |
HRN: 우선순위 계산식 = (대기 시간 + 서비스 시간) / 서비스 시간
RR(Round Robin):
각 프로세스를 시간 할당량(Time Slice, Quantum)동안만 실행한 후 실행이 완료되지 않으면 다음 프로세스에게 CPU를 넘겨주는 기법
SRT(Shortest Remaining Time)
- 선점형 스케줄링 방식
- 항상 남은 실행 시간이 가장 짧은 프로세스를 선택해서 실행
- 새로운 프로세스가 도착하면 즉시 비교해서 스위치 가능
🔍 주어진 프로세스 정보:
프로세스 | 도착 시간 | 실행(Burst) 시간 |
---|
P1 | 0 | 8 |
P2 | 1 | 4 |
P3 | 2 | 9 |
P4 | 3 | 5 |
📘 Gantt Chart 만들기 (시간 단위로 분석):
t=0: P1 도착 → 실행 시작 (남은 8)
t=1: P2 도착(P2 남은 시간 4 < P1 남은 시간 7) → 선점 발생 → P2 실행
t=2: P3 도착(P3 남은 시간 9 > P2 남은 시간 3) → P2 유지
t=3: P4 도착(P4 남은 시간 5 > P2 남은 시간 2) → P2 유지
t=5: P2 종료 → 남은: "P1(7), P3(9), P4(5)" → P4 선택
t=10: P4 종료 → 남은: "P1(7), P3(9)" → P1 선택
t=17: P1 종료 → 남은: P3(9) → P3 선택
t=26: P3 종료
📊 대기 시간 계산

∴ 평균 대기 시간 = (9 + 0 + 15 + 2) / 4 = 6.5
💚 LOC
ex) LoC에 의해 예측된 총 라인의 수가 30,000라인이고,
개발자가 5명이며, 개발자의 평균 생산성이 월 300라인일 때 개발에 소요되는 시간은?
개발 기간 = 30000 / (5 * 300) = 20
💚 경로제어
- IGP
- RIP: 홉 수(hop count)가 가장적은 경로
A → D → C → F
- OSPF: Dijkstra(다익스트라) 알고리즘을 사용
- EGP: 자율 시스템(AS) 간의 라우팅
💚 Cloud Computing:
*알파벳 순서대로 사용자가 컨트롤할 수 있는 범위 기준이 좁음