1. 다음은 Java 코드에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오.
public class Main{
static String[] s = new String[3];
static void func(String[]s, int size){
for(int i=1; i<size; i++){
if(s[i-1].equals(s[i])){
System.out.print("O");
}else{
System.out.print("N");
}
}
for (String m : s){
System.out.print(m);
}
}
public static void main(String[] args){
s[0] = "A";
s[1] = "A";
s[2] = new String("A");
func(s, 3);
}
}
정답 : OOAAA
풀이 :
String s = { "A", "A", "A" };
s[0], s[1]은 String Pool에 저장된 리터럴 문자열을 가리킴
s[2]는 heap영역에 새로운 String 객체를 생성
func(s, 3) 호출
s를 순회하면서 다음 인덱스의 값과 .equals 여부 확인
※ .equals는 내용(문자열 값)을 비교하는 함수
※ ==은 같은 메모리 주소를 가리키는지 확인
s[0], s[1], s[2]모두 .equals로 서로 비교 시 모두 true이므로, i = 1, i = 2 두번 순회
OO 출력
1번째 for문이 끝나고
2번째 for문에서 a의 값들을 하나씩 출력
AAA출력
2. 다음은 파이썬에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오.
def func(lst):
for i in range(len(lst) //2):
lst[i], lst[-i-1] = lst[-i-1], lst[i]
lst = [1,2,3,4,5,6]
func(lst)
print(sum(lst[::2]) - sum(lst[1::2]))
정답 : 3
풀이 :
func() 호출
lst 반까지만 순회, lst.legtnh = 6
그러므로 0, 1, 2 인덱스 까지 진행
맨 앞과 맨 뒤 요소를 교환
1 = 6, 6 = 1
2 = 5, 5 = 2
3 = 4, 4 = 3
lst = [6, 5, 4, 3, 2, 1]
lst[start : stop : step]
sum(lst[::2]) → 처음부터 2칸 간격으로 합산 0, 2, 4 → 6 + 4 + 2 = 12
sum(lst[1::2]) → 1부터 2칸 간격으로 합산 1, 3, 5 → 5 + 3 + 1 = 9
12 - 9 = 3
3. 아래의 employee테이블과 project테이블을 참고하여 보기의 SQL명령어에 알맞는 출력 값을 작성하시오.

[보기]
SELECT
count(*)
FROM employee AS e JOIN project AS p ON e.project_id = p.project_id
WHERE p.name IN (
SELECT name FROM project p WHERE p.project_id IN (
SELECT project_id FROM employee GROUP BY project_id HAVING count(*) < 2
)
);
정답 : 1
풀이 :
SELECT count(*)
→ 결과 값의 갯수를 출력
FROM employee AS e JOIN project AS p ON e.project_id = p.project_id
→ 위 두 테이블을 project_id로 JOIN
WHERE p.name IN(서브쿼리1)
→ p.name이 서브 쿼리의 조건에 맞는 경우를 필터링
(서브쿼리1) SELECT name FROM project p WHERE p.project_id IN(서브쿼리2)
→ project_id가 서브쿼리2 조건에 맞는 경우를 필터링해서 name을 필터링
(서브쿼리2) SELECT project_id FROM employee GROUP BY project_id HAVING count(*) < 2
→ project_id로 그룹핑하고 그 숫자가 2보다 작은 경우의 project_id 출력
이제 역순으로 돌아가보면
서브쿼리2 → 20 출력
서브쿼리1 → Beta 출력
WHERE문 → p.name이 Beta인 employee는 no 2인 1명
SELECT count(*) → 1 출력
4. 다음은 운영체제 페이지 순서를 참고하여 할당된 프레임의 수가 3개일 때 LRU 알고리즘의 페이지 부재 횟수를 작성하시오.
페이지 참조 순서 : 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
정답 : 12
풀이 :
LRU(Least Rencetly Used) : 가장 오래 사용하지않은 데이터 제거
| 데이터 | 페이지 | 부재 발생 | 부재 횟수 | 비고 |
| 7 | [7, x, x] | O | 1 | |
| 0 | [7, 0, x] | O | 2 | |
| 1 | [7, 0, 1] | O | 3 | |
| 2 | [2, 0, 1] | O | 4 | 가장 먼저 들어온 7 제거 |
| 0 | [2, 1, 0] | X | 4 | 0을 최근 사용으로 이동 |
| 3 | [1, 0, 3] | O | 5 | |
| 0 | [1, 3, 0] | X | 5 | 0을 최근 사용으로 이동 |
| 4 | [1, 0, 4] | O | 6 | |
| 2 | [0, 4, 2] | O | 7 | |
| 3 | [4, 2, 3] | O | 8 | |
| 0 | [2, 3, 0] | O | 9 | |
| 3 | [2, 0, 3] | X | 9 | 3을 최근 사용으로 이동 |
| 2 | [0, 3, 2] | X | 9 | 2를 최근 사용으로 이동 |
| 1 | [3, 2, 1] | O | 10 | |
| 2 | [3, 1, 2] | X | 10 | 2를 최근 사용으로 이동 |
| 0 | [1, 2, 0] | O | 11 | |
| 1 | [2, 0, 1] | X | 11 | 1을 최근 사용으로 이동 |
| 7 | [0, 1, 7] | O | 12 | |
| 0 | [1, 7, 0] | X | 12 | 0을 최근 사용으로 이동 |
| 1 | [7, 0, 1] | X | 12 | 1을 최근 사용으로 이동 |
5. 다음은 네트워크 취약점에 대한 문제이다. 아래 내용을 보고 알맞는 용어를 작성하시오.
- IP나 ICMP의 특성을 악용하여 엄청난 양의 데이터를 한 사이트에 집중적으로 보냄으로써 네트워크의 일부를 불능 상태로 만드는 공격이다.
- 여러 호스트가 특정 대상에게 다량의 ICMP Echo Reply 를 보내게 하여 서비스거부(DoS)를 유발시키는 보안공격이다.
- 공격 대상 호스트는 다량으로 유입되는 패킷으로 인해 서비스 불능 상태에 빠진다.
정답 : 스머프(Smurf) 또는 스머핑(Smurfing)
6. 다음은 GoF 디자인 패턴과 관련된 문제이다. 괄호안에 알맞는 용어를 작성하시오.
( ) 패턴은 클래스나 객체들이 서로 상호작용하는 방법이나 책임 분배 방법을 정의하는 패턴이다.
( ) 패턴은 객체들 간의 통신 방법을 정의하고 알고리즘을 캡슐화하여 객체 간의 결합도를 낮춘다.
( ) 패턴은 Chain of Responsibility나 Command 또는 Observer 패턴이 있다.
정답 : 행위
7. 다음은 C언어에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오.
#include <stdio.h>
int func(){
static int x =0;
x+=2;
return x;
}
int main(){
int x = 1;
int sum=0;
for(int i=0;i<4;i++) {
x++;
sum+=func();
}
printf("%d", sum);
return 0;
}
정답 : 20
풀이 :
fun() 내 x는 static변수로 최초 호출 시 한번만 초기화 그후 누적됨
만약 static이 없으면 매번 0으로 초기화 func()는 매번 2를 반환하게됨
| i | main.x | func().x | sum |
| 0 | 2 | 2 | 2 |
| 1 | 3 | 4 | 6 |
| 2 | 4 | 6 | 12 |
| 3 | 5 | 8 | 20 |
8. 다음은 무결성제약조건에 대한 문제이다. 아래 표에서 어떠한 ( ) 무결성을 위반하였는지 작성하시오.

정답 : 개체
풀이 :
- 개체 무결성 : 모든 릴레이션의 기본키는 NULL이거나 중복 될 수 없다.
- 참조 무결성 : 외래키는 NULL이거나, 참조하는 테이블의 기본키 값과 동일해야한다.
- 도에인 무결성 : 속성의 값은 정의된 도메인을 따라야한다.
9. 다음은 URL 구조에 관한 문제이다 . 아래 보기의 순서대로 URL에 해당하는 번호를 작성하시오.

[보기]
query : 서버에 전달할 추가 데이터
path : 서버 내의 특정 자원을 가리키는 경로
scheme : 리소스에 접근하는 방법이나 프로토콜
authority : 사용자 정보, 호스트명, 포트 번호
fragment : 특정 문서 내의 위치
정답 : 43125
풀이 :
프로토콜://호스트:포트/경로?쿼리#프래그먼트
| 번호 | 부분 | 설명 |
| (1) | 프로토콜 (Scheme) | 웹에서 사용하는 통신 규약 (예: http, https, ftp) |
| (2) | 호스트 (Host, Domain, Authority) | 서버 주소 (예: www.example.com, 192.168.0.1) |
| 포트 번호 (Port) | 생략 가능, http=80, https=443 같은 기본 포트 사용 | |
| (3) | 경로 (Path) | 서버에서 요청하는 리소스의 위치 (예: /user/login) |
| (4) | 쿼리 문자열 (Query String) | ? 뒤에 오는 추가 데이터 (예: ?id=1&name=kim) |
| (5) | 프래그먼트 (Fragment) | # 뒤의 문서 내부 위치 (예: #section2) |
10. 다음은 파이썬에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오.
def func(value):
if type(value) == type(100):
return 100
elif type(value) == type(""):
return len(value)
else:
return 20
a = '100.0'
b = 100.0
c = (100, 200)
print(func(a) + func(b) + func(c))
정답 : 45
풀이 :
a는 문자열(str)
b는 실수(float)
c는 튜플(tuple)
첫번째 if는 정수(int)인지
두번째 if는 문자열(str)인지
func(a) = 5
func(b) = 20
func(c) = 20
11. 다음은 Java 코드에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오.
public class Main{
public static void main(String[] args){
Base a = new Derivate();
Derivate b = new Derivate();
System.out.print(a.getX() + a.x + b.getX() + b.x);
}
}
class Base{
int x = 3;
int getX(){
return x * 2;
}
}
class Derivate extends Base{
int x = 7;
int getX(){
return x * 3;
}
}
정답 : 52
풀이 :
a.getX() : 메서드 오버라이딩 규칙에 따라 실제 객체 타입(Derivate)의 메서드 호출
→ 21
a.x : 변수는 오버라이딩 되지 않았으므로 선언된 타입(Base) 기준으로 접근
→ 3
b.getX() : Derivate.getX() 실행
→ 21
b.x : Derivate의 x
→ 7
12. 다음은 C언어에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오.
#include <stdio.h>
struct Node {
int value;
struct Node* next;
};
void func(struct Node* node){
while(node != NULL && node->next != NULL){
int t = node->value;
node->value = node->next->value;
node->next->value = t;
node = node->next->next;
}
}
int main(){
struct Node n1 = {1, NULL};
struct Node n2 = {2, NULL};
struct Node n3 = {3, NULL};
n1.next = &n3;
n3.next = &n2;
func(&n1);
struct Node* current = &n1;
while(current != NULL){
printf("%d", current->value);
current = current->next;
}
return 0;
}
정답 : 312
풀이 :
struct Node n1 = {1, NULL}; ~ n3
Node 구조체 생성
n1.next = &n3;
n3.next = &n2;
n1(1)→n3(3)→n2(2)→NULL 연결리스트 생성
func(&n1); 호출
int t = 1
node → value = node → next → value;
→ 현재 노드의 value 값을 다음 노드의 value값으로 변경
node → next → value = t;
→ 다음 노드의 value 값을 현재 값으로 변경
n1(3)→n3(1)→n2(2)→NULL
→ 노드를 한칸 건너 뛰고 나음으로 이동 n1 → n2, n2 → next == NULL 이므로 반복문 종료
struct Node* current = &n1;
노드 포인터를 n1으로 이동
연결리스트의 value값 출력
13. 다음은 테스트 커버리지에 대한 문제이다. 아래 내용에 알맞는 답을 보기에서 골라 작성하시오.
1. 테스트를 통해 프로그램의 모든 문장을 최소한 한 번씩 실행했는지를 측정
2. 프로그램 내의 모든 분기(조건문)의 각 분기를 최소한 한 번씩 실행했는지를 측정
3. 복합 조건 내의 각 개별 조건이 참과 거짓으로 평가되는 경우를 모두 테스트했는지를 측정
[보기]
ㄱ. 조건 ㄴ. 경로 ㄷ. 결정 ㄹ. 분기 ㅁ.함수 ㅂ. 문장 ㅅ. 루프
정답 :
1 - ㅂ.문장
2 - ㄹ.분기
3 - ㄱ.조건
14.아래는 UML클래스의 관계에 관한 문제이다. 보기를 보고 알맞는 관계를 선택하여 작성하시오.

[보기]
ㄱ. 의존 ㄴ. 연관 ㄷ. 일반화
정답 :
(1) - 연관
(2) - 일반화
(3) - 의존
15. 다음은 데이터베이스에 관한 문제이다. 아래 내용을 읽고 알맞는 답을 보기에서 찾아 골라 작성하시오.
(1) 다른 테이블, 릴레이션의 기본 키를 참조하는 속성 또는 속성들의 집합
(2) 테이블에서 각 행을 유일하게 식별할 수 있는 최소한의 속성들의 집합
(3) 후보 키 중에서 선정된 기본 키를 제외한 나머지 후보 키
(4) 테이블에서 각 행을 유일하게 식별할 수 있는 속성들의 집합
[보기]
ㄱ. 슈퍼키 ㄴ. 외래키 ㄷ. 대체키 ㄹ. 후보키
정답 :
(1) - ㄴ.외래키
(2) - ㄹ.후보키
(3) - ㄷ.대체키
(4) - ㄱ.슈퍼키
16. 다음은 C언어에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오.
#include <stdio.h>
void func(int** arr, int size){
for(int i=0; i<size; i++){
*(*arr + i) = (*(*arr + i) + i) % size;
}
}
int main(){
int arr[] = {3, 1, 4, 1, 5};
int* p = arr;
int** pp = &p;
int num = 6;
func(pp, 5);
num = arr[2];
printf("%d", num);
return 0;
}
정답 : 1
풀이 :
func(pp, 5) 호출
| i | *arr + i | *(*arr + i) | (*(*arr + i) + i) | (*(*arr + i) + i) % size |
| 0 | 0 | arr[0] | arr[0] + 0 = 3 | 3 |
| 1 | 1 | arr[1] | arr[1] + 1 = 2 | 2 |
| 2 | 2 | arr[2] | arr[2] + 2 = 6 | 1 |
| 3 | 3 | arr[3] | arr[3] + 3 = 4 | 4 |
| 4 | 4 | arr[4] | arr[4] + 4 = 9 | 4 |
arr[] = {3, 2, 1, 4, 4}
arr[2] = 1
17. 다음 아래 내용을 보고 알맞는 용어를 작성하시오. (3글자로 작성)
- 공용 네트워크를 통해 사설 네트워크를 확장하는 기술이다.
- 사용자의 IP 주소를 숨기고, 사용자가 어디에서 접속하는지를 추적하기 어렵게 만든다.
- 종류로는 IPsec 또는 SSL, L2TP 등이 있다.
정답 : VPN
18. 다음은 Java 코드에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오.
public class ExceptionHandling {
public static void main(String[] args) {
int sum = 0;
try {
func();
} catch (NullPointerException e) {
sum = sum + 1;
} catch (Exception e) {
sum = sum + 10;
} finally {
sum = sum + 100;
}
System.out.print(sum);
}
static void func() throws Exception {
throw new NullPointerException();
}
}
정답 : 101
풀이 :
try-catch-finally문 실행
func() 호출 → NullPointerException() 발생
첫번째 catch문 실행
sum = 1
첫번째 catch문에서 처리되기 때문에 두번째 catch문은 실행안됨
finally문 실행
sum = 101
sum출력 101
19. 다음은 Java 코드에 대한 문제이다. 아래 코드를 확인하여 알맞는 출력값을 작성하시오.
class Main {
public static class Collection<T>{
T value;
public Collection(T t){
value = t;
}
public void print(){
new Printer().print(value);
}
class Printer{
void print(Integer a){
System.out.print("A" + a);
}
void print(Object a){
System.out.print("B" + a);
}
void print(Number a){
System.out.print("C" + a);
}
}
}
public static void main(String[] args) {
new Collection<>(0).print();
}
}
정답 : B0
풀이 :
new Collection<>(0).print();
- 여기서 Printer는 내부 클래스이고, 제네릭 외부 클래스 Collection<T>의 타입 파라미터 T를 알고 있어야 한다
- value의 타입은 T로 선언돼 있다.
- 하지만 컴파일 시점에서 Java는 오버로딩 결정을 정적 타입 기준으로한다.
- Printer.print() 호출 시 컴파일러가 보는 타입은 T이지, 실제 런타임 값(Integer)이 아니다
20. 다음은 네트워크에 대한 문제이다. 아래 내용을 보고 알맞는 용어를 작성하시오.
- 중앙 관리나 고정된 인프라 없이 임시로 구성되는 네트워크이다.
- 일반적으로 무선 통신을 통해 노드들이 직접 연결되어 데이터를 주고받는다.
- 긴급 구조, 긴급 회의, 군사적인 상황 등에서 유용하게 활용될 수 있다.
[보기]
ㄱ.Infrastructure Network ㄴ. Firmware Network ㄷ. Peer-to-Peer Network
ㄹ. Ad-hoc Network ㅁ. Mesh Network ㅂ.Sensor Network ㅅ.Virtual Private Network
정답 : ㄹ. Ad-hoc Network
풀이 :
- ㄱ. Infrastructure Network → 고정된 인프라를 전제로 하는 네트워크, 해당 아님.
- ㄴ. Firmware Network → 네트워크 용어가 아님.
- ㄷ. Peer-to-Peer Network → 일반적인 P2P는 파일 공유나 분산 통신을 의미, 임시 구성과는 다름.
- ㄹ. Ad-hoc Network → 임시로 구성되며 중앙 장치 없이 무선으로 직접 연결되는 네트워크. 긴급 상황에서 사용 가능.
- ㅁ. Mesh Network → 각 노드가 다중 경로로 연결되는 구조, 반드시 임시 네트워크를 의미하지는 않음.
- ㅂ. Sensor Network → 센서 장치들의 네트워크, 특정 목적용이지 일반적인 ad-hoc 개념은 아님.
- ㅅ. Virtual Private Network (VPN) → 가상 사설망, 임시 구성과 무관.
'이론공부 > 정보처리기사 실기 기출' 카테고리의 다른 글
| 정보처리기사 실기(23년 3회 기출복원) (0) | 2025.09.16 |
|---|---|
| 정보처리기사 실기(24년 1회 기출복원) (0) | 2025.09.14 |
| 정보처리기사 실기(24년 2회 기출복원) (0) | 2025.09.14 |
| 정보처리기사 실기(25년 2회 기출복원) (0) | 2025.09.11 |
| 정보처리기사 실기(25년 1회 기출복원) (0) | 2025.09.09 |