https://chobopark.tistory.com/453
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
A b = new B(); => 상위 클래스 타입 하위 클래스 객체 생성.
* 오버라이딩(Overriding)
하위(자식) 클래스에서 상위(부모) 클래스의 메소드를 재정의 하는 과정.
하위 클래스의 오버라이딩 메소드는 상위 클래스 메소드보다 우선순위가 높다.
* super : 상위 클래스를 호출하는 예약어.
* this : 객체 자기자신을 의미하는 예약어.
2. 다음 설명하는 용어를 보기에 맞게 골라 기호를 작성하시오.
- 사용자가 사용자 이름 및 암호와 같은 자격 증명을 공유하지 않고도 타사 애플리케이션이 데이터 또는 리소스에 액세스할 수 있도록 권한을 부여할 수 있는 개방형 표준 프로토콜이다.
- 사용자가 데이터에 대한 제어를 유지하면서 리소스에 대한 액세스 권한을 부여할 수 있는 안전하고 표준화된 방법을 제공하며, 액세스 토큰을 사용하여 타사 애플리케이션에 리소스에 대한 액세스 권한을 부여하는 메커니즘을 사용자에게 제공하는 방식으로 작동한다.
- 사용자가 응용 프로그램에 대한 액세스 권한을 부여하면 응용 프로그램은 사용자를 대신하여 사용자의 리소스 또는 데이터에 액세스하는 데 사용할 수 있는 액세스 토큰을 받는다.
- 암호와 같은 사용자의 자격 증명은 타사 응용 프로그램과 공유되지 않으며, 클라우드 스토리지 서비스, 온라인 마켓 플레이스 및 금융 서비스를 포함한 다른 많은 응용 프로그램 및 서비스에서도 사용된다.
- Facebook, Twitter 및 LinkedIn과 같은 소셜 미디어 플랫폼에서 널리 사용되어 사용자가 소셜 미디어 데이터에 대한 액세스 권한을 타사 애플리케이션에 부여할 수 있도록 한다.
- 타사 애플리케이션에 대한 사용자 자격 증명의 노출을 최소화하여 향상된 보안, 간소화된 애플리케이션 개발, 사용자가 리소스에 대한 액세스 권한을 쉽게 부여하거나 취소할 수 있도록 하여 향상된 사용자 환경 등 여러 가지 이점을 제공한다.
<보기>
ㄱ.NFT ㄴ.JWT ㄷ.SAML ㄹ.accessToken ㅁ.SSO ㅂ.OIDC ㅅ.Autentication ㅇ. OAuth ㅈ.Cookie ㅊ.Refresh Token |
ㅇ. OAuth
* OAuth (Open Authorization, 공개 인증)
인터넷 애플리케이션에서 사용자 인증에 사용되는 공개 API(OpenAPI)로 구현된 표준 인증 방법.
- 다른 애플리케이션에서 네이버, 카카오톡, 구글 등의 저장된 사용자 정보에 접근할 때 사용 가능.
ex) 다른 애플리케이션에 Google로 로그인하면 연동된 계정의 Google Calender 정보를 가져올 수 있다.
* NFT (Non-Fungible Token)
블록체인 기술을 이용하여 고유한 디지털 자산을 나타내는 토큰. 상호교환X
* JWT (JSON Web Token)
JSON 포맷으로 된 토큰. 클라이언트/서버 간 인증정보나 데이터를 전달할 때 사용. (OAuth)
* SAML (Security Assertion Markup Language)
XML 기반, 서로 다른 보안 도메인 간에 인증과 권한 정보를 교환하기 위한 프로토콜.
주로 기업환경, SSO (Single Sign-On)
* Access Token
인증 시스템에서 사용자가 특정 자원에 접근할 수 있도록 허용하는 임시적인 토큰.
주로 OAuth에서 발급되며, 리소스 서버에 인증을 위해 사용.
* SSO (Single Sign-On)
한 번의 로그인으로 여러 서비스나 애플리케이션에 접근할 수 있는 인증 방식.
* OIDC (OpenID Connect)
OAuth 2.0 기반의 인증 프로토콜로, ID 토큰을 사용하여 사용자를 인증.
* Authentication (인증)
사용자가 누구인지(신원) 확인하는 과정.
* Cookie
웹 브라우저에서 사용자의 상태 정보를 저장하는 작은 데이터 파일.
쿠키를 통해 사용자의 로그인 상태나 설정 값을 서버가 유지.
* Refresh Token
액세스 토큰이 만료된 경우, 새 액세스 토큰을 발급받기 위해 사용되는 토큰.
보통 액세스 토큰보다 유료 기간이 길며, 보안 강화를 위해 사용.
3. 리눅스(Linux)에서 사용자에게 읽기/쓰기/실행 권한을 부여하고, 그룹에게는 읽기/실행을 부여하고, 그 이외에는 실행 권한을 test.txt 파일에 부여하는 위한 명령어는 다음과 같다. 빈칸에 들어갈 답을 작성하시오. (8진법 사용)
( (1) ) ( (2) ) test.txt
(1) chmod
(2) 751
* chmod : 파일의 권한 모드(읽기, 쓰기, 실행) 설정 (change mode) => 파일의 접근을 제한
( * 완전수 * )
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
1~100 사이의 정수들 중 완전수의 합. (6 + 28)
* 완전수 (Perfect Number) : 자기 자신을 제외한 약수의 합이 자기 자신이 되는 정수.
(6, 28, 496, 8128)
( * c언어_구조체 포인터 * )
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
→
* 화살표 연산자 ( → )
구조체 포인터 변수가 구조체 멤버에 접근할 때 사용하는 연산자.
6. 다음 빈칸에 들어갈 UNION 연산의 결과값을 작성하시오.
[테이블]
T1
A | B |
1 | X |
2 | Y |
3 | Z |
T2
A | B |
1 | Z |
2 | Z |
4 | X |
SELECT A FROM T1
UNION
SELECT A FROM T2
ORDER BY A DESC;
<결과 테이블>
A |
4 |
3 |
2 |
1 |
* UNION : 중복을 제거한 합집합 연산자.
( * 접근통제 * )
7. 다음 설명은 서버 접근 통제의 유형이다. 괄호 안에 들어갈 용어를 작성하시오. (영어 약자로 작성하시오.)
- ( (1) )은/는 규칙 기반(Rule-Based) 접근통제 정책으로, 객체에 포함된 정보의 허용 등급과 접근 정보에 대하여 주체가 갖는 접근 허가 권한에 근거하여 객체에 대한 접근을 제한하는 방법이다.
- ( (2) )은/는 중앙 관리자가 사용자와 시스템의 상호관계를 통제하며 조직 내 맡은 역할(Role)에 기초하여 자원에 대한 접근을 제한하는 방법이다.
- ( (3) )은/는 신분 기반(Identity-Based) 접근통제 정책으로, 주체나 그룹의 신분에 근거하여 객체에 대한 접근을 제한하는 방법이다.
(1) MAC
(2) RBAC
(3) DAC
* 접근 통제 (Access Control, 접근 제어)
- 임의 접근 통제 (DAC, Discretionary Access Control, 신분 기반 정책)
자원에 접근하는 사용자의 신원에 따라 접근 권한을 부여하는 방식.
- 강제 접근 통제 (MAC, Mandatory Access Control, 규칙 기반 정책)
사용자나 자원(객체) 모두 보안 레벨(등급)을 부여 받아 서로의 레벨을 비교하여 접근 권한을 부여하는 방식.
- 역할기반 접근 통제 (RBAC, Role-Based Access Control)
사용자에게 할당된 역할(Role)에 기반하여 접근 권한을 부여하는 방식 => 직책에 권한을 부여.
( * c언어_재귀함수 * )
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
9. 다음 설명에 대해 괄호 안에 알맞는 용어를 작성하시오. (영어 약자로 작성하시오.)
- ( )은/는 자료를 일정한 크기로 정하여 순서대로 전송하는 자료의 전송 방식이다.
- 셀이라 부르는 고정 길이 패킷을 이용하여 처리가 단순하고 고속망에 적합하며, 연속적으로 셀을 보낼 때
다중화를 하지 않고 셀단위로 동기가 이루어지지만 경우에 따라 동기식 시간 분할 다중화를 사용하기도 한다.
- 가상 채널 (Virtual Channel) 기반의 연결 지향 서비스로 셀이라 부르는 고정 길이(53바이트) 패킷을 사용하며 통계적 다중화 방식을 이용한다. (패킷교환방식)
+ ITU-T에서 광대역 종합 정보 통신망(B-ISDN)의 전송 방식으로 결정하여, B-ISDN의 핵심이 되는 전송/교환 기술로 모든 정보를 ATM 셀이라는 고정 길이의 블록으로 분할하여 이것을 순차적으로 전송한다.
ATM
* ATM (Asynchronous Transfer Mode, 비동기 전송 모드)
- 기존 패킷교환방식과 유사하나, 패킷 크기를 일정하게 하고 에러복구 등을 간략화시킴.
- ATM셀들을 모아서 => 비동기식 시분할 다중화 (ATDM)
전송할 데이터를 버퍼에 우선 저장 => 우선순위에 따라 다중화 슬롯에 삽입.
ATM 셀들의 전달에만 관여.
( * c언어_문자열 포인터 * )
10. 다음은 C언어의 포인터 문제이다. 알맞는 출력값을 작성하시오.
#include
int main() {
char* p = "KOREA";
printf("%s ", p);
printf("%s ", p+1);
printf("%c ", *p);
printf("%c ", *(p+3));
printf("%c ", *p+4);
}
KOREA
OREA
K
E
O
char*p = "KOREA"
p = K O R E A \0
10 11 12 13 14 15
printf("%s ", p); => p의 값을 문자열 형식으로 출력 (\0까지)
printf("%s ", p+1); => p+1 = 11 (p는 포인터 변수이므로 주소값 연산)
printf("%c ", *p); => p의 값
printf("%c ", *(p+3)); => (p+3)의 값 => 13번지의
printf("%c ", *p+4); => P의 값 + 4 => K + 4 => 75(ASCII코드) + 4 = 79 => 79의 문자형태는 O
* ASCII코드 (아스키코드)
A => 65
a => 97
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
오버라이딩 메소드가 상위 클래스의 메소드보다 우선순위를 가짐*
=> obj.compute(7) 에서 호출되는 메소드는 Child 클래스의 메소드.
( 2020_4회 8번 )
12. IP 패킷에서 외부의 공인 IP주소와 포트 주소에 해당하는 내부 IP주소를 재기록하여 라우터를 통해 네트워크 트래픽을 주고받는 기술은 무엇인가?
NAT (Nerwork Address Transformation)
네트워크 주소 변환 기능을 수행하는 프로토콜로, 외부 네트워크에 알려진 것과 다른 IP 주소를 사용하는 내부 네트워크에서 IP 주소를 변환한다. 즉, 공인 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번 라인
class Person {
private String name; // instance 변수
...
public static String get() { // static 메소드
return name; // instance 변수인 name은 아직 메모리에 공간을 할당받지 못함.
}
...
}
public class main {
public static void main(String[] args) {
Person obj = new Person("Kim"); // Person 객체 생성 => Heap 영역에 할당.
obj.print();
}
}
(컴파일 시점에 Static영역에 static메소드인 get()이 공간을 할당받고,
인스턴스 변수인 name은 프로그램이 실행되어 Person객체가 생성되는 시점에 Heap 영역에 공간을 할당받는다)
static이 아닌 필드 이름을 static 참조로 만들 수 없다는 오류가 난다.
* 자바 메모리 영역
public class JavaMemory{
static int S = 20; // static변수 (전역변수)
int I = 60; // 인스턴스 변수 (전역변수)
public void method(int P){ // 매개변수 (지역변수)
int L = 40; // 지역변수
}
}
- Static 영역 : static 변수, 클래스, static 메소드
=> 클래스가 메모리에 올라갈 때(컴파일 시점) ~ 프로그램이 종료될 때까지 유지.
** static 메소드 : 객체 생성 없이 호출할 수 있는 메소드.
** static 변수 : 단 한번만 생성되어 공유되는 변수.
- Heap 영역 : 인스턴스 변수, 객체(new)
=> 객체가 생성될 때 ~ 객체가 소멸될 때까지 유지.
- Stack 영역 : 매개변수, 지역변수, 메소드
=> 블록 내에서 변수의 선언문이 실행 될 때 ~ 블록이 종료될 때까지 유지.
14. 다음은 파이썬에 대한 문제이다. 괄호 안에 알맞는 답을 작성하시오.
print("파이썬 입출력에 대한 문제입니다.")
num1, num2 = input()._____()
print(num1,num2)
num3 = num1 + num2
print(num1 + " + " + num2 + " = " + num3)
출력화면
파이썬 입력출에 대한 문제입니다.
2 3
2 + 3 = 5
split
* 입력함수 input()
변수명1, 변수명2, ... = input().split(분리문자)
* 분리문자
여러 값을 입력할 때 값과 값 사이를 구분하기 위한 문자.
분리문자를 기준으로 값을 구분하여 변수에 저장한다.
15. 다음은 판매와 관련된 다이어그램이다. 해당 다이어그램의 명칭을 쓰시오.
패키지 다이어그램
* 패키지 다이어그램
정적 모델링의 하나로, 객체 등과 같은 여러 요소들을 그룹화하여 그들 간의 의존 관계를 표현한 다이어그램.
요소들을 그룹화해 패키지를 구성하고 패키지 간의 관계 및 계층적 구조를 표현. (패키지 표기법 모형 기억*)
16. 다음 설명에 알맞는 답을 보기에서 골라 작성하시오. (블랙박스 테스트)
- 시스템이나 시스템 구성요소(component) 또는 소프트웨어 프로그램의 입력값과 출력값이 특정 그룹으로 분류되며, 분류된 그룹내의 값들이 시스템에 의해 동일하게 취급된다는 특성을 이용하여 시험하는 기법
- 유사한 입력값들이 시스템을 거치면서 유사한 답변이 나온다는 것을 가정하여 테스트
- 하나의 값은 그 분할 내 모든 값을 대표하는 것으로 간주하는 기법
- 모든 입력값을 시험할 필요가 없게 하여 시험을 효율적으로 수행하도록 지원
- 일반적으로 경계값 분석기법(boundary value analysis)과 함께 테스트 케이스 도출하는데 사용
보기
ㄱ.Equivalence Partitioning ㄴ.Statement Coverage ㄷ.Boundary Value Analy ㄹ.Branch Coverage ㅁ.Error Guessing ㅂ.Condition Coverage ㅅ.Cause Effect Graph |
ㄱ. Equivalence Partitioning (동치 분할 검사)
( * 클라우드 * )
17. 다음은 클라우드에 대한 유형 문제이다. 괄호안에 알맞는 답을 보기에 골라 작성하시오.
보기
PaaS SaaS IaaS |
(1) IaaS
(2) Paas
(3) Saas
* 클라우드 컴퓨팅
인터넷으로 가상화된 IT 리소스(Resource)를 서비스로 제공하는 것을 의미한다. 쉽게 말해, 인터넷을 통해 데이터 저장, 콘텐츠 사용 등 IT 관련 서비스를 한 번에 사용할 수 있는 컴퓨팅 환경을 말한다. 클라우드 컴퓨팅은 제공하는 서비스 영역에 따라 아래와 같이 분류할 수 있다.
* IaaS (Infrastructure as a Service)
서버를 운영하기 위한 IT 인프라 서비스를 제공한다. 여기에는 네트워킹, 스토리지 등이 있으며, 기존 On-premise 방식보다 확장성이 좋다. 가상화 기술을 사용하여 탄력적으로 자원을 관리함으로써 자원 낭비를 줄여 비용적인 측면에서 효율성을 만들어 낼 수 있다.
=> AWS (Amazon Web Service)
* Paas (Platform as a Service)
애플리케이션을 개발, 실행, 테스트, 관리 등을 할 수 있도록 서비스를 제공해 준다. 이 방식은 주로 응용 프로그램을 개발할 때 사용하며, 플랫폼 구축보다 오직 개발에만 집중할 수 있는 장점이 있다.
=> 구글 앱 엔진
* Saas (Software as a service)
모든 서비스를 공급 업체가 제공하며 관리해 준다. 공급 업체가 관리하는 소프트웨어를 사용자에게 제공하기 위해 인터넷(클라우드)을 사용하며, 대부분 웹 브라우저를 통해 직접 실행되므로 사용자 측에서는 설치가 필요하지 않다.
=> 네이버 클라우드, 구글 캘린더 등
18. 다음은 프로토콜 종류에 관한 설명이다. 알맞는 답을 작성하시오.
- 최소 Hop count를 파악하여 라우팅하는 프로토콜이다.
- 거리와 방향으로 길을 찾아가는 Distance Vector 다이나믹 프로토콜이다.
- 최단거리 즉, Hop count가 적은 경로를 택하여 라우팅하는 프로토콜로 Routing Table에 인접 라우터 정보를 저장하여 경로를 결정한다.
- 최대 Hop count는 15로 거리가 짧기 때문에 IGP로 많이 이용하는 프로토콜이다.
RIP (Routing Information Protocol, 경로 선택 정보 프로토콜)
- 내부라우팅 프로토콜의 일종으로 경유하는 라우터의 대수(홉(hop)수)에 따라서 최단 경로를 동적으로 결정하는 거리 벡터 알고리즘을 사용. (속도나 지연 등을 고려하지 않아 최적의 경로는 아님.)
- 30초 주기로 전체 라우팅 정보 갱신 => 변화 업데이트 시 많은 시간 소요 => 소규모 네트워크에 적합.
최대 홉 수를 16 미만으로 제한.
19. 다음은 관계 대수에 대한 내용이다. 보기에 알맞는 기호를 작성하시오.
1. join : ( 1 )
2. project : ( 2 )
3. select : ( 3 )
4. division : ( 4 )
보기
ㄱ. σ ㄴ. π ㄷ.⋈ ㄹ.÷ |
1. ㄷ.⋈
2. ㄴ. π
3. ㄱ. σ
4. ㄹ.÷
* SELECT (σ) : 릴레이션에서 주어진 조건을 만족하는 튜플들을 검색하는 것.
* PROJECT (π) : 릴레이션에서 주어진 조건을 만족하는 속성들을 검색하는 것.
* JOIN (⋈) : 두 개의 릴레이션 A와 B에서 공통된 속성을 연결하는 것.
* DIVISION (÷) : X ⊃ Y 인 두개의 릴레이션 R(X)와 S(Y)가 있을 때, R의 속성이 S의 속성 값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 것.
20. 다음은 데이터베이스에 관련된 문제이다. 괄호 안에 알맞는 답을 작성하시오.
- ( ) 무결성은 관계 데이터베이스 관계 모델에서 2개의 관련 있던 관계 변수(테이블) 간의 일관성(데이터 무결성)을 말한다.
- 종종 기본 키 또는 키가 아닌 후보 키와 외래 키의 조합으로 강제 적용된다.
- 외래 키가 선언된 관계 변수의 외래 키를 구성하는 속성(열)의 값은 그 관계 변수의 부모가 되는 관계 변수의 기본 키 값 또는 기본 키가 아닌 후보 키 값으로 존재해야 한다.
참조
* 참조 무결성 제약 조건
외래키 제약 조건 (foreign key constraint) 으로 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없음을 의미하는 개체의 참조 관계를 선언한 제약 조건.
https://www.youtube.com/watch?v=L7-_T6IliK8
'정보처리기사 > 실기기출' 카테고리의 다른 글
[정처기실기] 2024년 2회 (0) | 2024.10.03 |
---|---|
[정처기실기] 2024년 1회 (0) | 2024.07.08 |
[정처기실기] 2023년 2회 (0) | 2024.04.14 |
[정처기실기] 2023년 1회 (0) | 2024.04.03 |
[정처기실기] 2022년 3회 (0) | 2024.04.01 |