IT 면접족보/자바 면접족보

자바 면접 족보 정리(13일 차 )

낙산암 2020. 12. 11. 17:28

1.상속을 UML로 표기해 보세요.

상속 관계도

 

2.부모클래스와 자식클래스의 다른 용어들은?

부모클래스는 상위클래스 또는 수퍼클래스 라고 하고

자식클래스는 하위클래스 또는 서브클래스 라고 한다.

 

3.super 키워드와 this 키워드의 차이는 무엇인가요?

super 키워드는 부모 클래스의 생성자 호출이고

this 클래스는 자신의 생성자 호출이다.

 

4.단일 상속과 다중상속 이란?

단일 상속이란 한 개의 클래스만 부모클래스로 받을 수 있는 것이고 다중 상속은 부모클래스로 여러 개의 클래스를 상속받는 것이다. C++에서는 다중상속을 허용했지만 java에서는 다중상속은 불가능하다.

 

5.다음 코드와 같이 과목과 점수가 짝을 이루도록 2개의 배열을 작성하라.

String course[] = {"Java", "C++", "HTML5", "컴퓨터구조", "안드로이드"};
int score[]  = {95, 88, 76, 62, 55};
그리고 다음 예시와 같이 과목 이름을 입력받아 점수를 출력하는 프로그램을 작성하라. "그만"을 입력받으면 종료한다. (Java는 인덱스 0에 있으므로 score[0]을 출력)

과목 이름 >> Jaba
없는 과목입니다.
과목 이름 >> Java
Java의 점수는 95
과목 이름 >> 안드로이드
안드로이드의 점수는 55
과목 이름 >> 그만
[Hint] 문자열을 비교하기 위해서는 String 클래스의 equals()메소드를 이용해야 한다.

String name;
if(course[i].equals(name)) {
    int n = score[i];
    ...
}
public class Main {

	public static void main(String[] args) {
		Grade grade = new Grade();
		
		String course[] = {"Java", "C++", "HTML5", "컴퓨터구조", "안드로이드"};
		int score[]  = {95, 88, 76, 62, 55};
		
		grade.setCourse(course);
		grade.setScore(score);
		
		grade.run();
	}

}

class Grade {
	private String course[];
	private int score[];
	
	public void setCourse(String[] course) {
		this.course = course;
	}
	
	public void setScore(int[] score) {
		this.score = score;
	}
	
	public void printScore(String course) {
		for(int i = 0; i < this.course.length; i++) {
			if(course.equals(this.course[i])) {
				System.out.println(score[i]);
				return;
			}
		}
		System.out.println("없는 과목입니다.");
	}
	
	public void run() {
		Scanner scanner = new Scanner(System.in);
		while(true) {
			if(course == null || score == null) {
				System.out.println("과목과 성적 데이터가 없습니다.");
				return;
			}
			System.out.print("과목 이름 >> ");
			String temp = scanner.next();
			if(temp.equals("그만")) {
				scanner.close();
				return;
			}
			printScore(temp);
		}
			
	}
}

6.배열을 이용하여 간단한 극장 예약 시스템을 작성하여 보자.

아주 작은 극장이라서 좌석이 10개 밖에 되지 않는다.
사용자가 예약을 하려고 하면 먼저 좌석 배치표를 보여준다.
즉, 예약이 끝난 좌석은 1로, 예약이 되지 않은 좌석은 0으로 나타낸다.

 

출력
--------------------
0 1 2 3 4 5 6 7 8 9
--------------------
0 0 0 0 0 0 0 0 0 0
몇번째 좌석을 예약 하시겠습니까? 2
--------------------
0 1 2 3 4 5 6 7 8 9
--------------------
0 0 1 0 0 0 0 0 0 0
public class Main {

	public static void main(String[] args) {
		MovieTheater mv1 = new MovieTheater();
		mv1.startReserve();

		MovieTheater mv2 = new MovieTheater();
		mv2.startReserve();
	}

}

class MovieTheater {
	private static int[] seat= new int[10];
	
	public void showSeat() {
		System.out.println("-------------------");
		System.out.println("0 1 2 3 4 5 6 7 8 9");
		System.out.println("-------------------");
		for(int i = 0; i < seat.length; i++) {
			System.out.print(seat[i] + " ");
		}
		System.out.println();
	}
	
	private void reserve(int num) {
		if(seat[num] == 1) {
			System.out.println("이미 예약된 좌석입니다.");
			return;
		}
		seat[num] = 1;
	}
	
	public void startReserve() {
		Scanner scanner = new Scanner(System.in);
		showSeat();
		System.out.print("몇번째 좌석을 예약 하시겠습니까? ");
		reserve(scanner.nextInt());
		showSeat();
	}
}