정처기 실기: 최근 출제 항목

m_ngyeong·2025년 3월 31일
1
post-thumbnail

정보처리기사 실기: 최근 출제 항목


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 만큼 앞에 추가
// 29 << 2
// 29 = 11101 → 00011101
00011101 << 201110100
// 01110100 = 2^6 + 2^5 + 2^4 + 2^2 = 116

00011101 >> 200000111

💙 자바:

  • 상속:
    • 키워드? 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계층:

  1. 물리 계층: bit
  2. 데이터링크 계층: L2TP(PPTP+L2F), ATM:가상 채널 기반
  3. 네트워크 계층: RARP: MAC→IP / ICMP:제어 메세지
  4. 전송 계층
  5. 세션 계층
  6. 표현 계층: 수신자에서 데이터의 압축을 풀수 있는 방식으로 된 데이터 압축
  7. 응용 계층: 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) 시간
P108
P214
P329
P435

📘 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) 간의 라우팅
    • BGP: EGP 단점 보완

💚 Cloud Computing:

*알파벳 순서대로 사용자가 컨트롤할 수 있는 범위 기준이 좁음

  • IaaS
  • PaaS
  • SaaS
profile
ʚȉɞ

0개의 댓글