cs지식 정리하기/면접 대비

[3일차] 기술 면접 준비

젤리의it 2024. 3. 13. 22:41

1. JVM의 스택과 힙메모리 영역에 대해 아는 만큼 설명해주실 수 있을까요?

스택메모리

- 스택 메모리는 각 스레드마다 별도로 할당됩니다.

- 메서드 호출 시 호출 스택 프레임이 생성되며, 이 프레임에는 지역 변수와 메서드 호출 정보가 저장됩니다

.- 후입선출(LIFO) 구조로 동작하며, 메서드 실행이 완료되면 해당 스택 프레임이 제거됩니다.

- 주로 메서드 호출과 관련된 데이터를 저장하며 상대적으로 작은 크기를 가집니다.

- 메모리 관리는 자동으로 이루어지며 개발자의 개입이 적습니다.

 

힙 메모리 (Heap Memory):

-힙 메모리는 모든 스레드에서 공유되며, 동적으로 할당되는 객체와 배열을 저장하는 데 사용됩니다.

- 객체는 힙에서 생성되며, 스택 메모리에는 객체의 참조(Reference)가 저장됩니다.

- 가변 크기를 가지며, 가비지 컬렉션을 통해 더 이상 사용되지 않는 객체를 정리하고 메모리를 회수합니다.

- 대규모 데이터 구조를 저장하고, 동적 메모리 할당 및 해제가 가능하며 유연한 메모리 관리를 제공합니다.

 

2. 클래스와 인스턴스의 차이에 대해 설명해주실 수 있을까요?

클래스는 객체를 만들어 내기 위한 설계도 혹은 틀이라고 할 수 있으며, 연관되어 있는 변수와 메서드의 집합입니다. 인스턴스는 클래스를 바탕으로 구현된 구체적인 실체이며, 하나의 클래스를 통해서 다양한 인스턴스들을 만들 수 있습니다. 실체화된 인스턴스는 메모리에 할당됩니다. 다양한 인스턴스가 만들어진다한들, 서로 다른 행동을 할 수 있게되니 재활용성을 더욱 높일 수 있습니다.

 

3. Garbage Collector의 역할, 원리, 알고리즘에 대해 아는 만큼 설명해주실 수 있을까요?

Garbage Collector(가비지 컬렉터)는 프로그래밍 언어의 런타임 환경에서 동적으로 할당된 메모리 관리를 담당하는 중요한 컴포넌트입니다.

 

역할: Garbage Collector의 주요 역할은 더 이상 사용되지 않는 메모리 자원, 즉 "가비지" 또는 "쓰레기 객체"를 탐지하고 회수하는 것입니다.가비지 객체는 더 이상 프로그램에서 참조되지 않는 객체로, 이러한 객체를 회수함으로써 메모리 누수를 방지하고 메모리 사용을 최적화합니다.

 

원리: Garbage Collector는 주기적으로 또는 필요할 때 실행되며, 모든 실행 중인 스레드를 일시 중지하고 메모리 검사 및 정리를 수행합니다.GC는 루트(root) 객체를 식별하고, 그 루트 객체로부터 도달 가능한(reachable) 객체들을 찾습니다.도달 불가능한(unreachable) 객체는 가비지로 표시되고, 이러한 객체의 메모리는 해제됩니다.객체 간의 참조 체이닝을 통해 GC는 참조되지 않는 객체를 식별하고 회수합니다.

 

알고리즘: Garbage Collector에는 여러 가지 알고리즘과 방법이 있으며, 언어 및 런타임 환경에 따라 다를 수 있습니다.대표적인 GC 알고리즘에는 "참조 계수(Reference Counting)" 기반 GC, "가비지 컬렉션 기반 GC" 등이 있습니다.대다수 현대적인 언어 및 런타임은 "세대 기반 가비지 컬렉션(Generational Garbage Collection)" 알고리즘을 사용합니다.세대 기반 GC는 객체를 "새로운 세대(Young Generation)"와 "영구 세대(Old Generation)"로 나누어 관리하며, 새로운 객체가 빈번하게 회수되는 반면, 오래된 객체는 덜 자주 회수됩니다.Garbage Collector의 사용은 프로그래머가 명시적으로 메모리 할당 및 해제를 관리하는 번거로움을 줄이며, 메모리 누수와 다른 메모리 관련 오류를 방지합니다. 그러나 GC가 동작할 때 일시 중지가 발생하며, 최적의 성능을 얻기 위해 GC 튜닝 및 메모리 관리 전략을 고려해야 합니다

 

'cs지식 정리하기 > 면접 대비' 카테고리의 다른 글

[6일차] 기술 면접 준비  (0) 2024.03.25
[5일차] 기술 면접 준비  (0) 2024.03.20
[4일차] 기술 면접 준비  (0) 2024.03.19
[2일차] 기술 면접 준비  (0) 2024.03.12
[1일차] 기술 면접 준비  (0) 2024.03.11