예상 모의 2회 실전 E30

마지막 세트. 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())
정답3 dlrow
체인은 왼쪽부터 한 단계씩: upper() → "HELLO WORLD"에서 'L'은 3개. split()[1] → "World" → [::-1] → "dlroW" → lower() → "dlrow". print의 콤마 = 공백 구분. 2025 1회 문자열 체인 유형의 재현.
예상 2회 · 5번Java

다음 코드의 출력을 쓰시오.

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절 표와 같다.

문항분야가는 장무엇을 묻나
1JavaE06static total 과 생성 순서 num
2CE02짝수 합 · 홀수 합 배열 반복
3CE0436 의 약수 개수
4PythonE07upper · count · split · 역순
5JavaE06배열 참조 대입과 clone 의 차이
6CE04do-while 2씩 증가 — 끝값과 합
7PythonE07map lambda 제곱 리스트
8JavaE05super.g() 안의 f() 는 자식 것
9CE03대문자 개수와 s[1] - 32
10SQLE08INNER JOIN 과 LEFT JOIN 건수
11SQLE09UPDATE 문 작성
12DBE10삽입 · 삭제 · 갱신 이상
13DBE10로킹 단위와 로크 수 · 병행성 · 오버헤드
14네트워크E11전송 · 네트워크 · 데이터링크 계층
15네트워크E12IPv6 128비트와 애니캐스트
16보안E14Ping of Death 와 LAND
17보안E14IDS 와 IPS
18디자인패턴E17스트래티지와 커맨드
19테스트E18V모델 테스트 4단계 순서
20OSE16HRN 우선순위 계산

이 회차에서 눈여겨볼 문항

문항왜 갈리나
5번b = a 는 같은 배열, c = a.clone() 은 새 배열. a 는 9 2 3
8번super.g() 는 A.g 를 돌지만 그 안의 f() 는 동적으로 B.f(5). 6 + f() 5 = 11
13번로킹 단위가 커지면 로크 수 감소 · 병행성 낮아짐 · 오버헤드 감소. 셋 다 같은 방향이다
20번A (5 + 5) ÷ 5 = 2, B (6 + 2) ÷ 2 = 4, C (12 + 3) ÷ 3 = 5. C → B → A

채점 결과는 오답노트에 회차별 점수와 틀린 문항 목록으로 모인다. 세트를 하나 끝낼 때마다 거기서 같은 장에서 반복해서 틀리는지를 본다. 두 세트에서 같은 장이 나오면 그 장의 06절 훈련을 그날 5문항 푼다.

04다음

왜 이걸 하나 — 세트의 결과는 다음에 열 장의 이름이어야 한다.