처음 · 국가기술자격

한국산업인력공단 · 필기

프로그래밍기능사

구 정보처리기능사. 프로그래밍 언어, 응용SW 기초, SQL, 정보시스템 기초.

공식 시험은 보통 60문항 60분, 4지선다, 합격선 60% 안팎입니다. 아래 공식 12장·용어 21장에서 연습·모의 문항을 만듭니다. 연습은 카드에서 바로 뽑고, 모의는 60문항입니다. 「다시 뽑기」로 조합을 바꿉니다.

모의고사 아래로 연습

저작권이 있는 기출 원문은 넣지 않았습니다. 법령·세율·시험 요강은 바뀔 수 있으니 시행 기관 공지를 확인하세요.

공식 · 정리

  • 시간 복잡도 O(1) 상수, O(log n) 이분, O(n) 선형, O(n log n) 비교 정렬 평균, O(n²) 이중 반복. 최고차항만 남기고 계수는 버린다.
  • 관계대수 σ 선택(행), π 투영(열), ⋈ 조인. SQL의 WHERE · SELECT 열 · JOIN과 대응한다. 선택과 투영을 바꿔 쓰지 않는다.
  • 정규화 1NF 원자값, 2NF 부분함수종속 제거, 3NF 이행종속 제거. 키가 아닌 열이 다른 비키를 결정하면 3NF를 깨기 쉽다. BCNF는 결정자가 후보키인지 본다.
  • ACID 원자성(전부 아니면 전무), 일관성, 격리, 지속성. 커밋 전 장애면 롤백, 커밋 후면 남긴다. 성능을 위해 격리를 낮추면 이상 현상이 늘 수 있다.
  • OSI 7계층 응용-표현-세션-전송-네트워크-데이터링크-물리. TCP는 전송, IP는 네트워크, HTTP는 응용에 가깝다. 계층을 건너뛰거나 순서를 뒤집지 않는다.
  • TCP/IP 묶음 응용(HTTP·DNS·FTP) / 전송(TCP·UDP) / 인터넷(IP) / 네트워크 접근. OSI와 층 수가 다르다. TCP는 연결형·신뢰, UDP는 비연결·경량으로 구분한다.
  • 인덱스 검색 키로 위치를 빨리 찾기 위한 부가 구조다. 조회는 빨라지고 삽입·갱신은 유지 비용이 생긴다. 기본키에 클러스터가 붙는 구현이 많다. 모든 열에 인덱스를 다는 것이 최선은 아니다.
  • 조인 선택 등값 조건이면 내부 조인이 기본이다. 한쪽 미매칭 행이 필요하면 외부 조인. 카티션 곱은 조건 없는 곱집합이다. ON과 WHERE를 같은 절로 보지 않는다.
  • 교착 조건 상호배제 · 점유와 대기 · 비선점 · 환형 대기가 모두 있으면 교착이 날 수 있다. 하나라도 깨면 예방에 가깝다. 탐지는 대기 그래프, 회복은 희생 프로세스 중단이다.
  • 스택과 큐 연산 스택은 LIFO, push·pop은 한쪽 끝. 큐는 FIFO, enqueue·dequeue는 양 끝. 재귀 호출·후위 표기는 스택, 작업 대기·버퍼는 큐로 자주 대응한다.
  • 정렬 비교 버블·삽입은 O(n²), 합병·힙은 O(n log n) 최악이 흔하다. 퀵은 평균 n log n·최악 n²로 정리하는 교재가 많다. 안정 정렬 여부와 제자리 여부를 함께 본다. 계수는 복잡도에서 버린다.
  • 정규화 이상 삽입·삭제·갱신 이상이 생기면 정규화를 검토한다. 과도한 분해는 조인 비용이 커진다. 1·2·3NF 정의를 키·종속으로 다시 본다. 역정규화는 성능을 위한 의도적 완화다.

용어

  • 알고리즘 알고리즘은 문제를 풀기 위한 유한한 단계의 절차다. 입력·출력·명확성·유한성이 조건으로 자주 나온다. 프로그램(특정 언어 구현)과 혼동하지 않는다. 복잡도는 단계 수·공간으로 비교한다.
  • 재귀 재귀는 함수가 자기 자신을 호출해 더 작은 부분 문제를 푸는 방법이다. 종료 조건이 없으면 무한 호출이다. 반복문과 같은 결과를 낼 수 있지만 호출 스택을 쓴다. 스택 오버플로와 짝으로 기억한다.
  • 스택 스택은 나중에 넣은 자료를 먼저 꺼내는 LIFO 구조다. 큐(FIFO)와 가장 자주 바뀐다. 함수 호출, 괄호 짝, 되돌리기에 쓴다. 탑이 아닌 중간을 직접 빼는 구조가 아니다.
  • 먼저 넣은 자료를 먼저 꺼내는 FIFO 구조다. 스택과 혼동하지 않는다. 인쇄 대기, 메시지 버퍼, BFS에 자주 나온다. 원형 큐는 빈 칸 하나를 희생하거나 개수로 공·만을 구분한다.
  • 해시 해시는 키를 계산해 저장 위치를 바로 찾는 방법이다. 평균 O(1) 탐색을 기대한다. 충돌이 나면 체이닝·개방주소로 해결한다. 정렬된 순회가 필요하면 트리·인덱스를 본다.
  • 조인 두 릴레이션을 관련 열로 붙여 새 결과를 만드는 연산이다. 내부·외부·자기 조인이 있다. 유니온(행 합치기)과 자주 바뀐다. 조건이 없으면 카티션 곱이 된다.
  • 기본키 한 행을 유일하게 식별하는 후보키 중 선택한 키다. 널을 허용하지 않는 것이 보통이다. 외래키(다른 표의 기본키를 참조)와 혼동하지 않는다. 자연키·대리키 선택은 설계 문제다.
  • 외래키 외래키는 다른 릴레이션의 기본키(또는 후보키) 값을 가리켜 참조 무결성을 지키는 열이다. 기본키 자체와 바꿔 쓰지 않는다. 자식 행이 있으면 부모 삭제를 막거나 연쇄한다.
  • 트랜잭션 트랜잭션은 데이터베이스에서 하나의 논리적 작업 단위다. 커밋이면 반영, 롤백이면 취소다. 프로세스(실행 중인 프로그램)와 혼동하지 않는다. ACID를 목표로 한다.
  • 교착상태 교착상태는 둘 이상의 트랜잭션·프로세스가 서로의 자원을 기다리며 멈춘 상태다. 기아(계속 순위에서 밀림)와 자주 바뀐다. 예방·회피·탐지·회복으로 대응한다.
  • 프로세스 실행 중인 프로그램이다. 자신만의 주소 공간을 가진다. 스레드(한 프로세스 안의 실행 흐름)와 가장 자주 혼동된다. 생성 비용은 스레드보다 큰 편이다.
  • 스레드 스레드는 한 프로세스 안에서 동시에 진행할 수 있는 실행 단위다. 자원을 공유하므로 동기화가 필요하다. 프로세스와 1:1로 보지 않는다. 경량 프로세스라고 부르기도 한다.
  • 방화벽 방화벽은 허용된 트래픽만 통과시키도록 거르는 보안 장치·소프트웨어다. 백신(악성코드 탐지)과 자주 바뀐다. 패킷 필터·애플리케이션 게이트웨이 등이 있다. 만능 차단은 아니다.
  • HTTP 웹에서 자원 요청·응답에 쓰는 응용 계층 프로토콜이다. HTML(문서 언어)과 이름이 비슷해 혼동된다. 기본은 비연결에 가깝고, HTTPS는 TLS로 암호화를 더한 것이다.
  • DNS DNS는 도메인 이름을 IP 주소로 바꾸는 분산 이름 체계다. DHCP(주소 자동 할당)와 자주 바뀐다. 재귀·반복 질의가 있고, 캐시가 응답 속도를 좌우한다.
  • 배열 배열은 같은 형 자료를 연속 공간에 둔 구조다. 인덱스로 O(1) 접근이 강점이다. 중간 삽입·삭제는 밀고 당기는 비용이 크다. 연결 리스트와 장단을 바꿔 쓰지 않는다.
  • 연결 리스트 연결 리스트는 노드가 포인터로 이어진 구조다. 중간 삽입·삭제가 배열보다 쉬운 편이다. 임의 접근은 느리다. 스택·큐 구현에 쓰이기도 한다.
  • 트리 계층 구조의 비선형 자료구조다. 루트·자식·리프 용어가 나온다. 그래프의 특수 형태(사이클 없음)로 보기도 한다. 이진 탐색 트리는 정렬된 탐색에 쓴다.
  • 운영체제 운영체제는 하드웨어를 관리하고 응용에 서비스를 제공하는 시스템 소프트웨어다. 응용 프로그램과 혼동하지 않는다. 프로세스·메모리·파일·장치를 다룬다. 커널이 핵심이다.
  • SQL 관계 데이터베이스를 다루는 표준 질의 언어다. NoSQL·특정 제품 이름과 같은 말로 쓰지 않는다. DDL·DML·DCL로 나누어 배운다. SELECT가 조회 대표다.
  • IP 인터넷에서 패킷을 호스트로 전달하는 네트워크 계층 프로토콜이다. TCP(전송)나 HTTP(응용)와 계층을 바꿔 쓰지 않는다. IPv4·IPv6 주소 체계가 있다. 라우팅과 함께 본다.

연습

문항은 공식·용어 카드에서 만듭니다. 「다시 뽑기」로 다른 조합을 고르세요.