클래스 로더(Class Loader)가 JVM에서 어떤 역할을 하는지 설명하고, 클래스 로딩 과정에서 발생할 수 있는 문제와 이를 해결하는 방법에 대해 논의하세요.
• 클래스 로더의 부모-자식 관계와 위임 모델(Delegation Model)에 대해 설명하세요.
• 클래스 로더 충돌(Class Loader Conflict)이 발생하는 이유와 이를 해결하기 위한 전략을 논의하세요.
• JVM에서 동적으로 클래스를 로드하는 방법과 이를 활용한 사례를 설명하세요.
• 클래스 로더를 커스터마이징(Customizing)해야 하는 경우와 그 구현 방법에 대해 논의하세요.
• 클래스 로더와 관련된 보안 이슈와 이를 해결하기 위한 방법에 대해 설명하세요.
GC(Garbage Collection)가 JVM에서 어떻게 작동하는지 설명하고, GC 튜닝을 통해 성능을 최적화하는 방법에 대해 이야기해보세요.
• GC의 종류(예: Serial, Parallel, G1, ZGC)와 각각의 특징에 대해 설명하세요.
• GC가 힙 메모리에서 객체를 회수하는 과정과 그 기준에 대해 논의하세요.
• GC 튜닝을 통해 애플리케이션 성능을 최적화한 사례를 설명하세요.
• GC 로그를 분석하여 성능 병목 현상을 해결하는 방법에 대해 논의하세요.
• GC와 관련된 메모리 누수 문제를 디버깅하고 해결하는 방법에 대해 설명하세요.
멀티스레드 환경에서 동기화 문제를 해결하기 위한 방법과 JVM에서 제공하는 동기화 메커니즘에 대해 설명해보세요.
• synchronized 키워드와 ReentrantLock의 차이점과 사용 사례를 설명하세요.
• 멀티스레드 환경에서 데드락(Deadlock)이 발생하는 이유와 이를 방지하기 위한 전략을 논의하세요.
• JVM에서 Atomic 클래스가 제공하는 기능과 이를 활용한 동기화 방법에 대해 설명하세요.
• 멀티스레드 환경에서 성능을 최적화하기 위한 디자인 패턴과 그 구현 방법을 논의하세요.
• 멀티스레드 환경에서 발생할 수 있는 가시성(Visibility) 문제와 이를 해결하기 위한 방법에 대해 설명하세요.
JVM에서 메타스페이스(Metaspace)가 도입된 이유와 기존의 퍼머넌트 제너레이션(Permanent Generation)과의 차이점을 설명해보세요.
• 메타스페이스가 도입됨으로써 JVM 메모리 관리에 어떤 변화가 있었는지 설명하세요.
• 메타스페이스의 크기를 조정하는 방법과 이를 통해 성능을 최적화하는 방법에 대해 논의하세요.
• 퍼머넌트 제너레이션에서 발생했던 문제점과 이를 해결하기 위해 메타스페이스가 도입된 이유를 설명하세요.
• 메타스페이스와 힙 메모리 간의 상호작용과 그 영향을 설명하세요.
• 메타스페이스와 관련된 OutOfMemoryError를 디버깅하고 해결하는 방법에 대해 논의하세요.