언어 기초 인터뷰
동시성·비동기 면접: 스레드부터 async/await까지
동시성과 병렬성, 스레드, 이벤트 루프, async/await, 취소와 오류 전파를 설명하는 개발자 인터뷰 가이드입니다.
첫 30초 답변
“동시성은 여러 작업의 진행을 다루고, 병렬성은 실제 동시 실행을 다룹니다. 이 문제에서 막히는 자원이 CPU인지 I/O인지부터 보겠습니다.”라고 구분합니다.
자주 묻는 질문과 답변의 뼈대
async/await는 스레드인가요?
언어와 런타임에 따라 다르지만 보통 비동기 작업의 결과를 기다리는 문법입니다. 기다리는 동안 스레드를 점유하는지, 이벤트 루프나 스케줄러가 어떻게 재개하는지 분리해 답합니다.
경쟁 상태는 어떻게 막나요?
공유 가변 상태를 줄이고 메시지 전달 또는 불변 데이터를 우선합니다. 꼭 공유해야 하면 잠금 범위·원자 연산·트랜잭션을 정하고 데드락 순서도 점검합니다.
취소는 왜 설계해야 하나요?
사용자가 떠났거나 마감 시간이 지났을 때 쓸모없는 작업이 자원을 잡지 않게 합니다. 취소 신호 전파, 정리 코드, 부분 결과의 일관성을 함께 설계합니다.
면접 전 체크리스트
- CPU 바운드와 I/O 바운드를 구분한다
- 공유 상태와 메시지 전달의 장단점을 안다
- 타임아웃·취소·재시도를 설계에 넣는다
- 오류가 호출자까지 어떻게 전파되는지 설명한다
관련 언어 학습으로 복습하기
연습 방법
질문 하나를 골라 2분 안에 말로 답한 뒤, 빠진 가정·트레이드오프·검증 방법을 메모하세요. 다음 날에는 예시를 바꿔 같은 구조로 다시 답해 보세요.