출세한 익룡님의 면접 결과

30

총점

3

질문 수

0

좋아요

15

조회수

종합 평가

데드락의 네 가지 Coffman 조건을 정확한 용어로 빠짐없이 나열하는 등 OS 이론 기초가 탄탄합니다. synchronized와 ReentrantLock의 핵심 차이(자동 vs 수동 락 관리)도 명확하게 짚어냈습니다. synchronized 대비 ReentrantLock의 차별점을 설명할 때 수동 락 관리 외에 tryLock(), 공정성(fairness) 정책, Condition 인터페이스 등 실질적인 추가 기능까지 언급하지 못한 점이 아쉽습니다. unlock 미호출 시 발생하는 문제도 기아 상태보다 더 직접적인 결과인 데드락 또는 무한 블로킹을 먼저 짚는 것이 정확합니다. ReentrantLock의 tryLock(timeout), lockInterruptibly(), Condition.await()/signal() 각각의 동작 원리와 synchronized로는 해결하기 어려운 시나리오(타임아웃 락 획득, 인터럽트 가능 대기)를 정리한 뒤, 데드락 네 조건 각각을 제거하는 예방 전략(자원 순서 부여, 선점 허용 등)으로 학습을 확장해 보세요.

질문별 상세 분석

커뮤니티 공개
Q1B

synchronized와 ReentrantLock 의 차이를 설명해주세요.

응답 내용

synchronized는 zh코드의 시작에 자동으로 락을 획득하고 반환합니다. Rentrantlock은 수동으로 lock()과 unlokck으로 락을 얻고 해제합니다.

AI 피드백

핵심적인 차이점인 자동 락 관리(synchronized)와 수동 락 관리(ReentrantLock)를 정확히 짚으셨습니다. 다만 두 방식의 차이는 단순히 자동/수동에 그치지 않으며, ReentrantLock이 제공하는 추가적인 기능들—예를 들어 tryLock()을 통한 타임아웃 기반 락 시도, lockInterruptibly()를 통한 인터럽트 가능 대기, 그리고 공정성(fairness) 옵션 설정 등—을 함께 언급하면 왜 ReentrantLock이 존재하는지 설계 의도까지 설명할 수 있어 훨씬 완성도 높은 답변이 됩니다. 또한 synchronized는 JVM이 모니터 락을 통해 관리하므로 unlock을 명시적으로 호출하지 않아도 예외 상황에서 자동 해제된다는 점을, ReentrantLock은 반드시 finally 블록에서 unlock()을 호출해야 데드락을 방지할 수 있다는 점을 보완하시면 실무 트레이드오프까지 설명하는 답변이 될 것입니다.

Q2C

ReentrantLock을 사용할 때 unlock()이 호출되지 못하는 상황이 발생하면 어떤 문제가 생기나요?

응답 내용

lockedmf 을 계속 들고 있게 돼 해당 자원이 필요한 함수나 아 다시 말하겠습니다. 스레드나 프로세스가 기아 상태로 될 수 있습니다

AI 피드백

락을 계속 점유하게 된다는 방향은 맞게 잡으셨고, 다른 스레드가 영향을 받는다는 점도 인식하고 계신 것은 좋습니다. 다만 이 상황에서 더 정확한 용어는 **데드락(Deadlock)** 또는 **무한 대기(indefinite blocking)** 입니다. 기아(Starvation)는 특정 스레드가 자원을 계속 얻지 못하는 상황을 뜻하지만, unlock()이 아예 호출되지 않는 경우는 락이 영원히 해제되지 않아 해당 락을 기다리는 모든 스레드가 영구적으로 블로킹되는 문제가 발생합니다. 이를 방지하기 위해 실무에서는 `try { lock.lock(); ... } finally { lock.unlock(); }` 패턴을 반드시 사용하며, 이 점을 답변에 포함하셨다면 더욱 완성도 높은 답변이 되었을 것입니다.

Q3A

데드락(deadlock)이 발생하기 위한 조건은 무엇인가요?

응답 내용

데드락이 발생하기 위해서는 상호배제, 비선점, 순환 대기, 점유대기가 있습니다

AI 피드백

데드락 발생의 네 가지 조건(상호배제, 비선점, 순환 대기, 점유대기)을 모두 정확하게 나열하셨습니다. 교과서적으로 완전한 답변입니다. 한 단계 더 나아가자면, 각 조건을 단순히 나열하는 것을 넘어 "점유대기 조건을 제거하면 자원을 한꺼번에 요청하게 해 데드락을 예방할 수 있다"처럼 조건 제거 전략과 연결해 설명할 수 있다면 더욱 인상적인 답변이 됩니다. 예를 들어 "순환 대기를 제거하기 위해 자원에 전역 순서를 부여하고 항상 낮은 번호부터 요청하도록 강제한다"는 식의 예시를 함께 제시해 보세요.

커뮤니티 공유 안내

• 이 결과는 AI가 분석한 내용이며, 학습 목적으로 커뮤니티에 공유됩니다.

• 좋아요를 눌러 유용한 답변에 반응을 남겨보세요.

• 개인정보는 포함되지 않으며, 면접 연습 개선을 위한 참고 자료로 활용됩니다.