기출문제 오답

2024. 3. 25. 18:33정보처리기사

728x90

1. 용어 정리

2. 네트워크

3. 디자인 패턴

4. SQL

5. 프로그래밍

6. 보안

 

 

 

 

 
 
 
 
 
 
 
 

1. 용어 정리

 

AJAX(Asynchronous JavaScript And XML)

: 비동기적인 웹 애플리케이션의 제작을 위해 

JavaScript와 XML을 이용한 비동기적 정보 교환 기법

 

 

분기 커버리지

: 분기점 위주로 테스트.

모든 분기점을 최소 한 번씩은 실행해야 함

분기 커버리지를 만족하기 위한 테스팅 순서는 여러 개가 있을 수 있음.

예를 들어 1 2 4 5 6 7 순서로 갈 수도 있고 

1 2 3 4 5 6 1로 갈 수도 있다.

 

 

조건 커버리지

  • 프로그램 내에 있는 결정포인트 내의 모든 각 개별 조건식에 대한
    모든 가능한 결과(참/거짓)에 대해 적어도 한번 수행한다.
  • 소프트웨어 테스트 수행 시 소스코드를 어느 수준까지 수행하였는가를
    나타내는 기준을 나타낸다.

 

 

UML 다이어그램의 종류

 

정적(구조적) 다이어그램

  • 클래스 다이어그램: 클래스와 클래스가 가지는 속성, 클래스 사이의 관계를 표현
  • 객체 다이어그램: 클래스에 속한 사물들, 즉 인스턴스를 특정 시점의 객체와 객체 사이의 관계로 표현
  • 컴포넌트 다이어그램: 실제 구현 모듈인 컴포넌트 간의 관계나 컴포넌트 간의 인터페이스를 표현
  • 배치(Deployment) 다이어그램: 결과물, 프로세스, 컴포넌트 등 물리적 요소들의 위치를 표현
  • 복합체 구조(Composite Structure) 다이어그램
    : 클래스나 컴포넌트가 복합 구조를 갖는 경우 그 내부 구조를 표현
  • 패키지 다이어그램: 유스케이스나 클래스 등의 모델 요소들을 그룹화하여 의존 관계를 표현.
    관련있는 객체들을 하나로 묶어 상위 개념으로 추상화한 것.

동적(행위) 다이어그램

  • 유스케이스 다이어그램: 사용자의 요구를 분석하는 것으로 기능 모델링 작업에 사용
  • 순차(Sequence) 다이어그램: 상호 작용하는 시스템이나 객체들이 주고받는 메시지를 표현
    수직 방향이 시간의 흐름을 나타냄.
    구성 요소에는 회귀 메시지, 제어 블록 등이 있다.
  • 커뮤니케이션 다이어그램: 순차 다이어그램과 같이 동작에 참여하는 객체들이 주고받는 메시지뿐만 아니라
    개체들 간의 연관까지 표현
  • 상태 다이어그램 : 하나의 객체가 자신이 속한 클래스의 상태 변화 혹은
    다른 객체와의 상호 작용에 따라 상태가 어떻게 변화하는지를 표현
  • 활동(Activity) 다이어그램: 시스템이 어떤 기능을 수행하는지 객체의 처리 로직이나
    조건에 따른 처리의 흐름을 순서에 따라 표현

 

 

블랙박스 테스트
  • Cause-Effect Graphing Testing(원인-효과 그래프 검사)
    : 입력 데이터 간의 관계와
    출력에 영향을 미치는 상황을 분석한 후
    효용성이 높은 테스트 케이스를 선정하여 검사하는 기법
  • Boundary Value Analysis(경계값 분석)
    : 입력 자료에만 치중한 동치 분할 기법을 보완하기 위한 기법으로 입력 조건의 중간값보다 경곗값에서 오류가 발생될 확률이 높다는 점을 이용하여 입력 조건의 경곗값을 테스트 케이스로 선정하여 검사하는 기법
  • Comparison Testing(비교 검사)
    : 여러 버전의 프로그램에 동일한 테스트 자료를 제공하여
    동일한 결과가 출력되는지 테스트하는 기법
  •  Equivalence Partitioning Testing(동치 분할 검사)
    : 프로그램의 입력 조건에 중점을 두고,
    어느 하나의 입력 조건에 대하여 타당한 값과 그렇지 못한 값을 설정하여
    해당 입력 자료에 맞는 결과가 출력되는지 확인하는 테스트 기법
  •  Error Guessing(오류 예측 검사)
    : 과거의 경험이나 확인자의 감각으로 테스트하는 기법

 

<클라우드 서비스>

IaaS(Infrastructure as a Service)

PaaS(Platform as a Service)

SaaS(Software as a Service)

 

 

 

2. 네트워크

 

가상회선

  • 회선교환 방식과 데이터그램 방식의 장점을 결합한 통신 기술
  • 처음 패킷으로 최적의 경로를 고정하고
    경로가 고정되면 그 다음은 패킷으로 나누어 고속으로 전송할 수 있다.
  • 정해진 시간 안이나 다량의 데이터를 연속으로 보낼 때 적합

 

데이터그램

  • 패킷교환 방식으로 동작하면서 IP 주소를 사용하는 인터넷을 의미
  • 각 전송패킷을 미리 정해진 경로 없이 독립적으로 처리하여 교환하는 방식
  • 짧은 메시지의 패킷들을 전송할 때 효과적이고 재정렬 기능이 필요 

 

L2TP(Layer 2 Tunneling Protocol)

  • 2 계층에서 구현되는 터널링 기술 중 하나
  • L2F와 PPTP가 결합된 프로토콜로 VPN과 인터넷 서비스 제공자(ISP)가 이용

 

ICMP(Internet Control Messagae Protocol)

  • TCP/IP에서 IP 패킷을 처리할 때 발생되는 문제를 알려주는 프로토콜
  • 보통 다른 호스트나 게이트웨이와 연결된 네트워크에
    문제가 있는지 확인하기 위한 목적으로 사용

 

hamming

: hamming code는 데이터 전송 시 1비트의 에러를 정정할 수 있는
오류정정부호의 일종으로 미국의 Bell 연구소의 Hamming에 의해 고안.

 

FEC(Forward Error Correction)

: 송신측이 전송할 문자나 프레임에 부가적 정보를 첨가하여 전송하고

수신 측이 이 부가적 정보를 이용하여 에러검출 및 에러정정을 하는 방식

 

Parity

: 데이터가 저장장치 내의 한 장소에서 다른 장소로 이동되거나, 컴퓨터들 간에 전송될 때,

데이터가 유실 또는 손상되었는지 여부를 점검하는 기술과 관련된 용어.

 

 

CRC(Cyclic Redundancy Checking)

: 네트워크 등을 통하여 데이터를 전송할 때

전송된 데이터에 오류가 있는지를 확인하기 위한 체크값을 결정하는 방식.

 
 

ATM(Asynchronous Transfer mode, 비동기 전송 방식)

: 자료를 일정한 크기로 정하여 순서대로 전송하는 자료의 전송방식.

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

 

<라우팅 프로토콜>

RIP(Routing Information Protocol)
: 거리 벡터 라우팅 프로토콜이라하며, 최단 경로 탐색에 Bellman-Ford 알고리즘 사용.
최소 Hop count를 파악하여 라우팅.
OSPF(Open Shortest Path First)
:  Link-State Vector 라우팅 프로토콜이라하며, 최단 경로 탐색에 Dijkstra 알고리즘 사
 
 

3. 디자인 패턴

 

Proxy

  • 복잡한 시스템을 개발하기 쉽도록 클래스나 객체를 조합하는 패턴에 속하며,
    대리라는 이름으로도 불린다. (직접 참조하지 않고 중간에 대리인을 거친다)
  • 내부에서는 객체 간의 복잡한 관계를 단순하게 정리해 주고,
    외부에서는 객체의 세부인 내용을 숨기는 역할을 한다.
  • 구조 패턴에 해당

 

 

Visitor

  • 호스트 객체의 내부 상태에 접근할 수 있는 방법을 제공하여
    호스트 객체에 연산을 추가할 수 있도록 한다.
  • 이 패턴은 보통 합성 구조의 원소들과 상호작용하는 데 사용되며,
    기존 코드를 변경하지 않고 새로운 기능을 추가하는 방법
 

4. SQL

 

릴레이션 인스턴스

: 데이터 개체를 구성하고 있는 속성들에 

데이터 타입이 정의되어 구체적인 값을 가진 것으로,
실제 값을 가진 튜플을 의미

 

 

카디널리티

: 튜플의 개수를 의미

 

 

<스키마>

개념 스키마

  • 데이터베이스의 전체적인 논리적 구조
  • 모든 응용프로그램이나 사용자들이 필요로 하는 데이터를 종합한
    조직 전체의 데이터베이스로 하나만 존재
  • 개체 간의 관계와 제약 조건을 나타내고 
    데이터베이스의 접근 권한, 보안 및 무결성 규칙에 관한 명세를 정의
  • 데이터베이스 파일에 저장되는 데이터의 형태를 나타냄

외부 스키마

  • 사용자나 응용 프로그래머가 개인의 입장에서 필요한 데이터베이스의 논리적 구조
  • 여러 개의 외부 스키마가 존재할 수 있다
  • 여러 개의 응용 프로그램 혹은 사용자가 공유할 수 있다

 

 

<무결성 종류>

  • 개체 무결성
    : 기본키(Primary key)를 구성하는 어떤 속성도 Null값이나 중복된 값을 가질 수 없다.
  • 도메인 무결성: 주어진 속성 값이, 정의된 도메인에 속한 값이어야 한다.
  • 참조 무결성: 외래키 값은 Null이거나 참조 릴레이션의 기본키 값과 동일해야 한다.
  • 사용자 정의 무결성: 속성 값들이 사용자가 정의한 제약조건에 만족되어야 한다.

 

 

 

 

 

5. 프로그래밍

 

<파이썬>

집합을 출력할 때

-> {'한국', '미국'}으로 출력됨

 

 

문자열

b=a[:3] //처음부터 2번째 문자열까지 저장
c=a[4:6] //4번째 문자열부터 5번째 문자열까지 저장
d=a[28:] //28번째 문자열부터 끝까지 저장

 

 

<상속>

자식을 만들면 부모도 자동으로 만들어진다.

 

 

데이터 타입 [참/거짓] : C는 숫자, Java는 소문자, Python은 앞대문자
C언어 : 1 / 0
Java언어 : true / false
Python언어 : True / False

 

 

같은 문자열이라면 다른 변수에 저장해도 같은 곳을 가리킨다.

그러나 새로운 공간을 만들어  문자열을 저장한다면 가리키는 곳이 다르다.

String str1='Programming';
String str2='Programming';
String str3=new String('Programming');

println(str1==str2); // true
println(str1==str3); // false
println(str1.equals(str3)); true (같은 문자열이므로 이건 true)

 

 

<C언어>

char* p="KOREA";
printf("%s", p+1);  //OREA : k의 다음 문자부터 끝까지 반환 
printf("%C", *p);  //K
printf("%C", *(p+3));  //E: K에서 3번째로 떨어진 문자 반환
printf("%C", *p+4); //O: *p=K이므로 +4하면 L M N O이므로 O 반환
괄호의 유무에 따라 값이 달라진다.
 

 

구조체 포인터

구조체 포인터의 경우 ->만 사용 가능합니다.

struct insa{
	char name[10];
    struct insa* impl_a;
};

main(){
	struct insa p1={"Kim",NULL);
    struct insa p2={"Lee",NULL);
    p1.impl_a=&p2;
    
    //이때 p1으로 Lee를 출력하고 싶다면
    printf("%s", p1.impl_a->name);
 

 

완전수 구하는 코드가 나오던데 

구하기 귀찮아서 외우기로 했다.

공식이 있다.

2^n-1 * (2^n - 1)

n=2 -> 2*3=6

n=3 -> 4*7=28

 
 
<자바>
class Person{
    private String name;
    public static String get(){
    	return name;
    }
    public void print(){
    	System.out.println(name);
    }
}
get 메소드가 static으로 선언되어 있다.
그러나 name은 객체를 생성해야 생기는 변수이므로
컴파일 자체가 안되고 에러가 뜬다.

 

 

 

 

* static으로 선언된 변수는 코드가 수행되는 동안 계속 공유된다.

 

 

* b++ : 후치연산 출력에 주의하자

 
 

6. 보안

 

템퍼 프루핑(Tamper proofing)

  • 소프트웨어에서 워터마크 삭제 등과 같이 불법으로 변경되었을 경우,
    그 소프트웨어가 정상 수행되지 않게 하는 기법
  • 소프트웨어 변조 공격을 방어하기 위해 변조검증코드를 삽입하는 것도 한 방법으로,
    프로그램이 변경되었는지 탐지하고, 탐지되었다면 프로그램이 실행되지 않게 한다.

 

BEC(Business Email Compromise)

: 공격자가 전자 메일을 사용하여 상대방이 금전을 보내거나

기밀 회사 정보를 누설하도록 유도하는 사이버 범죄의 일종.

 

 

<암호화 알고리즘>

대칭키: 그 나머지( DES, AES, PKI, ARIA, SEED)

비대칭키: RSA, ECC

 

 

OAuth(Open Authorization, 공개 인증)

  • 인터넷 애플리케이션에서 사용자 인증에 사용되는 표준 인증 방법
  • 사용자가 사용자 이름 및 암호와 같은 자격 증명을 공유하지 않고도 타사 애플리케이션이 
    데이터 또는 리소스에 액세스 할 수 있도록 권한을 부여할 수 있는 개방형 표준 프로토콜
  • 카카오톡이나 네이버로 로그인하는 것

 

 

접근 통제 기술
-
임의 접근통제(DAC, Discretionary Access Control)
:
데이터에 접근하는 사용자의 신원에 따라 접근 권한을 부여
-
강제 접근통제(MAC, Mandatory Access Control)
:
주체와 객체의 등급을 비교하여 접근 권한을 부여
-
역할기반 접근통제(RBAC, Role Based Access Control)
:
사용자의 역할에 따라 접근 권한을 부여

 

 

 

728x90