프로그래밍 언어 활용
실기 시험의 절반 이상이 코드 읽기 문제입니다. C, Java, Python 중 최소 2개 이상의 출력 결과를 정확히 맞춰야 합니다.
C 언어 핵심
포인터
int a = 10;
int *p = &a;
printf("%d", *p); // 10
&a: a의 주소
*p: p가 가리키는 값
p: 주소 자체
포인터 문제는 거의 매회 출제됩니다. 주소 연산자(&)와 간접 참조 연산자(*)를 확실히 구분하세요.
배열과 포인터
int arr[3] = {10, 20, 30};
int *p = arr;
printf("%d", *(p + 1)); // 20
arr은 배열의 시작 주소, p + 1은 다음 원소를 가리킵니다.
Java 핵심
오버라이딩 vs 오버로딩
| 구분 | 오버라이딩 | 오버로딩 |
|---|
| 의미 | 부모 메서드 재정의 | 같은 이름, 다른 매개변수 |
| 조건 | 메서드명, 매개변수, 반환타입 동일 | 메서드명만 동일 |
| 관계 | 상속 필수 | 같은 클래스 내 가능 |
상속 관련 출력 결과 문제에서 오버라이딩 여부를 판단하는 게 핵심입니다.
추상 클래스 vs 인터페이스
| 구분 | 추상 클래스 | 인터페이스 |
|---|
| 키워드 | abstract class | interface |
| 다중 상속 | 불가 | 가능 |
| 구현 메서드 | 가질 수 있음 | 기본적으로 불가 (Java 8+ default 메서드) |
Python 핵심
a = [1, 2, 3, 4, 5]
print(a[1:4]) # [2, 3, 4]
print(a[::-1]) # [5, 4, 3, 2, 1]
- 슬라이싱:
[시작:끝:간격], 끝 인덱스는 미포함
//: 정수 나눗셈, %: 나머지, **: 거듭제곱
데이터베이스
SQL 분류
| 분류 | 명령어 | 설명 |
|---|
| DDL | CREATE, ALTER, DROP, TRUNCATE | 구조 정의 |
| DML | SELECT, INSERT, UPDATE, DELETE | 데이터 조작 |
| DCL | GRANT, REVOKE | 권한 제어 |
| TCL | COMMIT, ROLLBACK, SAVEPOINT | 트랜잭션 제어 |
트랜잭션 ACID
| 속성 | 의미 |
|---|
| Atomicity (원자성) | 전부 실행 or 전부 취소 |
| Consistency (일관성) | 실행 전후 데이터 일관성 유지 |
| Isolation (격리성) | 트랜잭션 간 간섭 불가 |
| Durability (영속성) | 완료된 트랜잭션 결과는 영구 반영 |
ACID 각 속성의 의미를 한 줄로 설명할 수 있어야 합니다. 단답형 단골 문제입니다.
정규화
| 단계 | 제거 대상 |
|---|
| 1NF | 도메인이 원자값 |
| 2NF | 부분 함수 종속 제거 |
| 3NF | 이행 함수 종속 제거 |
| BCNF | 결정자가 후보키가 아닌 함수 종속 제거 |
이상(Anomaly)
- 삽입 이상: 불필요한 데이터를 함께 삽입해야 하는 문제
- 갱신 이상: 일부만 수정 시 데이터 불일치
- 삭제 이상: 필요한 데이터까지 같이 삭제됨
소프트웨어 공학
개발 방법론
| 방법론 | 특징 |
|---|
| 폭포수 | 순차적, 되돌아가기 어려움 |
| 애자일 | 반복·점진적, 고객 피드백 중시 |
| 나선형 | 위험 분석 중심, 대규모 프로젝트 |
| 프로토타입 | 시제품 먼저 제작, 요구사항 명확화 |
UML 다이어그램
구조 다이어그램: 클래스, 객체, 컴포넌트, 배치, 패키지, 복합구조
행위 다이어그램: 유스케이스, 시퀀스, 활동, 상태, 커뮤니케이션, 타이밍
유스케이스 다이어그램의 구성요소(액터, 유스케이스, 관계)와 관계 유형(include, extend, 일반화)을 구분하는 문제가 자주 나옵니다.
디자인 패턴
| 생성 패턴 | 구조 패턴 | 행위 패턴 |
|---|
| Singleton | Adapter | Observer |
| Factory Method | Bridge | Strategy |
| Abstract Factory | Decorator | Template Method |
| Builder | Facade | Command |
| Prototype | Proxy | Iterator |
Singleton, Observer, Factory Method, Strategy는 설명을 보고 패턴 이름을 맞추는 문제가 자주 출제됩니다.
보안
암호화 방식
| 구분 | 대칭키 | 비대칭키 |
|---|
| 키 | 암·복호화 키 동일 | 공개키·개인키 분리 |
| 알고리즘 | AES, DES, 3DES | RSA, ECC |
| 속도 | 빠름 | 느림 |
공격 기법
| 공격 | 설명 |
|---|
| SQL Injection | SQL 구문 삽입으로 DB 조작 |
| XSS | 악성 스크립트를 웹 페이지에 삽입 |
| CSRF | 사용자 인증을 도용해 요청 위조 |
| DDoS | 다수의 시스템으로 서비스 마비 |
자주 나오는 단답형 키워드
| 키워드 | 의미 |
|---|
| 결합도 (Coupling) | 모듈 간 의존 정도 → 낮을수록 좋음 |
| 응집도 (Cohesion) | 모듈 내부 기능의 관련 정도 → 높을수록 좋음 |
| 형상관리 | 소프트웨어 변경 사항을 체계적으로 추적·관리 |
| 리팩토링 | 기능 변경 없이 코드 구조 개선 |
| 테스트 커버리지 | 구문/결정/조건/MC-DC |
직접 문제를 풀어보세요
매번 새로운 모의고사와 무한 풀이 모드로 실전 감각을 키울 수 있습니다.