정처기 실기 : 2022년 1회차 기출, 1️⃣~5️⃣

m_ngyeong·2024년 4월 24일
0
post-thumbnail

정보처리기사 실기


📝 2022년 1회차 기출, 1️⃣1️⃣~1️⃣5️⃣

1. Java Lang.

class A {
  int a;
  int b;
}
  
public class Test {
  static void func1(A m) {
    m.a *= 10;
  }
  static void func2(A m) {
    m.a += m.b;
  }
  public static void main(String args[]){
      A m = new A(); // A클래스는 객체 변수 m을 선언.
      m.a = 100;
      func1(m);
      m.b = m.a;
      func2(m);
      System.out.printf("%d", m.a);
  }
}

🖍 2000
1️⃣ func1(m) = m.a = 100 ∗ 10 = 1000
2️⃣ m.b = m.a;의 구문에 의해 m.b = 1000
3️⃣ func1(m) = m.a + m.b = 1000 + 1000 = 2000
4️⃣ ∴ m.a = 2000

2. RAID

  • 두 개 이상의 하드디스크를 배열을 구성하고 병렬로 연결해, 하나의 디스크처럼 이용하며, 파일을 구성하는데 데이터 블록들을 서로 다른 디스크들에 분산 저아할 경우 그 블록들을 여러 디스크에 동시에 읽고 쓸 수 있으므로 디스크의 속도가 매우 향상되는데, 이 기술을 RAID라고 한다.
  • RAID 방식 중 패리키가 없는 스트리핑된 2개 이상의 디스크를 병렬로 연결하여 구성하는 이 방식은 디스크의 개수가 증가할수록 입•출력 속도 및 저장 용량이 배로 증가하지마, 하나의 디스크만 손상되어도 전체 데이터가 유실되는 문제가 발생한다.
  • 스트라이프(Stripe) 방식으로 구현하여 I/O 속도가 빠르다.

🖍 Level 0

3. DB - 트랜잭션

DBMS는 데이터베이스에 치명적인 손실이 발생했을 때 이를 복구하기 위해 사용되는 데이터베이스의 처리 내용이나 이용 상황 등 상태 변화를 시간의 흐름에 따라 기록한 로그를 생성한다.
( ① ) : 데이터베이스가 비정상적으로 종료되었을 때, 디스크에 저장된 로그를 분석하여 트랜잭션의 시작(start)과 완료(commit)에 대한 기록이 있는 트랜잭션들의 작업을 재작업한다. 즉 로그를 이용하여 해당 데이터 항목에 대해 이전 값을 이후 값으로 변경하는 연산이다.
( ② ) : 데이터베이스가 비정상적으로 종료되었을 때, 디스크에 저장된 로그를 분석하여 트랜잭션의 시작을 나타내는 ''는 있지만 완료를 나타내는 '' 기록이 없는 트랜잭션들이 작업한 내용들을 모두 취소한다. 즉 로그를 이용하여 해당 데이터 항목에 대해 이후 값을 이전 값으로 변경한다.

🖍 ① REDO, ②UNDO

4. SQL

<성적>테이블에서 이름(name)과 점수(score)를 조회하되, 점수를 기준으로 내림차순 정령하여 조회하는 <SQL문>을 작성하시오.

🖍 SELECT name, score FROM 성적 ORDER BY 성적 DESC

5. Java Lang.

class Car implements Runnable{ //  Runnable 인터페이스를 상속받은 클래스 Car 정의
  int a;
  public void run(){
      try{
          while(++a < 100){
              System.out.println("miles traveled : " + a);
              Thread.sleep(100);
          }
      }catch(Exception E){ }
  }
}
  
public class Test{
  public static void main(String[] args){
    Thread t1 = new Thread(new _____());
    t1.start();
  }
}

🖍 Car
1️⃣ Thread t1 = new Thread(new Car()); : 스레드 클래스의 객체 변수 t1을 선언하며, 스레드를 실행할 run() 메소드를 정의하고 있는 Car() 클래스를 생성자의 인수로 사용.
∗ 스레드 클래스는 생성자를 호출할 때 Runnable 인터페이스를 인수로 사용함
2️⃣ t1.start();start()는 스레드 클래스에 포함된 메소드로, run() 메소드를 정의한 코드들을 실행하는 메소드이다.
run()은 main()과 별개로 실행되기 때문에 main()이 종료되어도 run()의 작업이 끝나지 않으면 계속 수행.
3️⃣ try ~ catch 문 실행 → a는 전치증가 연산이므로 a에 1을 더한 후, a가 100보다 작은 동안에 for문을 실행.
4️⃣
miles traveled : 1
miles traveled : 2
...
miles traveled : 99
을 출력
5️⃣ Thread.sleep(100);는 0.1초 동안 스레드를 일시 정지시킴.
∗ Thread.sleep(n)` : n/1000초 동안 스레드를 일시 정지시킴

  • class Car implements Runnable : Runnable 인터페이스를 상속받은 클래스 Car 정의.
    implements : extends와 같이 상속에 사용하는 예약어로, 인터페이스를 상속할 때 사용함
    Runnable : 스레드 클래스를 만들 때 사용하는 인터페이스
    Interface는 클래스와 유사하게 변수와 매소드를 갖는 개체
    Thread는 시스템의 여러 자원을 할당받아 실행하는 프로그램의 단위로, 대부분은 main() 메소드를 실행하는 하나의 스레드로만 작업을 수행하는데, 스레드 클래스는 추가적인 스레드를 가질 수 있도록 생성하는 기능을 가짐
  • public void run() : 스레드가 수행할 작업들을 정의하는 run()메소드를 정의.
  • try{} catch(Exception E){ } :
    • try{} 문을 활용하여, 실행 중에 예외가 발생할 경우, 실행할 코드를 하나의 블록으로 묶어 둔 것.
    • Thread.sleep(); : 인터럽트로 인한 예외를 발생시킬 가능성이 큰 메소드이므로 반드시 try ~ catch 문을 통해 예외를 처리해줘야 함
    • catch(Exception E){ } : try{} 블록을 수행하다 발생한 예외를 처리하는 블록으로, 예외 객체는 InterruptedException이지만, Exception을 사용하면 InterruptedException을 포함한 대부분의 예외를 한 번에 처리할 수 있음.


참고,
길벗알앤디. 『정보처리기사 실기 단기완성』. 길벗. 2023.

profile
사용자 경험 향상과 지속적인 성장을 추구하는 프론트엔드 개발자 ʚȉɞ

0개의 댓글