실기 공부방READ · TRACE · RECALL

정보처리 실무 · 학습 노트

시험 직전 압축본

핵심 규칙을 읽고, 답을 가린 채 떠올리고, 해당 과목 문제로 확인하세요.

읽는 복습에서 쓰는 복습으로

먼저 핵심 규칙을 읽고, ‘답 가리고 확인’에서 답을 직접 떠올리세요. 막히면 상세 학습으로 돌아갑니다. 아래 핵심은 단원별 첫 개념과 이번 보강을 압축한 것이며, 전체 규칙도 펼쳐볼 수 있습니다.

코드 읽기의 기본

매번 같은 순서로 푼다
추적표의 열: 실행 줄 / i / 주요 변수 / 배열 / 출력 누적
정수 나눗셈과 나머지
C·Java: -7 / 3 = -2, -7 % 3 = -1. Python: -7 // 3 = -3, -7 % 3 = 2.
연산자·단락 평가
C·Java의 &&와 ||는 결과가 정해지면 오른쪽을 실행하지 않는다. &와 |는 비트 연산과 구별한다.
반복문과 재귀
재귀 함수는 내려갈 때의 호출과 돌아올 때의 계산을 분리한다.
복잡도와 자료구조
DFS는 재귀·스택, BFS는 큐. BST 중위 순회는 키를 정렬된 순서로 방문한다.
트리 순회
루트 A, 왼쪽 B(자식 D,E), 오른쪽 C라면 전위 ABDEC / 중위 DBEAC / 후위 DEBCA.
전체 핵심 12개 펼치기
매번 같은 순서로 푼다
추적표의 열: 실행 줄 / i / 주요 변수 / 배열 / 출력 누적
정수 나눗셈과 나머지
C·Java: -7 / 3 = -2, -7 % 3 = -1. Python: -7 // 3 = -3, -7 % 3 = 2.
연산자·단락 평가
C·Java의 &&와 ||는 결과가 정해지면 오른쪽을 실행하지 않는다. &와 |는 비트 연산과 구별한다.
반복문과 재귀
재귀 함수는 내려갈 때의 호출과 돌아올 때의 계산을 분리한다.
복잡도와 자료구조
DFS는 재귀·스택, BFS는 큐. BST 중위 순회는 키를 정렬된 순서로 방문한다.
트리 순회
루트 A, 왼쪽 B(자식 D,E), 오른쪽 C라면 전위 ABDEC / 중위 DBEAC / 후위 DEBCA.
기본 정렬 알고리즘 손 추적
버블 정렬 1회전 후에는 가장 큰 값이 배열 맨 뒤에 위치한다. 선택 정렬은 한 회전에 교환이 최대 1번뿐이다.
처음 읽는 코드: 변수·값·식·문장
초기값 → 실행 순서 → 최종 출력. =와 ==를 분리한다.
진법 변환과 비트의 자리값
AND: 둘 다 1 / OR: 하나라도 1 / XOR: 서로 다름 / NOT: 반전.
배열·스택·큐·연결 리스트
push/pop은 스택, enqueue/dequeue는 큐. 스택 top과 큐 front를 기록한다.
정렬·탐색의 과정과 복잡도
버블·선택·삽입 평균 O(n²), 병합 O(n log n), 퀵 평균 O(n log n)·최악 O(n²).
재귀 호출표와 DFS·BFS
재귀는 호출 스택을 그리고, BFS는 큐 내용을 회차별로 적는다.

C 언어

자료형과 출력
문자 하나는 'A', 문자열은 "A". char s[]="WEB"는 W,E,B,\0의 4칸이다.
포인터 첫걸음
선언의 *는 포인터 선언, 식의 *는 역참조다. p와 *p는 전혀 다르다.
배열과 포인터 산술
int a[3]={4,8,12}; p=a; → *p=4, *(p+2)=12.
증감식 읽는 법
p 변화와 배열 원소 변화를 별도 열에 기록한다.
문자열과 이차원 배열
int a[2][3]에서 a+1은 다음 행, *(*(a+1)+2)는 a[1][2].
함수 인자와 static
일반 지역변수는 호출마다 별개, 지역 static은 생존 기간이 프로그램 전체다.
배열 포인터와 포인터 배열 최종 구별
int a[2][3]; int (*p)[3]=a; p[1][2]는 a[1][2].
전체 핵심 16개 펼치기
자료형과 출력
문자 하나는 'A', 문자열은 "A". char s[]="WEB"는 W,E,B,\0의 4칸이다.
포인터 첫걸음
선언의 *는 포인터 선언, 식의 *는 역참조다. p와 *p는 전혀 다르다.
배열과 포인터 산술
int a[3]={4,8,12}; p=a; → *p=4, *(p+2)=12.
증감식 읽는 법
p 변화와 배열 원소 변화를 별도 열에 기록한다.
문자열과 이차원 배열
int a[2][3]에서 a+1은 다음 행, *(*(a+1)+2)는 a[1][2].
함수 인자와 static
일반 지역변수는 호출마다 별개, 지역 static은 생존 기간이 프로그램 전체다.
구조체와 연결 자료구조
연결 리스트에서는 선언 순서가 아니라 next 화살표를 따른다. 트리는 left/right와 재귀 호출 순서를 그린다.
비트 연산과 switch
break가 없으면 다음 case까지 계속 실행되는 fall-through를 확인한다.
문자열 처리 함수
dest 버퍼는 복사·연결 후 결과를 담을 만큼 충분히 커야 한다.
C 기호 사전과 실행 뼈대
printf 사용에는 stdio.h, strlen·strcmp에는 string.h를 포함한다.
형 변환·정수 나눗셈·문자 코드
변환을 언제 했는지 괄호로 확인한다. 실수 저장 변수라고 계산도 실수인 것은 아니다.
전위·후위 증가와 조건·반복
각 문장이 끝난 뒤 i와 대입된 변수를 따로 적는다.
배열 초기화·주소·이중 포인터
주소 화살표 pp → p → x. **pp를 바꾸면 x가 바뀐다.
문자열 함수·널 문자·입력 주소
strcmp(a,b)==0이면 내용이 같다. strcmp가 반드시 -1 또는 1을 반환하는 것은 아니다.
지역·전역·static과 메모리 수명
이름의 보이는 범위(scope)와 객체의 생존 기간(lifetime)은 별개다.
배열 포인터와 포인터 배열 최종 구별
int a[2][3]; int (*p)[3]=a; p[1][2]는 a[1][2].

Java

실행 뼈대와 타입
정수 나눗셈은 0 방향 절삭. boolean에 0이나 1을 직접 넣지 않는다.
==와 equals
new String("OK") 두 개는 내용이 같아도 별도 객체다. 배열 내용 비교에는 Arrays.equals를 사용한다.
필드 접근과 오버라이딩
Parent p = new Child(); → 필드는 Parent, override 메서드는 Child.
오버로딩과 형 변환
반환 타입만 다르게 해서는 오버로딩이 되지 않는다.
생성자와 초기화
정적 초기화는 클래스 초기화 시 한 번. 인스턴스 필드 초기화와 생성자는 객체마다 수행한다.
static·매개변수·배열
배열 길이는 a.length, 문자열 길이는 s.length().
필드·static·인스턴스 메서드 판정표
A x = new B(): x.field와 x.staticMethod()는 A, 재정의된 x.method()는 B.
전체 핵심 17개 펼치기
실행 뼈대와 타입
정수 나눗셈은 0 방향 절삭. boolean에 0이나 1을 직접 넣지 않는다.
==와 equals
new String("OK") 두 개는 내용이 같아도 별도 객체다. 배열 내용 비교에는 Arrays.equals를 사용한다.
필드 접근과 오버라이딩
Parent p = new Child(); → 필드는 Parent, override 메서드는 Child.
오버로딩과 형 변환
반환 타입만 다르게 해서는 오버로딩이 되지 않는다.
생성자와 초기화
정적 초기화는 클래스 초기화 시 한 번. 인스턴스 필드 초기화와 생성자는 객체마다 수행한다.
static·매개변수·배열
배열 길이는 a.length, 문자열 길이는 s.length().
문자열 +와 예외
print는 줄바꿈 없음, println은 끝에 줄바꿈. finally는 정상 반환·예외 경로에서도 보통 실행된다.
추상 클래스·인터페이스·제네릭
extends / implements / abstract / final을 구별한다. final 변수는 재대입 불가다.
인터페이스의 default·static 메서드
구현 클래스가 default 메서드를 재정의하면 일반 메서드와 같은 동적 바인딩 규칙에 따라 재정의한 쪽이 호출된다.
Java 기호·타입·배열 생성
배열 a.length / 문자열 s.length() / 리스트 list.size().
산술·증감·단락·삼항 연산
C와 달리 Java의 식 평가 순서는 정해져 있다. 언어별로 규칙을 분리한다.
접근 제어·this·super·final
this.x는 현재 객체 필드, super.x는 부모 필드. static 문맥에는 현재 객체 this가 없다.
업캐스팅·다운캐스팅·다형성
필드·static 선택은 선언 타입, 오버라이딩된 인스턴스 메서드는 실제 객체 타입.
String 메서드와 StringBuilder
"ABCDE".substring(1,4) → "BCD". charAt(0) → 'A'.
예외의 전달·catch 순서·finally
출력 순서는 try에서 실행한 부분 → 맞는 catch → finally → 이어지는 코드.
컬렉션·제네릭·박싱
List remove(int)는 위치 삭제, remove(Object)는 값 삭제.
필드·static·인스턴스 메서드 판정표
A x = new B(): x.field와 x.staticMethod()는 A, 재정의된 x.method()는 B.

Python

기본 문법과 출력
True, False, None의 대소문자를 지킨다. len(a), type(a), int("12"), str(12)를 읽을 수 있어야 한다.
range와 슬라이싱
range(5,0,-2)는 5,3,1. "ABCDE"[1:5:2]는 "BD".
리스트·튜플·집합·딕셔너리
a.append(x)는 한 원소, a.extend(xs)는 여러 원소를 추가한다. dict.items()는 키와 값의 쌍이다.
별칭과 얕은 복사
[[0]*2]*3은 동일한 내부 리스트를 세 번 참조한다. 독립 행은 [[0]*2 for _ in range(3)].
컴프리헨션과 함수
[x*x for x in range(5) if x%2] → [1,9].
문자열과 딕셔너리 순회
for k in d는 키 순회. k[-1]은 키 문자열의 마지막 문자이고 d[k][0]은 값의 첫 원소다.
기본 인자와 반복 리스트 공유
기본 인자 []는 호출마다 새로 만들어지지 않는다. [[0]*2 for _ in range(2)]는 행이 독립적이다.
전체 핵심 21개 펼치기
기본 문법과 출력
True, False, None의 대소문자를 지킨다. len(a), type(a), int("12"), str(12)를 읽을 수 있어야 한다.
range와 슬라이싱
range(5,0,-2)는 5,3,1. "ABCDE"[1:5:2]는 "BD".
리스트·튜플·집합·딕셔너리
a.append(x)는 한 원소, a.extend(xs)는 여러 원소를 추가한다. dict.items()는 키와 값의 쌍이다.
별칭과 얕은 복사
[[0]*2]*3은 동일한 내부 리스트를 세 번 참조한다. 독립 행은 [[0]*2 for _ in range(3)].
컴프리헨션과 함수
[x*x for x in range(5) if x%2] → [1,9].
문자열과 딕셔너리 순회
for k in d는 키 순회. k[-1]은 키 문자열의 마지막 문자이고 d[k][0]은 값의 첫 원소다.
논리·정렬·나눗셈
빈 문자열·빈 컨테이너·0·None은 거짓 취급. //는 floor, %는 나눗셈 항등식을 만족한다.
언패킹과 다중 대입
언패킹 대상 개수와 오른쪽 값 개수가 맞아야 한다. * 붙은 이름은 하나만 쓸 수 있다.
/ · // · % · ** : 기호부터 이해하기
몫 //, 나머지 %, 제곱 **. 7 / 2 = 3.5, 7 // 2 = 3, 7 % 2 = 1.
대입·자료형·변환과 입력
= 대입 / == 값 비교 / int("12") 숫자 변환 / str(12) 문자열 변환.
들여쓰기·조건문·조건식
블록은 들여쓰기로 결정된다. ==, !=, <, <=, >, >=는 비교 연산자.
and · or · not과 단락 평가
0 or 7 → 7 / 3 and 8 → 8 / not [] → True.
for·while·break·continue·반복 else
range(시작, 끝, 간격)의 끝은 포함하지 않는다. while은 종료 조건이 바뀌는지 확인한다.
인덱스와 슬라이스를 손으로 적기
ABCDE[1:4] → BCD / [::2] → ACE / [4:0:-2] → EC.
리스트 메서드·삭제·반환값
append([2,3]) → 중첩 리스트 한 개 추가 / extend([2,3]) → 원소 두 개 추가.
딕셔너리·집합·튜플의 함정
in은 딕셔너리에서 키 포함 검사. 집합 & 교집합, | 합집합, - 차집합, ^ 대칭차.
함수·return·지역 이름·lambda
인자 → 매개변수 → 본문 → 반환값 → 호출자 순서로 추적한다.
문자열 split·join·replace와 출력 형식
문자열은 불변이다. 변환 결과를 대입하지 않으면 원본 이름의 값은 그대로다.
컴프리헨션·enumerate·zip·map
중첩 컴프리헨션은 왼쪽 for가 바깥 반복, 오른쪽 for가 안쪽 반복.
==·is·얕은 복사·깊은 복사
바깥 리스트의 append와 내부 리스트의 append를 구별한다.
기본 인자와 반복 리스트 공유
기본 인자 []는 호출마다 새로 만들어지지 않는다. [[0]*2 for _ in range(2)]는 행이 독립적이다.

SQL

문장 종류와 기본 틀
UPDATE t SET col=값 WHERE 조건; DELETE FROM t WHERE 조건; INSERT INTO t(col) VALUES(값);
SELECT 논리 처리 순서
WHERE는 개별 행을, HAVING은 그룹을 거른다. ORDER BY 없이는 출력 순서를 보장하지 않는다.
NULL과 집계
SUM·AVG는 NULL을 제외한다. 값 10,NULL,20의 AVG는 15이다.
조인과 행 개수
같은 키가 왼쪽 2행·오른쪽 3행이면 해당 키의 조인 결과는 6행.
서브쿼리와 집합 연산
부서별 평균보다 큰 급여: e.salary > (SELECT AVG(x.salary) FROM emp x WHERE x.dept=e.dept).
제약조건과 도메인
CREATE DOMAIN score_t AS INTEGER CHECK (VALUE BETWEEN 0 AND 100); PostgreSQL에서 지원하는 예다.
빈 집합·NULL·COUNT 마지막 점검
WHERE는 TRUE만 남긴다. FALSE와 UNKNOWN은 모두 제외한다.
전체 핵심 16개 펼치기
문장 종류와 기본 틀
UPDATE t SET col=값 WHERE 조건; DELETE FROM t WHERE 조건; INSERT INTO t(col) VALUES(값);
SELECT 논리 처리 순서
WHERE는 개별 행을, HAVING은 그룹을 거른다. ORDER BY 없이는 출력 순서를 보장하지 않는다.
NULL과 집계
SUM·AVG는 NULL을 제외한다. 값 10,NULL,20의 AVG는 15이다.
조인과 행 개수
같은 키가 왼쪽 2행·오른쪽 3행이면 해당 키의 조인 결과는 6행.
서브쿼리와 집합 연산
부서별 평균보다 큰 급여: e.salary > (SELECT AVG(x.salary) FROM emp x WHERE x.dept=e.dept).
제약조건과 도메인
CREATE DOMAIN score_t AS INTEGER CHECK (VALUE BETWEEN 0 AND 100); PostgreSQL에서 지원하는 예다.
패턴과 뷰·인덱스
LIKE '김%' / ORDER BY score DESC, id ASC / CREATE VIEW v AS SELECT ...
CASE 조건식과 NULL 대체
ELSE를 생략하면 어떤 WHEN도 참이 아닌 행은 NULL이 된다.
테이블에서 SELECT 결과 만들기
SELECT 열 FROM 테이블 WHERE 조건 ORDER BY 열 ASC/DESC;
INSERT·UPDATE·DELETE·DDL·권한
INSERT INTO t(열목록) VALUES(값목록); UPDATE t SET 열=값 WHERE 조건; DELETE FROM t WHERE 조건;
GROUP BY·HAVING을 실제 행으로 풀기
행 나열 → WHERE 제거 → 그룹 묶기 → 집계 → HAVING → 출력·정렬.
NULL의 3값 논리와 NOT IN
NULL은 0도 빈 문자열도 아니다. UNKNOWN은 WHERE에서 남지 않는다.
조인의 곱셈·ON과 WHERE·셀프 조인
조인은 키별로 매칭 행들을 나열하고 미매칭 행을 따로 추가한다.
ANY·ALL·EXISTS·집합 연산
>ANY: 하나만 만족 / >ALL: 모두 만족. NULL·빈 집합은 별도로 해석한다.
윈도 함수·순위·뷰·인덱스
점수 90,90,80: RANK 1,1,3 / DENSE_RANK 1,1,2.
빈 집합·NULL·COUNT 마지막 점검
WHERE는 TRUE만 남긴다. FALSE와 UNKNOWN은 모두 제외한다.

데이터베이스 이론

관계 모델과 키
최소성은 속성을 하나라도 빼면 더 이상 유일하게 식별하지 못한다는 뜻이다.
무결성과 설계 단계
개념 설계는 ER 모델, 논리 설계는 관계 스키마, 물리 설계는 저장 구조·접근 경로를 구체화한다.
함수 종속과 정규화
복합키 (학번,과목)에서 학번→학생이름은 부분 종속. 학번→학과코드→학과명은 이행 종속의 전형.
BCNF와 분해
R(학생,과목,교수), (학생,과목)→교수, 교수→과목이면 후보키 (학생,과목),(학생,교수). 3NF는 가능하지만 교수는 슈퍼키가 아니므로 BCNF 위반.
ACID와 동시성
Dirty Read는 미커밋 데이터 읽기, Non-repeatable Read는 같은 행 재조회 값 변화, Phantom Read는 같은 조건의 행 집합 변화.
회복·병행 제어·관계대수
관계대수 σ 선택=행, π 추출=열, ⋈ 조인, ÷ 디비전=모든 조건값과 관련된 대상.
격리 수준의 표준과 구현 차이
표준 Repeatable Read는 Phantom을 허용할 수 있으나 PostgreSQL 구현에서는 막는다.
전체 핵심 14개 펼치기
관계 모델과 키
최소성은 속성을 하나라도 빼면 더 이상 유일하게 식별하지 못한다는 뜻이다.
무결성과 설계 단계
개념 설계는 ER 모델, 논리 설계는 관계 스키마, 물리 설계는 저장 구조·접근 경로를 구체화한다.
함수 종속과 정규화
복합키 (학번,과목)에서 학번→학생이름은 부분 종속. 학번→학과코드→학과명은 이행 종속의 전형.
BCNF와 분해
R(학생,과목,교수), (학생,과목)→교수, 교수→과목이면 후보키 (학생,과목),(학생,교수). 3NF는 가능하지만 교수는 슈퍼키가 아니므로 BCNF 위반.
ACID와 동시성
Dirty Read는 미커밋 데이터 읽기, Non-repeatable Read는 같은 행 재조회 값 변화, Phantom Read는 같은 조건의 행 집합 변화.
회복·병행 제어·관계대수
관계대수 σ 선택=행, π 추출=열, ⋈ 조인, ÷ 디비전=모든 조건값과 관련된 대상.
NoSQL과 CAP 정리
분할 내성은 분산 환경에서 사실상 항상 고려 대상이므로, 실제로는 분할 상황에서 일관성과 가용성 중 무엇을 우선할지 선택하는 문제로 이해한다.
ER 모델·개체·속성·관계
개체→테이블 / 속성→열 / 관계→외래키·연결 테이블. 식별자와 참여 조건도 확인한다.
후보키의 유일성·최소성 찾기
후보키 = 유일성 + 최소성. 최소성은 “속성 개수가 가장 작다”와 다르다.
이상 현상과 1NF→2NF→3NF 분해
1NF 원자값 / 2NF 부분 종속 제거 / 3NF 비주요 속성의 이행 종속 제거.
BCNF·4NF·5NF와 반정규화
BCNF 함수 종속 / 4NF 다치 종속 / 5NF 조인 종속.
병행 제어·격리 수준·잠금
Dirty Read 미커밋 값 / Non-repeatable Read 같은 행의 값 변화 / Phantom 같은 조건의 행 집합 변화.
로그·UNDO·REDO·관계대수와 분산 DB
“모든 필수 과목을 수강한 학생” → 디비전. 관계해석은 원하는 조건을 표현하는 비절차적 관점.
격리 수준의 표준과 구현 차이
표준 Repeatable Read는 Phantom을 허용할 수 있으나 PostgreSQL 구현에서는 막는다.

요구사항·소프트웨어 설계

요구사항과 개발 모형
애자일은 짧은 반복과 피드백. 스크럼의 제품 백로그·스프린트 백로그·스프린트·회고를 구별한다.
UML 관계와 다이어그램
일반화는 상속, 실체화는 인터페이스 구현, 연관은 연결, 의존은 사용. 집합은 빈 마름모, 합성은 찬 마름모를 전체 쪽에 표시한다.
응집도와 결합도
순차 응집은 앞 출력이 뒤 입력, 교환 응집은 같은 자료 사용. 스탬프 결합은 구조 전체 전달, 자료 결합은 필요한 자료 전달.
객체지향과 SOLID
DIP는 고수준 정책이 저수준 구현의 구체 클래스에 직접 묶이지 않도록 추상에 의존한다.
생성 패턴 5개
“관련 객체들의 제품군” → Abstract Factory. “복잡한 생성 순서” → Builder.
구조 패턴 7개
“호환되지 않는 API 연결” Adapter / “추상·구현 계층 분리” Bridge / “대리인” Proxy.
스크럼 리뷰·회고와 책임 구별
리뷰는 제품 결과와 적응, 회고는 팀의 작업 방식 개선.
전체 핵심 18개 펼치기
요구사항과 개발 모형
애자일은 짧은 반복과 피드백. 스크럼의 제품 백로그·스프린트 백로그·스프린트·회고를 구별한다.
UML 관계와 다이어그램
일반화는 상속, 실체화는 인터페이스 구현, 연관은 연결, 의존은 사용. 집합은 빈 마름모, 합성은 찬 마름모를 전체 쪽에 표시한다.
응집도와 결합도
순차 응집은 앞 출력이 뒤 입력, 교환 응집은 같은 자료 사용. 스탬프 결합은 구조 전체 전달, 자료 결합은 필요한 자료 전달.
객체지향과 SOLID
DIP는 고수준 정책이 저수준 구현의 구체 클래스에 직접 묶이지 않도록 추상에 의존한다.
생성 패턴 5개
“관련 객체들의 제품군” → Abstract Factory. “복잡한 생성 순서” → Builder.
구조 패턴 7개
“호환되지 않는 API 연결” Adapter / “추상·구현 계층 분리” Bridge / “대리인” Proxy.
행위 패턴 11개
옵저버는 발행자와 구독자, 전략은 정렬·결제 방식 교체, 상태는 상태 변화에 따른 동작 변화로 떠올린다.
UI와 아키텍처
계층형은 책임별 층, 클라이언트-서버는 요청·서비스 분리, 파이프-필터는 처리 단계의 흐름.
이벤트 기반 아키텍처와 CQRS
이벤트 기반 구조는 발행자와 구독자를 느슨하게 결합해 확장에 유리하지만 전체 흐름 추적이 어려워질 수 있다.
개발 모형·애자일·스크럼의 흐름
나선형의 핵심 단서 위험 분석. 리뷰는 제품, 회고는 작업 과정.
요구 도출·명세·검증·추적성
기능 요구: 수행할 기능 / 비기능 요구: 품질·제약·성능 수준.
UML 관계를 화살표와 수명으로 구별
빈 마름모 집합 / 채운 마름모 합성 / 빈 삼각형 일반화·실체화.
UML 다이어그램의 질문 단서
구조: 클래스·객체·패키지·컴포넌트·배치·복합 구조. 행위: 유스케이스·활동·상태·상호작용.
응집도·결합도를 사례로 판단
응집 약→강: 우연·논리·시간·절차·통신·순차·기능. 결합 약→강: 자료·스탬프·제어·외부·공통·내용.
SOLID를 위반 사례로 이해
단일 책임·개방 폐쇄·리스코프 치환·인터페이스 분리·의존 역전.
디자인 패턴을 상황으로 연결하기
패턴 선택은 구현 모양보다 해결하려는 목적을 본다.
MVC·계층·UI 설계와 서버 책임
UI 원칙 직관성·유효성·학습성·유연성. 책임 분리는 변경 영향을 줄인다.
스크럼 리뷰·회고와 책임 구별
리뷰는 제품 결과와 적응, 회고는 팀의 작업 방식 개선.

테스트·품질

테스트 수준과 목적
Verification은 명세에 맞게 만들었는가, Validation은 실제 목적·사용자 요구에 맞는가.
블랙박스 기법
유효 정수 1~100의 경계 후보: 0,1,2,99,100,101.
화이트박스 커버리지
A OR B에 (T,F),(F,T)는 각 조건 T/F를 포함하지만 전체 결과는 두 번 모두 T라 결정 커버리지가 부족하다.
통합 테스트 도구
스텁=호출되는 가짜 하위 모듈, 드라이버=호출해 주는 가짜 상위 모듈.
복잡도·오라클·성능
참 오라클 전체 결과, 샘플링 일부 입력, 휴리스틱 일부+추정, 일관성 이전/다른 결과 비교. 성능은 처리량·응답시간·경과시간·자원 사용률.
품질과 유지보수
수정 유지보수=결함 수정, 적응=환경 변화, 완전=기능·성능 개선, 예방=미래 장애 예방.
전체 핵심 12개 펼치기
테스트 수준과 목적
Verification은 명세에 맞게 만들었는가, Validation은 실제 목적·사용자 요구에 맞는가.
블랙박스 기법
유효 정수 1~100의 경계 후보: 0,1,2,99,100,101.
화이트박스 커버리지
A OR B에 (T,F),(F,T)는 각 조건 T/F를 포함하지만 전체 결과는 두 번 모두 T라 결정 커버리지가 부족하다.
통합 테스트 도구
스텁=호출되는 가짜 하위 모듈, 드라이버=호출해 주는 가짜 상위 모듈.
복잡도·오라클·성능
참 오라클 전체 결과, 샘플링 일부 입력, 휴리스틱 일부+추정, 일관성 이전/다른 결과 비교. 성능은 처리량·응답시간·경과시간·자원 사용률.
품질과 유지보수
수정 유지보수=결함 수정, 적응=환경 변화, 완전=기능·성능 개선, 예방=미래 장애 예방.
정적 분석과 TDD·BDD
TDD 순서: 실패하는 테스트 작성 → 통과시키는 최소 코드 → 리팩터링.
동등 분할·경계값·결정 테이블
동등 분할 대표값, 경계값 경계 안팎, 결정 테이블 조건 조합.
문장·결정·조건·MC/DC를 표로 확인
각 테스트의 A·B·판정 결과를 표로 적고 기준을 따로 검사한다.
순환 복잡도·테스트 수준·통합 순서
E 간선, N 노드. 코드 줄 수로 노드를 세지 않는다.
정적·동적 테스트와 결함 관리
Verification: 명세대로 만들었나 / Validation: 사용자에게 필요한 것을 만들었나.
성능 테스트·오라클·품질
결함 수정=수정 / OS 변화 대응=적응 / 기능 개선=완전 / 미래 문제 예방=예방.

네트워크

OSI 7계층
허브 L1, 일반 L2 스위치 L2, 라우터 L3. TCP/IP 4계층은 네트워크 접근·인터넷·전송·응용.
TCP·UDP와 주요 프로토콜
HTTP 80, HTTPS 443, SSH 22, DNS 53, SMTP 25. DNS는 UDP와 TCP 모두 사용. DHCP는 주소 설정, ARP는 로컬 IPv4 주소에 대응하는 링크 계층 주소 확인.
서브넷의 기본
/24=256주소, /26=64주소, /28=16주소. 마지막 옥텟 마스크 192,224,240은 블록 크기 64,32,16.
손으로 계산하는 예
네트워크 .64 / 브로드캐스트 .127 / 호스트 .65~.126 / 사용 가능 62개.
라우팅과 오류·흐름 제어
Stop-and-Wait는 확인 후 다음 전송, Sliding Window는 여러 프레임을 허용. Go-Back-N은 오류 이후 연속 재전송, Selective Repeat는 필요한 것만 재전송.
HDLC와 주소 변환
NAT는 주소 변환, PAT는 포트를 함께 사용. 사설 IPv4: 10/8, 172.16/12, 192.168/16.
서브넷 범위를 블록으로 검산
192.168.10.130/26: 네트워크 .128, 브로드캐스트 .191, 통상 사용 호스트 .129~.190(62개).
전체 핵심 14개 펼치기
OSI 7계층
허브 L1, 일반 L2 스위치 L2, 라우터 L3. TCP/IP 4계층은 네트워크 접근·인터넷·전송·응용.
TCP·UDP와 주요 프로토콜
HTTP 80, HTTPS 443, SSH 22, DNS 53, SMTP 25. DNS는 UDP와 TCP 모두 사용. DHCP는 주소 설정, ARP는 로컬 IPv4 주소에 대응하는 링크 계층 주소 확인.
서브넷의 기본
/24=256주소, /26=64주소, /28=16주소. 마지막 옥텟 마스크 192,224,240은 블록 크기 64,32,16.
손으로 계산하는 예
네트워크 .64 / 브로드캐스트 .127 / 호스트 .65~.126 / 사용 가능 62개.
라우팅과 오류·흐름 제어
Stop-and-Wait는 확인 후 다음 전송, Sliding Window는 여러 프레임을 허용. Go-Back-N은 오류 이후 연속 재전송, Selective Repeat는 필요한 것만 재전송.
HDLC와 주소 변환
NAT는 주소 변환, PAT는 포트를 함께 사용. 사설 IPv4: 10/8, 172.16/12, 192.168/16.
URL·가상 네트워크
SDN은 제어 평면과 데이터 평면 분리, NFV는 네트워크 기능을 소프트웨어로 가상화.
HTTP 상태 코드와 무상태성
401은 인증(누구인지) 실패, 403은 인가(권한) 실패로 구분한다.
계층·캡슐화·주소·포트
비트→프레임→패킷→세그먼트/데이터그램→응용 데이터.
TCP 연결·흐름 제어·혼잡 제어
SYN→SYN/ACK→ACK. 흐름=수신자, 혼잡=네트워크.
DNS·DHCP·ARP·ICMP와 포트
DNS 이름 / DHCP 설정 / ARP IPv4-MAC / ICMP 진단.
서브넷 /23·VLSM·호스트 수 역산
50호스트→64주소 블록→/26→사용 가능 62. 네트워크·브로드캐스트는 제외.
라우팅·IPv6·오류 검출
IPv4 32비트 / IPv6 128비트. CRC는 검출, 해밍 코드 등은 조건에 따라 정정도 가능.
서브넷 범위를 블록으로 검산
192.168.10.130/26: 네트워크 .128, 브로드캐스트 .191, 통상 사용 호스트 .129~.190(62개).

운영체제

프로세스와 스레드
상태: 생성→준비→실행→대기→준비→종료. 문맥 교환은 실행 상태 저장·복구.
스케줄링 공식
HRN 우선순위=(대기+서비스)/서비스. 숫자가 큰 작업을 먼저 선택한다.
SRT 손풀이
대기 A=9-0-6=3, B=3-1-2=0, C=4-2-1=1. 평균 4/3.
페이지 교체
처음 빈 프레임에 적재할 때도 페이지 부재다. LRU는 적중 때도 최근 사용 순서를 바꾼다.
메모리와 교착상태
예방은 조건을 깨기, 회피는 안전 상태 유지(은행가), 탐지는 발생 확인, 회복은 중단·선점 등.
동기화·디스크·RAID
RAID 0 스트라이핑·복구 중복 없음 / 1 미러링 / 5 분산 패리티·디스크 1개 장애 대응 / 6 이중 패리티·2개 장애 대응.
선점 계산에서 도착·완료·응답 분리
SRT는 최초 실행시간이 아니라 매 시점의 남은 실행시간으로 선택한다.
전체 핵심 14개 펼치기
프로세스와 스레드
상태: 생성→준비→실행→대기→준비→종료. 문맥 교환은 실행 상태 저장·복구.
스케줄링 공식
HRN 우선순위=(대기+서비스)/서비스. 숫자가 큰 작업을 먼저 선택한다.
SRT 손풀이
대기 A=9-0-6=3, B=3-1-2=0, C=4-2-1=1. 평균 4/3.
페이지 교체
처음 빈 프레임에 적재할 때도 페이지 부재다. LRU는 적중 때도 최근 사용 순서를 바꾼다.
메모리와 교착상태
예방은 조건을 깨기, 회피는 안전 상태 유지(은행가), 탐지는 발생 확인, 회복은 중단·선점 등.
동기화·디스크·RAID
RAID 0 스트라이핑·복구 중복 없음 / 1 미러링 / 5 분산 패리티·디스크 1개 장애 대응 / 6 이중 패리티·2개 장애 대응.
세마포어 동작 추적
뮤텍스는 점유한 주체가 있는 상호배제 도구, 세마포어는 개수 기반의 신호 도구로 구분한다.
CPU 스케줄링 계산의 출발점
도착·완료·최초 실행을 시간축에서 읽고 공식을 적용한다.
RR·HRN·기아·에이징
RR은 큐 회전, HRN은 큰 비율 우선, 에이징은 오래 기다린 작업 배려.
FIFO·LRU·OPT 페이지 교체 추적표
FIFO 적중 시 순서 유지 / LRU 적중 시 최근 사용 갱신.
페이징·주소 변환·단편화
페이징 고정 크기·내부 단편화 / 세그먼트 가변 크기·외부 단편화.
교착·안전 상태·세마포어
안전 상태는 완료 가능한 순서가 존재. 불안전 상태가 즉시 교착이라는 뜻은 아니다.
디스크 이동량·파일·UNIX 권한·RAID
이동량은 인접 방문 위치 차이 절댓값의 합. chmod 754 → rwxr-xr--.
선점 계산에서 도착·완료·응답 분리
SRT는 최초 실행시간이 아니라 매 시점의 남은 실행시간으로 선택한다.

보안·신기술

보안 목표와 접근통제
DAC 소유자 재량 / MAC 보안 등급·정책 강제 / RBAC 역할 / ABAC 속성 기반.
암호·해시·전자서명
AES 대칭 / RSA 공개키 / SHA-256 해시. 기밀 전송은 수신자 공개키 암호화, 서명은 송신자 개인키 서명.
웹 공격
SQLi는 매개변수화 질의, XSS는 출력 문맥에 맞는 인코딩, CSRF는 토큰·쿠키 정책·출처 검증, SSRF는 대상 제한으로 대응.
네트워크 공격
DDoS는 다수 출발지, DRDoS는 반사 서버들을 이용. ARP 스푸핑은 IP-MAC 대응을 속인다.
악성코드와 운영 보안
IDS 탐지 / IPS 차단 / WAF 웹 요청 방어 / DLP 정보 유출 방지 / NAC 네트워크 접근통제.
관리체계·개발 보안
비밀번호는 평문이나 빠른 단순 해시만으로 보관하지 않고 salt와 적절한 비밀번호 해싱을 사용한다.
공격명을 쓰기 전에 실행 주체 확인
브라우저 스크립트=XSS, 사용자 권한 요청=CSRF, DB 질의 변조=SQLi, 서버의 대리 요청=SSRF.
전체 핵심 16개 펼치기
보안 목표와 접근통제
DAC 소유자 재량 / MAC 보안 등급·정책 강제 / RBAC 역할 / ABAC 속성 기반.
암호·해시·전자서명
AES 대칭 / RSA 공개키 / SHA-256 해시. 기밀 전송은 수신자 공개키 암호화, 서명은 송신자 개인키 서명.
웹 공격
SQLi는 매개변수화 질의, XSS는 출력 문맥에 맞는 인코딩, CSRF는 토큰·쿠키 정책·출처 검증, SSRF는 대상 제한으로 대응.
네트워크 공격
DDoS는 다수 출발지, DRDoS는 반사 서버들을 이용. ARP 스푸핑은 IP-MAC 대응을 속인다.
악성코드와 운영 보안
IDS 탐지 / IPS 차단 / WAF 웹 요청 방어 / DLP 정보 유출 방지 / NAC 네트워크 접근통제.
관리체계·개발 보안
비밀번호는 평문이나 빠른 단순 해시만으로 보관하지 않고 salt와 적절한 비밀번호 해싱을 사용한다.
신기술 묶음
블록체인=분산 원장·합의·연결 구조 / 디지털 트윈=실물과 대응하는 디지털 모델 / SIEM=보안 이벤트 수집·상관분석.
클라우드 네이티브·생성형 AI 확장 용어
RAG는 모델을 재학습하는 것이 아니라 검색한 문서를 프롬프트에 덧붙여 근거로 쓰는 방식이다. 제로 트러스트의 핵심은 "절대 신뢰하지 말고 항상 검증하라".
기밀성·무결성·가용성과 인증·인가
CIA 기밀성·무결성·가용성. 신원 확인→권한 검사→기록·감사.
대칭키·공개키·해시·서명·인증서
AES·DES·3DES·SEED·ARIA 대칭키 / RSA 공개키 / SHA 계열 해시.
접근통제 모델·Bell-LaPadula·Biba
BLP 기밀성: 상위 읽기·하위 쓰기 금지 / Biba 무결성: 하위 읽기·상위 쓰기 금지.
공격 단서로 XSS·CSRF·SQLi·SSRF 구별
SQLi 매개변수화 / XSS 출력 문맥 인코딩 / CSRF 토큰·출처·쿠키 정책 / SSRF 대상·네트워크 제한.
DoS·사회공학·악성코드 용어
DDoS 다수 출발지 / DRDoS 반사·증폭. 공격 이름은 패킷·전파·유도 단서로 판별.
개발 보안·TOCTOU·장비·관리
위협은 잠재 원인, 취약성은 약점, 위험은 발생 가능성과 영향의 관점.
신기술을 서비스·구조·목적으로 묶기
블록체인 분산 원장 / 디지털 트윈 실물 대응 모델 / IoT 연결 사물 / MSA 작은 서비스 분리.
공격명을 쓰기 전에 실행 주체 확인
브라우저 스크립트=XSS, 사용자 권한 요청=CSRF, DB 질의 변조=SQLi, 서버의 대리 요청=SSRF.

통합 구현·배포

연계와 인터페이스
JSON은 데이터 교환 형식, XML은 태그 기반 구조, SOAP는 XML 기반 메시지 프로토콜, REST는 자원 중심 제약의 아키텍처 스타일.
미들웨어와 트랜잭션 연계
동기는 응답 대기, 비동기는 요청과 결과 처리를 분리. 송수신 전문의 헤더·데이터·종료 구조와 오류 처리를 구분한다.
형상 관리와 배포
Git commit은 로컬 이력, push는 원격 반영. 릴리스 노트는 변경·수정·알려진 문제·영향을 전달한다.
패키징과 문서·DRM
DRM 구성: 콘텐츠 제공자, 배포자, 클리어링 하우스, 소비자, 패키저, 컨트롤러 등을 역할로 이해한다.
추가 단답 점검
Full 백업 전체 / Incremental 직전 백업 이후 / Differential 마지막 전체 백업 이후 변경분.
IaC와 GitOps
IaC는 수동으로 콘솔에서 서버를 설정하는 대신 코드로 재현 가능하게 만든다. GitOps는 배포 상태를 Git 커밋 이력으로 추적할 수 있게 한다.
안전성과 멱등성 답안 구별
GET·HEAD는 안전/멱등, PUT·DELETE는 멱등, POST는 일반적으로 멱등 보장이 없다.
전체 핵심 12개 펼치기
연계와 인터페이스
JSON은 데이터 교환 형식, XML은 태그 기반 구조, SOAP는 XML 기반 메시지 프로토콜, REST는 자원 중심 제약의 아키텍처 스타일.
미들웨어와 트랜잭션 연계
동기는 응답 대기, 비동기는 요청과 결과 처리를 분리. 송수신 전문의 헤더·데이터·종료 구조와 오류 처리를 구분한다.
형상 관리와 배포
Git commit은 로컬 이력, push는 원격 반영. 릴리스 노트는 변경·수정·알려진 문제·영향을 전달한다.
패키징과 문서·DRM
DRM 구성: 콘텐츠 제공자, 배포자, 클리어링 하우스, 소비자, 패키저, 컨트롤러 등을 역할로 이해한다.
추가 단답 점검
Full 백업 전체 / Incremental 직전 백업 이후 / Differential 마지막 전체 백업 이후 변경분.
IaC와 GitOps
IaC는 수동으로 콘솔에서 서버를 설정하는 대신 코드로 재현 가능하게 만든다. GitOps는 배포 상태를 Git 커밋 이력으로 추적할 수 있게 한다.
EAI 유형·ESB·연계 흐름
직접 연결 P2P / 중앙 연결 허브 / 공통 통로 버스. 송신→변환→전달→검증→반영.
REST·HTTP·SOAP·WSDL·UDDI
REST 스타일 / HTTP 통신 의미 / JSON·XML 형식 / SOAP 메시지 / WSDL 기술 / UDDI 탐색.
미들웨어·DB 연결·서버 흐름
RPC 호출 / MOM 메시지 / ORB 객체 / TP 모니터 트랜잭션 / WAS 응용 실행.
형상 관리·빌드·배포 전략
CI 통합·검증 / 전달 배포 가능 / 자동 배포 운영 반영. Blue-Green 두 환경, Canary 일부, Rolling 순차.
백업·복구·RPO·RTO·패키징·DRM
RPO 데이터 손실 허용 / RTO 복구 소요 목표. 증분 직전 이후, 차등 전체 이후.
안전성과 멱등성 답안 구별
GET·HEAD는 안전/멱등, PUT·DELETE는 멱등, POST는 일반적으로 멱등 보장이 없다.

답안을 내기 전

  • 출력의 공백·줄바꿈·대소문자·소수 자릿수
  • SQL의 NULL·중복·미매칭 행과 ORDER BY 조건
  • 계산의 도착시간·선점·단위·반올림 조건
  • 빈칸 순서, 요구한 한글·영문 용어, 모순되는 복수 답안