1. 다음은 Java 코드로 작성한 프로그램이다. 올바른 출력 결과를 작성하시오.
public class main{
public static void main(String[] args) {
A b = new B();
b.paint();
b.draw();
}
}
class A {
public void paint() {
System.out.print("A");
draw();
}
public void draw() {
System.out.print("B");
draw();
}
}
class B extends A {
public void paint() {
super.draw();
System.out.print("C");
this.draw();
}
public void draw() {
System.out.print("D");
}
}
정답: BDCDD
(JAVA [생성자, 상속, 오버라이딩, 오버로딩, 추상 클래스])
JAVA언어, 오버라이딩
public class main {
public static void main(String[] args) {
A b = new B(); // 업캐스팅
b.paint(); // B 클래스에서 오버라이딩된 paint() 실행
b.draw(); // B 클래스에서 오버라이딩된 draw() 실행
}
}
class A {
public void paint() {
System.out.print("A");
draw(); // 오버라이딩된 B의 draw() 호출
}
public void draw() {
System.out.print("B");
draw();
}
}
class B extends A {
public void paint() {
super.draw(); // A의 draw()를 호출
System.out.print("C");
this.draw(); // B의 draw() 호출
}
public void draw() {
System.out.print("D");
}
}
b.paint();
1. super.draw(); 실행 → A의 draw()에서 B 출력, 이후 오버라이딩된 B의 draw() 호출로 D 출력
2. System.out.print("C"); → C 출력
3. this.draw(); → B의 draw() → D 출력
b.draw();
4. B의 draw() 호출 → D 출력
순서대로 BDCDD
(참고)
• b는 업캐스팅으로 A 타입이지만 오버라이딩된 B의 메서드가 있어 B에서 실행됩니다.
• super.draw();는 부모 클래스 A의 draw()를 호출,
draw();는 자식 클래스 B의 draw()를 호출합니다.
2. 다음 설명하는 용어를 보기에 맞게 골라 '기호'를 작성하시오.
[보기]
ㄱ.NFT ㄴ.JWT
ㄷ.SAML ㄹ.accessToken
ㅁ.SSO ㅂ.OIDC
ㅅ.Autentication ㅇ. OAuth
ㅈ.Cookie ㅊ.Refresh Token
***************************************************************************************
- 사용자가 사용자 이름 및 암호와 같은 자격 증명을 공유하지 않고도 타사 애플리케이션이 데이터 또는 리소스에 액세스할 수 있도록 권한을 부여할 수 있는 개방형 표준 프로토콜이다.
- 사용자가 데이터에 대한 제어를 유지하면서 리소스에 대한 액세스 권한을 부여할 수 있는 안전하고 표준화된 방법을 제공하며, 액세스 토큰을 사용하여 타사 애플리케이션에 리소스에 대한 액세스 권한을 부여하는 메커니즘을 사용자에게 제공하는 방식으로 작동한다.
- 사용자가 응용 프로그램에 대한 액세스 권한을 부여하면 응용 프로그램은 사용자를 대신하여 사용자의 리소스 또는 데이터에 액세스하는 데 사용할 수 있는 액세스 토큰을 받는다.
- 암호와 같은 사용자의 자격 증명은 타사 응용 프로그램과 공유되지 않으며, 클라우드 스토리지 서비스, 온라인 마켓 플레이스 및 금융 서비스를 포함한 다른 많은 응용 프로그램 및 서비스에서도 사용된다.
- Facebook, Twitter 및 LinkedIn과 같은 소셜 미디어 플랫폼에서 널리 사용되어 사용자가 소셜 미디어 데이터에 대한 액세스 권한을 타사 애플리케이션에 부여할 수 있도록 한다.
- 타사 애플리케이션에 대한 사용자 자격 증명의 노출을 최소화하여 향상된 보안, 간소화된 애플리케이션 개발, 사용자가 리소스에 대한 액세스 권한을 쉽게 부여하거나 취소할 수 있도록 하여 향상된 사용자 환경 등 여러 가지 이점을 제공한다.
정답: OAuth - 로그인 인증 API
3. 리눅스(Linux)에서 사용자에게 읽기/쓰기/실행 권한을 부여하고, 그룹에게는 읽기/실행을 부여하고, 그 이외에는 실행 권한을 test.txt 파일에 부여하는 위한 명령어는 다음과 같다. 빈칸에 들어갈 답을 작성하시오. (8진법 사용)
( ① ) ( ② ) test.txt
정답: ① chmod ② 751
모드변환 : Chmod / 권한변환 : Chown
U / G / Other
rwx 읽기(4)/쓰기(2)/실행(1)
4. 다음은 C 언어 코드이다. 알맞는 출력 결과를 작성하시오.
#include <stdio.h>
int test(int n) {
int i, sum = 0;
for (i = 1; i <= n / 2; i++){
if (n % i == 0)
sum += i;
}
if (n == sum)
return 1;
return 0;
}
int main(){
int i, sum=0;
for (i = 2; i <= 100; i++){
if (test(i))
sum += i;
}
printf("%d ", sum);
return 0;
}
정답: 34
출제 : [프로그래밍 언어09 - 1.C언어 – 9)복잡한 제어문(다중 for문)]
C언어, 1~100까지 완전수 6+28
5. C언어에서 구조체의 멤버에 접근하기 위해 괄호안의 '기호'를 작성하시오.
#include <stdio.h>
#include <stdlib.h>
typedef struct Data{
char c;
int *numPtr;
} Data;
int main(){
int num = 10;
Data d1;
Data *d2 = malloc(sizeof(struct Data));
d1.numPtr = #
d2 ( ) numPtr = #
printf("%d\n", *d1.numPtr);
printf("%d\n", *d2 ( ) numPtr);
free(d2);
return 0;
}
[출력결과]
10
10
답안 : ->
출제 : [프로그래밍 언어13 - 1.C언어 – 13)포인터]
C언어, 구조체 멤버 접근 기호
구조체 변수를 이용해서 직접적으로 원소에 접근할때는 .연산자를,
구조체 포인터를 이용해서 간접적으로 원소에 접근할때는 → 연산자를 사용해야 합니다.
d2→numptr는 (*d2).numPtr과 동일
6. 다음 빈칸에 들어갈 UNION 연산의 결과값을 작성하시오.

[쿼리]
SELECT A FROM T1
UNION
SELECT A FROM T2
ORDER BY A DESC;
A
4
3
1
출제 : [SQL02 – 2.DML]
union 중복 X
union all 중복 O
7. 다음 설명은 서버 접근 통제의 유형이다. 괄호 안에 들어갈 용어를 작성하시오. ('영어 약자'로 작성하시오.)
- ( ① )은/는 규칙 기반(Rule-Based) 접근통제 정책으로, 객체에 포함된 정보의 허용 등급과 접근 정보에 대하여 주체가 갖는 접근 허가 권한에 근거하여 객체에 대한 접근을 제한하는 방법이다.
- ( ② )은/는 중앙 관리자가 사용자와 시스템의 상호관계를 통제하며 조직 내 맡은 역할(Role)에 기초하여 자원에 대한 접근을 제한하는 방법이다.
- ( ③ )은/는 신분 기반(Identity-Based) 접근통제 정책으로, 주체나 그룹의 신분에 근거하여 객체에 대한 접근을 제한하는 방법이다.
정답: ① MAC ② RBAC ③ DAC
출제 : [보안03 – 6.데이터베이스 보안(접근 통제)]
[21년 1회 기출] MAC : 보안등급, RBAC : 역할, DAC : 신분
임의 접근제어 (DAC, Discretionary Access Control)
강제 접근제어 (MAC, Mandatory Access Control)
역할기반 접근제어 (RBAC, Role Based Access Control)

8. 다음 C언어 코드에 알맞는 출력값을 작성하시오.
#include
int f(int n) {
if(n<=1) return 1;
else return n*f(n-1);
}
int main() {
printf("%d", f(7));
}
정답: 5040
C언어, 재귀함수
7*f(6)*(5)*(4)*(3)*(2)
f(7) = 7 x 6 x 5 x 4 x 3 x 2 x 1
9. 다음 설명에 대해 괄호 안에 알맞는 용어를 작성하시오. ('영어 약자' 로 작성하시오.)
- ( )은/는 자료를 일정한 크기로 정하여 순서대로 전송하는 자료의 전송 방식이다.
- 셀이라 부르는 고정 길이 패킷을 이용하여 처리가 단순하고 고속망에 적합하며, 연속적으로 셀을 보낼 때 다중화를 하지 않고 셀단위로 동기가 이루어지지만 경우에 따라 동기식 시간 분할 다중화를 사용하기도 한다.
- 가상 채널 (Virtual Channel) 기반의 연결 지향 서비스로 셀이라 부르는 고정 길이(53바이트) 패킷을 사용하며 통계적 다중화 방식을 이용한다.
정답 : ATM(Asynchronous Transfer Mode)
출제 : [네트워크02 – 3.OSI 7계층 및 프로토콜]
비동기, Cell 크기가 53 Byte

10. 다음은 C언어의 포인터 문제이다. 알맞는 출력값을 작성하시오.
#include
int main() {
char* p = "KOREA";
printf("%s\n", p);
printf("%s\n", p+1);
printf("%c\n", *p);
printf("%c\n", *(p+3));
printf("%c\n", *p+4);
}
정답:
KOREA
OREA
K
E
O
포인터문제
1차원배열에서는 *(p+i)==p[i]==*&p[i]는 값
2차원 배열에서는 *(p+i)==p[i]==*&p[i]가 주소
int main() {
char* p = "KOREA";
printf("%s \n", p); // s는 String p = KOREA
printf("%s \n", p+1); // O = 1 번째자리 부터 = OREA
printf("%c \n", *p); // Character, K = 0 번째 값
printf("%c \n", *(p+3)); // K = 0 , E = 3
printf("%c \n", *p+4); // 75(K) + 4 = 79(O) K L M N O 순서.
}
11. 다음 Java 코드에 대한 알맞는 출력값을 작성하시오.
class Parent {
int compute(int num) {
if(num <= 1)
return num;
return compute(num-1) + compute(num-2);
}
}
class Child extends Parent {
int compute(int num) {
if(num <= 1)
return num;
return compute(num-1) + compute(num-3);
}
}
public class main {
public static void main(String args[]) {
Parent obj = new Child();
System.out.print(obj.compute(7));
}
}
정답: 2
JAVA[다형성, 재귀함수]
두 클래스가 서로 상속관계에 있을 경우, 부모 클래스 타입의 참조변수로 자손 클래스의 인스턴스를 참조하도록 하는 것 가능
Parent p = new Parent(); //허용
Child c = new Child(); //허용
Parent pc = new Child();//허용
Child cp = new Parnet(); //오류
• obj 는 업캐스팅으로 Parent 타입이지만 오버라이딩된 Child의 메서드가 있어 Child에서 실행됩니다.
compute(2) = compute(1) + compute(-1) = 1 + (-1) = 0
compute(3) = compute(2) + compute(0) = 0
compute(4) = compute(3) + compute(1) = 1
compute(5) = compute(4) + compute(2) = 1
compute(6) = compute(5) + compute(3) = 1
compute(7) = compute(6) + compute(4) = 2
12. IP 패킷에서 외부의 공인 IP주소와 포트 주소에 해당하는 내부 IP주소를 재기록하여 라우터를 통해 네트워크 트래픽을 주고받는 기술은 무엇인가?
정답 : NAT(Network Address Translation)
- 출제 : [네트워크02 – 3.OSI 7계층 및 프로토콜]
- [20년 4회 기출] 사설 네트워크에 속한 IP를 공인 IP 주소로 바꿔주는 네트워크 주소 변환 기술
13. 다음 자바 코드를 실행할 경우 에러가 발생이 된다. 에러가 발생하는 라인을 작성하시오.
class Person {
private String name;
public Person(String val) {
name = val;
}
public static String get() {
return name;
}
public void print() {
System.out.println(name);
}
}
public class main {
public static void main(String[] args) {
Person obj = new Person("Kim");
obj.print();
}
}
정답: 7
static(정적 메소드)
get() 메서드는 static으로 정의되어 있습니다. static 메서드는 클래스 레벨에서 호출되며, 인스턴스 변수에 접근할 수 없습니다.
name 변수는 인스턴스 변수로, static 메서드 내에서는 직접 접근할 수 없습니다.
라인의 static 때문에 에러가 발생하나, 에러 발생 라인은 7번
14. 다음은 Python 프로그램에 대한 문제이다. 빨간색 박스로 가려진 '예약어' 를 알맞게 작성하시오. (단, 첫 번째 라인의 '5 10'은 사용자로 부터 입력받은 값에 해당한다.)
print("파이썬 입출력에 대한 문제입니다.")
num1, num2 = input()._____()
num1 = int(num1)
num2 = int(num2)
print(num1,num2)
num3 = num1 + num2
print(num1 + " + " + num2 + " = " + num3)
정답: split
split() 함수 - 특정 문자를 기준으로 문자열을 나눈 뒤, 리스트 형태로 반환하는 함수
15. 다음은 판매와 관련된 다이어그램이다. 해당 다이어그램의 명칭을 쓰시오.

정답: 패키지
출제 : [소프트웨어 설계02 – 2.UML]
[20년 4회 기출] 객체 등과 같은 여러 요소들을 그룹화한 ( 패키지 ) 다이어그램
구조적 다이어그램 (클객 컴배 복패)
클래스 / 객체 / 컴포넌트 / 배치 / 복합체 구조 / 패키지

16. 다음 설명에 알맞는 답을 보기에서 골라 '기호' 를 작성하시오.
ㄱ.Equivalence Partitioning ㄴ.Statement Coverage ㄷ.Boundary Value Analy ㄹ.Branch Coverage
ㅁ.Error Guessing ㅂ.Condition Coverage ㅅ.Cause Effect Graph
- 시스템이나 시스템 구성요소(component) 또는 소프트웨어 프로그램의 입력값과 출력값이 특정 그룹으로 분류되며, 분류된 그룹내의 값들이 시스템에 의해 동일하게 취급된다는 특성을 이용하여 시험하는 기법
- 유사한 입력값들이 시스템을 거치면서 유사한 답변이 나온다는 것을 가정하여 테스트
- 하나의 값은 그 분할 내 모든 값을 대표하는 것으로 간주하는 기법
- 모든 입력 값을 시험할 필요가 없게 하여 시험을 효율적으로 수행하도록 지원
- 일반적으로 경계값 분석기법(boundary value analysis)과 함께 테스트 케이스 도출하는데 사용
정답 : Equivalence Partitioning
출제 : [테스트 수행 및 결함 조치01 – 2.블랙박스 테스트]
[20년 4회 기출] 입력 데이터 영역, 유효값/무효값을 그룹핑하여 대표값, 테스트케이스 도출
▶ 블랙박스 테스트 유형
동경결상 유분페원비오

17. 다음은 클라우드에 대한 유형 문제이다. 괄호안에 알맞는 답을 보기에 골라 작성하시오.

정답: IaaS, PaaS, SaaS
사용자가 컨트롤할 수 있는 범위 기준 : 넓 I > P > S 좁

18. 다음은 프로토콜 종류에 관한 설명이다. 알맞는 답을 작성하시오.
- 최소 Hop count를 파악하여 라우팅하는 프로토콜이다.
- 거리와 방향으로 길을 찾아가는 Distance Vector 다이나믹 프로토콜이다.
- 최단거리 즉, Hop count가 적은 경로를 택하여 라우팅하는 프로토콜로 Routing Table에 인접 라우터 정보를 저장하여 경로를 결정한다.
- 최대 Hop count는 15로 거리가 짧기 때문에 IGP로 많이 이용하는 프로토콜이다.
정답:RIP
RIP- IGP 중 거리벡터 알고리즘, 라우팅 프로토콜
RIP : 현재 가장 널리 사용되는 라우팅 프로토콜로, 소규모 동종의 네트워크 내에서 효율적인 방법이며, 최대 홉수를 15로 제한함. 거리벡터 방식인 Bellman-Ford 알고리즘 사용. 자율 시스템(AS) 사용.
IGRP : RIP의 단점을 보완하기 위해 만들어 개발된 것으로, 네트워크 상태를 고려하여 라우팅하며, 중규모 네트워크에 적합함
OSPF : 대규모 네트워크에서 많이 사용되는 라우팅 프로토콜로, 라우팅 정보에 변화가 생길 경우 변화된 정보만 네트워크 내의 모든 라우터에 알리며, RIP에 비해 홉수에 제한이 없음. 자신을 기준으로 한 다익스트라 알고리즘 기반으로 최단 경로를 찾는 라우팅 (Link-State) 프로토콜
BGP : 자율 시스템(AS) 간의 라우팅 프로토콜로, 도달 가능성 정보를 교환하도록 설계된 표준화된 외부 게이트웨이 프로토콜의 하나. 대형 사업자(ISP)
19. 다음은 관계 대수에 대한 내용이다. 보기에 알맞는 기호를 작성하시오.
[보기]
ㄱ. σ ㄴ. π ㄷ.⋈ ㄹ.÷
***************************************************************************************
1. JOIN : ( ① )
2. PROJECT : ( ② )
3. SELECT : ( ③ )
4. DIVISION : ( ④ )
정답: ① ㄷ ② ㄴ ③ ㄱ ④ ㄹ
출제 : [SQL05 – 6.관계 대수, 관계 해석]
관계 대수 기호
join : ⋈
project : π
select : σ
division : ÷
SELECT
- 릴레이션에 존재하는 튜플들 중에서 특정 조건을 만족하는 튜플들의 부분집합을 구하여 새로운 릴레이션을 만든다.
- 릴레이션의 행에 해당하는 튜플을 구하는 것으로, 수평 연산이라고도 한다.
- SELECT 연산의 기호는 그리스 문자 시그마(σ)이다.
- 표기 형식 : σ(조건)(R)
· R은 릴레이션
· 조건에서는 =, ≠, <, ≤, >, ≥ 등의 기호를 사용한 비교 연산이 허용, AND(∧), OR(∨), NOT(ㄱ) 등의 논리 연산자를 사용하여 여러 개의 조건들을 하나의 조건으로 결합시킬 수도 있다.
PROJECT
- 주어진 릴레이션에서 속성 리스트에 제시된 속성 값만을 추출하여 새로운 릴레이션을 만든다. 단, 연산 결과에 중복이 발생하면 중복이 제거된다.
- 릴레이션에서 열에 해당하는 속성을 추출하는 것으로, 수직 연산이라고도 한다.
- PROJECT 연산의 기호는 그리스 문자 파이(π)이다.
- 표기 형식 : π(속성 리스트)(R)
· R은 릴레이션
JOIN
- 공통 속성을 중심으로 2개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만든다.
- JOIN 연산의 결과로 만들어진 릴레이션의 차수는 조인된 두 릴레이션의 차수를 합한 것과 같다.
- JOIN 연산의 결과는 CARTESIAN PRODUCT 연산을 수행한 다음 SELECT 연산을 수행한 것과 같다.
- JOIN 연산의 기호는 ▷◁ 이다.
- 표기 형식 : R▷◁(JOIN 조건)S
· R, S는 릴레이션
· =, ≠, <, ≤, >, ≥ 등의 비교 연산자를 비교 연산자를 θ로 일반화하여 θ로 표현될 수 있는 조인을 세타 조인(θ-join, Theta JOIN)이라고 한다.
· JOIN 조건이 '='일 때 동일한 속성이 2번 나타나게 되는데, 이 중 중복된 속성을 제거하여 같은 속성은 1번만 나타나게 하는 연산을 자연 조인(NATURAL JOIN)이라고 한다.
· 자연 조인과 반대로 중복된 속성을 나타내는 연산은 동일 조인(Equi JOIN)이다.
DIVISION
- 두 릴레이션 R(X)과 S(Y)에 대해 Y⊆X, X-Y=Z라고 하면, R(X)와 R(Z,Y)는 동일한 표현이다. 이때, 릴레이션 R(Z,Y)에 대한 S(Y)의 DIVISION 연산은 S(Y)의 모든 튜플에 연관되어 있는 R(Z)의 튜플을 선택하는 것이다.
- 표기 형식 : R[속성r ÷ 속성s]S
· 속성 r은 릴레이션 R의 속성, 속성 s는 릴레이션 S의 속성이며, 속성 r과 s는 동일 소성 값을 가지는 속성이어야 한다.
20. 다음은 데이터베이스에 관련된 문제이다. 괄호 안에 알맞는 답을 작성하시오.
- ( ) 무결성은 관계 데이터베이스 관계 모델에서 2개의 관련 있던 관계 변수(테이블) 간의
일관성(데이터 무결성)을 말한다.
- 종종 기본 키 또는 키가 아닌 후보 키와 외래 키의 조합으로 강제 적용된다.
- 외래 키가 선언된 관계 변수의 외래 키를 구성하는 속성(열)의 값은 그 관계 변수의 부모가 되는 관계 변수의 기본 키 값 또는 기본 키가 아닌 후보 키 값으로 존재해야 한다.
정답: 참조

출제 : [데이터베이스02 – 4.무결성]
외래키, ( 참조 ) 무결성 제약 조건
1. 영역 무결성
- 한 컬럼에 대해 NULL의 허용 여부와 타당한 데이터 값들을 지정합니다.
- 자료형(Data type), 규칙과 제약(Rules), 값 범위 등을 제한합니다.
2. 참조 무결성
- 기본 키와 참조 키 간의 관계가 항상 유지됨을 보장합니다.
- 참조되는 테이블의 행을 이를 참조하는 참조키가 존재하는 한 삭제될 수 없고, 기본키도 변경될 수 없습니다.
3. 개체 무결성
- 테이블에 있는 모든 행들이 유일한 식별자를 가질 것을 요구합니다.
'자격증 > 정처기' 카테고리의 다른 글
[정보처리기사 실기] 2024년 2회 기출문제 풀이 (0) | 2025.03.18 |
---|---|
[정보처리기사 실기] 2024년 1회 기출문제 풀이 (0) | 2025.03.18 |
[정보처리기사 실기] 2023년 2회 기출문제 풀이 (0) | 2025.02.14 |
[정보처리기사 실기] 2023년 1회 기출문제 풀이 (0) | 2025.02.14 |
[정보처리기사 실기] 2022년 3회 기출문제 풀이 (0) | 2025.02.14 |