정보처리기사 23년도 3회차

·2025년 4월 15일

just공부

목록 보기
15/47

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");
    }
}

풀이

  • bA 타입이지만, 실제 객체는 B
    • 오버라이딩된 메소드가 존재한다면, 실제 객체인 B의 메소드 실행
  • b.paint() : B.paint() 실행
    • super.draw() : A.draw() 실행 -> B
    • draw() : B.draw() 실행 -> D
    • System.out.print("C") -> C
    • this.draw() -> D
  • b.draw() :B.draw() 실행 -> D

정답

  • BDCDD

2. 다음 설명하는 용어를 보기에 맞게 골라 '기호'를 작성하시오.

[보기]
ㄱ.NFT
ㄴ.JWT
ㄷ.SAML
ㄹ.accessToken
ㅁ.SSO
ㅂ.OIDC
ㅅ.Autentication
ㅇ. OAuth
ㅈ.Cookie
ㅊ.Refresh Token

  • 사용자가 사용자 이름 및 암호와 같은 자격 증명을 공유하지 않고도 타사 애플리케이션이 데이터 또는 리소스에 액세스할 수 있도록 권한을 부여할 수 있는 개방형 표준 프로토콜이다.
  • 사용자가 데이터에 대한 제어를 유지하면서 리소스에 대한 액세스 권한을 부여할 수 있는 안전하고 표준화된 방법을 제공하며, 액세스 토큰을 사용하여 타사 애플리케이션에 리소스에 대한 액세스 권한을 부여하는 메커니즘을 사용자에게 제공하는 방식으로 작동한다.
  • 사용자가 응용 프로그램에 대한 액세스 권한을 부여하면 응용 프로그램은 사용자를 대신하여 사용자의 리소스 또는 데이터에 액세스하는 데 사용할 수 있는 액세스 토큰을 받는다.
  • 암호와 같은 사용자의 자격 증명은 타사 응용 프로그램과 공유되지 않으며, 클라우드 스토리지 서비스, 온라인 마켓 플레이스 및 금융 서비스를 포함한 다른 많은 응용 프로그램 및 서비스에서도 사용된다.
  • Facebook, Twitter 및 LinkedIn과 같은 소셜 미디어 플랫폼에서 널리 사용되어 사용자가 소셜 미디어 데이터에 대한 액세스 권한을 타사 애플리케이션에 부여할 수 있도록 한다.
  • 타사 애플리케이션에 대한 사용자 자격 증명의 노출을 최소화하여 향상된 보안, 간소화된 애플리케이션 개발, 사용자가 리소스에 대한 액세스 권한을 쉽게 부여하거나 취소할 수 있도록 하여 향상된 사용자 환경 등 여러 가지 이점을 제공한다.

정답

  • ㅇ. OAuth

3.리눅스(Linux)에서 사용자에게 읽기/쓰기/실행 권한을 부여하고, 그룹에게는 읽기/실행을 부여하고, 그 이외에는 실행 권한을 test.txt 파일에 부여하는 위한 명령어는 다음과 같다. 빈칸에 들어갈 답을 작성하시오. (8진법 사용)

( ① ) ( ② ) test.txt

  • 권한 부여하는 명령어 chmod
  • chmod [User][Group][Others]
  • U G O : 이 세 자리에 권한을 나타내는 정수가 오게 되고 8진법을 사용함
  • 읽기/쓰기/실행 권한은 0 또는 1로 각각 나타낼 수 있음 -> 권한 부여 1, 권한 부여하지 않으면 0
  • 사용자에게 읽기/쓰기/실행 권한 부여 : 1 1 1 -> (4 2 1) => 7
  • 그룹에게는 읽기/실행 권한 부여 : 1 0 1 -> (4 0 1) => 5
  • 그 이외에는 실행 권한을 부여 : 0 0 1 -> (0 0 1) => 1
  • chmod 751 [권한을 부여할 파일명]
  • chmod 751 test.txt 가 되는 것
  • 리눅스 명령어 문제 꼭 나와주었으면..

정답

  • ① chmod ② 751

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;
}

풀이

  • main
    - 2부터 100까지 수 중 test(i)가 1인 수를 찾아 sum에 누적
  • int test(int n) 함수
    • n의 자기 자신을 제외한 모든 약수의 sum을 구함
    • sum과 n이 같다면 완전수
    • 완전수면 1을, 완전수가 아니면 0을 반환
  • 완전수는 6과 28 뿐이다.
  • 34
  • 이건 그냥 외우자 ;

정답

  • 34

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(Data));

	d1.numPtr = &num;
	d2(       )numPtr = &num;

	printf("%d\n", *d1.numPtr);
	printf("%d\n", *d2(     )numPtr);
	
	free(d2);
	return 0;
}

[출력결과]
10
10

풀이

  • 일반 구조체 변수로 멤버 접근
    • d1.numPtr = &num;
    • d1은 구조체 변수이므로, . 연산자 사용
  • 구조체 포인터로 멤버 접근
    • d2->numPtr = &num;
    • d2Data * 즉 포인터이므로, -> 연산자 사용
  • 구조체 포인터가 가리키는 구조체의 멤버에 접근할 때 사용하는 기호

정답

  • ->

6. 다음 빈칸에 들어갈 UNION 연산의 결과값을 작성하시오.

[쿼리]
SELECT A FROM T1
UNION
SELECT A FROM T2
ORDER BY A DESC;

풀이

  • 테이블 T1의 A와, 테이블 T2의 A를 UNION할 것
    • UNION : 중복 제거 후 합집합, 자동으로 DISTINCT 가 적용됨
  • 내림차순으로 정렬할 것

UNION 계열

  • UNION
    • 두 개의 SELECT 결과를 합침, 중복 제거 (합집합)
    • 각 SELECT문의 컬럼 수와 타입이 같아야 함
    SELECT name FROM students
    UNION
    SELECT name FROM teachers
    /** 중복된 이름은 한 번만 출력**/
  • UNION ALL
    • 중복 포함하여 합침
    SELECT name FROM students
    UNION ALL
    SELECT name FROM teachers
    /** 중복된 이름도 모두 출력**/
  • INTERSECT (일부 DBMS만 지원)
    • 두 SELECT 결과에서 공통되는 항목(교집합)
    SELECT name FROM students
    INTERSECT
    SELECT name FROM teachers
    /**이름이 학생과 교수 둘 다에 있는 경우에만 출력**/
  • MINUS (Oracle DB)
    • 첫 SELECT 결과에서 두 번째 SELECT 결과를 제외
    SELECT name FROM students
    MINUS
    SELECT name FROM teachers

JOIN 계열

  • 두 테이블을 관계(키) 기반으로 연결해줌
  • INNER JOIN
    • 두 테이블에서 조건에 일치하는 행만 반환
    SELECT * FROM orders
    INNER JOIN customers ON orders.customer_id = customers.id;
  • LEFT OUTER JOIN (LEFT JOIN)
    • 왼쪽 테이블을 모두 포함, 오른쪽은 일치하는 경우만
    SELECT * FROM customers
    LEFT JOIN orders ON customers.id = orders.customer_id;
    /** 주문이 없는 고객도 포함되며, 주문 정보는 NULL **/
  • RIGHT OUTER JOIN (RIGHT JOIN)
    • 오른쪽 테이블을 모두 포함, 왼쪽은 일치하는 경우만
    SELECT * FROM customers
    RIGHT JOIN customers ON orders.customer_id = customers.id;
    /** 고객은 있는데 주문이 없는 경우에도 출력**/
  • FULL OUTER JOIN
    • 양쪽 테이블 모두 포함, 일치하지 않으면 NULL
    SELECT * FROM T1
    FULL OUTER JOIN T2 ON T1.id = T2.id;
  • CROSS JOIN
    • 모든 조합 (카티션 곱)
    • 조건 없이 모든 행과 모든 행을 매칭
    SELECT * FROM shirts
    CROSS JOIN paints;
    /** 셔츠 3벌, 바지 2벌이면 6개의 조합 **/

정답

  • 4
  • 3
  • 1

7. 다음 설명은 서버 접근 통제의 유형이다. 괄호 안에 들어갈 용어를 작성하시오. ('영어 약자'로 작성하시오.)

  • ( ① )은/는 규칙 기반(Rule-Based) 접근 통제 정책으로, 객체에 포함된 정보의 허용 등급과 접근 정보에 대하여 주체가 갖는 접근 허가 권한에 근거하여 객체에 대한 접근을 제한하는 방법이다.
  • ( ② )은/는 중앙 관리자가 사용자와 시스템의 상호관계를 통제하며 조직 내 맡은 역할(Role)에 기초하여 자원에 대한 접근을 제한하는 방법이다.
  • ( ③ )은/는 신분 기반(Identity-Based) 접근통제 정책으로, 주체나 그룹의 신분에 근거하여 객체에 대한 접근을 제한하는 방법이다.

풀이

  • MAC (Mandatory Access Control)
    • 강제적 접근 통제 : 엄격하고, 군사/정부 보안에 자주 사용
    • 규칙 기반 접근 통제 정책
  • RBAC (Role-Based Access Control)
    • 역할 기반 접근 통제 : 기업에서 가장 많이 사용하는 모델
  • DAC (Discretionary Access Control)
    • 임의적 접근 통제 : 일반 시스템에서 사용하는 기본 모델
    • 신분 기반의 접근 통제 정책
    • 객체 - 주체 사이의 정보 흐름 제한
항목MACRBACDAC
통제 권한관리자관리자 (역할 기준)소유자
정책 기준보안 등급에 따라 결정사용자->역할->권한 간의 연결사용자가 설정한 권한에 따름
유연성낮음매우 높음높음
보안성매우 강함역할 설계에 따라 다름상대적으로 약함

정답

  • MAC
  • RBAC
  • DAC

8.다음 C언어 코드에 알맞는 출력값을 작성하시오.

#include <stdio.h>
int f(int n){
	if(n<=1) return 1;
    else return n*f(n-1);
}
int main(){
	printf("%d", f(7));
}

풀이

  • f() : 7! 를 구하는 함수
  • 7 * 6 * 5 * 4 * 3 * 2 * 1 = 5040

정답

  • 5040

9. 다음 설명에 대해 괄호 안에 알맞는 용어를 작성하시오. ('영어 약자' 로 작성하시오.)

  • ( )은/는 자료를 일정한 크기로 정하여 순서대로 전송하는 자료의 전송 방식이다.
  • 셀이라 부르는 고정 길이 패킷을 이용하여 처리가 단순하고 고속망에 적합하며, 연속적으로 셀을 보낼 때 다중화를 하지 않고 셀단위로 동기가 이루어지지만 경우에 따라 동기식 시간 분할 다중화를 사용하기도 한다.
  • 가상 채널 (Virtual Channel) 기반의 연결 지향 서비스로 셀이라 부르는 고정 길이(53바이트) 패킷을 사용하며 통계적 다중화 방식을 이용한다.

ATM (Asychronous Transfer Mode)

  • 고속 네트워크 전송 기술
  • 고정된 크기(53byte)의 셸 단위로 나누어 전송하는 패킷 기반 전송 방식
  • TDM 사용 가능
  • 가상 회선 기반의 연결지향 방식
항목ATMTCP/IPFrame RelayMPLS
전송 단위고정 길이 셸 (53byte)가변 길이 패킷가변 길이 프레임라벨 기반 패킷
연결 방식연결 지향 (가상 회선)비연결형(IP) + 연결형(TCP)연결 지향 (가상 회선)연결 지향(Label Switched Path)
다중화통계적 다중화, TDMBest-effort통계적 다중화트래픽 엔지니어링 지원
적용 분야광대역 통신망인터넷 전반기업 WAN통신사업자 백본망, VPN

정답

  • ATM (Asynchrosnous Transfer Mode)

10. 다음은 C언어의 포인터 문제이다. 알맞는 출력값을 작성하시오.

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);
}

풀이

주소pp+1p+2p+3p+4p+5
내용'K''O''R''E''A''\0'
  • p : "KOREA"의 시작 주소
    - KOREA
  • p+1 : "OREA" 의 시작 주소
    - OREA
  • *p : p[0] -> 'K'
    - K
  • p+3 : 3번째 인덱스 -> E
    - E
  • *p : 'K' -> ASCII 75
    - *p + 4 : 75 + 4 = 79 -> ASCII 코드 'O'
    - O

정답

  • KOREA
  • OREA
  • K
  • E
  • 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));
    }
}
  • 동적 바인딩
    • 선언 변수 : Parent
    • 인스턴스 : Child
    • compute(7) = compute(6) + compute(4) = 1 + 1 = 2
    • compute(6) = compute(5) + compute(3) = 1 + 0 = 1
    • compute(5) = compute(4) + compute(2) = 1 + 0 = 1
    • compute(4) = compute(3) + compute(1) = 0 + 1 = 1
    • compute(3) = compute(2) + compute(0) = 0 + 0 = 0
    • compute(2) = compute(1) + compute(-1) = 1+ (-1) = 0
  • 따라서 2

정답

  • 2

12. IP 패킷에서 외부의 공인 IP주소와 포트 주소에 해당하는 내부 IP주소를 재기록하여 라우터를 통해 네트워크 트래픽을 주고받는 기술은 무엇인가?

NAT (Network Address Translation)

  • 1개의 정식 IP 주소에 다량의 가상 사설 IP 주소를 할당 및 연결하는 방식
  • 1개의 IP 주소를 사용해서 외부에 접속할 수 있는 노드는 어느 시점에서 1개만으로 제한되는 문제가 있으나,
  • 이 때에는 IP 마스커레이드(Masquerade)를 이용하면 됨

정답

  • NAT (Network Address Translation)

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();
    }
}

풀이

  • get() 메소드의 return name; 에서 컴파일 에러 발생
  • private String name
    • name 은 인스턴스 변수(non-static field)
  • public static String get()
    • get() 은 static 메소드
  • static 메소드에서는 인스턴스 변수(non-static)에 접근 불가
    • 인스턴스에 속한 변수에는 접근 불가

-> static 메소드에서 non-static 필드에 접근했기 때문에 컴파일 에러 발생

정답

  • 7

14. 다음은 Python 프로그램에 대한 문제이다. 빨간색 박스로 가려진 '예약어' 를 알맞게 작성하시오. (단, 첫 번째 라인의 '5 10'은 사용자로 부터 입력받은 값에 해당한다.)

x, y = input("x, y의 값을 공백으로 구분하여 입력: ").◼️◼️()
print("x의 값: ", int(x))
print("y의 값: ", int(y))

#실행결과
x, y의 값을 공백으로 구분하여 입력: 5 10
x의 값: 5
y의 값: 10

정답

  • split

15. 다음은 판매와 관련된 다이어그램이다. 해당 다이어그램의 명칭을 쓰시오.

풀이

  • UML (Unified Modeling Language)에서의 패키지 다이어그램
    • 시스템의 의존 관계, 모듈 구조, 네임스페이스 구성 등을 시각화하기 위한 다이어그램
  • 📂 패키지
    • 각각 패키지를 의미
    • 폴더 모양은 UML에서 패키지를 나타내는 표기법
  • ➡️ <<import>> 관계 (의존 관계)
    • ordering패키지가 pricing, products패키지를 import하고 있음
    • <<import>> : UML에서 해당 패키지의 public 요소들을 사용할 수 있음
    • ordering 패키지 내부에서는 pricingproducts패키지의 공개된 클래스/인터페이스 등을 사용 가능
분류다이어그램 이름설명
구조 다이어그램Class Diagram클래스와 그 관계( 상속, 연관, 집합 등)
Object Diagram클래스의 실제 인스턴스 관계
Package Diagram모듈화 구조와 패키지 간 관계 표현
Component Diagram소프트웨어 구성 요소의 의존 관계
Deployment Diagram시스템의 물리적 배포 구조 (서버, DB 등)
Composite Structure Diagram클래스 내부 구조 또는 부품 구조 표현
Profile Diagram커스터마이징을 위한 메타모델 확장 표현
행위 다이어그램Use Case Diagram시스템 사용 시나리오, 사용자와 기능 관계
Activity Diagram업무 흐름, 로직 순서, 조건 분기
State Machine Diagram상태 전이 기반 객체의 생명 주기 모델링
상호작용 다이어그램
(행위 다이어그램의 하위 부류)
Sequence Diagram객체 간 메시지 전달 순서 표현
Communication Diagram객체 중심 시각화
Timing Diagram시간에 따른 상태 변화 표현
Interaction Overview Diagram여러 상호작용을 순서도처럼 표현

정답

  • 패키지 다이어그램

16. 다음 설명에 알맞는 답을 보기에서 골라 '기호' 를 작성하시오

  • 시스템이나 시스템 구성요소(component) 또는 소프트웨어 프로그램의 입력값과 출력값이 특정 그룹으로 분류되며, 분류된 그룹내의 값들이 시스템에 의해 동일하게 취급된다는 특성을 이용하여 시험하는 기법
  • 유사한 입력값들이 시스템을 거치면서 유사한 답변이 나온다는 것을 가정하여 테스트
  • 하나의 값은 그 분할 내 모든 값을 대표하는 것으로 간주하는 기법
  • 모든 입력 값을 시험할 필요가 없게 하여 시험을 효율적으로 수행하도록 지원
  • 일반적으로 경계값 분석기법(boundary value analysis)과 함께 테스트 케이스 도출하는데 사용

풀이

기법설명
Equivalence Partitioning각 그룹에서 대표값 하나만 선택해 테스트
Statement Coverage소스코드 문장 실행 여부 측정 (화이트박스)
Boundary Value Analysis경계값 중심 테스트 (경계만 테스트)
Branch Coverage조건 분기(if 등) 실행 여부 측정
Error Guessing경험 기반으로 오류 예상
Condition Coverage조건 내 각 Boolean 식 실행 여부
Cause Effect Graph논리적인 원인-결과 관계 모델링(복잡한 조건 테스트에 사용)

정답

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

풀이

  • IaaS (Infrastructure as a Service)
    • AWS EC2, Microsoft Azure VM, Google Compute Engine
    • 고객이 제어 : 애플리케이션 ~ OS
    • 공급자가 제어 : 가상화 ~ 네트워크
  • PaaS (Platform as a Service)
    • AWS Elastic Beanstalk, Google App Engine, Heroku
    • 고객이 제어 : 애플리케이션, 데이터
    • 공급자가 제어 : 런타임 ~ 네트워크
    • 개발자는 코드만 개발 및 배포
  • SaaS (Software as a Service)
    • Gmail, Dropbox, Salesforce
    • 모든 요소를 공급자가 제어 및 관리
    • 고객은 서비스만 사용

정답

IaaS PaaS SaaS

18. 다음은 프로토콜 종류에 관한 설명이다. 알맞는 답을 작성하시오.

  • 최소 Hop count를 파악하여 라우팅하는 프로토콜이다.
  • 거리와 방향으로 길을 찾아가는 Distance Vector 다이나믹 프로토콜이다.
  • 최단거리 즉, Hop count가 적은 경로를 택하여 라우팅하는 프로토콜로 Routing Table에 인접 라우터 정보를 저장하여 경로를 결정한다.
  • 최대 Hop count는 15로 거리가 짧기 때문에 IGP로 많이 이용하는 프로토콜이다.

RIP (Routing Information Protocol)

  • 내부 게이트웨이 프로토콜 (IGP)의 일종으로, Distance Vector 라우팅 프로토콜
  • Hop Count
항목RIPOSPF
라우팅 방식Distance VectorLink State
경로 선택 기준Hop 수비용
최대 Hop 수15무제한
네트워크 규모소규모대규모

정답

  • RIP

19. 다음은 관계 대수에 대한 내용이다. 보기에 알맞는 기호를 작성하시오.

[보기]
ㄱ. σ ㄴ. π ㄷ.⋈ ㄹ.÷

  1. JOIN : ( ① )
  2. PROJECT : ( ② )
  3. SELECT : ( ③ )

풀이

연산기호설명SQL예시
Selectionσ조건에 맞는 튜플 선택WHEREσ(부서='인사')(직원)
Projectionπ특정 속성만 추출SELECTπ 이름,직급(직원)
Join두 릴레이션을 공통 속성 기준으로 결합JOIN직원 ⋈ 부서
Cartesian Product×모든 튜플을 곱하여 조합직원 × 부서
DifferenceA에만 존재하고 B에는 없는 튜플EXCEPT학생 − 수강생
UNION (합집합)두 릴레이션의 모든 튜플 합집합UNION학생 ∪ 수강생
Intersection (교집합)두 릴레이션에 모두 있는 튜플INTERSECT학생 ∩ 수강생
Division%모든 조건을 만족하는 튜플A % B

정답

20. 다음은 데이터베이스에 관련된 문제이다. 괄호 안에 알맞는 답을 작성하시오.

  • ( ) 무결성은 관계 데이터베이스 관계 모델에서 2개의 관련 있던 관계 변수(테이블) 간의
    일관성(데이터 무결성)을 말한다.
  • 종종 기본 키 또는 키가 아닌 후보 키와 외래 키의 조합으로 강제 적용된다.
  • 외래 키가 선언된 관계 변수의 외래 키를 구성하는 속성(열)의 값은 그 관계 변수의 부모가 되는 관계 변수의 기본 키 값 또는 기본 키가 아닌 후보 키 값으로 존재해야 한다.

풀이

무결성 유형설명
개체 무결성기본키는 반드시 NOT NULL
중복 X
도메인 무결성각 속성의 데이터 타입, 길이, 형식 등을 지켜야 함
참조 무결성외래 키가 참조하는 기본 키가 반드시 존재해야 함

정답

  • 참조 무결성
profile
Whatever I want | Interested in DFIR, Security, Infra, Cloud

0개의 댓글