목차/차례
1. 온라인팜에 지원한 이유와 JVM 엔지니어를 선택한 이유는 무엇입니까
2. 신입으로서 즉시 전력에 가까워지기 위해 어떤 준비를 했습니까
3. Java와 JVM의 차이를 본인 언어로 설명해 주세요
4. GC가 왜 필요한지 어떤 종류가 있고 무엇을 기준으로 선택합니까
5. 메모리 누수와 OutOfMemoryError를 어떻게 구분하고 진단합니까
6. 스레드 동기화와 락 경쟁 이슈를 어떻게 발견하고 해결합니까
7. CPU 사용률이 치솟을 때 JVM 관점에서의 접근 순서를 말해 주세요
8. 성능 튜닝을 할 때 측정과 실험 설계를 어떻게 합니까
9. 스프링 기반 서비스에서 트래픽이 급증하면 병목은 어디서 터집니까
10. 장애가 발생했을 때 온콜 관점에서의 대응 프로세스를 설명해 주세요
11. 로그 메트릭 트레이싱 관측 가능성을 어떻게 설계했습니까
12. 데이터 정합성과 트랜잭션 격리를 어떻게 이해하고 적용합니까
13. 캐시를
...
본문/내용
1. 온라인팜에 지원한 이유와 JVM 엔지니어를 선택한 이유는 무엇입니까
저는 온라인 기반 유통과 주문 처리처럼 트랜잭션이 많고, 장애가 곧 고객 불만과 매출 손실로 이어지는 환경에서 개발자로 성장하고 싶습니다. 그래서 단순히 기능을 구현하는 개발자보다, 런타임의 안정성과 성능을 설계하는 엔지니어가 되겠다는 목표로 JVM을 선택했습니다. JVM은 애플리케이션이 “왜 느린지 왜 멈췄는지”를 운영 데이터와 힙 스레드 상태로 설명할 수 있게 해줍니다. 저는 문제를 감으로 때리지 않고, 근거로 쪼개 해결하는 스타일입니다. 온라인팜에서 제가 하고 싶은 일은, 서비스가 커질수록 커지는 지연과 장애를 “재현 가능하게 분석하고, 다시는 반복되지 않도록 설계로 막는 것”입니다.
2. 신입으로서 즉시 전력에 가까워지기 위해 어떤 준비를 했습니까
저는 신입의 약점을 인정하고, 그 약점을 보완하는 방식으로 준비했습니다. 첫째, 운영 관점의 개발 습관을 만들었습니다. 로깅을 남길 때도 사용자의 요청 흐름이 추적되도록 correlation id를 기준으로 남기고, 실패 코드를 분류해 원인 분석이 가능하도록 했습니다. 둘째, 성능을 “측정 가능한 과…