그알것 — 그럼에도 알아야 할 것들
홈질문커뮤니티
로그인
그알것 — 그럼에도 알아야 할 것들

Service

  • 홈
  • 소개
  • 질문
  • 커뮤니티

My

  • 내 워크스페이스
  • 저장한 질문
  • 작성한 답변

Policy

  • 이용약관
  • 개인정보처리방침
  • 문의

© 2026 그알것 · What Still Matters

질문 목록React
React

Virtual DOM에 대해서 설명해주세요.

실무4/5
설계3/5
인간4/5
기초3/5

면접관의 질문 의도

Virtual DOM을 'DOM을 빠르게 해주는 마법' 정도로 외워 왔는지, 아니면 reconciliation 휴리스틱과 그 한계까지 짚을 수 있는지를 가른다. 후속 질문은 보통 key 설계, 리렌더 경계, Fiber 도입 배경 같은 깊이 시험으로 이어진다.

큐레이션 답변

학습 자료

Virtual DOM은 실제 DOM을 메모리상의 객체 트리로 떠 놓은 사본이다. 상태가 바뀌면 React는 새 트리를 만들어 이전 트리와 비교(reconciliation)하고, 달라진 노드만 실제 DOM에 반영한다. 일반 트리 비교의 O(n³)을 피하려고 두 가지 휴리스틱을 쓴다 — 타입이 다른 노드는 서브트리 전체를 교체하고, 같은 레벨 자식은 key로 비교한다. 덕분에 비교 비용은 실용적인 수준으로 떨어지지만, 휴리스틱이 어긋나는 패턴(key를 index로 쓰거나 트리 타입을 자주 바꾸는 코드)에서는 오히려 더 많은 노드를 갈아엎게 된다.

좋은 답변 구조

  1. 01Virtual DOM이 무엇이고 왜 도입됐는지 한 줄로 정리한다
  2. 02상태 변경부터 실제 DOM 반영까지의 흐름을 render → reconciliation → commit 단계로 말한다
  3. 03타입 비교와 key 비교 두 휴리스틱을 정리하고, 일반 트리 비교 대비 무엇을 포기해 무엇을 얻었는지 짚는다
  4. 04휴리스틱이 어긋나서 성능이 오히려 깨지는 케이스(잘못된 key, 잦은 타입 변경)를 예로 든다

자주 실수하는 포인트

Virtual DOM이 항상 실제 DOM 조작보다 빠르다고 단정하고, diff 자체의 비용은 보지 못한다
key는 'React가 경고를 안 내게 하려고' 넣는 것이라 여겨 index를 그대로 쓴다
컴포넌트 re-render와 실제 DOM 노드 갱신을 같은 의미로 묶어 말한다
Fiber 도입 이후의 비동기 렌더링과 Virtual DOM 자체를 구분하지 못한다

실무 맥락

  • 수백 행짜리 테이블이나 무한 스크롤 리스트를 다루는 대시보드 화면
  • 입력 한 글자마다 리렌더가 도는 폼·검색창 같은 인터랙티브 화면
  • 컴포넌트 트리가 깊고 props가 위에서부터 흘러내려가는 SPA
  • Profiler를 띄워 어디서 commit이 길어지는지 추적해야 하는 성능 디버깅 현장

본인 경험에 녹이는 힌트

리스트에 index를 key로 썼다가 입력값이 엉뚱한 행으로 옮겨붙은 버그를 잡아본 경험이 있다면, key 설계와 reconciliation 흐름을 연결해 말할 수 있다

React Profiler로 commit 시간을 재 리렌더 범위를 좁혀본 경험이 있다면, diff 비용과 실제 DOM 갱신 비용을 구분해 설명할 수 있다

memo·useCallback을 끼웠다 빼면서 성능이 어떻게 달라지는지 본 경험이 있다면, 렌더링 경계 설계와 휴리스틱 동작을 엮어 답할 수 있다

커뮤니티 인기 답변

전체 0개

아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.

관련 꼬리 질문

Q1key를 index로 쓰면 어떤 문제가 생기나요
Q2React가 타입이 다른 노드를 통째로 교체하는 이유는 무엇인가요
Q3Fiber가 도입되면서 reconciliation은 어떻게 달라졌나요
Q4리렌더는 자주 일어나는데 실제 DOM 변경은 거의 없다면, 비용은 어디서 발생하나요
아직 답을 쓰지 않았어요.
큐레이션 답변과 다른 사람 답변을 보고, 자기 언어로 답을 정리해보면 학습 효과가 가장 큽니다.
목차
  • 01면접관의 질문 의도
  • 02큐레이션 답변
  • 03좋은 답변 구조
  • 04자주 실수하는 포인트
  • 05실무 맥락
  • 06본인 경험에 녹이는 힌트
  • 07커뮤니티 인기 답변준비중
  • 08관련 꼬리 질문