5 분 소요

2023년 3회

1. JAVA

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

public class main{
    public static void main(String[] args) {
        A b = new B();
        b.paint();
        b.draw();
    }
}
  1. 메인함수 : b.paint()

    클래스 B의 paint() 실행

  2. B 클래스 : super.draw()

    A 클래스 : A의 draw() 실행 => B 출력

  3. A 클래스 : draw()

    B클래스 : draw() 실행 => D 출력

  4. B클래스 : System.out.print(“C”);

    C 출력

  5. B클래스 : this.draw()

    B의 draw() 실행 => D 출력

  6. 메인함수 : b.draw()

    B클래스 : draw() 실행 => D출력

  7. 정답 : BDCDD

2. 용어

  • 사용자가 사용자 이름 및 암호와 같은 자격 증명을 공유하지 않고도 타사 애플리케이션이 데이터 또는 리소스에 액세스할 수 있도록 권한을 부여할 수 있는 개방형 표준 프로토콜이다.

  • 사용자가 데이터에 대한 제어를 유지하면서 리소스에 대한 액세스 권한을 부여할 수 있는 안전하고 표준화된 방법을 제공하며, 액세스 토큰을 사용하여 타사 애플리케이션에 리소스에 대한 액세스 권한을 부여하는 메커니즘을 사용자에게 제공하는 방식으로 작동한다.

  • 사용자가 응용 프로그램에 대한 액세스 권한을 부여하면 응용 프로그램은 사용자를 대신하여 사용자의 리소스 또는 데이터에 액세스하는 데 사용할 수 있는 액세스 토큰을 받는다.

  • 암호와 같은 사용자의 자격 증명은 타사 응용 프로그램과 공유되지 않으며, 클라우드 스토리지 서비스, 온라인 마켓 플레이스 및 금융 서비스를 포함한 다른 많은 응용 프로그램 및 서비스에서도 사용된다.

  • Facebook, Twitter 및 LinkedIn과 같은 소셜 미디어 플랫폼에서 널리 사용되어 사용자가 소셜 미디어 데이터에 대한 액세스 권한을 타사 애플리케이션에 부여할 수 있도록 한다.

  • 타사 애플리케이션에 대한 사용자 자격 증명의 노출을 최소화하여 향상된 보안, 간소화된 애플리케이션 개발, 사용자가 리소스에 대한 액세스 권한을 쉽게 부여하거나 취소할 수 있도록 하여 향상된 사용자 환경 등 여러 가지 이점을 제공한다.

정답 : OAuth

ㄱ.NFT(Non Fungible Token)

대체 불가능한 토큰, 블록체인 기술을 활용해 유일성을 가진 디지털 자산. 예술품, 게임아이템, 디지털 수집품에 사용, 각 토큰은 고유한 가치를 가진다.

복제 불가, 소유권 증명

ㄴ.JWT(JSON Web Token)

사용자 인증 및 정보 교환에 사용하는 토큰. 사용자 인증 정보와 같은 데이터 안전하게 전송. Header, Payload, Signature로 구성

웹 애플리케이션 로그인, API 인증에 사용, 서버에서 클라이언트 측으로 상태 정보를 전달하는데 사용

ㄷ.SAML(Security Assertion Markup Language)

웹 애플리케이션과 서비스 간의 사용자 인증 및 권한 정보 교환하기 위한 XML 기반 표준

SSO 시스템에서 사용자 인증 정보를 안전하게 교환하기 위해 사용

ㄹ.accessToken

사용자, 어플리케이션이 API에 접근할 때 인증을 받기 위해 사용. OAuth2.0 프로토콜에서 사용. 사용 기간이 짧고, 사용자는 API 호출에 필요한 권한을 가지고 있음을 증명

ㅁ.SSO

한번의 로그인으로 여러 어플, 시스템에 접근할 수 있는 인증방식

사용자 편의를 위해 여러 시스템 간 인증을 통합

ㅂ.OIDC(OpenID Connect)

OAuth2.0 프로토콜을 기반, 사용자 인증을 위해 설계된 인증 프로토콜. 사용자 인증 단순화, 사용자 정보를 ID 토큰으로 안전하게 제공

ㅅ.Autentication

사용자가 누구인지 확인하는 과정. 시스템, 서비스가 사용자, 어플리케이션의 신원을 확인하는 절차. 로그인 과정, API 호출 시 권한 확인 등에서 사용

ㅇ. OAuth

사용자가 자신의 자격증명을 타사 어플리케이션에 제공하지 않고도 그 어플리케이션이 사용자 리소스에 액세스할 수 있게 하는 인증 프로토콜이다. 소셜 로그인, API 접근 권한 위임 등에 사용

ㅈ.Cookie

웹 브라우저에 저장되는 작은 데이터 조각, 사용자-서버 간의 상태정보, 세션 정보를 유지하기 위해 사용. 클라이언트 측에 저장, 주로 세션 유지, 사용자 설정 정보 기억에 사용

ㅊ.Refresh Token

액세스 토큰이 만료된 후 새로운 액세스 토큰을 발급받기 위해 사용하는 토큰. OAuth2.0에서 사용. 리프레시 토큰은 보통 긴 만료시간, 주기적으로 액세스 토큰을 갱신하는 데 사용

3. 리눅스 액세스 권한

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

111, 101, 001 => chmod 751 test.txt

6. 쿼리

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

T1

3
1
4

T2

2
4
3
SELECT A FROM  T1
UNION
SELECT A FROM  T2
ORDER BY A DESC;

중복제거!!

7. 서버 접근 통제

  • ( (1) )은/는 규칙 기반(Rule-Based) 접근통제 정책으로, 객체에 포함된 정보의 허용 등급과 접근 정보에 대하여 주체가 갖는 접근 허가 권한에 근거하여 객체에 대한 접근을 제한하는 방법이다.

MAC(Mandatory Access Control)

  • ( (2) )은/는 중앙 관리자가 사용자와 시스템의 상호관계를 통제하며 조직 내 맡은 역할(Role)에 기초하여 자원에 대한 접근을 제한하는 방법이다.

RBAC(Role-Based Access Control)

  • ( (3) )은/는 신분 기반(Identity-Based) 접근통제 정책으로, 주체나 그룹의 신분에 근거하여 객체에 대한 접근을 제한하는 방법이다.

DAC(Discretionary(임의적) Access Control)

8. 용어

  • ( )은/는 자료를 일정한 크기로 정하여 순서대로 전송하는 자료의 전송 방식이다.

  • 셀이라 부르는 고정 길이 패킷을 이용하여 처리가 단순하고 고속망에 적합하며, 연속적으로 셀을 보낼 때 다중화를 하지 않고 셀단위로 동기가 이루어지지만 경우에 따라 동기식 시간 분할 다중화를 사용하기도 한다.

  • 가상 채널 (Virtual Channel) 기반의 연결 지향 서비스로 셀이라 부르는 고정 길이(53바이트) 패킷을 사용하며 통계적 다중화 방식을 이용한다.

ATM(Asynchronous Transfer Mode)

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

child의 compute 메서드 호출

편의상 f로 대체

f(7) = f(6) + f(4) = f(5) + 2f(3) + f(1) = f(4) + f(2) + 2(f(2) + f(0)) + 1

= f(3) + f(1) + 3(f(1)) + 1 = f(2) + f(0) + 5 = f(1) + 5 = 6

12. 네트워크

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

NAT(Network Address Transformation)

13. JAVA

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

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

person 클래스 안에 정의된 name 변수는 인스턴스 변수이므로 heap 영역에 할당, get() 메서드는 static 메서드이므로 static 영역에 저장된다. 올바른 코드가 되기 위해서는 name 변수를 static 변수로 바꿔줘야 한다.

15. 다이어그램

image-20241016162258633

패키지 다이어그램

16. 용어

  • 시스템이나 시스템 구성요소(component) 또는 소프트웨어 프로그램의 입력값과 출력값이 특정 그룹으로 분류되며, 분류된 그룹내의 값들이 시스템에 의해 동일하게 취급된다는 특성을 이용하여 시험하는 기법

  • 유사한 입력값들이 시스템을 거치면서 유사한 답변이 나온다는 것을 가정하여 테스트

  • 하나의 값은 그 분할 내 모든 값을 대표하는 것으로 간주하는 기법

  • 모든 입력값을 시험할 필요가 없게 하여 시험을 효율적으로 수행하도록 지원

  • 일반적으로 경계값 분석기법(boundary value analysis)과 함께 테스트 케이스 도출하는데 사용

ㄱ.Equivalence Partitioning

보기

ㄱ.Equivalence Partitioning

ㄴ.Statement Coverage

ㄷ.Boundary Value Analy

ㄹ.Branch Coverage

ㅁ.Error Guessing

ㅂ.Condition Coverage

ㅅ.Cause Effect Graph

17. 클라우드

image-20241016162441547

(1) Iass

(2) PaaS

(3) SaaS

18. 프로토콜

  • 최소 Hop count를 파악하여 라우팅하는 프로토콜이다.

  • 거리와 방향으로 길을 찾아가는 Distance Vector 다이나믹 프로토콜이다.

  • 최단거리 즉, Hop count가 적은 경로를 택하여 라우팅하는 프로토콜로 Routing Table에 인접 라우터 정보를 저장하여 경로를 결정한다.

  • 최대 Hop count는 15로 거리가 짧기 때문에 IGP로 많이 이용하는 프로토콜이다.

RIP

댓글남기기