IT/JAVA

[JAVA] 자바 기초 테스트 (오답노트)

j8970 2025. 2. 26. 20:59

JAVA TEST


1. 서술형

자바의 기본 데이터 타입과 참조 데이터 타입의 차이를 서술하시오.

의미, 종류, 저장되는 것, 예시(변수 1개)

  • 기본 데이터 타입(Primitive Type)
  • 참조 데이터 타입(Reference Type)

2. 코드 구현 문제

다음 요구사항을 만족하는 코드를 작성하세요.

3. 코드 구현 문제

다음 요구사항을 만족하는 코드를 작성하세요.

4. 코드 구현 문제

for-each 반복문을 사용하여 배열 요소를 출력할 때 적합한 코드를 작성하세요.

int[] numbers = {1, 2, 3, 4, 5};
// 정답 작성 //
for

5. 코드 구현 문제

다음 요구사항을 만족하는 코드를 작성하세요.

6. 단답형

자바에서 모든 클래스의 최상위 부모 클래스는 무엇입니까?

정답: __________

7. 단답형

ArrayList와 같은 컬렉션에서 요소의 개수를 반환하는 메서드는 무엇입니까?

정답: __________

8. 단답형

자바에서 if-else 문 대신 간결하게 조건에 따라 값을 반환할 수 있는 연산자는 무엇입니까?

정답: __________

9. 다음 중 인터페이스에서 사용할 수 없는 것은 무엇입니까?

  1. default 메서드
  2. 정적 메서드
  3. private 메서드
  4. 생성자

정답: __________

10. 다음 중 @FunctionalInterface에 해당하는 조건으로 올바른 것은 무엇입니까?

  1. 여러 개의 추상 메서드 포함 가능
  2. 반드시 하나의 추상 메서드 포함
  3. default 메서드를 포함할 수 없음
  4. 정적 메서드만 포함 가능

정답: __________

11: 다음 코드에서 출력 결과는 무엇입니까?

class Parent {
    void display() {
        System.out.println("Parent");
    }
}

class Child extends Parent {
    void display() {
        System.out.println("Child");
    }
}

public class Main {
    public static void main(String[] args) {
        Parent obj = new Child();
        obj.display();
    }
}

12: 싱글톤 패턴을 구현할 때 가장 일반적으로 사용되는 메서드는 무엇입니까?

  1. public static
  2. private static
  3. protected static
  4. default static

정답: __________

13: 추상 클래스

추상 클래스는 객체를 생성할 수 있습니까?

  1. 아니요

14: 다운 캐스팅

다음 코드에서 다운 캐스팅이 성공하려면 어떤 조건이 필요합니까?

Animal animal = new Dog();
Dog dog = (Dog) animal;

정답: __________

15: 빌더 패턴의 주요 이점은 무엇입니까?

  1. 상속 관계에서 객체를 더 쉽게 생성할 수 있다.
  2. 객체 생성 시 복잡한 생성자 호출을 피할 수 있다.
  3. 동시성 처리를 쉽게 한다.
  4. 객체의 메모리 사용을 줄인다.

정답: __________

16: MVC 패턴에서 사용자의 입력을 처리하는 역할은 무엇입니까?

  1. Model
  2. View
  3. Controller

정답: __________

17: 인터페이스의 모든 메서드는 기본적으로 어떤 접근 제어자를 가집니까?

정답: __________

18: 추상 클래스와 인터페이스의 주요 차이점 중 맞지 않는 것은 무엇입니까?

  1. 추상 클래스는 생성자를 가질 수 있다.
  2. 인터페이스는 다중 상속을 지원한다.
  3. 인터페이스는 필드를 가질 수 없다.
  4. 추상 클래스는 정적 메서드를 가질 수 없다.

정답: __________


 

오늘은 국비 수업중 쪽지 시험을 봤는데
위의 문제들을 풀고 틀린문제를 체크 후

오답노트를 작성하는 포스팅입니다!


답안지

package test;

import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

import lombok.Getter;

// 5번 코드구현 문제 클래스 Student
@Getter
class Student {
	String name; // 이름
	int score; // 점수

	Student(String name, int score) {
		this.name = name;
		this.score = score;
	}
}

public class JavaTest_전창현 {
	public static void main(String[] args) {
		// 1. 서술형
		// - 기본 데이터 타입:
		// 의미: 변수 선언 시 해당 자료형의 크기만큼 메모리 할당
		// 종류: byte, short, long, float, int, char, boolean, double
		// 저장되는 것: 실제 데이터 값
		// 예시: int num = 10;

		// - 참조 데이터 타입:
		// 의미: 객체의 참조를 저장하는 타입
		// 종류: String, 객체, 배열, 인터페이스, 클래스
		// 저장되는 것: 해당 객체의 메모리 주소 값
		// 예시: String name = "전창현";

		// 2. 코드 구현 문제
		int num1 = 10;
		double num2 = 3.5;
		double result = num1 + num2;
		System.out.println(result);

		// 3. 코드 구현 문제
		Scanner sc = new Scanner(System.in);
		int input = sc.nextInt();
		if (input % 2 == 0) {
			System.out.println("입력하신 숫자는 짝수입니다.");
		} else {
			System.out.println("입력하신 숫자는 홀수입니다.");
		}

		// 4. 코드 구현 문제
		int[] numbers = { 1, 2, 3, 4, 5 };
		for (int n : numbers) {
			System.out.println(n);
		}

		// 5. 코드 구현 문제 - 배열이랑 리스트를 구분할 줄 알아야하는데 이 방법밖에 생각이 안납니다 추가로 공부해야할 것 같아요
		List<Student> st = Arrays.asList(new Student("John", 85)
				, new Student("Jane", 92)
				, new Student("Tom", 78)
				, new Student("Emily", 88)
				, new Student("Alex", 95));
		for (Student student : st) {
			if (student.getScore() >= 90) {
				System.out.println(student.getName());
			}
		}

		// 6. 단답형
		// 	Object
		
		// 7. 단답형
		//	.size()
		
		// 8. 단답형
		// 삼항 연산자 ? (참):(거짓)
		
		// 9. 4번 생성자는 인터페이스에서 사용할 수 없습니다
		
		// 10. 2번 단 하나의 추상 메서드를 포함합니다.
		
		// 11. Child
		
		// 12. 2번 private static
		
		// 13. 2번 아니요
		
		// 14. 상속관계가 명확한지...? * 다운캐스팅 추가 공부 필요
		
		// 15. 2번 메서드체이닝 비슷한걸로 알고있습니다.
		
		// 16. 3번
		
		// 17. public
		
		// 18. 4번 추상 클래스는 정적메서드를 가질수있습니다 정적메서드 (static 메서드)
	}

}

 


틀린 문제.

3번(답은 제대로 나오지만 sc.close(); 빼먹음)

5번 ([배열]문제 -> List로 품)

12번 (싱글톤의 정확한 개념 파악 필요)

14번 (다운캐스팅 검사에 대한 설명이 부족)

15번 (빌더의 정확한 개념 파악 필요)


오답노트.

5번 

- 해당 문제에서는 배열을 이용해서 코딩을 해야한다

Student[] st = {new Student("John", 85)
	, new Student("Jane", 92)
	, new Student("Tom", 78)
	, new Student("Emily", 88)
	, new Student("Alex", 95)};
    
for (Student student : st) {
	if (student.getScore() >= 90) {
	System.out.println(student.getName());
	}
}

처음에 Student[ ] st = 으로 시작은 했는데

중괄호({ }) 를 쓰지 않고 시도하다가 실패한 케이스..

클래스명[ ] 배열명 = {new 클래스명(), new 클래스명()};

 

12번

- 싱글톤 패턴의 클래스를 외부에서 접근하기 위해선 메서드는 public static 이어야한다.

class Singleton {
	// 필드값: static - 인스턴스화 없이 호출 가능 & 자원이 하나의 값을 가짐
	private static Singleton instance;

	// 생성자: private
	// - 외부에서 직접적인 인스턴스화 불가
	private Singleton() {};

	// 싱글톤 패턴의 전역 접근성을 제공하는 메서드 정의 (인스턴스화 담당)
	public static Singleton getInstance() {
		// 주로 getInstance 메서드명을 사용
		if (instance == null) {
			// 필드에 초기화 이전 >> 아직 인스턴스화 X
			instance = new Singleton(); // 인스턴스를 진행
		}
		return instance;
		// 1) if 조건문이 true라면 인스턴스화 된 객체를 반환
		// 2) if 조건문이 false라면 기존의 필드에 객체를 반환
		
		// >> 객체는 반드시 단 하나!!
	}
}

 

14번

- 정답은 맞지만 정확한 검증을 위해선 instanceof 를 사용해서 안전한 다운캐스팅 하기

15번

- 메서드 체이닝 비슷한게 아니라 메서드 체이닝 방식을 사용하는 것!

- 가독성을 높이는 효과가 있음

- 일반적으로 내부 클래스를 활용해 메서드체이닝 방식을 사용함!


소감.

이해하고 있다 생각했던 부분들중에도

놓친 부분들이 많았습니다.

꼼꼼히 살펴보면서 복습하는 것이 중요할 것 같아요!