프론트엔드 개발 · 중급
웹 브라우저의 렌더링 과정에서 발생하는 Reflow(Layout)와 Repaint(Paint)의 개념을 설명하고, 이들이 웹 성능에 미치는 영향과 Reflow/Repaint를 최소화하기 위한 개발 실천 방법들을 제시해 주세요.
힌트 · DOM/CSSOM 변경이 렌더링 파이프라인에 미치는 영향, `transform`, `opacity` 속성 활용 등을 설명하세요.
DOM 트리CSSOM 트리렌더 트리박스 모델레이아웃 스래싱
모범답안
네, 말씀하신 Reflow와 Repaint는 웹 브라우저 렌더링 과정에서 중요한 개념입니다.
Reflow는 레이아웃 계산을 다시 하는 과정으로, DOM 구조 변경, 요소의 크기나 위치 변경 등이 발생했을 때 일어납니다. Repaint는 이렇게 변경된 레이아웃을 바탕으로 화면에 다시 그리는 과정입니다.
이 두 과정은 웹 성능에 큰 영향을 미칩니다. 특히 Reflow는 비용이 많이 드는 작업이라 자주 발생하면 웹 페이지의 반응성을 떨어뜨릴 수 있습니다.
Reflow와 Repaint를 최소화하기 위해 몇 가지 방법을 사용할 수 있습니다. 예를 들어, DOM 변경을 최소화하고, transform이나 opacity와 같이 Reflow를 발생시키지 않는 속성을 활용하는 것이 좋습니다. 또한, 스타일 변경을 한 번에 묶어서 적용하거나, 레이아웃 정보에 접근하는 코드를 최소화하여 "레이아웃 스래싱"을 방지하는 것도 중요합니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 웹 성능 최적화 면접 질문
- 웹 페이지에 많은 이미지가 사용될 때 발생할 수 있는 성능 문제를 해결하기 위한 이미지 최적화 전략들을 3가지 이상 설명하고, 각 전략이 어떤 원리로 성능을 개선하는지 설명해 주세요.
- 웹 성능 최적화에서 HTTP 캐싱이 중요한 이유를 설명하고, `Cache-Control` 헤더의 주요 지시어(예: `max-age`, `no-cache`, `must-revalidate`)들이 각각 어떤 역할을 하는지 구체적인 시나리오와 함께 설명해 주세요.
- Service Worker를 활용한 캐싱 전략이 HTTP 캐싱과 어떻게 다른지 설명하고, Service Worker를 사용하여 웹 애플리케이션의 오프라인 지원 및 성능 향상을 어떻게 구현할 수 있는지 구체적인 캐싱 전략(예: Cache-First, Network-First)을 들어 설명해 주세요.
- 웹 페이지 로딩 시 렌더링을 차단하는 CSS 리소스로 인해 발생하는 성능 문제를 해결하기 위한 Critical CSS 기법에 대해 설명하고, 이 기법을 적용했을 때의 장점과 단점은 무엇인지 이야기해 주세요.
- 대규모 웹 애플리케이션에서 Critical Rendering Path(CRP)를 최적화하기 위한 고급 전략에는 어떤 것들이 있으며, 각 전략이 렌더링 성능에 미치는 영향을 구체적인 예시와 함께 설명해주세요. 특히, CSSOM과 DOM 트리의 병합 및 렌더 트리 생성 과정에서 발생하는 병목 현상을 어떻게 식별하고 해결할 수 있을까요?
- 웹 페이지 로딩 성능을 극대화하기 위해 `fetchpriority`, `preload`, `preconnect`, `prefetch`와 같은 리소스 힌트(Resource Hints)를 어떻게 전략적으로 활용할 수 있을까요? 각 힌트의 동작 원리와 브라우저의 리소스 로딩 우선순위 결정 로직에 미치는 영향을 비교 설명하고, 실제 프로젝트에서 발생할 수 있는 오용 사례와 그로 인한 성능 저하 시나리오를 제시해주세요.