[정처기 실기 기출] 2024 3회 : 자바 코드 분석 예상 문제
본문 바로가기

Computer Science/정보처리기사

[정처기 실기 기출] 2024 3회 : 자바 코드 분석 예상 문제

728x90
반응형

 

1️⃣ String 객체 비교 문제

문제: 아래 코드의 출력 결과를 예측하자! 💭

public class Main {
    public static void main(String[] args) {
        String str1 = new String("Hello");
        String str2 = new String("Hello");
        String str3 = "Hello";

        System.out.println(str1 == str2);  // 1
        System.out.println(str1 == str3);  // 2
        System.out.println(str1.equals(str2));  // 3
        System.out.println(str2.equals(str3));  // 4
    }
}

🔍 풀이:

  1. str1 == str2: false!
    new 키워드로 생성된 str1과 str2는 서로 다른 객체임! 주소가 다르니까 ==로 비교하면 false!
  2. str1 == str3: false!
    str3은 리터럴로 생성되었고 str1은 new로 생성되었음. 주소가 다르니까 ==로 비교하면 false!
  3. str1.equals(str2): true!
    equals()는 내용 비교! 두 문자열 "Hello"는 똑같으니까 true!
  4. str2.equals(str3): true!
    "Hello"끼리 비교하니까 역시 true!

결과:

false  
false  
true  
true  

2️⃣ 배열 탐색 문제

문제: 배열에서 중복된 숫자가 있으면 "중복 있음"을, 없으면 "중복 없음"을 출력하자!

public class Main {
    public static void main(String[] args) {
        int[] arr = {3, 5, 7, 3, 8, 9};

        for (int i = 0; i < arr.length; i++) {
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[i] == arr[j]) {
                    System.out.println("중복 있음");
                    return;
                }
            }
        }
        System.out.println("중복 없음");
    }
}

🔍 풀이:

  1. 배열을 하나하나 두 번 비교하면서, 숫자들이 중복되는지 확인!
  2. 만약 중복되는 숫자가 있다면 "중복 있음"을 출력하고 종료. 중복이 없다면 마지막에 "중복 없음"을 출력!

결과:

중복 있음

왜냐면 배열에서 3이 중복되니까요! 😎


3️⃣ ArrayList 성능 문제

문제: ArrayList에서 조건에 맞는 요소를 삭제하면 어떻게 될까요?

import java.util.*;

public class Main {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 1; i <= 10; i++) {
            list.add(i);
        }

        for (int i = 0; i < list.size(); i++) {
            if (list.get(i) % 2 == 0) {
                list.remove(i);
            }
        }

        System.out.println(list);
    }
}

🔍 풀이:

  1. ArrayList에서 요소 삭제 시, 삭제하면 크기가 변하기 때문에 인덱스가 엉망이 될 수 있어요!
  2. 이 코드에서 삭제 후 인덱스가 뒤로 밀리는 문제가 발생합니다.
    예를 들어, 2를 지우면 3이 밀려오고, i++로 인덱스가 계속 증가하니 한 번만 건너뛰게 돼요!
    하지만 원하는 결과는 얻을 수 있죠!

결과:

[1, 3, 5, 7, 9]

 


4️⃣ 배열 정렬 문제

문제: 배열을 정렬하면 어떻게 될까?

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] arr = {3, 5, 2, 8, 1};
        Arrays.sort(arr);

        for (int num : arr) {
            System.out.print(num + " ");
        }
    }
}

🔍 풀이:

  1. Arrays.sort()로 배열을 오름차순 정렬합니다!
  2. 정렬 후 배열은 [1, 2, 3, 5, 8]이 됩니다!

결과:

1 2 3 5 8 

정렬된 후 값들이 작은 순서대로 정렬되었어요! 🏅


5️⃣ 예외 처리 문제

문제: 예외 처리에서 finally 블록은 언제 실행될까요?

public class Main {
    public static void main(String[] args) {
        try {
            String str = null;
            System.out.println(str.length());
        } catch (NullPointerException e) {
            System.out.println("NullPointerException 발생");
        } finally {
            System.out.println("finally 블록 실행");
        }
    }
}

🔍 풀이:

  1. str이 null이어서 NullPointerException이 발생하고, catch 블록에서 "NullPointerException 발생"이 출력됩니다.
  2. 그 후 finally 블록은 예외와 관계없이 항상 실행되며 "finally 블록 실행"이 출력됩니다!

결과:

NullPointerException 발생
finally 블록 실행

finally 블록은 항상 실행되니 꼭 기억하세요! 💡

 

728x90
반응형