포스트

2023 3회

Q. 다음은 자바 코드이다. 출력 결과를 쓰시오.

BDCDD

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class Soojebi {
	public static void main(String[] args) {
		Parent c = new Child();
		c.paint();
		c.draw();
	}
}
class Parent() {
	public void paint() {
		System.out.print("A");
		draw();
	}
	public void draw() {
		System.out.print("B");
		draw();
	}
}
class Child extends Parent {
	public void paint() {
		super.draw();
		System.out.print("C");
		this.draw();
	}
	public void draw() {
		System.out.print("D");
	}
}
  • main 메서드부터 실행
  • Child 클래스 생성자가 호출됨(코드에 생성자가 없으므로 따로 실행되는 것은 없음)
  • Child 클래스의 인스턴스가 c 변수에 저장
  • paint() 메서드는 오버라이딩 관계이므로 자식 클래스인 Child 클래스의 print 메서드 호출
  • super는 상위 클래스이므로 super.draw() 메서드는 상위 클래스인 Parent 클래스의 draw 메서드
  • B를 출력
  • draw 메서드를 호출하는데, draw 메서드는 오버라이딩 관계이므로 자식 클래스인 Child 클래스의 draw 메서드 호출
  • D를 출력
  • Parent 클래스의 draw() 메서드가 끝났으므로 Parent 클래스의 draw()를 호출했던 곳으로 이동
  • C를 출력
  • this.draw()에서 this는 자기자신이므로 Child 클래스의 draw를 호출
  • D를 출력
  • Child 클래스의 paint 메서드가 끝났으므로 paint 메서드 호출했던 곳으로 이동
  • draw 메서드는 오버라이딩 관계이므로 자식 클래스인 Child 클래스의 draw 메서드를 호출
  • D를 출력

Q. 다음에서 설명하는 용어를 쓰시오.

OAuh

  • 사용자가 비밀번호를 제공하지 않고 다른 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있게 하는 개방형 표준기술이다.
  • 구글, 페이스북 등의 외부 계정을 기반으로 토큰을 이용하여 간편하게 회원가입 및 로그인을 할 수 있는 기술이다.
  • OAuth는 사용자가 비밀번호를 제공하지 않고 다른 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있게 하는 개방형 표준기술이다.
  • 네이버, 카카오톡, Google, Facebook 등의 외부 계정을 기반으로 토큰을 이용하여 간편하게 회원가입 및 로그인할 수 있게 해주는 기술이다.
  • OAuth(“Open Authorization”)는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다. 이 매커니즘은 여러 기업들에 의해 사용되는데, 이를테면 아마존, 구글, 페이스북, 마이크로소프트, 트위터가 있으며 사용자들이 타사 애플리케이션이나 웹사이트의 계정에 관한 정보를 공유할 수 있게 허용한다.

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

chmod, 751

( ① )( ② ) soojebi.txt

  • chmod: 권한 부여, chown 소유자 변경
  • 소유자, 그룹, 이외에 대한 권한을 각각 0~7까지 사용하는 8진수를 사용하여 표현한다.
  • 8진수는 이진수로 나타냈을 시 세 비트를 가진다.(000~111)
  • 8진수이므로 각각의 값은 4, 2, 1이 된다.

이미지

  • chmod 명령은 기존 파일 또는 디렉토리에 대한 접근 권한을 변경할 때 사용한다.

    chmod [-R] permission file-name

 user  group  other 
rwxrwxrwx
4214-1--1

Q. 다음은 C언어 코드이다. 출력 결과를 쓰시오.

34

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
int perfect_number(int n) {
	int i, sum = 0;
	for(i=1; i<=n/2; i++) {
		if(n%1 == 0)
			sum += i;
	}
	if (n == sum)
		ruturn 1;

return 0;
}
int main() {
	int i, sum = 0;
	for (i=2; i<=100; i++) {
		if (perfect_number(i))
			sum += i;
	}
	printf("%d ", sum);
	
	return 0;
}
  • 해당 코드는 perfect_number 함수를 통해 2부터 100 사이의 모든 완전수를 찾아서 그 합을 계산하여 출력한다.
  • 완전수로는 1을 제외한 6과 28의 합인 34가 출력된다.

  • 피타고라스는 6이라는 수에 아주 유별난 성질이 있음을 발견했다. 그 유별난 성질이란 바로 6은 자기 자신을 제외한 약수 1, 2, 3의 합이라는 사실이다. 이러한 수를 ‘완전수’라고 부른다.
  • 수론에서 완전수(完全數)는 자기 자신을 제외한 양의 약수(진약수)를 더했을 때 자기 자신이 되는 양의 정수를 말한다. 또는 모든 양의 약수를 더했을 때 자기 자신의 2배가 되는 수를 말하기도 한다. 최초 다섯 개의 완전수는 6, 28, 496, 8128, 33550336이다.

Q. C언어에서 구조체의 포인터로 멤버에 접근하기 위한 기호를 쓰시오.

  • 구조체의 포인터로 멤버에 접근하기 위해서는 화살표 연산자(→)를 사용한다.

    구조체 포인터 → 멤버 변수 이름


Q. 다음 빈칸에 들어갈 UNION 연산에 대한 결괏값을 작성하시오.

A, 4, 3, 2, 1

[쿼리]

1
2
3
4
SELECT A FROM t1
UNION
SELECT B FROM t2
ORDER BY A DESC;

[t1 테이블]

AB
3x
1y
4z
2z

[t2 테이블]

AB
2x
4y
3z
1z

[출력 결과]


Q. 다음은 서버 접근통제의 유형이다. 괄호() 안에 들어갈 용어를 쓰시오. (단, 영어 약어로 작성하시오.)

MAC, RBAC, DAC

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

Q. 다음은 자바 코드이다. 출력 결과를 쓰시오.

5040

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Soojebi {
	public static void main(String[] args) {
		int sum = fact(7);
		System.out.println(sum);
	}
	public static int fact(int n) {
		if (n == 1) {
			return 1;
		}
		else {
			return n * fact(n-1);
		}
	}
}
  • fact 함수는 재귀함수로, 입력값인 7부터 재귀호출을 실행한다.
  • fact 함수의 n값이 점차적으로 1씩 줄어들고, 가장 마지막에 호출되는 fact(1)에서 리턴되는 값 1부터 역으로 값을 곱해가며 최종 리턴값인 5040을 sum에 저장하고 출력한다.

Q. 정보전달의 기본단위를 53바이트 셀 단위로 사용하는 비동기식 시분할 다중화 방식의 패킷형 전송 기술은 무엇인지 영어 약자로 쓰시오.

ATM(Asynchronous Transfer Mode)

  • ATM은 정보 전달의 기본단위를 53바이트 셀 단위로 사용하는 비동기식 시분활 다중화 패킷형 전송 기술이다.
  • ATM은 회선 교환과 패킷 교환의 장점을 결합한 광전송 기술이다.

Q. 다음은 C언어 코드이다. 출력 결과를 쓰시오.

이미지

1
2
3
4
5
6
7
8
9
10
#include <stdio.j>
int main() {
	char* p = "KOREA"
	printf("%s\n", p);
	printf("%s\n", p+1);
	printf("%c\n", *p);
	printf("%c\n", *(p+3));
	printf("%s\n", *p+4);
	return 0;
}
  • char * = “KOREA”;라고 선언하게 되면 p라는 포인터에 KOREA라는 저장공간이 할당된 곳을 가리키게 됨

    KOREA
    P[0]P[1]P[2]P[3]P[4]
    *P*(P+1)*(P+2)*(P+3)*(P+4)
  • p&p[0]과 같으므로 print(”%s\n”, p);는 p[0]번지에 있는 K부터 NULL 전의 값인 A까지 출력
    • p == &p[0]
  • p+1은 &p[1]과 같으므로 print(”%s\n”, p+1);는 p[1]번지에 있는 O부터 NULL 전의 값인 A까지 출력
    • p+1 == &p[1]
  • *p는 p[0]과 같으므로 printf(“%c\n”, *p);는 p[0]번지 값인 K를 출력
    • *p == p[0]
  • *(p+3)은 p[3]과 같으므로 printf(“%c\n”, *(p+3));는 p[3]번지 값인 E를 출력
    • *(p+3) == p[3]
  • *p는 p[0]과 같고, *p+4는 p[0]에 4를 더한 것과 같으므로 printf(”%c\n”, *p+4);는 p[0]번지 값인 K에 4를 더한 O를 출력

Q. 다음은 C언어 코드이다. 출력 결과를 쓰시오.

2

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
int soojebi(int n) {
	if(n <= 1) {
		return n;
	}
	else {
		return soojebi(n-1) + soojebi(n-3);
	}
}
int main() {
	printf("%d", soojebi(7));
	return 0;
}
  • 7을 매개변수로 넘겨주어 soojebi 함수를 호출하고, 매개변수에 n-1값과 n-3값을 각각 재귀 호출한 값을 더하여 화면에 출력한다.
  • 최종적으로 soojebi(7)은 soojebi(6) + soojebi(4)이고, 1+1을 더한 2가 화면에 출력된다.

Q. 다음에서 설명하는 네트워크 용어를 쓰시오.

NAT(Network Access Cortrol)

  • 사설 네트워크에 속한 공인 IP 주소로 바꿔주는 네트워크 주소 변환 기술이다.
  • IPv4의 IP 주소 부족 문제를 해결할 수 있고, 보안을 강화하는 목적으로 사용한다.
  • NAT는 사설 네트워크에 속한 IP를 공인 IP 주소로 바꿔주는 주소 변환 기술이다. 기업 내부에서 사설 IP를 부여해서 사용하다가 기업 외부로 통신할 때는 NAT를 통해서 공인 IP로 변환해서 통신함으로써 부족한 IP 주소 문제를 해결하고 기업 내부의 보안을 강화할 수 있다.

Q. 다음은 자바 코드이다. 오류가 발생하는 라인의 번호를 쓰시오.

7

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Person {
	private String name;
	public Person(String val) {
		name = val;
	}
	public static String get() {
		return name;
	}
	public void print() {
		System.out.println(name);
	}
}
class Soojebi {
	public static void main(String[] args) {
		Person p = new Person("soojebi");
		p.print();
	}
}
  • 7번째 라인에서 get 메서드는 String 타입을 반환 타입으로 가지는 메서드인데, name은 static 변수가 아니므로 에러가 발생한다.
  • static 메서드는 메모리에 먼저 올라가는데, 참조하는 name 변수는 private 변수라서 오류가 난다.
  • 즉, static 변수가 아닌 변수면 전부 오류가 난다.
Line 1Person 클래스 선언
Line 2name이라는 String 타입의 멤버 변수 선언
Line 3Person 생성자 선언
Line 4파라미터 val을 name을 변수에 저장
Line 6반환 타입이 String 타입인 get 메서드를 static으로 선언
Line 7static 변수가 아닌 name을 반환할 때 에러 발생
Line 9print 메서드
Line 10name을 화면에 출력
Line 15Person 클래스의 생성자에 “soojebi”를 매개변수로 전달하여 객체 p를 생성
Line 16p.print 메서드를 호출

Q. 다음은 파이썬 언어이다. 밑줄 친 빈칸에 들어갈 메서드를 쓰시오.

split

1
2
3
num1, num2 = input().   ()
print(num1)
print(num2)

[입력값]

1
hello soojebi

[출력값]

1
2
hello
soojebi
Line 1hello soojebi라는 문자열을 입력하면 공백(’’)를 구분자로 하여 num1에는 hello, num2에는 soojebi라는 문자열로 분할함
Line 2num1을 출력하므로 hello가 출력됨
Line 3num2를 출력하므로 soojebi가 출력됨

Q. 다음은 판매와 관련된 다이어그램이다. 괄호() 안에 들어갈 다이어그램의 명칭을 쓰시오.

패키지(Package)

이미지

  • 패키지 다이어그램(Package Diagram)은 시스템의 서로 다른 패키지들 사이의 의존관계를 표현하기 위한 다이어그램이다.
  • 폴더 모양의 패키지와 점선으로 표시된 의존관계, «import»라는 스테레오 타입 표기를 통해 패키지 다이어그램을 파악할 수 있다.

    패키지요소들을 그룹으로 조직하기 위한 요소
    의존관계하나의 패키지가 다른 패키지를 사용하는 관계

Q. 다음에서 설명하는 테스트 기법을 보기에서 골라서 기호로 쓰시오.

Equivalence Partitioning

  • 입력 데이터의 영역을 유사한 도메인별로 유효값/무효값을 그룹핑하여 대푯값을 테스트 케이스로 도출하는 기법이다.
  • 테스트 예상값을 설정해 놓고, 테스트 결과가 그 값과 비교해서 일치하는지 확인한다.

[보기]

㉠ Equivalence Partitioning

㉡ Equivalence Analysis

㉢ Boundary Value Analysis

㉣ Decision Table

㉤ Equivalence Coverage

㉥ State Transition

㉦ Cause-Effect Graph

㉧ Comparison


Q. 기업이 운영하는 구역과 서비스를 제공해주는 구역을 다음과 같이 나누었을 때 괄호 () 안에 들어갈 클라우드 유형을 보기 중에서 고르시오.

IaaS(Infrastructure as a Service, 인프라형 서비스), PaaS(Platform as a Service, 플랫폼형 서비스), SaaS(Software as a Service, 소프트웨어형 서비스)

이미지

( ① ): 서버, 스토리지 같은 시스템 자원을 클라우드 서비스로 제공한다.

( ② ): 인프라를 생성, 관리하는 복잡함 없이 애플리케이션을 개발, 실행, 관리할 수 있게 하는 플랫폼을 클라우드 서비스로 제공한다.

( ③ ): 소프트웨어 및 관련 데이터를 클라우드 서비스로 제공한다.


Q. 다음에서 설명하는 라우팅 프로토콜을 쓰시오.

RIP(Routing Information Protocol)

  • IGP(Interior Gateway Protocol) 중 거리벡터 알고리즘에 기초한 라우팅 프로토콜이다.
  • 홉 수의 제한이 있고, UDP 프로토콜을 사용하는 라우팅 프로토콜이다.
  • RIP는 AS(Autonomous System; 자치 시스템; 자율 시스템) 내에서 사용하는 거리 벡터(Distance-Vector) 알고리즘에 기초하여 개발된 내부 라우팅 프로토콜이다.
  • RIP의 특징은 다음과 같다.
    • 벨만-포드 알고리즘 사용
      • 벨만-포드(Bellman-Ford) 알고리즘 사용하는 내부 라우팅 프로토콜
      • 거리 벡터 라우팅 기반 메트릭 정보를 인접 라우터와 주기적으로 교환하여 라우팅 테이블을 갱신하고 라우팅 테이블을 구성・계산
    • 15홉 제한
      • 최대 홉 수(Hop Count)를 15개로 제한
    • UDP 사용
      • UDP 포트 520 사용
    • 30초마다 정보 공유
      • 30초마다 전체 라우팅 정보를 브로드캐스팅
  • 라우팅 프로토콜: 라우터 간 라우팅 정보를 주고받을 때 사용하는 프로토콜
  • 자율 시스템(AS; Autonomous System): 큰 회사, 하나의 도메인에 속해 있는 라우터들의 집합
  • 라우터 마다 연결된 네트워크가 존재한다. RIP는 출발지부터 목적지까지 도착할 때 거쳐야 하는 네트워크 개수인 홉 수가 짧은 경로 선택
  • 밸만-포드 알고리즘, 다익스타 알고리즘의 가장 큰 차이는 음수 값의 처리 여부

    이미지

이미지

이미지

이미지


Q. 다음 괄호() 안에 들어갈 관계대수 연산자의 기호를 쓰시오.

▷◁, π, σ, ÷

ㄱ. Join : ( ① )

ㄴ. Project: ( ② )

ㄷ. Select: ( ③ )

ㄹ. Division: ( ④ )

  • 순수 관계 연산자의 기호는 다음과 같다.

이미지

  • () 테이블, σ 조건, π 속성(필드)를 가져옴
1
2
3
4
5
6
7
8
9
10
11
12
순수 관계 연산자
- select σ 시그마 → 수평단절, 행을 다 가져옴
- project π 파이 → 수직단절, 열을 다 가져옴
- join ▷◁ → 공통 속성을 이용해 두개의 릴레이션 튜플을 연결 → 새로운 릴레이션
- division ÷ → 릴S의 모든 튜플과 관련있는 릴R의 튜플반환
	       R의 속성이 S의 속성값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 연산

일반 집합 연산자
- UNION 합집합
- INTERSECTION 교집합
- DIFFERENCE 차집합
- CARTESIAN PRODUCT 교차곱

Q. 다음 릴레이션에 생기는 문제를 방지하기 위해서는 () 무결성 제약 조건을 준수해야 한다. 괄호() 안에 들어갈 용어를 쓰시오.

참조

이미지

  • 참조 무결성 제약 조건은 릴레이션과 릴레이션 사이에 대해 참조의 일관성을 보장하기 위한 조건이다.
  • 두 개의 릴레이션이 기본키, 외래키를 통해 참조 관계를 형성할 경우, 참조하는 외래키의 값은 항상 참조되는 릴레이션에 기본 키로 존재해야 한다.


참고 자료


이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.