프로그래밍

[자바 응용 문제] 자바 복습 문제 본문

자바/자바 예제 풀이

[자바 응용 문제] 자바 복습 문제

시케 2023. 5. 26. 00:43
728x90
반응형

day01 ~ day14

2023.05.25.목

 

자바의 기본 단위는?

클래스

 

나중에 꺼내어 쓰기 위해 코드나 정보 등을 저장하는 데이터 공간은 무엇인가?

변수

 

변수의 3요소를 쓰시오

1. 공간(자료형) 2.주소 3.이름

 

 

다음코드의 출력값을 쓰시오

public static void main(String args[]) {
    int i = 10;

    System.out.println("첫번째 : " + (++i * 10));
    System.out.println("두번째 : " + (i-- * 5));
    System.out.println("세번째 : " + (--i * 2));
    System.out.println("네번째 : " + (++i * 4));
}

첫번째 : 110
두번째 : 55
세번째 : 18
네번째 : 40

 

다음코드의 출력값을 쓰시오

public class Test03 {

	public static void main(String[] args) {
		int a = 5;
		int b = 2;
		int c = a / b;
		int d = a % b;

		if (c == 2.5) {
			System.out.println("정답입니다");
		} else {
			System.out.println("오답입니다");
		}
		System.out.println(c);
		System.out.println(d);
	}
}

오답입니다

2

1

다음코드의 출력값을 쓰시오

public class Test03 {

	public static void main(String[] args) {
		int a = 5;
		int b = 2;
		
		int c = (a > b) ? 1 : 0;
		System.out.println(c);
	}
}

1

 

public class Test03 {
	public static void main(String[] args) {
		int a = 10;
		
		if (a == 10) {
			System.out.println("O");
		} else if (a % 2 == 0) {
			System.out.println("O");
		}
	}
	
}

O

 

다음 코드의 빈칸을 채우시오

public class Test03 {

	public static void main(String[] args) {
		
		int a = 4;

		if(__________) {
			System.out.println("10의 배수입니다");
		}
		else if(__________) {
			System.out.println("짝수입니다");
		}
		else
			System.out.println("홀수입니다");
	}

}


 

반복문을 사용하면 좋은 점을 작성하시오

코드 재사용성
오류가 준다>파급효과가 준다

 

다음과 같은 결과가 나오도록 코드를 작성하여라

*********
 *******
  *****
   ***
    *
더보기
public class Test03 {

	public static void main(String[] args) {
		for(int i =0; i<5; i++) {
			for(int j = 0; j<i; j++) { //공백
				System.out.print(" ");
			}
			for(int k = 0; k<9-(2*i); k++) {
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

배열의 3요소를 쓰시오

1)관련된 요소여야 한다
2)데이터들의 자료형이 일치해야 한다
3)데이터들의 개수를 알고있어야 한다(공간의 크기를 알아야 함)

 

배열과 for문의 공통점(연관성)을 서술하시오

둘다 얼마나 공간이 필요한지, 얼마나 반복할지 알아야 한다

 

flag 알고리즘을 활용하여 중복없이 랜덤 숫자 10개를 출력하는 코드를 작성하시오

더보기
public class Test03 {

	public static void main(String[] args) {

		int[] data = new int[3];

		Random rand = new Random();
		int index = 0; // 배열 내에서 현재위치

		while (true) {
			
			if (index == data.length) {
				break; // 배열이 완성
			}
			
			data[index] = rand.nextInt(10) + 1; // 1~10
			boolean flag = false;

			for (int i = 0; i < index; i++) { // 비교해야 할 횟수
				if (data[index] == data[i]) { // 특별한 일 : 중복발생
					flag = true;
				}
			}

			if (flag == true) {
				continue;
			}

			index++;
		}

		for (int v : data) {
			System.out.println(v);
		}
        
	}
}

 

 

함수의 3요소를 쓰시오

1. 인풋 2. 아웃풋 3.기능

 

함수 사용시 장점을 쓰시오

코드 재사용
오류 파급효과 감소
개발시간 단축
비용 감소
이익 증가
유지보수 용이

 

해당 코드는 오류가 발생한다. 디버깅 표를 그려 오류를 해결하라

public class Test03 {
	public static void main(String[] args) {
		int[] arr = new int[5];
		arr[0] = 3;
		arr[1] = 1;
		arr[2] = 2;
		arr[3] = 5;
		arr[4] = 4;
		
		for (int i = 0; i < arr.length; i++) {
	        for (int j = 0; j < arr.length-i; j++) {
	            if (arr[j] > arr[j + 1]) {
	                int tmp = arr[j];
	                arr[j] = arr[j+1];
	                arr[j+1] = tmp;
	            }
	        }
	    }
		
		for (int i = 0; i < arr.length; i++) {
	        System.out.println(arr[i]);
	    }

	}
	
}
더보기
public class Test03 {
	public static void main(String[] args) {
		int[] arr = new int[5];
		arr[0] = 3;
		arr[1] = 1;
		arr[2] = 2;
		arr[3] = 5;
		arr[4] = 4;

		for (int i = 0; i < arr.length -1; i++) {
			for (int j = 0; j < arr.length -i-1; j++) {
				if (arr[j] > arr[j + 1]) {
					int tmp = arr[j];
					arr[j] = arr[j + 1];
					arr[j + 1] = tmp;
				}
			}
		}
        
		for (int i = 0; i < arr.length; i++) {
			System.out.println(arr[i]);
		}
	}
}

객체지향 프로그래밍(OOP)의 특징 4가지를 쓰시오

1. 추상화 2. 상속 3. 캡슐화 4. 다형성

 

다형성은 어떻게 발생하는 것인지 서술하시오

함수에게 (주체) 주어가 생겨서 발생한다

 

생성자의 존재 이유를 작성하시오

클래스의 멤버변수를 초기화하기 위해서이다

 

상속의 장점을 작성하시오

코드의 재사용성, 오류 파급 효과 감소

 

다음 설명에 맞는 용어를 쓰시오

  1. 메서드 재정의
  2. 함수의 중복 정의 허용


오버라이딩

오버로딩

 

다음 코드가 오버로딩과 오버라이딩 중에 어느것에 해당하는지 쓰시오

int a = 7;
System.out.println();
System.out.println(a);
public String toString() {
	String msg=num+"번 "+name+" "+price+"원 ";
	msg+="["+cnt+"]";
	return msg;
}

 

오버로딩
오버라이딩

 

캡슐화를 하는 이유를 작성하시오

기본 연산으로 데이터를 변경시에 로그에 남지 않으므로 위험하기 때문에 로그로 기록되는 메서드로 접근하여 기록을 남기는 것이다

해당 클래스 내부에서만 접근 가능토록하여 외부의 접근을 불가하도록 한다

 

객체화 하는 것이 목표가 아닌 설계 하는 것이 목표였던 "클래스"를 무엇이라 하는가?

클래스들의 기준이 되는 것이 목표
>>> 추상클래스

 

추상 클래스의 오버라이딩 강제를 해결하는 방식 2가지를 작성하시오.

1. 구현 강제 2. 상속 받은 클래스도 abstract

 

다음 빈칸을 채우시오

세상 모든 자식 클래스는 생성자의 첫줄에 _____가 생략되어 있다
super()

 

프레임워크를 사용하면 좋은점을 작성하시오

코드의 기준을 부여하기 때문에 개발자들의 평균 실력이 상향된다

 


배열과 배열리스트의 차이점을 서술하시오

자료형이 달라도 된다(강제성 부여 가능)
arrayList 는 toString이 오버라이딩 되어 있다
길이가 정해져 있지 않다
다양한 기능 메서드 기본 제공

 

다음과 같은 요구사항이 있다

알맞은 컬렉션 프레임워크를 선택하여라

  1. 1~10 사이의 10개의 랜덤 정수를 생성하여 출력하여라
  2. 1~10 사이의 10개의 랜덤 정수를 생성하여 중복을 제거한 뒤 출력하여라

배열리스트

집합

예외처리하면 좋은 점 2가지를 작성하시오

비정상적 종료를 막을 수 있다
예외가 발생되면서 발생될 수 있는 피해들을 최소화할 수 있다

 

스레드는 생명주기의 순서 4단계를 작성하시오

____ ---> ____  ---> ____  ---> ____ 

생성 ---> 대기 ---> 수행 ---> 데드
생성 후 즉시 대기 상태 됨(수행 직전까지)

 

다음 코드를 실행했을때 발생하는 일을 서술하시오

FileOutputStream fos = new FileOutputStream("D:\\JHyun\\resource\\test.txt");
fos.write(1);
fos.flush();
fos.close();

경로 "D:\\JHyun\\resource\\"에 "test.txt" 파일이 없으면 만든다. 해당 파일이 존재할 경우 숫자 1을 덮어쓴다.

 

 

O,X 문제

  1. 배열의 인덱스는 1부터 시작한다 (X)
  2. 함수의 run 버튼을 누르면 main이 실행한다 (O)
  3. 함수끼리 메모리 공간을 공유하지 않는다 (O)
  4. 후위증감>>함수호출>>전위증감 순으로 실행된다 (X)
  5. 함수 호출시에는 주소를 보낸다 (X)
  6. 함수의 인풋과 아웃풋은 여러 개를 가질 수 있다 (O)
  7. final 키워드를 붙이면 수정이 불가해진다 (O)
  8.  생성자는 new 연산자와 함께 사용한다 (O)
  9. 생성자를 사용자가 제작했을때 기본 생성자가 제공된다 (X)
  10. 생성자 아웃풋은 무조건 객체이기 떄문에 생략된다 (O)
  11. 클래스 멤버변수는 대입함으로서 초기화한다 (O)
  12. 자바는 일반적으로 접근제한자가 public 설정으로 되어있다 (O)
  13. 추상클래스는 인스턴스화가 불가하다 (O)
  14. 추상클래스는 생성자를 가질 수있다 (O)
  15. 배열리스트는 한가지 자료형만 넣도록 강제할 수 있다 (O)
  16. set은 new 연산을 할 수 없다 (O)
  17. 집합은 인덱스가 0으로 시작한다 (X)
  18. 스레드는 독립적으로 실행된다 (O)

 

 

 

 

 

 

 

 

 

 

728x90
반응형
Comments