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

① laaS ② PaaS ③ SaaS
다음 자바 코드를 실행할 경우 에러가 발생이 된다. 에러가 발생하는 라인을 작성하시오.

-> 7
다음 C언어로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.
#include
#include
void func(char *d, char *s) {
int sum = 0;
while (*s) {
*d = *s;
d++;
s++;
}
*d = '';
}
int main() {
char* str1 = "first";
char str2[50] = "teststring";
int result = 0;
func(str2, str1);
for (int i = 0; str2[i] != ''; i++) {
result += i;
}
printf("%d", result);
return 0;
}
답: 10
다음 Java로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.
public class Main {
public static String rf(String str, int index, boolean[] seen) {
if(index < 0) return "";
char c = str.charAt(index);
String result = rf(str, index-1, seen);
if(!seen[c]) {
seen[c] = true;
return c + result;
}
return result;
}
public static void main(String[] args) {
String str = "abacabcd";
int length = str.length();
boolean[] seen = new boolean[256];
System.out.print(rf(str, length-1, seen));
}
}
답: dcba
다음은 JAVA 코드 문제이다. 가지고 있는 돈이 총 4620원일 경우 1000원, 500원, 100원, 10원의 지폐 및 동전을 이용하여 보기의 조건에 맞춰 "최소한의 코드"를 작성해 빈 괄호 안을 채우시오.

[보기]
아래 주어진 항목들을 응용하여 괄호 안 코드를 작성.
변수 : m
연산자 : / , %
괄호 : [ , ] , ( , )
정수 : 1000, 500, 100, 10
정답
m / 1000
(m % 1000) / 500
(m % 500) / 100
(m % 100) / 10
다음은 테이블에 데이터를 삽입하기 위한 과정이다. 보기의 조건식에 맞게 데이터 삽입을 위한 SQL문을 작성하시오.

CREATE TABLE 학생 (
학번 int,
이름 varchar(20),
학년 int,
전공 varchar(30),
전화번호varchar(20)
);
INSERT INTO 학생(학번,이름,학년,전공,전화번호)
VALUES(22106940,'정처기',4,'컴퓨터공학','010-1234-5678');
다음 내용에서 설명하는 문제에 대해 보기에 알맞는 답을 골라 작성하시오.
[보기]
EAC, FEC, hamming, CRC, PDS, parity, BEC
( 1 ) Code는 데이터 전송시 1 비트의 에러를 정정할 수 있는, 오류정정부호의 일종으로 미국의 Bell 연구소의 Hamming에 의해 고안되었다.
선형블록부호 및 순회부호에 속에 속한다.
( 2 ) 은/는 송신측이 전송할 문자나 프레임에 부가적 정보(Redundancy)를 첨가하여 전송하고 수신측이 이 부가적 정보를 이용하여 에러검출 및 에러정정을 하는 방식이다.
( 3 ) 은/는 공격자가 전자 메일을 사용하여 상대방이 금전을 보내거나 기밀 회사 정보를 누설하도록 유도하는 사이버 범죄의 일종이다.
공격자는 신뢰할 수 있는 인물로 가장한 다음 가짜 청구서의 지불을 요청하거나 다른 사기에서 사용할 중요한 데이터를 요구한다.
( 4 ) 은/는 데이터가 저장장치 내의 한 장소에서 다른 장소로 이동되거나, 컴퓨터들간에 전송될 때, 데이터가 유실 또는 손상되었는지 여부를 점검하는 기술과 관련된 용어이다.
( 5 ) 은/는 네트워크 등을 통하여 데이터를 전송할 때 전송된 데이터에 오류가 있는지를 확인하기 위한 체크값을 결정하는 방식을 말한다.
1. hamming
2. FEC
3. BEC
4. parity
5. CRC
다음은 HDLC 프로토콜에 대한 설명이다. 보기 안에 알맞는 '기호' 를 골라 작성하시오.
[보기]
ㄱ. 연결제어 ㄴ. 감독 ㄷ. 정보 ㄹ. 양방향 응답 ㅁ. 익명 ㅂ. 비번호
ㅅ. 릴레이 ㅇ. 동기균형 ㅈ. 동기응답 ㅊ. 비동기균형 ㅋ. 비동기응답
( 1 ) 프레임은 Seq, Next, P/F의 필드를 가진다. 또한 맨 처음 비트를 0으로 가진다. Seq는 송신용 순서번호를 가지고 있다. Next는 응답용 순서번호를 가진다. P/F는 P가 1로 설정된 경우 주국에서 종국에 데이터 전송을 허용하는 것을 의미하고 F가 1로 설정된 경우 종국에서 주국으로 데이터 전송을 하는 것을 의미한다.
( 2 ) 프레임은 맨 앞의 필드가 1로 되어 있어 정보 프레임이 아니라는 것을 나타내고 다음 비트가 0이 나와있다. Type의 경우에는 2비트를 가지고 있어 4가지의 종류로 나누어진다. 데이터를 보내는 역할이 아니라 응답의 기능을 수행하므로 Seq에 대한 값은 필요가 없고 다음 프레임을 요구하는 Next만 존재한다.
( 3 ) 프레임은 순서 번호가 없는 프레임을 의미한다. 첫 번째 비트와 두 번째 비트가 모두 1로 설정되어 있다. 여러 종류를 가지고 있는데 Type의 2비트와 Modifier의 3비트를 합쳐 5비트를 통해 종류를 나눈다.
( 4 ) 은/는 두 호스트 모두 혼합국으로 동작한다. 양쪽에서 명령과 응답을 전송할 수 있다.
( 5 ) 은/는 불균형 모드로 주국의 허락 없이 종국에서 데이터를 전송할 수 있다.
1. ㄷ
2. ㄴ
3. ㅂ
4. ㅊ
5. ㅋ
다음 괄호 안에 알맞는 답을 작성하시오.
( ) 란 임의의 크기를 가진 데이터(Key)를 고정된 크기의 데이터(Value)로 변화시켜 저장하는 것이다.
키에 대한 ( ) 값을 사용하여 값을 저장하고 키-값 쌍의 갯수에 따라 동적으로 크기가 증가한다.
( ) 값 자체를 index로 사용하기 때문에 평군 시간복잡도가 O(1) 로 매우 빠르다
( ) 함수는 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수이다.
( ) 함수는 큰 파일에서 중복되는 레코드를 찾을 수 있기 때문에 데이터베이스 검색이나 테이블 검색의 속도를 가속할 수 있다.
답 = 해시(hash)
( )은/는 TCP/IP에서 IP 패킷을 처리할 때 발생되는 문제를 알려주는 프로토콜이다.
( ) 프로토콜은 보통 다른 호스트나 게이트웨이 와 연결된 네트웍에 문제가 있는지 확인하기 위한 목적으로 주로 사용된다.
( ) 을/를 이용한 공격에는 ( ) Flooding가 있는데 ping 명령어를 통한 ( ) 패킷을 연속적으로 계속 보내어 서버의 요청에 응답으로 인한 다른작업을 하지 못하도록 하는 공격이다.
답: ICMP
다음 성적 테이블에서 과목별 점수의 평균이 90점 이상인 '과목이름', '최소점수', '최대점수' 를 검색하고자 한다. [조건]을 참고하여 적합한 SQL문을 작성하시오.

[조건]
SELECT 과목이름 ,MIN(점수) AS 최소점수 ,MAX(점수) AS 최대점수
FROM 성적
GROUP BY 과목이름 HAVING AVG(점수) >= 90
다음 Java 코드에 대한 출력 값을 작성하시오.
class Parent {
int x = 100;
Parent() {
this(500);
}
Parent(int x) {
this.x = x;
}
int getX() {
return x;
}
}
class Child extends Parent {
int x = 4000;
Child() {
this(5000);
}
Child(int x) {
this.x = x;
}
}
public class Main {
public static void main(String[] args) {
Child obj = new Child();
System.out.println(obj.getX());
}
}
답: 500
부모 클래스에 매개변수가 없는 경우
자식 클래스 생성자 호출시 부모 클래스 생성자 자동 호출
문제의 경우 1)에 해당하므로 Child() 호출하면 Parent()가 먼저 호출>Child()호출됨
따라서 소스의 흐름을 보면
Parent() 호출 > Child() 호출 로 진행됨.
이 과정에서 각각 x값이 500, 5000으로 저장되고,
getX()함수는 Parent에만 있으므로 500 출력
다음은 스키마와 관련된 내용이다. 각 괄호안에 알맞는 답을 작성하시오.

1. 외부
2. 개념
3. 내부
아래 코드에서 출력되는 값을 작성하시오.

B0 => 제네릭타입은 object로 반환됨
아래 설명에 맞는 테스트 커버리지를 보기에서 골라 기호로 작성하시오.
1. 코드 내의 각 분기점이 true 또는 false로 평가될 때마다 해당 분기점이 모두 테스트 되는 것을 목표로 한다. 각 분기점이 모든 가능한 경로로 실행되었는지 확인하는 데 사용되는 커버리지 ( )
코드의 흐름을 여러 갈래로 나누는 조건문 또는 선택문을 의미한다. 예를 들어, if-else 문이나 switch 문에서 조건에 따라 실행 경로가 달라질 때를 의미한다. ( )
개별 조건문 내에 있는 각각의 조건이 true와 false 모두를 만족하도록 테스트하는 것을 의미한다. 예를 들어, if (A && B)와 같은 구문에서 A와 B가 각각 true와 false가 되는 경우를 테스트하는 것이 목표이다. ( )
(보기)
㉠ 조건/결정 커버리지
㉡ 결정 커버리지
㉢ 조건 커버리지
㉣ 분기 커버리지
㉤ 변경 조건/결정 커버리지
㉥ 문장 커버리지
㉧ 다중 조건 커버리지
㉥ 문장
㉣ 분기
㉢ 조건
class A {
A() {System.out.printf("%d", 10);}
}
class B extends A{
B(int a) {System.out.printf("%d', a);}
}
class C extends B {
C(int a){
super(a/10);
System.out.println("%d",a);
}
}
<출력결과>
10 100 1000
class Calculate {
public int cal(int a, int b) {
return a - b;
}
public float cal(float a, float b) {
return a - b;
}
public double cal(double a, double b) {
return a + b;
}
}
public class Example {
public static void main(String[] args) {
Calculate a = new Calculate();
System.out.println(a.cal(31, 69)); // ①
System.out.println(a.cal(24.8, 5.1)); // ②
}
}
✅ 출력: -38
✅ 출력: 29.9
24.8, 5.1 → double 리터럴
오버로딩된 메서드 중 cal(double, double)이 정확히 매치
만약 정확히 매치가 안된다면 컴파일 오류가 난다
c나 c++ 에선 묵시적 형변환이 되지만 자바에서는 형변환이 되지 않아 오류가 발생한다.

class Ref {
int a;
Ref(int x) {
a = x;
}
int sum(Ref obj) {
int k;
k = obj.a - a;
a = 10;
obj.a = 20;
return k;
}
}
public class Main {
public static void main(String[] args) {
Ref obj1 = new Ref(3);
Ref obj2 = new Ref(4);
int k1 = obj2.sum(obj1);
System.out.println("k1 = " + k1);
System.out.println("obj1.a = " + obj1.a);
System.out.println("obj2.a = " + obj2.a);
}
}
[sum 메서드 안 동작]
k = obj.a - a; // 3 - 4 = -1
a = 10; // this.a = obj2.a → 10
obj.a = 20; // obj.a = obj1.a → 20
✅ 최종 출력 결과
k1 = -1
obj1.a = 20
obj2.a = 10
public class SaTest{
public static void main(String args[]){
String numbers[] = {"first", "second", "third"}
for(String s:numbers)
System.out.println(s);
}
}
String s:numbers 중요!
class A {
static { System.out.println("A static"); }
{System.out.println("A instance"); }
public A() {System.out.println("A constructor");}
}
class B extends A {
static{ System.out.println("B static"); }
{System.out.println("B instance"); }
public B() {System.out.println("B constructor");}
}
class Main {
public static void main(String[] args){
B b1 = new B();
A b2 = new B();
}
}
출력결과
A static
B static
A instance
A constructor
B instance
B constructor
A instance
A constructor
B instance
B constructor
instance는 객체 생성시 실행하게 된다.
static -> instance -> 생성자 순으로 호출된다.