1. 캡슐화에 대하여 설명하시오.
· 캡슐화는 정보 은닉과 유사한 기능으로, 데이터의 종류, 사용 방법 등 중요한 요소를 통일성 있게 분류시켜준다.
· 관련이 있는 데이터를 하나로 묶어 최종 사용자가 내용을 세부적으로 모르더라도 사용이 가능하기 때문에 사용자에게
편의성을 제공한다.
2. 랜덤 숫자 맞추기 게임을 작성하시오.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
class Game {
private int my;
private int com;
public int getMy() {
return my;
}
public void setMy(int my) {
this.my = my;
}
public int getCom() {
return com;
}
public void setCom(int com) {
this.com = com;
}
public void run() {
if (my == com) {
} else if (my >= com) {
System.out.println("DOWN");
} else {
System.out.println("UP");
}
}
}
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
class Gamemain {
public static void main(String[] args) {
Game game = new Game();
int cnt = 10;
int com = (int) (Math.random() * 100) + 1;
while (true) {
Scanner sc = new Scanner(System.in);
System.out.println("1~100 사이의 숫자를 입력하세요.");
System.out.println("남은 기회는 " + cnt + "입니다.");
int my = sc.nextInt();
game.setMy(my);
game.setCom(com);
game.run();
cnt--;
if (my == com) {
System.out.println("정답입니다." + cnt + "회 만에 맞추셨습니다.");
break;
} else if (cnt == 0) {
System.out.println("실패입니다.");
break;
} else
continue;
}
}
}
|
cs |
3. static 변수의 다른 용어 3가지를 설명하시오.
· static 변수는 클래스 변수, 공유 변수, 정적 변수라고도 불린다(변수 앞에 static 붙으면 클래스 변수, 안붙으면 인스턴스 변수)
· 클래스 변수라 불리는 이유는 클래스 내부에 존재해서 부르는 명칭이 아닌 static 키워드가 표기되어 있기 때문이다.
또한, 선언된 클래스의 모든 인스턴스에서 공유가 가능하기 때문에 공유 변수라고도 불린다.
4. JAVA의 메모리 영역을 3가지로 나누고, 해당 영역에 들어가는 정보를 설명하시오.
· JVM을 통해 데이터가 메모리에 저장되며, 메모리는 크게 Method Area, Call Stack, Heap 3가지의 영역으로 나뉜다.
· Method Area 영역에는 JVM이 읽어들인 class와 필드정보, class에 존재하는 Static 정보가 저장되고,
Static 변수는 모든 단 1회만 저장되어 객체 생성없이 접근이 가능하다.(Staitc 변수 공유)
· Call Stack 영역에는 class의 main함수와 참조변수, 지역변수 데이터의 값이 저장되는 공간이며,
메소드가 호출될 때 메모리에 할당되고 실행이 종료되면 메모리가 해제되어 소멸된다.
· Heap 영역에는 객체가 저장되는 영역으로 인스턴스는 기본값으로 초기화 된 후 main 함수에 입력된 정보가 저장된다.
만약 참조하는 변수, 필드가 존재하지 않는다면 JVM Carbage Collector에 의해 해당 객체를 제거한다.(메모리 정리)
5. static 변수의 접근 방법은?
· class 내부 접근: static 변수가 선언된 클래스 내에서는 이름만으로 접근 가능하다. (같은 클래스 내에서 사용)
· class 외부 접근: private 선언되지 않은 한 클래스 외부에서 접근 가능하다. (다른 클래스에서 사용 가능)
· ex)
6. 클래스 변수 활용의 예를 드시오 .
※활용의 예
· 인스턴스를 생성할 때마다 새로 만들지 않고 한 번만 생성하여 공유되어도 무관한 경우 static 변수를 활용한다.
: 값의 공유/참조가 목적인 변수일 때 static을 활용하고, 그 값이 외부에서도 참조하는 값이라면 public으로 선언한다.
· ex)
7. 아래와 같이 클래스 함수에 인스턴스 변수가 접근 할 수 없는 이유는?
· 3개의 메모리 영역 중 Method Area영역에 class AAA와 AAA에 존재하는 static addNum함수가 먼저 메모리에 저장된다.
· 인스턴스 변수은 Heap 영역에서 객체 생성할 때 메모리에 저장되기 때문에 static과 동일한 시점에 메모리 공간 할당이 불가하다.
· 즉, static 함수와 메모리의 생성 시기가 다르기 때문에 인스턴스 변수는 접근 할 수 없으머,
인스턴스 함수도 마찬가지로 static이 먼저 메모리에 저장되기 때문에 당연히 접근이 불가능하다.
· 결론: static 함수에는 변수가 접근이 불가하므로 static 변수만이 접근이 가능하다.
8. 아래의 프로그램을 작성하시오.
· 참조
· 작성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
class Rectangle {
int x, y, width, height;
public Rectangle(int x, int y, int width, int height) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
public int square() {
return width * height;
}
public void show() {
System.out.println("(" + x + "," + y + ")에서 크기가 " + width + "x" + height + "인 사각형");
}
public boolean contains(Rectangle r) {
if ((width >= r.width) && (height >= r.height)
&& ((width - x) * (height - y) > (r.width - r.x) * (r.height - r.y))) {
return true;
} else
return false;
}
}
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
class Rectanglemain {
public static void main(String[] args) {
Rectangle r = new Rectangle(2, 2, 8, 7);
Rectangle s = new Rectangle(5, 5, 6, 6);
Rectangle t = new Rectangle(1, 1, 10, 10);
r.show();
System.out.println("s의 면적은 " + s.square());
if (t.contains(r))
System.out.println("t는 r을 포함합니다.");
if (t.contains(s))
System.out.println("t는 s를 포함합니다.");
}
}
|
cs |
· 출력
'bitcamp > 면접족보' 카테고리의 다른 글
면접족보 20/12/08_String 클래스의 메소드 (0) | 2021.01.24 |
---|---|
면접족보 20/12/07_메소드 오버로딩 (0) | 2021.01.24 |
면접족보 20/12/03_경로설정, 접근제한자 (0) | 2021.01.24 |
면접족보 20/12/02_생성자 (0) | 2021.01.24 |
면접족보 20/12/01_클래스와 객체 개념 (0) | 2021.01.24 |