6 분 소요

2023-1회

1. JAVA

class Static{
 
    public int a = 20;
    static int b = 0;
    
}
 
public class Main{
    public static void main(String[] args) {
        
        int a;
        a = 10;
        Static.b = a;
 
        Static st = new Static();
 
        System.out.println(Static.b++);
        System.out.println(st.b);
        System.out.println(a);
        System.out.print(st.a);
    }
}
  1. st : Static() 객체 생성, st.b = 10
  2. Static.b++ : 10
  3. st.b : 11(b++때문에 1 증가)
  4. a : 10
  5. st.a : 20

2. C

#include <stdio.h>
 
int main(){

    char a[] = "Art";
    char* p = NULL;
    p = a;
 
    printf("%s\n", a);
    printf("%c\n", *p);
    printf("%c\n", *a);
    printf("%s\n", p);
 
    for(int i = 0; a[i] != '\0'; i++)
    printf("%c", a[i]);
 
}
  1. p는 a 참조.
  2. printf(“%s\n”, a); : %s 형식 => Art
  3. printf(“%c\n”, *p); : %c => p가 가리키는 첫번째값 : A
  4. printf(“%c\n”, *a); : a가 가리키는 첫번째값 : A
  5. printf(“%s\n”, p); : p가 가리키는 값 : Art
  6. for … : Art

4. 용어

( )은/는 비동기적인 웹 애플리케이션의 제작을 위해 JavaScript와 XML을 이용한 비동기적 정보 교환 기법이다.

( )은/는 필요한 데이터만을 웹서버에 요청해서 받은 후 클라이언트에서 데이터에 대한 처리를 할 수 있다. 보통 SOAP이나 XML 기반의 웹 서비스 프로토콜이 사용되며, 웹 서버의 응답을 처리하기 위해 클라이언트 쪽에서는 자바스크립트를 쓴다.

( )은/는 Google Map과 Google pages에서 사용한 기술에 기반하여 제작되었다.

정답 : AJAX(Asynchronous JavaScript and XML)

5. 데이터 교환 방식

image-20241014220541965

정답 : 가상회선, 데이터그램

데이터 교환 방식 블로그 참고

6. 프로토콜

  • 2 계층(데이터링크 계층)에서 구현되는 터널링 기술 중 하나
  • L2F(Layer 2 Forwarding)와 PPTP(Point to Point Tunneling Protocol)가 결합된 프로토콜로 VPN과 인터넷 서비스 제공자(ISP)가 이용
  • IPsec을 함께 사용하면 PPTP보다 훨씬 안전하지만 보안보다 익명화에 더 적합

정답 : L2TP(Layer 2 Tunneling Protocol)

  • vpn프로토콜
    • 종류
      • SSL/SSH : Application(L4~7)
        • SSH : 포트번호22, 원격접속프로토콜
        • SSL : 전송계층과 응용계층사이에서 클라이언트와 서버 간의 보안 프로토콜
      • IPSec : Network(L4)
        • IPSEC(IP Security) : 무결성과 인증을 보장하는 AH와 기밀성을 보장하는 암호화(ESP)를 이용해 양 종단 보안서비스를 제공하는 프로토콜, 네트워크계층 보안 프로토콜
      • L2TP, PPTP : Datalink(L2)
        • L2TP : L2F프로토콜과 PPTP 프로토콜 결합한 형태
        • PPTP : MS사의 RAS(원격접근서비스)에기반

7. 용어

( ) 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해주는 응용 프로그램 또는 그 프로토콜을 가리킨다.

( ) 보안 접속을 통한 rsh, rcp, rlogin, rexec, telnet, ftp 등을 제공하며, IP spoofing (IP스푸핑, 아이피 위/변조 기법중 하나)을 방지하기 위한 기능을 제공한다.

( ) 기본적으로 포트는 22번이다.

정답 : SSH

8. 해킹

구분 내용
(1) - 감염된 컴퓨터 시스템에서 스스로 복제해 다른 컴퓨터로 복사본을 확산시킬 수 있는 악성 프로그램이다. - 독자적으로 실행되며 다른 실행 프로그램이 필요하지 않으며, 파일 전송 기능을 착취하도록 설계된다. - 자가 복제 및 네트워크를 통한 전파도 가능하다.
(2) - 정상적인 프로그램으로 가장해 사용자가 직접 컴퓨터에 설치하도록 위장하며, 백도어를 만들어 공격자가 침입할 수 있도록 만들거나 시스템을 파괴한다. - 정상적인 프로그램으로 위장하여 시작부터 끝까지 램에 상주하며, 시스템 내부 정보를 공격자의 컴퓨터로 빼돌리는 프로그램이다. - 좀비PC처럼 내부정보 유출뿐만 아니라 컨트롤까지 가능한 종류가 있고, 단순히 내부 데이터만 유출할 수 있는 타입의 트로이 목마가 있다. - 감염된 후에 스스로를 복제하는 능력은 없다.
(3) - 대상(정상파일)을 감염시키는 형태로 실행되며, 감염시킬 대상이 존재하지 않을 때에는 실행되지 않으며 다른정상파일로의 자기 복제 기능이 있다. - 컴퓨터 시스템에 침입해 프로그램에 기생하며 시스템을 변경하거나 사용할 수 없도록 만드는 악성코드이다. - 네트워크를 통해 전파되지 않으며 방식 및 위치에 따라 여러형태로 나뉜다.

(1) 웜

(2) 트로이 목마

(3) 바이러스

해킹 기법

10. 보안용어

( )은/는 TCP/IP에서 IP 패킷을 처리할 때 발생되는 문제를 알려주는 프로토콜이다.

( ) 프로토콜은 보통 다른 호스트나 게이트웨이 와 연결된 네트웍에 문제가 있는지 확인하기 위한 목적으로 주로 사용된다.

( ) 을/를 이용한 공격에는 ( ) Flooding가 있는데 ping 명령어를 통한 ( ) 패킷을 연속적으로 계속 보내어 서버의 요청에 응답으로 인한 다른작업을 하지 못하도록 하는 공격이다.

정답 : ICMP(Internet Control Message Protocol)

11. 디자인 패턴

- 다른 무언가와 이어지는 인터페이스 역할을 하는 클래스를 의미한다.

- 실제 객체를 호출하면 행위를 중간에 가로채서 다른 동작을 수행하는 객체로 변경한다.

- 객체를 정교하게 제어해야 하거나 객체 참조가 필요한 경우 사용한다.

-분리된 객체를 위임함으로써 대리 작업을 중간 단계에 삽입할 수도 있으며 분리된 객체를 동적으로 연결함으로써 객체의 실행 시점을 관리할 수도 있다.

정답 : proxy

객체에 대한 접근을 제어하기 위해서 그 객체를 대신하여 인터페이스 역할 수행

실제 객체의 동작을 제어, 변경

실제 객체의 접근을 지연, 제한

  • 접근 제어 : 실제 객체 생성 지연하거나 필요할 때 까지 생성하지 않음으로써 리소스 절약
  • 로깅 및 인증 : 객체 호출 전후에 추가적인 기능 삽입
  • 원격 프록시 : 원격 서버에 있는 객체처럼 동작하는 로컬 대리 객체를 제공
  • 캐싱 : 반복적인 호출에서 성능 향상을 위해 결과를 캐시하여 사용

12. DB

구분 내용
(1) - 셀 수 있는 수량의 순서 있는 열거이다.
- 어떤 요소의 집합, 혹은 테이블에서의 행을 가리키지만 일반적인 집합과는 달리 중복이 허용될 수 있다.

- 리스트와 동일하게 여러 객체를 모아서 담으며, 숫자, 문자, 객체, 배열, 튜플 안의 튜플 전부 가능하다.
(2) - 어느 한 시점에 릴레이션의 내용(상태), 즉 저장된 데이터 전체를 의미한다.
- 단순히 릴레이션 또는 릴레이션 외연(Relation Extension)라고도 한다.
(3) - 특정 데이터 집합의 유니크(Unique)한 값의 개수이다.
- 전체 행에 대한 특정 컬럼의 중복 수치를 나타내는 지표이다.
  1. 튜플
  2. 릴레이션 인스턴스
  3. 카디널리티

17. Java

abstact class Vehicle {
 
    String name;
    abstract public String getName(String val);
 
    public String getName() {
            return "Vehicle name: " + name;
    }
}
 
 
 
class Car extends Vehicle {
 
    public Car(String val) {
            name=super.name=val;
    }
 
    public String getName(String val) {
            return "Car name:" + val;
    }
 
    public String getName(byte val[]) {
            return "Car name:" + val;
    }
}
 
 
public class Main {
 
    public static void main(String[] args) {
 
    Vehicle obj = new Car("Spark");
    System.out.println(obj.getName());
 
    }
}

  • 메인 함수의 obj.getName()에서 getName() 메소드는 파라미터가 없는 함수가 호출되었기 때문에 Vehichle 추상클래스의 getName() 이 호출된다.
  • 정답 : Vehicle name : Spark

18. 스키마

구분 내용
(1) 스키마 - 사용자나 응용 프로그래머가 개인의 입장에서 필요한 데이터베이스의 논리적 구조를 정의한다.
- 전체 데이터베이스의 한 논리적인 부분으로 볼 수 있기 때문에 서브 스키마라고도 한다.
- 하나의 데이터베이스 시스템에는 여러 개의 외부 스키마가 존재할 수 있다.
- 하나의 외부 스키마를 여러개의 응용 프로그램 혹은 사용자가 공유할 수 있다.
(2) 스키마 - 데이터베이스의 전체적인 논리적 구조로, 모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로 하나만 존재한다.
- 개체 간의 관계(Relationship)와 제약 조건을 나타내고 데이터베이스의 접근 권한, 보안 및 무결성 규칙에 관한 명세를 정의한다.
- 데이터베이스 파일에 저장되는 데이터의 형태를 나타내는 것이다.
- 기관이나 조직체의 관점에서 데이터베이스를 정의한 것이다
(3) 스키마 - 물리적인 저장장치 입장에서 데이터가 저장되는 방법을 기술한 것이다.
- 실제 데이터베이스에 저장될 레코드의 물리적인 구조를 정의한다.
- 저장 데이터 항목의 표현방법, 내부 레코드의 물리적 순서, 인덱스 유/무 등을 나타낸다.
- 시스템 프로그래머나 시스템 설계자가 관리한다.

외부, 개념, 내부

  • 외부

    사용자, 응용프로그래머가 개인의 입장에서 필요한 DB 논리적 구조 정의

    서브 스키마

    여러개의 외부 스키마가 하나의 DB에 존재할 수 있다.

    외부 스키마는 특정 사용자나 응용프로그램 관점에서 DB 정의

  • 개념

    DB의 전체적인 논리적 구조 정의

    하나의 DB 시스템에서 단 하나만 존재

    전체 조직의 데이터 정의

    개체 간의 관계, 제약 조건, DB 무결성, 보안 규칙 등 정의

  • 내부

    DB 물리적 저장 방법 정의

    데이터 저장 방식, 저장된 데이터 물리적 구조, 레코드 순서, 인덱스 등 기술

    시스템 프로그래머나 시스템 설계자가 관리하는 스키마

    물리적 저장 장치의 입장에서 DB 정의

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

  1. Child() 객체 생성 => x = 4000 => this(5000) => Child(5000) => x = 5000
  2. getX() 호출 => Parent() 객체 호출 => x = 100 => this(500) => Parent(500) => x = 500

정답 : 500

댓글남기기