JVM이 무엇인가요?
자바를 실행하기 위한 가상 머신입니다.
Java 어플리케이션에서 JVM은 자바 바이트코드를 OS에 특화된 코드로 변환하여 실행하는 역할을 담당합니다.
JVM을 통해 자바 코드는 OS에 종속적이지 않게되며 OS가 달라지더라고 프로그램의 변경 없이 실행이 가능합니다.
JAVA가 어떻게 실행되는지 설명해보세요
우선 자바 소스코드는 컴파일러에 의해 JVM이 이해할 수 있는 수준의 바이트 코드로 변환됩니다.
이후 JVM의 Class Loader에 의해 바이트 코드가 자바 메모리 영역에 올라가게 되고, 실행 엔진에 의해 바이트 코드가 실행됩니다.
JAVA 메모리 구조에 대해서 설명해보세요
자바 메모리 구조는 크게 5가지 영역으로 구분됩니다.
우선 스레드 별로 PC 레지스터, JVM Stack, Native Method Stack 이 있고, 스레드 공통으로는 Method Area, Heap Area가 있습니다. PC 레지스터는 현재 실행중인 JVM 명령어가 들어가 있고, JVM Stack에는 함수의 매개변수, 지역변수, 리턴정보들이 있고, Native Method Stack에는 자바 언어 외에 C나 C++ 같은 코드들을 수행하기 위한 정보가 들어 있습니다.
Method Area는 클래스 별로 멤버 변수, 전역 변수, 정적 변수, 메서드 정보들이 있고, Heap Area는 런타임 중 생성되는 객체 들이 동적으로 할당되는 영역입니다.
가비지 컬렉션에 대해서 설명해보세요
G.C는 JVM의 메모리를 관리해주는 모듈입니다.
자바 Heap 메모리를 재활용 하기 위해, 현재 참조되지 않는 객체들을 메모리에서 제거하는 역할을 합니. 개발자들이 직접 메모리 정를 하지 않아도 되어, 개발 속도를 향상 시켜주는 장점이 있지만, Mark and Swap을 하는 과정에서 참조 되지 않는 객체들을 찾는 과정이 있는데, 이때 스레드가 잠시 중단되기 때문에, 성능이 떨어진다는 단점이 있습니다.
객체지향 프로그래밍에 대해서 설명해보세요
객체지향 프로그래밍이란 현실 세계의 사물같은 객체들을 만들고, 객체들에게 적절한 책임을 부여하여, 객체들끼리 메세지를 주고 받으며 협력할 수 있도록 설계하는 프로그래밍 기법입니다.
추상클래스와 인터페이스의 차이점에 대해서 설명해보세요
추상클래스는 abstract 지시자로 정의되며 추상 메소드가 하나 이상 존재합니다. 인터페이스는 interface지시자로 정의되며모든 메소드가 추상 메소드로 정의됩니다. 추상 메소드와 인터페이스는 그 존재의 목적에 차이가 있습니다. 추상 메서드는
부모 클래스의 기능을 상속 받아 재활용하고 확장시키는데 의미가 있고, 인터페이스는 구현을 할 때 해당 기능을 강제하기 위함에 의미가 있습니다.
'기술면접' 카테고리의 다른 글
[신입 개발자 기술면접 질문] 데이터 베이스 (0) | 2024.01.13 |
---|---|
[신입 개발자 기술면접 질문] 네트워크 (0) | 2024.01.11 |
[신입 개발자 기술면접 질문] 운영체제 (0) | 2024.01.06 |
[신입 개발자 기술면접 질문] Spring (0) | 2024.01.04 |