[정보처리기사 실기] 2021 3회

bonnie·2021년 12월 28일
7

📌 결과 나온지 한 달이 지났지만 이제서야 정리하는,,,,
이전 시험은 보통 프로그래밍 언어 문제는 어렵지 않게 풀었는데 이번 시험에서는 프로그래밍 문제가 유달리 어려워서 애먹었더랬지.....
고생했던 문제들은 그래도 확실하게 짚고 넘어가야 맘이 편하니깐 다시 한번 정리 고고!
출처 : https://ss-o.tistory.com/162?category=1013696


1. Java 문제

class Connection{
	private static Connection _inst = null;
   	private int count = 0;
    
        static public Connection get(){
            if(_inst == null){
                _inst = new Connection();
                return _inst;
            }
            return _inst;
        }

        public void count(){
            count++;
        }

        public int getCount(){
            return count;
        }
}
public class testCon{
	public static void main(String[] args){
          Connection conn1 = Connection.get();
          conn1.count();

          Connection conn2 = Connection.get();
          conn2.count();

          Connection conn3 = Connection.get();
          conn3.count();

          System.out.print(conn1.getCount());
    }
}

static은 메모리에 한번 할당되면 프로그램이 종료될때까지 메모리를 공유하는 것. 인스턴스를 여러번 생성하더라도 static변수나 메서드는 새롭게 생성되는 것이 아님.
① _inst 변수가 static으로 생성됨
② main에서 Connection.get()을 호출하면 _inst가 null인지 아닌지를 체크 후 _inst를 return
③ 만약 _inst가 null이라면 new Connection() 객체를 생성하고 count는 0으로 초기화
→ conn1을 생성해 Connection.get()을 호출할 때, _inst는 null이므로 if문을 돌아 Connection() 객체를 생성하게 됨. 객체를 생성하면 인스턴스를 생성하고 참조값을 return하기 때문에 여기서 부터는 _inst가 null이 아니게 됨
④ conn1.count() 는 0에서 count++ 하므로 1
⑤ conn2를 생성하고 다시 get()을 호출하면 _inst는 null이 아니기 때문에 객체를 새로 생성하지 않음. 그래서 count 값을 그대로 가지고 감
⑥ conn2.count() 는 1에서 count++ 하므로 2
⑦ conn3도 위와 마찬가지로 진행
⑧ conn3.count() 는 2에서 count++ 하므로 3
⑨ 결과적으로 count값는 3이 되었기 때문에 conn1.getCount()를 하면 3이 출력됨

2. MAC 주소를 가로채는 공격 : () Spoofing

ARP
ARP Spoofing : 로컬 네트워크(LAN)에서 사용하는 ARP 프로토콜의 허점을 이용해 자신의 MAC주소를 다른 컴퓨터의 MAC인 것처럼 속이는 공격

3. 데이터 제어어(DCL) 중 GRANT에 대해 설명

내가 작성한 답) 사용자에게 데이터에 대한 삽입, 삭제 등을 할 수 있는 권한을 부여하는 명령어

4. AAA 서버의 각 A에 해당 되는 개념을 설명하고 그에 맞는 용어를 찾는 문제

(1) 신분을 확인하는 인증, 접근 시도하는 가입자 또는 단말 식별
(2) 접근/허가를 결정하는 인가. 가입자나 단말에 권한 부여
(3) 리소스 사용 정보를 수집/관리하는 계정. 사용 시간, 정보, 위치 등 정보 수집

  1. Authentication 2. Authorization 3. Accounting

5. 디자인패턴 문제

  • 디자인 패턴 종류 중 상위 클래스에서 인터페이스만 정의하고 실제 생성은 서브클래스가 담당하는 패턴은?

    Factory Method

6. 결합도 문제

  • 단순 처리할 대상인 값만 전달되는게 아니라 어떻게 처리해야한다는 제어요소가 전달되는 경우(영문으로 작성)

    control

7. C언어 구조체

#include

struct src{
	char name[12];
    	int os, db, hab, hhab;
};

int main(){
	struct src st[3] = {{"가", 95, 88}, {"나", 84, 91}, {"다", 86, 75}};
    	struct src *p;
        p = &st[0];
        (p+1)→hab = (p+1)→os + (p+2)→db;
        (p+1)→hhab = (p+1)→hab + p→os + p→db;
        
        printf("%d", (p+1)→hab + (p+1)→hhab);
}

① p = {"가", 95, 88}
② src = {name, os, db, hab, hhab}
③ (p+1) = {"나", 84, 91}, (p+2) = {"다", 86, 75}
④ (p+1)→os + (p+2)→db : 84 + 75 = 159
⑤ (p+1)→hab + p→os + p→db : 159 + 95 + 88 = 342
⑥ (p+1)→hab + (p+1)→hhab : 159 + 342 = 501

8. 모듈 관련 문제

(1) 최하위 모듈에서 위로 시작하는 () 테스트
(2) 하위 모듈들을 포괄하는 ()이 있어야함.

  1. 상향식 통합 2. 테스트 드라이버

9. 파이썬 연산자 문제

	x, y = 100, 200
    	print(x==y)
    
    위의 결과는?

False

10. SQL 문제

[A]

NAME
SMITH
ALLEN
SCOTT

[B]

RULE
S%
%T%

SELECT COUNT(*) CNT FROM A CROSS JOIN B WHERE A.NAME LIKE B.RULE;

4
cross join은 교차결합, 카디션 곱이라고도 하며 join을 해서 나올 수 있는 모든 행의 조합을 보여주는 것. 여기에서는 각 결과를 곱해주면 된다.
즉, S로 시작하는 A.NAME의 개수는 2개, T를 포함하는 A.NAME의 개수 또한 2개이므로 2*2 = 4

11. 데이터 접근 방식 문제

  • 데이터 접근 방식 중 하나로, <값, 주소>자료구조, 파일 구조에는 순차, () 해싱이 있다. 괄호에 들어갈 것은?

    인덱스
    : 검색 연산의 최적화를 위해 키와 포인터의 쌍으로 구성되는 데이터 구조

12. 테스트 케이스 관련 문제

  • 테스트 케이스 단계의 표를 보여주고 빈 칸에 해당되는 단계의 이름을 매핑하는 문제

    테스트 조건, 테스트 데이터, 예상 결과

13. UML 다이어그램 문제

  • ()다이어그램은 UML 다이어그램 종류 중 하나로 속성, 메소드를 포함한다.

    클래스

14. OSI 7계층 문제

(1) 물리적으로 연결된 두개의 노드 사이의 데이터 전송, 오류 제어
(2) 경로 제어, 패킷 전달
(3) 압축

  1. 데이터링크 2. 네트워크 3. 표현

15. 암호화 기법 문제

  • IBM, 블록 64비트, 키 56비트, 16라운드(이 키워드를 포함한 설명이 주어짐)

    DES

16. C언어 이중 포인터 문제

# include
int main(){
	int *arr[3];
        int a = 12, b = 24, c = 36;
        arr[0] = &a;
        arr[1] = &b;
        arr[2] = &c;

        printf("%d", *arr[1] + **arr + 1);
}

37
*array[1] = 24
**array + 1 = 12 + 1 = 13
24 + 13 = 37

17. Java 연산자, 우선순위 문제

public class SSO{
	public static voin main(String[] args){
    	int a = 3, b = 4, c = 3, d = 5;
        
        if((a == 2 | a == c) & !(c > d) & (1 == b ^ c != d)){
        	② a = b + c;
                if(7 == b ^ c != a){System.out.println(a);
                }else{
                    System.out.println(b);
                }
         }else{
        	a = c + d;
                if(7 == c ^ d != a){
                    System.out.println(a);
                }else{
                    System.out.println(d);
                }
        }
    }
}

& : 비트연산자. 같은 자리를 비교했을때 모두 1인 경우에만 1
| : 비트연산자. 같은 자리를 비교했을때 하나에만 1이 존재하면 1
^ : XOR연산자. 두 값이 같으면 false, 다르면 true
① (a == 2 | a == c) : a==2는 거짓 → 0, a==3은 참 → 1
!(c > d) : c > d는 거짓, !가 있으므로 참 → 1
(1 == b ^ c != d) : 1 == b 거짓 → 0, c != d 참 → 1, 0 ^ 1 → 1 (0과 1은 2진수로 변환 후 같은 자리수 끼리 XOR)
∴if(1 & 1 & 1) : 참
② a = b + c : a = 7
③ (7 == b ^ c != a) : 7 == b는 거짓 → 0, c != a는 참 → 1, 0 ^ 1 → 1
④ System.out.println(a) : 7

18. 테스트 기법 문제(보기에서 고르기)

  • 이것은 입력 자료 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석 후 효용성이 높은 테스트 케이스를 선정해서 테스트 하는 기법임

    Cause Effect Graph
    원인-결과 그래프 테스트 : 그래프를 활용해 입력 데이터 간의 관계 및 출력에 미치는 영향을 분석해 효용성이 높은 테스트 케이스를 선정해서 테스트 하는 것
    문제에서는 블랙박스테스트를 설명하는 것이 있었고, 보기 중에는 화이트박스 테스트가 섞여 있었음

19. UI 사용자 인터페이스 문제

  • 이것은 사용자가 키보드, 마우스 등을 이용하는 것으로 윈도우, 맥킨토시 등이 있음

    GUI

20. 관계 - 집합, 상속(일반화)

(1) 추상화
(2) 개념화

  1. Aggregation 2. Generalization

📢대망의 결과!!!!!!


ㅠㅠㅠㅠㅠㅠㅠ드디어ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
오예오예 소리 질러~!~!~!🤘🤘

profile
괴발🐱개발🐶

1개의 댓글

comment-user-thumbnail
2022년 10월 16일

ㅋㅋㅋㅋ짤 넘 귀엽네요 합격 축하드립니다~ 올려주신 자료 덕분에 저도 오늘 시험 잘 치고 왔습니다 ㅎㅎ

답글 달기