Next.js 신입 프레임워크 기술면접

Next.js 신입 · 취준 (0~1년) 프레임워크 3문항 조회수 43 · 2026-09-14 (월) 07:40:47
1 렌더링 방식
Easy

Q. Next.js에서 제공하는 주요 렌더링 방식인 SSR(Server-Side Rendering), SSG(Static Site Generation), ISR(Incremental Static Regeneration), CSR(Client-Side Rendering)의 차이점을 설명하고, 각각 어떤 상황에서 사용하는 것이 적합한지 말씀해주세요.

각 방식이 언제 페이지를 생성하는지, 그리고 데이터의 변경 빈도와 초기 로딩 속도 중 무엇을 우선시하는지 생각해보세요.

A. 모범답안

SSR은 getServerSideProps를 사용하며 매 요청마다 서버에서 페이지를 생성하므로 항상 최신 데이터를 보여줄 수 있지만 응답 속도가 상대적으로 느립니다. SSG는 getStaticProps를 사용하며 빌드 시점에 페이지를 생성하므로 가장 빠르지만 데이터가 정적이어야 합니다. ISR은 SSG와 유사하지만 revalidate 옵션을 통해 특정 시간 간격으로 페이지를 재생성할 수 있어 정적 페이지의 성능과 동적 데이터 갱신을 모두 활용할 수 있습니다. CSR은 클라이언트에서 useEffect나 SWR 등을 통해 데이터를 가져오며, SEO가 중요하지 않거나 사용자별 개인화된 데이터를 보여줄 때 적합합니다. 실시간 데이터가 필요하면 SSR, 블로그나 문서는 SSG, 상품 목록처럼 주기적으로 변경되는 데이터는 ISR, 대시보드나 마이페이지는 CSR이 적합합니다.

핵심 포인트
  • • SSR은 매 요청마다 서버에서 렌더링하여 최신 데이터 제공
  • • SSG는 빌드 시점에 생성하여 가장 빠른 성능 제공
  • • ISR은 정적 생성과 주기적 갱신을 결합한 방식
  • • CSR은 클라이언트에서 데이터를 가져와 개인화된 콘텐츠에 적합
답변에 넣으면 좋은 키워드
SSR SSG ISR getServerSideProps getStaticProps revalidate SEO
실무에서는

프로젝트의 페이지별 특성에 맞는 렌더링 방식을 선택하여 성능과 사용자 경험을 최적화할 때 사용합니다.

Follow-up 질문

만약 전자상거래 사이트의 상품 상세 페이지를 구현한다면 어떤 렌더링 방식을 선택하시겠습니까? 그 이유도 함께 설명해주세요.

2 라우팅 시스템
Medium

Q. Next.js의 파일 기반 라우팅(File-based Routing) 시스템에서 동적 라우팅(Dynamic Routes)을 구현하는 방법을 설명하고, [id].js와 [...slug].js, [[...slug]].js 파일명의 차이점을 설명해주세요.

대괄호의 개수와 위치에 따라 필수 파라미터인지, 여러 세그먼트를 받을 수 있는지, 선택적인지가 결정됩니다.

A. 모범답안

Next.js는 pages 폴더의 파일 구조가 그대로 URL 경로가 되는 파일 기반 라우팅을 제공합니다. [id].js는 단일 동적 세그먼트를 받는 파일로, /posts/1이나 /posts/abc 같은 URL과 매칭되며 useRouter의 query.id로 값을 가져올 수 있습니다. [...slug].js는 Catch-all Routes로 여러 세그먼트를 배열로 받을 수 있어 /docs/a/b/c 같은 URL을 모두 매칭하며 query.slug는 ['a', 'b', 'c'] 형태의 배열이 됩니다. [[...slug]].js는 Optional Catch-all Routes로 [...slug].js와 동일하지만 세그먼트가 없는 경로도 매칭되어 /docs와 /docs/a/b 모두 처리할 수 있습니다. 이러한 동적 라우팅은 블로그 포스트, 상품 상세 페이지, 다단계 문서 구조 등을 구현할 때 유용합니다.

핵심 포인트
  • • [id].js는 단일 동적 파라미터를 받는 기본 동적 라우팅
  • • [...slug].js는 여러 세그먼트를 배열로 받는 Catch-all Routes
  • • [[...slug]].js는 세그먼트가 없는 경로도 매칭하는 Optional Catch-all Routes
  • • useRouter의 query 객체를 통해 동적 파라미터 값에 접근 가능
답변에 넣으면 좋은 키워드
동적 라우팅 파일 기반 라우팅 useRouter query Catch-all Routes slug
실무에서는

블로그의 포스트 상세 페이지나 전자상거래 사이트의 상품 페이지처럼 URL 파라미터에 따라 다른 콘텐츠를 보여줄 때 사용합니다.

Follow-up 질문

동적 라우팅을 사용하는 페이지에서 getStaticProps를 사용하려면 추가로 어떤 함수를 구현해야 하나요?

3 데이터 페칭
Medium

Q. Next.js에서 getStaticProps와 getStaticPaths를 함께 사용하는 이유와 동작 방식을 설명하고, fallback 옵션의 false, true, 'blocking' 값이 각각 어떻게 동작하는지 설명해주세요.

동적 라우팅 페이지를 정적으로 생성할 때 어떤 경로들을 미리 만들지 결정하고, 그 외의 경로 요청은 어떻게 처리할지 정의하는 것입니다.

A. 모범답안

동적 라우팅 페이지에서 SSG를 사용하려면 빌드 시점에 어떤 경로들을 미리 생성할지 알려줘야 하므로 getStaticPaths가 필요합니다. getStaticPaths는 paths 배열에 생성할 경로 목록을 반환하고, getStaticProps는 각 경로에 대한 데이터를 가져와 페이지를 생성합니다. fallback: false는 paths에 없는 경로는 404를 반환하며, 모든 경로를 빌드 시점에 생성할 때 사용합니다. fallback: true는 paths에 없는 경로도 요청 시 생성하며, router.isFallback으로 로딩 상태를 보여줄 수 있어 경로가 많을 때 유용하지만 초기 로딩 UI를 구현해야 합니다. fallback: 'blocking'은 true와 유사하지만 페이지가 생성될 때까지 서버에서 대기하므로 SSR처럼 동작하며, 로딩 UI 없이 완성된 페이지를 바로 보여줍니다. 상품 수가 많은 전자상거래 사이트에서 인기 상품만 미리 생성하고 나머지는 요청 시 생성하는 전략에 활용됩니다.

핵심 포인트
  • • getStaticPaths는 동적 라우팅 페이지에서 미리 생성할 경로 목록을 정의
  • • fallback: false는 정의되지 않은 경로를 404로 처리
  • • fallback: true는 요청 시 생성하되 로딩 상태를 클라이언트에서 처리
  • • fallback: 'blocking'은 요청 시 생성하되 서버에서 완료될 때까지 대기
답변에 넣으면 좋은 키워드
getStaticPaths getStaticProps fallback paths 동적 라우팅 SSG isFallback
실무에서는

블로그나 전자상거래 사이트에서 수백~수천 개의 동적 페이지를 효율적으로 정적 생성하고 관리할 때 사용합니다.

Follow-up 질문

만약 블로그에 1000개의 포스트가 있다면, getStaticPaths에서 모든 경로를 반환하는 것과 일부만 반환하고 fallback을 사용하는 것 중 어떤 전략이 더 좋을까요?

댓글 0

로그인 후 댓글을 작성할 수 있습니다.

아직 댓글이 없습니다. 첫 번째 댓글을 남겨보세요!