마지막 세트. clone 과 참조 대입, super.g() 안의 f(), 로킹 단위, HRN 우선순위, V모델 4단계. 12세트의 점수 추이를 오답노트에서 본다
왜 이 장을 하나
마지막 세트다. 5번 clone 은 새 배열 · 참조 대입은 같은 배열, 8번 super.g() 안의 f() 는 자식 것, 13번 로킹 단위가 커지면 로크 수 · 병행성 · 오버헤드가 전부 줄어든다는 것, 20번 HRN 은 (대기 + 서비스) ÷ 서비스. 이 세트를 채점한 뒤 오답노트의 12세트 점수표가 완성된다.
다루는 것예상 모의 2회 20문항 · 복원본
시계150분 · 실제 시험과 같다
끝나면문항마다 가는 장이 표로 나온다
01푸는 법
왜 이걸 하나 — 세트는 시험장과 같은 조건에서만 숫자가 된다. 조건은 E01 과 같다.
규칙은 E01 진단의 01절 그대로다. 시작을 누르면 150분이 돌고, 1회독 100분 · 2회독 40분 · 검토 10분으로 나눈다. 한 문항에 5분이 넘으면 답 칸을 비우고 넘어가며, 정답은 20문항을 다 적은 뒤에 연다.
이 회차의 배점은 프로그래밍 9문항(45점) · SQL·DB 4문항(20점) · SW공학 3문항(15점) · 네트워크 2문항(10점) · 보안 2문항(10점)이다. 코드 문항 수만큼 5분씩을 1회독에서 먼저 떼어 두고, 남는 시간을 용어에 쓴다. 용어는 아는 것을 바로 적고 모르는 것은 비운다 — 용어에서 고민하는 시간이 코드 한 문항의 값이다.
자가 판정은 답안지에 그대로 적었을 때 채점자가 맞다고 할 것인가 하나다. 철자 하나, 줄바꿈 하나, 기호 대신 이름이면 틀렸다를 누른다. 후하게 준 5점은 시험장에서 사라진다.
02실전 세트
왜 이걸 하나 — 20문항을 한 번에 150분 안에 푸는 것 자체가 연습이다. 분야 장의 문제와 같은 문항이어도 조건이 다르다.
시작을 누르면 시계가 돌고 화면을 닫아도 이어진다. 다 적은 뒤 문항마다 정답 보기 → 맞았다 · 틀렸다를 누르면 위 막대에 점수와 분야별 결과가 모인다. 이 세트에서 채점한 기록은 분야 장의 같은 문항에도 그대로 보인다.
예상 2회 · 1번Java
다음 코드의 출력을 쓰시오.
class Counter {
static int total = 0;
int num;
Counter() { total++; num = total; }
}
public class Main {
public static void main(String[] args) {
Counter a = new Counter();
Counter b = new Counter();
Counter c = new Counter();
System.out.print(Counter.total + "" + a.num + b.num + c.num);
}
}
정답3123
static total은 "공용 게시판" — 객체 3개가 하나를 공유하며 1,2,3으로 증가(최종 3). num은 각자의 사물함이라 생성 순서대로 1,2,3. total + ""에서 문자열 연결 모드가 시작되어 "3"+"1"+"2"+"3". 2023 1회 Q1·2024 3회 Q6의 결합 유형.
예상 2회 · 2번C
다음 코드의 출력을 쓰시오.
int a[] = {3, 8, 5, 2, 7};
int s1 = 0, s2 = 0;
for (int i = 0; i < 5; i++) {
if (a[i] % 2 == 0) s1 += a[i];
else s2 += a[i];
}
printf("%d,%d", s1, s2);
정답10,15
짝수(%2==0): 8+2=10, 홀수: 3+5+7=15. 출력 서식의 콤마까지 그대로 "10,15" — 공백을 넣으면 오답입니다. 변수 추적표(i, a[i], s1, s2)를 그리는 습관이 정확도를 만듭니다.
예상 2회 · 3번C
다음 코드의 출력을 쓰시오.
int n = 36, cnt = 0;
for (int i = 1; i <= n; i++)
if (n % i == 0) cnt++;
printf("%d", cnt);
정답9
36의 약수: 1, 2, 3, 4, 6, 9, 12, 18, 36 → 9개. n % i == 0 = "나누어떨어짐 = 약수". 완전수(2023 3회)·배수 개수(2023 2회)와 같은 계열 — 코드보다 수학으로 검산하면 빠릅니다.
예상 2회 · 4번Python
다음 코드의 출력을 쓰시오.
s = "Hello World"
print(s.upper().count('L'), s.split()[1][::-1].lower())
int[] a = {1, 2, 3};
int[] b = a;
b[0] = 9;
int[] c = a.clone();
c[1] = 8;
System.out.print(a[0] + "" + a[1] + a[2]);
정답923
b = a는 "같은 집을 가리키는 쪽지 복사" — b[0]=9는 a에도 반영. clone()은 "새 집 짓기" — c[1]=8은 a와 무관. 최종 a={9,2,3}. 2024 2회 Q1(배열 ==)·2025 2회 Q15와 같은 참조 원리.
예상 2회 · 6번C
다음 코드의 출력을 쓰시오.
int i = 0, sum = 0;
do {
sum += i;
i += 2;
} while (i < 10);
printf("%d %d", i, sum);
정답10 20
sum에 0+2+4+6+8=20이 쌓이고, i는 10이 되는 순간 조건(i<10) 탈락. 탈출 직후 i의 값(10)을 출력한다는 것이 함정 — 마지막으로 더해진 8과 혼동하지 마세요. do-while은 "일단 한 번은 실행".
예상 2회 · 7번Python
다음 코드의 출력을 쓰시오.
a = [1, 2, 3, 4, 5]
b = list(map(lambda x: x * x, a))
print(b[2] + b[-1])
정답34
map = "컨베이어 벨트에 전원 통과" — 모든 원소를 제곱해 b=[1,4,9,16,25]. b[2]=9(0부터 셈), b[-1]=25(뒤에서 첫 번째) → 34. 람다는 2025 2회 Java에서 첫 출제 — Python 쪽도 대비 필수.
예상 2회 · 8번Java
다음 코드의 출력을 쓰시오.
class A {
int f() { return 3; }
int g() { return f() + 1; }
}
class B extends A {
int f() { return 5; }
int g() { return super.g() + f(); }
}
public class Main {
public static void main(String[] args) {
System.out.print(new B().g());
}
}
정답11
B.g() → super.g()는 A의 g() 코드를 실행하지만, 그 안의 f()는 동적 바인딩으로 B.f()=5 → 5+1=6. 여기에 +f()=5 → 11. "super는 부모의 코드를 빌릴 뿐, 오버라이딩은 여전히 살아있다" — 최고급 함정.
예상 2회 · 9번C
다음 코드의 출력을 쓰시오.
char s[] = "KoreA";
int cnt = 0;
for (int i = 0; s[i] != '\0'; i++)
if (s[i] >= 'A' && s[i] <= 'Z') cnt++;
printf("%d%c", cnt, s[1] - 32);
정답2O
대문자는 K와 A → cnt=2. s[1]='o'(111)−32=79='O'(대문자 변환). 소문자−32=대문자, 대문자+32=소문자 — 아스키 32 차이는 3년 내내 반복된 부품입니다.
예상 2회 · 10번SQL
사원(사번, 이름, 부서코드): (1,김,A) (2,이,B) (3,박,NULL) / 부서(부서코드, 부서명): (A,영업) (B,개발) ① SELECT COUNT(*) FROM 사원 s INNER JOIN 부서 d ON s.부서코드 = d.부서코드; ② SELECT COUNT(*) FROM 사원 s LEFT JOIN 부서 d ON s.부서코드 = d.부서코드; 각각의 결과는?
정답① 2 ② 3
INNER = "양쪽에 모두 있는 짝만"(박은 부서코드 NULL이라 탈락 → 2). LEFT = "왼쪽(사원)은 전원 유지, 짝 없으면 NULL 채움"(박도 포함 → 3). JOIN 행 수 계산은 2023 2회·2024 2회 기출 흐름.
예상 2회 · 11번SQL
학생 테이블에서 이름이 '홍길동'인 학생의 학년을 4로 변경하는 SQL문을 작성하시오.
정답UPDATE 학생 SET 학년 = 4 WHERE 이름 = '홍길동';
UPDATE—SET 짝 필수 (INTO나 FROM을 쓰면 오답). 문자열만 작은따옴표, 숫자는 그대로. DELETE(2023 1회)·INSERT(2023 2회)가 나왔으니 UPDATE 작성이 유력한 다음 타자입니다.
예상 2회 · 12번DB
정규화하지 않은 테이블에서 데이터 중복 때문에 발생하는 이상(Anomaly) 현상 3가지를 쓰시오.
정답삽입 이상, 삭제 이상, 갱신 이상
"수강 테이블에 학생+과목이 섞여 있으면": 과목 없는 신입생을 못 넣고(삽입), 마지막 수강생을 지우면 과목 정보까지 사라지고(삭제), 학생 주소를 바꾸려면 여러 행을 고쳐야 함(갱신). 정규화 문제(2024 1회)의 짝꿍 개념 — 함께 나올 확률이 높습니다.
예상 2회 · 13번DB
로킹(Locking) 단위가 커질수록: 로크의 수는 ( ① ), 병행성(동시성) 수준은 ( ② ), 관리 오버헤드는 ( ③ ). 괄호에 증가/감소(높아짐/낮아짐)를 쓰시오.
정답① 감소 ② 낮아짐 ③ 감소
"도서관 전체를 잠그기(큰 단위) vs 책 한 권씩 잠그기(작은 단위)" — 통째로 잠그면 자물쇠는 적게 들지만(로크 수·오버헤드 감소) 다른 사람이 못 들어옵니다(병행성 저하). 반비례 관계 하나만 기억하면 전부 유도 가능. 2023 2회 로킹 기출의 심화 예상.
예상 2회 · 14번네트워크
OSI 계층 매칭: ① 세그먼트 단위로 종단 간 신뢰성 있는 전송을 담당(TCP/UDP) ② 패킷 단위로 경로 설정을 담당하며 라우터가 동작 ③ 프레임 단위로 인접 노드 간 오류·흐름 제어를 담당하며 스위치가 동작
정답① 전송 계층 ② 네트워크 계층 ③ 데이터링크 계층
"단위(PDU)-장비-프로토콜" 삼각 매칭: 세그먼트-게이트웨이-TCP / 패킷-라우터-IP / 프레임-스위치-HDLC. 개념 4-1 표의 굵은 글씨 그대로 — 계층 매칭은 언제든 다시 나옵니다.
예상 2회 · 15번네트워크
IPv6는 ( ① )비트 주소 체계를 사용하며, 주소 유형은 유니캐스트·멀티캐스트·( ② ) 3가지이다(IPv4의 브로드캐스트가 사라짐). 괄호를 채우시오.
정답① 128 ② 애니캐스트 (Anycast)
IPv4(32비트)의 4배 = 128비트, 16진수 콜론 표기. 애니캐스트 = "가장 가까운 지점 한 곳에만 배달"(편의점 아무 지점). 2024 1회 기출의 재출제 대비 — 전환 기술 3종(듀얼 스택·터널링·주소 변환)도 세트로.
예상 2회 · 16번보안
① 규정 크기보다 큰 ICMP 패킷을 보내 시스템을 마비시키는 공격 ② 출발지 IP와 목적지 IP를 모두 피해자 주소로 동일하게 위조해 전송하는 공격
정답① Ping of Death ② LAND Attack
"거대한 택배 폭탄" = Ping of Death, "발신인=수신인으로 적어 자기 자신에게 무한 반송" = LAND. SYN 플러딩(2025 2회)·스머프(2024 3회)가 이미 나왔으니 남은 DoS 2종이 유력 후보입니다.
예상 2회 · 17번보안
① 네트워크 침입을 실시간 탐지하여 관리자에게 알리는 시스템 ② 탐지에 그치지 않고 침입을 자동으로 차단까지 수행하는 시스템 (영문 약자)
정답① IDS ② IPS
IDS = "CCTV"(보고만 함, Detection), IPS = "경비원"(막기까지 함, Prevention). D와 P 한 글자 차이가 탐지/차단을 가릅니다. WAF(웹 전용)·방화벽(정책 차단)과의 구분도 함께.
예상 2회 · 18번디자인패턴
① 알고리즘군을 각각 캡슐화하여 실행 중에 동적으로 교체할 수 있게 하는 행위 패턴 ② 요청 자체를 객체로 캡슐화하여 요청의 저장·취소(Undo)·큐잉이 가능하게 하는 행위 패턴
정답① 스트래티지 (Strategy) ② 커맨드 (Command)
Strategy = "내비 경로 옵션(최단/무료/고속)을 주행 중 갈아끼우기", Command = "식당 주문서(요청을 종이로 만들어 보관·취소 가능)". Proxy·Adapter·Iterator·Observer·Visitor·Bridge는 기출 완료 — 미출제 행위 패턴이 다음 후보군입니다.
예상 2회 · 19번테스트
V모델의 테스트 수준 4단계를 실행 순서대로 나열하시오: (시스템 테스트 / 단위 테스트 / 인수 테스트 / 통합 테스트)
정답단위 테스트 → 통합 테스트 → 시스템 테스트 → 인수 테스트
자동차 공장 순서: 부품 검사(단위) → 조립 확인(통합) → 완성차 주행(시스템) → 고객 시승(인수). 인수 단계의 알파(개발자 환경)/베타(사용자 환경) 구분까지가 한 세트 — 스텁/드라이버(통합)는 2026 1회 기출.
예상 2회 · 20번OS
HRN 스케줄링에서 우선순위 = (대기시간 + 서비스시간) ÷ 서비스시간이다. 다음 프로세스의 실행 우선순위를 높은 순서로 나열하시오.
프로세스 대기시간 서비스시간
A 5 5
B 6 2
C 12 3
정답C → B → A
A=(5+5)/5=2, B=(6+2)/2=4, C=(12+3)/3=5 → 값이 클수록 먼저. HRN은 "오래 기다린 짧은 작업 우대"로 SJF의 기아(starvation)를 해결한 비선점 기법. SRT(2024 2회)·RR(2025 2회)·SJF(2025 2회)가 나왔으니 HRN 계산이 남은 유력 후보입니다.
03채점 뒤 할 일
왜 이걸 하나 — 점수보다 어느 장으로 돌아가느냐가 결과다. 문항마다 가는 장이 정해져 있다.
코드 9문항 중 C 4 · Java 3 · Python 2 다. 1번은 static total 이 셋을 세고 num 은 생성 순서라 3123, 5번은 b 가 a 와 같은 배열이라 a[0] 이 9 로 바뀌고 c 는 clone 이라 a 에 영향이 없어 923 이다. 8번은 super.g() 가 A 의 g 를 돌지만 그 안의 f() 는 B 것(5)이라 6 + 5 = 11.
6번 do-while 은 i 가 0 2 4 6 8 을 더한 뒤 10 이 되어 멈추므로 끝값 10 과 합 20 둘을 적는다. 9번은 대문자 K · A 두 개와 s[1] − 32 = O 라 2O 다. 4번 Python 은 upper · count · split · 역순 · lower 가 한 줄에 다 있어 중간 값을 줄마다 적는다.
용어 11문항은 SQL·DB 4(INNER/LEFT JOIN 건수 · UPDATE 작성 · 이상 3종 · 로킹 단위) · SW공학 3(스트래티지/커맨드 · V모델 순서 · HRN) · 네트워크 2(OSI 3계층 · IPv6) · 보안 2(Ping of Death/LAND · IDS/IPS)다. 10번은 NULL 부서코드가 INNER 에서는 빠지고 LEFT 에서는 남아 2 와 3 이다.
문항마다 가는 장
틀린 문항의 「가는 장」을 열면 그 문항이 04절에 그대로 있고, 앞뒤로 같은 꼴의 문항이 붙어 있다. 몰라서 틀렸으면 그 장 03절부터, 알았는데 틀렸으면 05절만 읽는다. 판정 기준은 E01 의 03절 표와 같다.