[2021년 3회] 정보처리기사 실기 기출문제

이주원·2025년 4월 16일

컴퓨터언어

목록 보기
26/50

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());
    }
  }
  1. 객체를 신기하게 생성함 , 바로 메서드를 호출하는
    것 같음
  2. get메서드에서 객체를 생성함 없으면 새로 만들고 리턴값으로 참조값을 반환
    이미 있는경우에는 기존의 참조값 반환
  3. conn1.count() 하면 count값 증가 1
  4. 마찬가지로 객체만듬 이미있기때문에 기존객체불러옴
  5. count 또증가 2
    ...
    마지막에 출력하면 3이나옴

정답


  1. 신원검증? authentication 이런건가 , access 일것 같네
  2. 이게 auth일듯
  3. 수집?? acept 모르겠다..

정답

풀이

AAA는 유무선 이동 및 인터넷 환경에서 가입자에 대한 안전하고,
신뢰성 있는 인증, 권한 검증 등의 기능을 체계적으로 제공하는 정보 보호 기술입니다.

신분을 확인하는 인증(authentication)
접근·허가를 결정하는 인가(authorization)
리소스 사용정보를 수집·관리하는 계정(accounting)

위의 3가지를 통합한 보안소프트웨어로 3A라고도 합니다.


외우기 , DBA권한 부여란다.

DBA는 Database Administrator(데이터베이스 관리자)의 약자입니다.


많이봤던문제 ip 스푸핑 인줄알았으나...

정답 : ARP

풀이

ARP : ARP는 ( Address Resolution Protocol ) 의 약자로 주소 결정 프로토콜이라 불립니다.
네트워크 상에서 IP주소를 물리적 네트워크 주소(이더넷)로
대응(bind)시키기 위해 사용되는 프로토콜이며,인터넷 계층에 속해있습니다.

지피티

🎯 왜 IP 스푸핑이 아니라 ARP 스푸핑일까?

근거리!!

구분IP 스푸핑ARP 스푸핑
공격 대상외부 또는 내부 네트워크내부 LAN (근거리)
계층네트워크 계층 (3계층)데이터 링크 계층 (2계층)
방식IP 주소를 위조하여 접근ARP 메시지를 위조하여 MAC 주소를 속임
대표 특징일반적으로 직접적인 응답을 받지 않음양방향 트래픽 조작 가능 (MITM)

  1. 어떤 모듈이 다른 모듈의 내부 논리 조직을 제어
  2. 제어신호를 이용하여 통신

풀이 : 제어결합도 겠지

  1. 하위모듈에서 상위 모듈로 제어신호가 이동
  2. 상위모듈에게 처리명령을 부여
  3. 권리 전도 현상

정답 : control

풀이

소프트웨어 공학에서 coupling이란 결합도를 의미합니다.

결합도는 약할수록 모듈의 독립성이 높아지는데,

내용 > 공통 > 외부 > 제어 > 스탬프 > 자료 결합도 순으로 결합도가 약해집니다.

영어용어의 출제가 빈번해지면서 영어용어도 같이 숙지할 필요가 있어보입니다.

내용 결합도(Content Coupling)
공통 결합도(Common Coupling)
외부 결합도(External Coupling)
제어 결합도(Control Coupling)
스탬프 결합도(Stamp Coupling)
자료 결합도(Data Coupling)

지피티

✅ 핵심 정리
결합도가 낮을수록
→ 모듈 간 독립성↑
→ 좋은 설계라고 평가받습니다.

결합도설명
내용 결합도 (Content Coupling)한 모듈이 다른 모듈의 내부(변수나 기능)까지 직접 접근함. 가장 강한 결합. ❌
공통 결합도 (Common Coupling)전역 변수(공통 데이터 영역)를 여러 모듈이 공유함. 변경 시 전역 영향 발생.
외부 결합도 (External Coupling)모듈 간에 외부 시스템, 디바이스, 포맷 등 외부 요소를 공유함.
제어 결합도 (Control Coupling)한 모듈이 다른 모듈의 제어 흐름(플래그 등)에 영향을 줌. → 제어권 침해
스탬프 결합도 (Stamp Coupling)구조체, 레코드 등 전체 자료구조를 전달하지만 실제로 일부 정보만 사용함.
자료 결합도 (Data Coupling)필요한 데이터만 명확히 전달. 가장 바람직한 결합도. ✅

  1. 물리계층을 통해 송수신되는 정보
  2. 오류와 흐름을 관리 안전한 정보의 전달을 수행할 수 있도록 도와주는 역할
  3. 데이터를 안전하고 빠르게 전달
  4. 수신자에게 압축을 풀 수 있는 방식으로 된 데이터 압축

풀이 : 예상가는 개념 , 패킷으로 전송하고 , 안전한전달이니까 TCP아닐까??? , 3핸드 쉐이킹인가?? ICMP , 물리계층이니까 TCP예상..

정답

필요한 개념

OSI 7 Layer :

OSI 7 Layer란 네트워크에서 통신이 일어나는 과정을 단계별로 파악하기 위해 7단계로 나눈 것을 말합니다.

1 Layer - 물리계층(Physical Layer)

단순 데이터를 전기적인 신호로 변환(on/off)해서 주고받는 기능만 하며,

케이블, 리피터, 허브를 통해 데이터를 전송합니다.

물리계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행하도록 역할합니다.

MAC주소를 가지고 통신을 합니다.

3 Layer - 네트워크 계층(NetWork Layer)

전송 데이터를 목적지까지 경로를 찾아 전송하는 계층입니다.주소(IP)를 정하고, 경로(route)를 선택하여 패킷을 전달하는 것이 핵심입니다.

4 Layer - 전송 계층(Transport)

데이터를 전송하고 전송 속도를 조절하며 오류가 발생된 부분은 다시 맞춰주며,

주로 TCP프로토콜을 사용합니다.

5 Layer - 세션 계층(Session)

네트워크의 양쪽 연결을 관리하고 지속적으로 연결을 시켜줍니다.

TCP/IP의 세션을 만들고 없애는 것을 반복합니다.

6 Layer - 표현 계층(Presentation)

응용계층으로부터 전달받거나 전송하는 데이터의 인코딩(언어처리) 및 디코딩이 이루어 집니다.

JPEG,TIFF,GIF 등의 다양한 포멧을 지원합니다.

7 Layer - 응용계층(Application)

사용자가 네트워크에 접근할 수 있도록 도와줍니다.

사용자에게 보이는 유일한 계층으로 메일전송/인터넷접속 등의 작업을 수행합니다.

지피티

데이터링크 | 2계층 | 오류 검사, 흐름 제어 | MAC, 스위치
네트워크 | 3계층 | 주소 지정, 라우팅 | IP, 라우터
표현 | 6계층 | 압축, 암호화, 인코딩 | JPEG, PNG, AES


  1. 눈에보이지 않는것 추상화
  2. 실세계 표현 개념화

풀이 : 데이터 모델링을 표현하는 것같음 클래스사이의 관계니까 association 이건가?? , 그리고 일반화는 generation 이건가??

정답

풀이

UML에서 제공하는 클래스 사이의 관계 :

(1) 연관 관계 (association) : 클래스들이 개념상 서로 연결되어 있음을 나타냅니다.

(2) 일반화 관계 (generalization) : 상속 관계를 설명합니다. (위 문제 참조)

(3) 집합관계 :

1) 집약 관계(aggregation) : 클래스 사이의 전체 또는 부분 같은 관계를 나타냅니다. (객체 라이프 타임 : 독립적)

2) 합성 관계 (composition) : 클래스 사이의 전체 또는 부분 같은 관계를 나타냅니다. (객체 라이프 타임 : 의존적)

(4) 의존 관계 (dependency) : 연관 관계와 같이 한 클래스가 다른 클래스에서 제공하는 기능을 사용합니다.

(5) 실체화 관계 (realization) : 인터페이스와 구현 클래스 사이의 관계를 나타냅니다.


  1. 초기화면??? , 트리거
  2. 백단에서 구현한부분인가?? , 서비스
  3. 결과 출력아닌가?? , 뭐임?? 리턴값임?? 아웃풋?

정답

풀이

테스트 케이스란 특정 프로그램의 부분 및 경로를 실행해보거나,
요구사항에 준수하는지 확인하기 위해 개발된 입력 값, 조건, 예상된 결과 세트입니다.

케스트 케이스를 함으로써 오류감소 / 비용감소 / 의사소통의 효과가 나타납니다.

테스트 케이스의 설계 기법 종류로는
블랙박스 기법의 명세기반 / 경험기반 기법과
화이트박스 기법의 구조기반 기법이 있습니다.

이렇게생각함 ( 1 )이 테스트 조건인 이유는 사용자 초기 화면이라는 환경/조건에서 시작 -> 입력값 -> 결과값


  1. 입력 조건과 출력 조건 간의 논리적 관계
  2. 테스트케이스 도출

풀이 : 입력 결과 그래프 아닐까??

  1. 원인은 입력조건을의미 , 결과는 입력조건의 결과를 의미
  2. 원인과 결과간의 논리적 관계
  3. 연산자 사용

풀이 : 회로도 같은데... 뭐지??

정답

풀이

동적 테스트(Dynamic Test)

  • 테스트데이터를 이용해 실제 프로그램을 실행함으로써 오류를 찾는 과정입니다.

• 명세 기반 테스트(Black Box Test)

1) 신택스 기법(Syntax Analysis)
2) 동등 분할 기법(Equivalence Partitioning Analysis)
3) 경계 값 분석 기법(Boundary Value Analysis)
4) 원인-결과 그래프 기법(Cause-Effect Graph Analysis)
5) 의사결정 테이블 기법(Decision Table Analysis)

• 구현 기반 테스트(White Box Test)

1) 문장 검증 기준(Statement Coverage)
2) 분기 검증 기준(Branch Coverage)
3) 조건 검증 기준(Condition Coverage)
4) 분기/조건 검증 기준(Branch/Condition Coverage)
5) 다중 조건 검증 기준(Multiple Condition Coverage)
6) 기본 경로 테스트(Basic Path Test)


  1. 블록 암호의 일종
  2. 국가 표준으로 정한 암호??
  3. 64비트 평문을 64비트 암호문으로 암호화 대칭키 알고리즘
  4. 키는 56비트이다.

풀이 : 암호화하는 크기도작고 키도작고, 대칭키 인걸로보아 DES아닐까싶음

정답

풀이

DES(Data Encryption Standard)와 AES(Advanced Encryption Standard)는 대칭키 암호화 방식 중 하나입니다.

DES의 취약점을 보완하기 위해 만들어진 고급 암호 화 표준 방식이 AES입니다.

DES와 다르게 128비트 평문을 128비트로 암호화 하였으며,

10/12/14 라운드 수와 이에 대응해 128/192/256비트의 키길이를 갖습니다.(AES-128/AES-192/AES-256)
하기 때문에 안전하여 현재 보편적으로 사용되는 암호화 방식입니다.


11. 다음 Java 코드에 대한 알맞는 출력값을 쓰시오.

  public class testco {
   public static void 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. 변수 4개 생성

  2. a==2 | a==c // false | true 해서 true

  3. !( c>d ) // !( false ) 해서 true

  4. 1 == b ^ c ! = d // false ^ true 해서 true

  5. if문 안으로들어감 , a = b + c // a는 7임

  6. ( 7 == b ^ c! = a ) // false ^ true 해서 true

  7. a 출력 7

    정답


12. 다음 C언어에 대한 알맞는 출력값을 쓰시오.

#include <stdio.h>
int main(){
int arr[3];
int a = 12, b = 24, c = 36;
arr[0] = &a;
arr[1] = &b;
arr[2] = &c;
printf("%d\n",
arr[1] + **arr + 1);
}

  1. 배열1개 변수 3개 생성
  2. 배열에 변수의 참조 주소 할당 , 배열에 참조 주소가들어간생태.
  3. arr[1] + **arr + 1 // arr의 1번 인덱스의 참조주소값 24 + arr의 [0]번인덱스의 참조값 12 + 1 아닌가?? , 37예상

정답

풀이

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


  1. 테이블두개
  2. sql문 분석 , T1과 T2을 크로스조인함( 크로스조인이뭐지?? )
  3. 예상되는건 s로시작되는 smith가 NO 12 랑 조인 , scott은 t가들어가니까 NO 32와 조인
  4. 거기서 count하면 2 아닐까??

정답

풀이

cross join은 join을 해서 나올 수 있는 모든 행의 조합을 보여주는 것으로 각 결과를 곱해주면 됩니다. 즉, S로 시작하는 A.NAME의 개수는 2개, T를 포함하는 A.NAME의 개수 또한 2개이므로 2*2 = 4가 됩니다.

지피티

✅ 1. CROSS JOIN이란?
CROSS JOIN은 두 테이블의 모든 가능한 조합을 만들어내는 조인입니다.

T1에는 3개의 row

T2에는 2개의 row
→ 결과적으로 3 x 2 = 6개 조합이 생성됩니다.

A.NAMEB.RULEA.NAME LIKE B.RULE설명
smiths%✅ Trues로 시작함
smith%t%✅ Truet 포함함
allens%❌ Falses로 시작하지 않음
allen%t%❌ Falset 없음
scotts%✅ Trues로 시작함
scott%t%✅ Truet 포함함

→ 총 4건이 WHERE 절을 만족함

JOIN

JOIN 종류설명예시 목적
INNER JOIN두 테이블에서 일치하는 데이터만 반환회원과 주문 정보 일치하는 경우
OUTER JOIN한쪽 테이블에 일치하지 않아도 모든 행 반환왼쪽/오른쪽 테이블 기준으로 전체 표시
SELF JOIN같은 테이블을 자기 자신과 JOIN직원의 상사를 같은 테이블에서 찾을 때
CROSS JOIN두 테이블의 모든 조합을 반환모든 상품 × 모든 카테고리 조합

14. 다음 파이썬 코드이다. 알맞는 출력값을 쓰시오.

a,b = 100, 200 
print(a==b)

false아니야??

정답


  1. 어떤 다이어그램은 문제 해결을 위한 도메인 구조
  2. 보이지 않는 도메인 안의 개념과같은 추상적인 개념을 기술
  3. 소프트웨어의 설계
  4. 완성된 소프트웨어의 구현 설명을 목적
  5. 속성과 메서드가 있음

풀이 : 추상개념, 속성 , 메서드 등 클래스 다이어그램을 말하는 것 같음

풀이

UML(Unified Modeling Language)은 통합 모델링 언어라고 합니다.

UML를 사용하면
의미가 명확하고 소통이 원활해 지며,
전체 시스템 구조와 클래스 간의 의존성 파악도 쉬우며,
원활한 유지보수를 위한 문서 활용으로도 사용됩니다.

UML다이어그램은
구조 다이어그램 (Structure Diagram : 정적) 과
행위 다이어그램 (Behavior Diagram : 동적) 으로 나뉘는데

클래스 다이어그램은 구조 다이어그램에 속합니다.


  1. 디자인패턴
  2. 부모 클래스에 알려지지 않은 구체 클래스를 생성하는 패턴
  3. 자식 클래스가 어떤 객체를 생성할지 결정하도록 하는 패턴
  4. 부모 클래스 코드에 구체 클래스 이름을 감추기 위한 방법

풀이 : 제어패턴??? 인가 그런데 어떤 클래스를 생성할때 사용하는 패턴이고 자식이 부모클래스를 사용하는 것이니까 visitor패턴일 수 있음

정답

지피티

✅ 문제 해설

문제 핵심 포인트 요약:
객체지향 디자인 패턴
부모(상위) 클래스는 어떤 구체 클래스를 생성하는지 모름
자식(하위) 클래스가 어떤 객체를 생성할지 결정
구체 클래스 이름을 숨김 (캡슐화)
이 설명은 전형적인 Factory Method Pattern에 해당합니다.

패턴 이름 | Factory Method Pattern
목적 | 객체 생성 코드를 서브클래스(하위 클래스)에 위임하여 캡슐화
특징 | 상위 클래스는 추상적인 인터페이스만 알고, 구체 객체는 하위 클래스가 생성
장점 | 클래스 간 결합도 감소, 객체 생성 로직 변경 시 유연함
사용 예시 | GUI 툴킷에서 Button을 만들지만, OS별로 MacButton, WindowsButton 클래스를 실제 생성하는 경우

💡 정리

❌ Visitor 패턴은 기존 구조를 변경하지 않고 새로운 연산(동작)을 추가할 때 쓰는 패턴입니다. 객체 생성과는 관련이 없습니다.

✅ Factory Method는 객체 생성을 하위 클래스에 위임하는 대표적인 생성 패턴입니다.


17. 다음 C언어에 대한 알맞는 출력값을 쓰시오.

  #include <stdio.h>
  struct jsu {
    char name[12];
    int os, db, hab, hhab;
  };
  int main(){
  struct jsu st[3] = {{"데이터1", 95, 88}, 
                      {"데이터2", 84, 91}, 
                      {"데이터3", 86, 75}};
  struct jsu* 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\n", (p+1)->hab + (p+1)->hhab);
  }
  1. 배열생성 , 배열안에 구조체 3개

  2. 포인터변수 생성

  3. 포인터변수가 배열의 첫번째 인덱스 참조주소를 가르킴

  4. (p + 1)->hab // "데이터2"의 hab을가르키는건가??

  5. (p + 1)->os + (p + 2)->db; // 데이터2의 os값 : 84 + 데이터3의 db값 : 75 , 159

  6. hab은 159

  7. (p + 1)->hhab = (p+1)->hab + p->os + p->db; // 159 + 95 + 88 = 342

  8. printf("%d\n", (p+1)->hab + (p+1)->hhab); // 342 + 159 = 501

    정답


  1. 파일구조는 파일을 구성하는 레코드들이 보조기억장치에 편성되는 방식에 따라 방식이 달라진다
  2. 레코드들을 키 - 값 순으로 정렬하여 기록
  3. 레코드의 키항목만을 모음
  4. 주소를 사용하여 직접 참조할 수 있다
  5. 순차접근 , x , 해싱 접근

풀이 : 값을 참조하는 방식이니 참조접근 아닐까??

정답


  1. 그래픽을 통해 컴퓨터와 정보 교환 , gui 아님??

정답


하스스톤. 하향식 스텁 의 반대를 말하는것같음
( 1 ) 상향식
( 2 ) 드라이버

정답

풀이

모듈을 통합하는 과정에서 모듈 간 호환성의 문제를 찾아내기 위해 수행되는 테스트입니다.
즉, 모듈 간의 인터페이스가 올바르게 작동하는지를 테스트하게 됩니다.

통합 테스트에는 아래와 같은 방식이 존재합니다.

  1. 빅뱅(Big Bang) 접근법 : 모든 구성 요소들을 한꺼번에 통합된 후에 테스트 수행
  1. 점증적(incremental) 접근법 : 논리적으로 연관된 두개 또는 그 이상의 모듈을 조합시켜서 수행

(1) 하향식(Top Down) 접근법 :

소프트웨어 시스템의 제어 흐름이 위에서 아래로 발생

(테스팅을 위해 스텁의 도움이 필요)

(2) 상향식(Bottom Up) 접근법 :

모든 모듈들이 테스트될 때까지 더 낮은 레벨에 있는 각 모듈은 더 위에 있는 모듈과 함께 테스트 수행

(테스팅을 위한 드라이버의 도움이 필요)

(3) 샌드위치 접근법 : 하향식과 상향식 접근법의 조합


profile
뭐가될지 모름

0개의 댓글