[면접예상] 20230626

neul·2023년 6월 26일
0

면접예상

목록 보기
13/36
post-thumbnail

🌵아래의 2차원 배열에 대하여 메모리를 그리시오.

int[][] arr = {
{11},
{22, 33},
{44, 55, 66}
};

🌵enhenced for 문에 대하여 설명하시오.

  • 자바에서 배열이나 컬렉션을 순회하는 데에 간편하게 사용할 수 있는 반복문
  • 기존의 for 문과 비교하면 문법적으로 간결하고 가독성이 좋아진다.
  • 배열 또는 컬렉션을 순회할 때 각 요소를 차례대로 가져오는 것

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

🚩 실습문제 5

2차원 배열의 행과 열의 크기를 사용자에게 직접 입력받되, 1~10사이 숫자가 아니면
“반드시 1~10 사이의 정수를 입력해야 합니다.” 출력 후 다시 정수를 받게 하세요.
크기가 정해진 이차원 배열 안에는 영어 대문자가 랜덤으로 들어가게 한 뒤 출력하세요.
(char형은 숫자를 더해서 문자를 표현할 수 있고 65는 A를 나타냄, 알파벳은 총 26글자)

실행 화면
행 크기 : 5
열 크기 : 4
T P M B
U I H S
Q M B H
H B I X
G F X I

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

public class Java_05 {
	public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Random random = new Random();

        int rows;
        int columns;

        // 행 크기 입력 받기
        while (true) {
            System.out.print("행 크기: ");
            rows = scanner.nextInt();
            
            if (rows >= 1 && rows <= 10) {
                break; }
             else {
                System.out.println("반드시 1~10 사이의 정수를 입력해야 합니다."); }
        }

        // 열 크기 입력 받기
        while (true) {
            System.out.print("열 크기: ");
            columns = scanner.nextInt();
            if (columns >= 1 && columns <= 10) {
                break; }
             else {
                System.out.println("반드시 1~10 사이의 정수를 입력해야 합니다."); }
        }

        // 이차원 배열 생성 및 랜덤 값 할당
        char[][] arr = new char[rows][columns];
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < columns; j++) {
                arr[i][j] = (char) (random.nextInt(26) + 65); // 65부터 90까지의 랜덤 값으로 대문자 할당
            }
        }

        // 배열 출력
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < columns; j++) {
                System.out.print(arr[i][j] + " ");
            }
            System.out.println();
        }
    }
}

🌵아래 문제를 푸시오.

🚩 실습문제 9
문제 ( 메서드명 : public void practice9( ) { } )
String 2차원 배열 6행 6열을 만들고 행의 맨 위와 제일 앞 열은 각 인덱스를 저장하세요.
그리고 사용자에게 행과 열을 입력 받아 해당 좌표의 값을 'X'로 변환해 2차원 배열을 출력하세요.

https://velog.io/@layssingcar/2%EC%B0%A8%EC%9B%90-%EB%B0%B0%EC%97%B4-%EC%8B%A4%EC%8A%B5%EB%AC%B8%EC%A0%9C
위의 주소 실습문제 9 번 참고
실행 화면

import java.util.Scanner;

public class Java_06 {
    public static void main(String[] args) {
        Example example = new Example();
        example.practice9();
    }

    public void practice9() {
        String[][] array = new String[6][6];

        // 배열 초기화
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                if (i == 0) {
                    array[i][j] = String.valueOf(j);
                } else if (j == 0) {
                    array[i][j] = String.valueOf(i);
                } else {
                    array[i][j] = "O";
                }
            }
        }

        // 배열 출력
        printArray(array);

        // 사용자 입력 받아서 좌표 값 변경
        Scanner scanner = new Scanner(System.in);
        System.out.print("행 입력: ");
        int row = scanner.nextInt();
        System.out.print("열 입력: ");
        int col = scanner.nextInt();

        if (row >= 0 && row < array.length && col >= 0 && col < array[row].length) {
            array[row][col] = "X";
        } else {
            System.out.println("유효하지 않은 좌표입니다.");
        }

        // 변경된 배열 출력
        printArray(array);
    }

    private void printArray(String[][] array) {
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                System.out.print(array[i][j] + " ");
            }
            System.out.println();
        }
        System.out.println();
    }
}

🌵아래 문제를 푸시오.

class TV{
private int size;
public TV(int size) { this.size = size; }
public int getSize() { return size; }
}
[1번] 다음 main() 메소드와 실행 결과를 참고하여
TV를 상속받은 ColorTV 클래스를 작성하라.

public static void main(String[] args) {
ColorTV myTV = new ColorTV(32, 1024);
myTV.printProperty();
}
32인치 1024컬러

class TV{
   private int size;
   public TV(int size) { this.size = size; }
   public int getSize() { return size; }
}

class ColorTV extends TV {
	   private int resolution;
	   
	   public ColorTV(int size, int resolution) {
	      super(size);
	      this.resolution = resolution;
	   }
	   
	   public void printProperty() {
	      System.out.println("size: " + getSize() + "인치");
	      System.out.println("해상도 : " + resolution + " 컬러");
	   }
	}
    public class Java_07_TV {

	public static void main(String[] args) {
		ColorTV myTV = new ColorTV(32, 1024);
		myTV.printProperty();
        	}

}

🌵아래 문제를 푸시오.

[2번] 다음 main() 메소드와 실행 결과를 참고하여 ColorTV를 상속받는
IPTV 클래스를 작성하라.

public static void main(String[] args) {
IPTV iptv = new IPTV("192.1.1.2", 32, 2048); //"192.1.1.2" 주소에 32인치, 2048컬러
iptv.printProperty();
}
나의 IPTV는 192.1.1.2 주소의 32인치 2048컬러

class TV{
   private int size;
   public TV(int size) { this.size = size; }
   public int getSize() { return size; }
}
class IPTV extends ColorTV {
	   private String ipTv;
	   
	   public IPTV(String ipTv, int size, int resolution) {
	      super(size, resolution);
	      this.ipTv = ipTv;
	   }
	   
	   public void printProperty() {
	      super.printProperty();
	      System.out.println("IP TV: " + ipTv);
	   }
	}
public class Java_07_TV {

	public static void main(String[] args) {
    // 2048컬러 
		  IPTV iptv = new IPTV("192.1.1.2", 32, 2048);
	      iptv.printProperty();
	}

}

🌵has-a와 is-a의 차이는?

"Has-a" 관계

  • "Has-a" 관계는 한 객체가 다른 객체를 포함 또는 가지고 있는 관계를 나타낸다.

  • 이 관계는 객체 간에 구성(composition) 또는 집합(aggregation)으로 표현될 수 있다.

    예를 들어, 자동차 클래스(Car)가 엔진 클래스(Engine)를 가지고 있는 경우, 자동차는 엔진을 "가지고 있다"고 할 수 있고, 이는 "Car has-an Engine" 관계이다.

  • "Has-a" 관계는 한 객체가 다른 객체를 포함하는 경우를 나타내며, 객체 간에 구성 관계가 있는 경우 유용하게 사용된다.

"Is-a" 관계

  • "Is-a" 관계는 상속을 통해 표현되며, 한 클래스가 다른 클래스의 하위 클래스 또는 파생 클래스인 경우를 나타낸다.

  • 이 관계는 일반화(generalization)로 표현될 수 있다.

    예를 들어, 동물 클래스(Animal)가 포유류 클래스(Mammal)를 상속받는 경우, 동물은 포유류의 "일종"이라고 할 수 있고, 이는 "Animal is-a Mammal" 관계입니다.

  • "Is-a" 관계는 객체들 간의 계층 구조를 표현하고 다형성을 지원하기 위해 사용된다.

  • 상속을 통해 부모 클래스의 속성과 동작을 하위 클래스가 상속받을 수 있게 되며, "is-a" 관계를 이용하여 코드의 재사용성과 확장성을 높일 수 있다.

🌵다형성을 예습하시오.

  • 객체 지향 프로그래밍에서 폴리멀티즘은 다형성이라고도 불리며, 다양한 형태를 가진 객체가 동일한 인터페이스를 사용하여 다양한 방식으로 동작할 수 있는 능력을 의미한다.
  • 폴리멀티즘은 상속과 인터페이스를 기반으로 작동한다.
  • 상속을 통해 클래스들은 다른 클래스의 속성과 동작을 상속받을 수 있으며, 인터페이스는 클래스가 구현해야 하는 메서드를 정의한다.

유연성

  • 다양한 객체 유형을 사용하여 작업할 수 있기 때문에 코드의 유연성이 증가한다.
  • 객체의 타입을 알 필요 없이 동일한 인터페이스를 통해 작업할 수 있다.

유지 보수 용이성

  • 새로운 유형의 객체를 추가하거나 기존 객체를 변경할 때 기존 코드의 수정이 필요없다.
  • 이는 코드의 재사용성을 높이고 유지 보수 비용을 감소시킨다.

확장성

  • 새로운 유형의 객체를 추가하는 것이 비교적 쉽다.
  • 기존 코드를 수정할 필요 없이 새로운 객체를 추가하고 인터페이스를 구현하기만 하면 된다.

가독성

  • 폴리멀티즘을 적절하게 사용하면 코드의 가독성이 향상될 수 있다.
  • 동일한 인터페이스를 사용하기 때문에 코드가 간결해지고 이해하기 쉬워진다.

폴리멀티즘은 객체 지향 프로그래밍에서 중요한 개념이며, 객체 간의 유연하고 확장 가능한 상호작용을 가능하게 한다.

profile
🍙

0개의 댓글

관련 채용 정보