본문 바로가기

Solution/면접

[개발자 면접] JAVA언어의 특징과 가비지컬렉션에 대하여

728x90

Q. 자바언어가 가진 특징에 대해서 설명

1. 플래폼 독립성 : 하드웨어, 운영체제에 종속되지 않은 독립적인 바이트 코드로 컴파일된다.

2. 객체지향언어 : 자바는 캡슐화, 상속, 다형성을 지원하여 인간의 사고와 가깝게 표현한다.

3. 클래스로 캡슐화 한다.

4. 소스와 클래스 파일이 있다.

5. 실행코드 배포 : jar파일 형태로 압축하여 배포하거나 실행 할 수 있다.

6. 멀티스레드 

7. 가비지커렉션 사용 : 메모리를 할당받지만 반환받는 기능이 없어 가비지 컬렉션에 의해 자동으로 회수된다.

8. 실시간 응용시스템에 부적합하다. 예측할 수 없는 시점에 가비지 컬렉션이 실행되어 프로그램이 일시적으로 중단된다.

9. 실행 속도를 개선하기 위해 JIT 컴파일러가 사용된다.


Q. 가비지 컬렉션에 대해서 설명

자바에는 new 연산자는 있지만 delete연산자가 없다. new로 할당받은 후 사용하지 않게 된 객체 메모리는 가비지라고 불리며 JVM의 가비지 컬렉션에 의해 적절한 시점에 자동으로 수집되어 가용 메모리로 전 한해 준다. 데몬 스레드인 가비지 컬렉션 스레드에 의해 가비지 컬렉션이 불려서 처리가 된다. 가비지 컬렉션이 프래그램의 실행을 멈추고 실행되기 때문에 자바는 실시간 처리 응용 프로그램에는 부적합하다.

 

- 정리되지 않은 메모리, 유효하지 않는 메모리 주소인 가비지를 정리해주는 프로그램

- Heap 메모리를 재활용하기 위하여 참조되지 않는 객체를 해제시켜 가용한 공간을 만드는 작업

- 프로그래머가 직접 메모리를 정리하지 않아도 되어 개발 속도가 향상된다.

- 메모리를 언제 되 찾을지 결정하기 위한 오버헤드가 발생한다는 문제가 있다.


Q. 자바 객체지향에 대해서 설명, 객체 지향의 목적은?

자바는 객체지향을 위해 캡슐화, 상속, 다형성을 지원한다. 

 

캡슐화

내부를 보호할 수 없게 만드는 객체지향의 특징이다. private를 통해 접근을 막는다.

 

상속

자식 클래스가 부모 클래스의 속성을 물려받고 기능을 추가하여 확장하는 개념이다. 

상속은 슈퍼클래스의 필드와 메서드를 물려받아 코드를 재사용함으로써 코드 작성에 드는 시간과 비용을 줄인다.

자식 객체는 자식 클래스와 부모 클래스에 만들어진 모든 멤버를 가지고 생성된다.

상속을 통해 클래스의 중복작성을 줄이고, 계층적으로 분리하여 클래스 관리를 용이하게 하고 소프트웨어 생산성을 향상한다.

 

다형성

같은 이름의 메서드나 클래스가 객체에 따라 다르게 동작하는 것을 말한다. 슈퍼클래스에 구현된 메서드를 서브클래스에서 동일한 이름으로 자신의 특징에 맞게 다시 구현하는 메서드 오버 라이딩이 다형성을 구현하는 것이다.

728x90