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

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

낙산암 2020. 12. 6. 06:54

1.아래가 의도하지 않은 결과를 나타내는 이유를 설명하시오.

char ch = '';

System.out.println(ch + '\n')

 

 

'가' 의 유니코드 값과 '\n'의 유니코드 값이 int형식으로 연산되어 int 값이 출력된다.

의도를 표현하기 위해서는 '\n'을 "\n" 로 바꿔줘야한다.

 

**ch + "\n"가 되는 이유**

 

ch 는 char타입, \n 은 String타입이기 때문에 ch가 String 타입으로 변환된 후에 연산이 되어 문자열로 출력되는 것이다.

 

2.변수의 scope ?

 

Scope: 영역, 범위

- 변수는 변수가 선언된 시점부터 그 중괄호 블럭 안에서 사용 가능하다.

- 클래스 밖에서 변수 선언은 불가능함

- 같은 영역 내에서 동일 이름의 변수 선언 불가

3.지역변수?

인스턴스 변수(instance variable): 함수 밖, 클래스 안에 선언된 변수(범위는 클래스 전체)

지역 변수(local variable): 함수 안에서 선언된 변수(범위는 선언 된 함수 내)

4.펙토리얼을 구하는 재귀 함수를 만드시오.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Hello {
    public static void main(String[] args) {
        System.out.println("3 factorial: " + factorial(3));
        System.out.println("3 factorial: " + factorial(12));
    }
 
 
    public static int factorial(int n) {
        if(n==1)  //재귀함수에는 반드시 빠져나가는 조건이 있다. 
            return 1;  //이거 없으면 안끝남 무한루프
        else
            return n * factorial (n-1);
    }
}
 
 

이 문장을 코드로 그대로 옮기도록 돕는 것이 재귀 메소드의 정의

사실 재귀함수를 사용해서 풀어야 할 문제는 재귀함수 사용 없이 풀어낼 수 있다.

5.클래스의 구성요소는 무엇인가?

 

클래스의 구성 : 변수(데이터)와 함수(기능: 변수 컨트롤)

클래스 의미

 

1) 클래스명.java (반드시 클래스명 이어야 한다.) 코딩 상에서의 클래스

2) 클래스명.class (컴파일 된 파일)

 

6.원의 넓이는 구하는 프로그램을 아래와 같이 작성하시오.

-원클래스를 만들것

-메인 메소드를 가진 다른 클래스에서 원 객체를 생성할것

 

public class Circle {

   double radius;

   public double getRadius() {

   return radius;

}

public void setRadius(double radius) {

   this.radius = radius;

}

//getter, setter함수는 기본적으로 생성하자.

 

public double circleArea(double radius) { //원의 넓이를 구하는 함수

      return radius * radius * Math.PI; //결과값을 호출한 곳으로 리턴함

   }

}

 

public class CircleMain {

public static void main(String[] args) {

     Circle circle = new Circle();

     circle.setRadius(3.5);

 

     double area;

     area = circle.circleArea();

     System.out.println("원의 넓이는: "+ area);

  }

}

 

7.객체란 무엇인가?

 

객체(instance)는 '클래스'라는 틀을 통해 만들어낸 실체를 말한다.

객체를 생성한다는 것은 해당 클래스의 .class 파일을 메모리에 올린다는 것을 의미한다.

8. 아래의 클래스에 대하여, 메모리 그림을 그리시오.

Rectangle rec = new Rectangle();

 

public class Rectangle {

int height;

int width;

 

public int getHeight() {

return height;

}

 

public void setHeight(int height) {

this.height = height;

}

 

public int getWidth() {

return width;

}

 

public void setWidth(int width) {

this.width = width;

}

 

public int getArea() {

return width * height;

}

 

}

 

rec 사각형의 주소

 

9.클래스와 객체의 차이는 무엇인가?

- 클래스 : .class

- 객체: .class를 메모리에 올린것

 

클래스는 구현 하려는 기능을 모아둔 설계도 라고 볼 수 있다.

객체는 클래스의 기능을 활용하기 위해 메모리를 할당해 실제 사용하는 것을 의미한다.

 

구현하고자 하는 중복되는 기능이 2개 이상일 때 그것을 하나의 클래스로 정의하고, 그 클래스를 통해 객체를 생성(메모리에 할당)한다.

10.아래의 프로그램을 작성하시오.

-1 부터 num 까지 합을 구하는 class 를 작성하도록 하시오.

 

public class SumMain {

    public static void main(String[] args) {

 

        GetSum getsum = new GetSum(); //1)객체 생성

 

         int num; //2)num 변수 선언

         num = 50;

 

         getsum.setNum(num); //3)getsum 객체의 setNum함수 호출, num50 저장

         getsum.sum(); //4)getsum객체의 sum함수 호출, 1-50까지 합 구함

      }

}

 

1) 합을 구할 수 있는 GetSum클래스를 통해 getsum 객체를 생성

2) num 까지의 합을 구해야 하므로 num값이 변할 수 있도록 num 변수를 선언

예를 들어서 50까지의 합을 구하기 위해 num변수에 50을 대입

3) getsum객체의 setNum함수를 이용해 num(여기서는 50)값 저장

4) getsum객체의 sum함수를 이용해 1부터 50(num)까지의 값을 구함

11.아래의 클래스를 작성하시오.

StraPrint strPrint = new StarPrint();

 

strPrint.printTriangle(3);

System.out.println();

strPrint.printReverseTriangle(3);

===============================

*

**

***

 

-1 부터 num 까지 합을 구하는 class 를 작성하도록 하시오.

 

11.아래의 클래스를 작성하시오.

StraPrint strPrint = new StarPrint();

 

strPrint.printTriangle(3);

System.out.println();

strPrint.printReverseTriangle(3);

===============================

*

**

***

 

***

**

*

 

public class StarPrint {

 

     public void printTriangle(int num) {

         for(int i=1; i<=num; i++) {

             for(int j=1; j<=i; j++) {

                 System.out.print("*");

      }

        System.out.println();

     }

}

 

public void printReverseTriangle(int num) {

        for(int i=1; i<=num; i++) {

             for(int j=num; j>=i; j--) {

                 System.out.print("*");

       }

      System.out.println();

    }

  }

}

 

 

12.아래의 프로그래밍을 작성하시오.

 

Gugudan gugudan = new Gugudan();

gugudan.printGugu(10); //1단부터 10단까지 출력

gugudan.printGugu(20); //1단부터 20단까지 출력

13. 아래의 BankAccount 객체에 대하여 그림을 그리시오.

BankAccount ref1 = new BankAccount();

BankAccount ref2 = ref1;

 

주소 관계

 

둘은 다른 객체 이지만 같은 주소를 가리키고 있기 때문에, 각각의 객체에서 함수를 실행할 때 같은 주소에 있는 메모리 공간 안에서 값의 변동이 일어난다.