[2023년 3회] 정보처리기사 실기

이주원·2025년 3월 31일

컴퓨터언어

목록 보기
15/50

1. 다음은 Java 코드이다. 올바른 출력 결과를 작성하시오.

public class main{
    public static void main(String[] args) {
        A b = new B();
        b.paint();
        b.draw();
    }
} 
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");
    }
}
  1. B클래스 객체를 생성 b

  2. b.paint(); b에서 paint메서드 호출

  3. 부모클래스의 draw호출 B출력

  4. 그런다음 부모클래스에서 draw();는 뭘의미 하는지 알 수 없음

  5. 다시돌아와서 다음문장 System.out.print("C"); C출력

  6. 다음문장 this.draw(); 해당 클래스의 draw D출력

  7. 이제 메인메서드로돌아가서 b.draw(); B클레스의 draw메서드 호출 D출력

    BCDD가 출력

    그러나 정답은 BDCDD입니다. 어디에서 D가출력되었을까요
    아마 4. draw가 현제 실행중인 클래스의 draw()를 호출하게 되었던것 같네요

    그렇다면 BDCDD


키워드를 추출
1. 자격증명없이 리소스를 엑세스할수있도록 권한 부여
2. 엑세스 권한부여에대한 안전하고 표준화된 방법 , 토큰을 사용
3. 엑세스토큰 받음
4. 타사 응용 프로그램과 공유되지 않음
5. 사용자가 데이터 엑세스권한을 타사 애플리케이션에 부여함
6. 타사 앱에 대한 사용자 자격 증명의 노출을 최소화 , 사용자 환경등 여러가지 이점을 제공

요약. 엑세스 토큰을 사용하여 한번 할당받으면 토큰을 이용하여 다양한 앱을 사용한다는 것 같습니다. 그렇게되면 번거롭게 매번 다른앱을 이용할때 로그인등 자격증명을 해도되지않아서 편리할 것 입니다.

보기가 너무 다양한데 제 생각에는 accessToken을 한번받고
어딜 접근하던지 토큰을 사용하는 프로토콜을 말하는 것 같습니다

아마도 OAuth인 것 같습니다.

다른 선택지들과 구별 포인트

ㄹ. accessToken 단지 OAuth의 결과물일 뿐, 프로토콜이 아님
ㄷ. SAML 인증(SAML SSO)에 더 적합하고, 보통 기업 내에서 사용
ㅂ. OIDC OAuth 위에 인증 기능을 얹은 것. 설명엔 인증이 없음
ㄴ. JWT 토큰 형식일 뿐, 프로토콜이 아님
ㅁ. SSO 단일 로그인 개념은 나오지 않았음
ㅊ. Refresh Token accessToken 재발급용. 보조 수단에 불과


리눅스명령어에 관한 문제입니다.
1. 8진법을사용해서
2. 사용자 에게 모든 권한
3. 그룹에게는 읽기/실행
4. 그외기타그룹에게는 실행권한

chmod 111_101_001
정답 : chmod 7 5 1


4. 다음은 C 언어 코드이다. 알맞는 출력 결과를 작성하시오.

#include <stdio.h>
int test(int n) {
    int i, sum = 0;
    for (i = 1; i <= n / 2; i++){
        if (n % i == 0)
        sum += i;
    }
    if (n == sum) 
        return 1;
    ​
    return 0;
}
int main(){
    int i, sum=0;
    for (i = 2; i <= 100; i++){ 
        if (test(i))
        sum += i;
    }
    printf("%d ", sum); 
    return 0;
}
  1. 변수 생성
  2. 반복문 2부터 100까지 반복하네요
  3. 조건이 test함수입니다. ,test함수 구조를 확인해야합니다.
  4. test함수 키워드 1. 현재들어온 변수를 2로나눈값의 이하만 체크
  5. test함수 키워드 2. 현재들어온 변수의 약수들만체크
  6. test함수 키워드 3. 약수들의 합이 전부더해서 변수와같으면 return1 출력
  7. 완전수를 찾는문제임 , 결국 2이상 100이하에서 완전수는 6, 28입니다.
  8. sum에 더하면 6+28
    정답 : 34

✅ 2부터 10,000 사이 완전수 목록

6, 28, 496, 8128


  1. 변수 num , 구조체 d1 , 포인터 d2 생성
  2. d1포인터는 num을 가르키고있음
  3. d2 와 numPtr사이에 무언가가 있음
  4. 당연하게 *d1.numPtr은 num의 값인 10 이 출력됨
  5. d2도 10이 출력된것으로보아 numPtr값을 참조해야하므로 -> 기호가들어가야함
    정답 : ->

  1. UNION은 두개의 SELECT결과를 하나로 합쳐주는 역할임 , 게다가 유니온은 중복값을 제거함
  2. 내림차순으로 정렬
  3. 결과 4 3 2 1
    정답 : 4 3 2 1

키워드
1. 규칙기반 , 접근 허가 권한에 근거
2. 중앙 관리자 , 조직내 역할에 기초
3. 신분기반 접근 통제

솔직히 정답을 알수가없어 추측해야함
1 - rule
2 - role
3 - identity 아닐까

Mandatory Access Control (강제적 접근 통제) : 관리자가 임의로 정한 규칙에 의해 통제접근
Role-Based Access Control (역할 기반 접근 통제) : 조직내 역할에 의해 통제접근
Discretionary Access Control (임의적 접근 통제) : 신분기반으로 접근 권한 부여


8. 다음 C언어 코드에 알맞는 출력값을 작성하시오.

#include
int f(int n) {
    if(n<=1) return 1;
    else return n*f(n-1);
}
int main() {
    printf("%d", f(7));
}
  1. 메인에서 f 함수호출

  2. f는 팩토리얼임

  3. 7! = 7 6 5 4 3 2 1 = 120 x 42

    240
    480
    정답 : 5040


키워드
1. 일정한 크기로 순서대로 자료를 전송한다.
2. 고정길이 패킷을 이용
3. 단순하고 고속망에 적합
4. 분할 다중화를 사용
5. 가상채널기반의 연결

내생각 : 가상채널을만들어서 데이터를 고정패킷으로 나눈다음에 목적지에 전달하는 것 같음 , 데이터그램방식 아닐까? 일정한 크기로나눈다음에 가상채널로 전달하는 맥락이 같잖아

해설 : Asynchronous Transfer Mode , 연결지향 , 고정 길이 방식
ATM 특징 : a. 일정한 크기로 전송, b. 고속망에 적합 - 광대역통신망(B-ISDN)용이라서 고속 처리에 딱 맞음, c. 데이터를 보내기전에 먼저 가상회선을 설정함 == 연결지향형, d. 통계적 다중화 - 자원이 놀지 않게 여러 흐름을 통계적으로 섞어서 전송, e. 필요한 경우 TDM(Time Division Multiplexing)으로도 동기화해서 전송 가능

정답 : ATM


  1. 포인터변수 p를 만들었다.
  2. p를 출력하면 가르키고있는 KOREA를 출력
  3. p가 가르키는 문자열의 1번째 인덱스 부터 출력 O출력
  4. *p 문자열 시작부분 출력 K
  5. 문자열 인덱서 3번 위치 출력 E
  6. *p 문자열 시작부분은 K인데 + 4 를해서 아스키코드로 생각 K -> L -> M -> N -> O

KOREA
OREA
K
E
O


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));
    }
}
  1. Child 객체를 객체명 obj로 생성합니다.
  2. obj의 compute메서드 호출 인자값은 7
  3. compute( 6 ) + compute( 4 )
  4. compute( 5 ) + compute( 3 ) + compute( 2 ) + compute( 1 )
  5. compute( 4 ) + compute( 2 ) + compute( 2 ) + compute( 0 ) + compute( 1 ) + compute( -1 ) + 1
  6. 패턴이보이기시작했음 dp와같음 한번만 계산하고 그결과를 사용하면 될 것 같음 compute( 2 ) 같은경우는 0이출력됨
  7. compute( 3 ) 같은경우는 compute( 2 ) + compute( 0 ) 이므로 0이출력됨
  8. compute( 4 ) 같은경우는 compute( 2 ) + compute( 1 ) 이므로 1출력
  9. compute( 5 ) 같은경우 compute( 4 ) + compute( 2 ) 이므로 1출력
  10. compute( 6 ) 같은경우 compute( 5 ) + compute( 3 ) 이므로 1출력
  11. 결국 compute( 6 ) + compute( 4 ) 는 2가 됨

정답 : 2


  1. IP외부주소가 있다.
  2. IP내부주소가 있다.
  3. IP내부주소를 외부주소를보고 재기록한다.

개념은 쉽습니다. 아마 IPSEC이 아닐까요??

NAT을 사용하는이유
1. IPv4 주소 부족 문제 해결 , 외부 공인주소는 한정적이기때문에 내부주소를 따로 만들어서 다양하게 할당해줄 수 있음
2. 외부에서 내부 IP를 직접 알 수 없으니까 어느 정도 방화벽 역할도 해줘


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

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();
    }
}
  1. Person 객체를 생성합니다. 객체명은 obj
  2. 생성자 메서드에 Kim이 들어간다.
  3. private 으로 선언했기때문에 생성자에서 해당 변수를 불러올수 있을지 의문임. 문제없이 가능하다고하네 private은 외부 클래스에서 접근이 불가능할 뿐임
  4. static메서드는 인스턴스가없이 바로 실행될 수 있는 메서드 입니다.
    return은 있어도되고 없어도됨 , name인스턴스는 참조할 수 없음

정답 : return name; 부분


14. 다음은 파이썬에 대한 문제이다. 괄호 안에 알맞는 답을 작성하시오.

print("파이썬 입출력에 대한 문제입니다.")
num1, num2 = input()._____()
num1 = int(num1)
num2 = int(num2)
print(num1,num2)
num3 = num1 + num2
print(num1 + " + "  + num2 + " = " + num3)

특이사항
입력값은 2와 3이다.

출력화면
파이썬 입력출에 대한 문제입니다.
2 3
2 + 3 = 5

정답 : split


하나의 클래스에서 파생되는 것 같은데
클래스 다이어그램 아니면 패키지 다이어그램 아닐까요?? ( 파생된 패키지가아니라 모듈간의 관계를 설명한 그림이였습니다. 주문, 인쇄, 제품 )

아마 상호작용이아니라 파생되는 것 이므로
클래스다이어그램일 것 같았으나

정답 : 패키지다이어그램


키워드
1. 입력값과 출력값이 특정 그룹으로 분류
2. 그룹내의 값들이 동일하게 취급됨
3. 시스템을 거치면서 유사한 답변이 나오는 테스트
4. 분할 내 모든 값을 대표하는 값
5. 모든 입력값을 시험할 필요가 없이 효율적으로 수행
6. 경계값 분석과 함께사용

내생각 : 대푯값을 추출해서 경계값분석에 활용됨 , Equivalence Partitioning

정답 : ㄱ


보기 : saas iaas faas

가상화 서비스 제공 단위인 것 같습니다.
( 1 ) Iaas : 인프라 서비스 제공
( 2 ) Paas : 플랫폼 서비스 제공
( 3 ) Saas : 소프트웨어 서비스 제공


  1. Hop Count를 파악
  2. 다이나믹 프로토콜( 길을 찾음 )
  3. Hop Count 적은 경로 선택
  4. IGP

✅ IGP(Interior Gateway Protocol)란?

하나의 자율 시스템(AS) 내부에서 라우터들이 서로 경로 정보를 교환하기 위한 라우팅 프로토콜이야.

자율 시스템(AS, Autonomous System)이란?
하나의 관리 주체(조직)가 운영하는 하나의 큰 네트워크 덩어리

그 안에서는 IGP로 내부 라우팅하고, 바깥 세상과는 EGP (보통 BGP)로 통신해.

정답 : RIP


보기
ㄱ.σ
ㄴ.π
ㄷ.⋈
ㄹ.÷

join : ⋈
project : π
select : σ
division : ÷


  1. 2개의 관련 있는 테이블에서 관계 변수 간의 일관성 ( 부모 테이블에서 꼭 참조해야한다는 맥락 )
  2. 기본키 또는 키가아니라 후보키와 외래키의 조합으로 강제 적용됨( 부모 테이블을 참조하기 때문에 외래키의 조합으로 적용되는 것임 )
  3. 부모가 되는 관계 변수의 기본키 값 또는 기본 키가 아닌 후보 키 값으로 존재해야 한다.( 꼭테이블에있는 속성을 사용한다는 맥락 )

내생각 : 어떤 여러개의 속성으로 인해서 기본 키가 정해지는 것 같음
참조 무결성?? , 복합기본키에관한이야기인가? 모르겠음

정답 : 참조 무결성

profile
뭐가될지 모름

0개의 댓글