[면접예상] 20230629

neul·2023년 6월 29일
0

면접예상

목록 보기
16/36
post-thumbnail

🐼throws 에 대하여 설명하시오.

메소드 또는 생성자에서 발생할 수 있는 예외를 호출자에게 전달하는 키워드

  • 예외 처리의 책임을 호출자로 전가하는 역할
  • 이를 통해 예외 처리의 일관성과 중앙 집중화를 유지할 수 있으며, 예외를 적절하게 처리하거나 예외를 더 상위로 전파하여 프로그램의 안정성을 확보할 수 있다.

🐼checked 와 unckecked Excetpion 을 설명하시오.

Checked Exception

컴파일러가 강제로 예외 처리를 요구하는 예외 유형
(IOException, SQLException, FileNotFoundException 등)

  • Exception 클래스를 상속하고, RuntimeException을 상속하지 않는 예외 클래스들을 포함한다.
  • 이러한 예외들은 try-catch 블록을 사용하거나, 메서드 시그니처에 throws 절을 추가하여 예외 처리를 강제화한다.
  • Checked Exception은 주로 외부 리소스에 대한 접근이나 입출력 작업, 네트워크 통신 등에서 발생할 수 있다.

Unchecked Exception

컴파일러가 예외 처리를 강제화하지 않는 예외 유형
(Unchecked Exception은 NullPointerException, ArrayIndexOutOfBoundsException, ArithmeticException 등)

  • RuntimeException 클래스를 상속한 예외 클래스들을 포함다.
  • 이러한 예외들은 개발자의 실수나 예측이 어려운 상황에서 발생하며, 일반적으로 프로그램의 논리 오류를 나타낸다.
  • Unchecked Exception은 try-catch 블록을 사용하지 않아도 되며, 선택적으로 예외 처리를 수행할 수 있다.
  • 그러나 예외가 발생한 경우, 예외가 상위 호출자로 전파되어 프로그램이 종료될 수 있다.

🐼아래가 컴파일 에러가 나는 이유에 대하여 설명하시오.

try {
int num = 6 / 0;
} catch (Exception e) {
e.printStackTrace();
} catch (InputMismatchException e) {
e.printStackTrace();
}

catch 블록은 상위 예외 클래스부터 처리해야 한다.
즉, Exception 클래스는 모든 예외의 상위 클래스이므로, catch (Exception e) 블록은 가장 마지막에 위치해야 한다.

🐼아래의 의미는?

public static void main(String[] args) throws Exception {
}

main 메서드가 Exception을 던질 수 있다는 것을 선언하는 것을 의미

이 경우, main 메서드 내에서 발생하는 예외들은 직접 처리하지 않고 상위 호출자로 예외를 전파한다.

  • 예외 처리를 명시적으로 수행하여 프로그램의 안정성과 오류 처리를 개선할 수 있다.
  • 따라서, main 메서드에서 발생하는 예외에 대해 적절한 예외 처리를 수행하는 것이 좋다.

이를 위해 try-catch 문을 사용하여 예외를 처리하거나, 예외를 처리하는 메서드를 별도로 정의하여 호출하는 방식을 사용할 수 있다.

🐼아래를 프로그래밍 하시오.

1~100 사이에 숫자를 맞춰보세요 :
50
Down
1~100 사이에 숫자를 맞춰보세요 :
25
UP
1~100 사이에 숫자를 맞춰보세요 :
43
Down
1~100 사이에 숫자를 맞춰보세요 :
30
UP
1~100 사이에 숫자를 맞춰보세요 :
35
정답입니다.5회 만에 맞췄어요.

import java.util.Random;
import java.util.Scanner;

public class Java_03_updown {

    public static void main(String[] args) {
        Random random = new Random();
        int secretNumber = random.nextInt(100) + 1;
        int count = 0;
        boolean found = false;

        Scanner scanner = new Scanner(System.in);
        System.out.println("1~100까지의 숫자를 맞춰보세요.");

        while (!found) {
            System.out.print("숫자를 입력하세요: ");

            try {
                int user = scanner.nextInt();
                count++;

                if (user == secretNumber) {
                    System.out.println("정답입니다! 축하합니다.");
                    found = true;
                } else if (user < secretNumber) {
                    System.out.println("Up!");
                } else {
                    System.out.println("Down!");
                }
            } catch (Exception e) {
                System.out.println("잘못된 입력입니다. 숫자를 입력해주세요.");
                scanner.next();
            }
        }

        System.out.println(count + "회 만에 맞췄어요.");
        scanner.close();
    }
}

🐼래퍼 클래스(Wrapper class)란 무엇인가?

:자바는 int, long, boolean 같은 변수의 기본 자료형(Primitive Type)을 제공한다. 하지만 이런 기본자료형은 컬렉션(Collection)이나 지네릭(Generic)에서 제한적으로 사용가능하다. 따라서 자바는 각 기본 자료형에 대응되는 래퍼 클래스(Wrapper Class) 제공한다.

🐼박싱 & 언박싱에 대하여 설명하시오.

박싱(Boxing)
: 기본 자료형을 생성자(Constructor)에 넘겨주어 대응되는 래퍼 클래스를 생성하는 동작

언박싱(Unboxing)
: 래퍼 클래스에 담겨있는 값을 기본 자료형으로 바꾸는 작업이 언박싱

🐼auto unboxing 이란?

기본자료형과 래퍼 클래스간의 변환이 묵시적(Implicit)으로 일어나는 경우가 있다. 자바의 특정버전(JDK 1.5)부터는 자바 언어에서 래퍼 클래스와 기본 자료형 사이의 변환을 자동으로 해주는 동작이 추가되었다. 이를 오토 박싱(Auto Boxing)과 오토 언박싱(Auto Unboxing)이라한다.

🐼아래의 함수는?

  • 10진수를 2진수를 바꿔 출력하는 함수
  • 10진수를 8진수를 바꿔 출력하는 함수
  • 10진수를 16진수를 바꿔 출력하는 함수
public static void main(String[] args) {
 // 정수에 대한 2진, 8진, 16진수 표현 결과를 반환하는 클래스 메소드
		   System.out.println("12의 2진 표현: " + Integer.toBinaryString(12));
		   System.out.println("12의 8진 표현: " + Integer.toOctalString(12));
		   System.out.println("12의 16진 표현: " + Integer.toHexString(12));
		   
	}
profile
🍙

0개의 댓글

관련 채용 정보