SYSTEM DESIGN · VOL.1 · 22 PROBLEMS
VOL.1 · BOOK + MOCK INTERVIEW
백엔드 설계 면접 질문 22개: 매일 쓰는 화면에서 나온 시스템 디자인 문제
배달 앱 쿠폰, 쇼핑몰 재고, 식당 예약. 매일 쓰는 화면이 면접에서는 설계 문제가 됩니다. 문제마다 면접관의 질문, 가장 많이 나오는 답, 그 답이 깨지는 곳, 이어지는 꼬리질문을 한 장에 담았습니다.
2부데이터를 어떻게 담나
- 01날짜로 검색되는 좌석 예약콘서트 좌석 예매를 설계해 보세요. 날짜를 고르면 그 날 예매 가능한 좌석이 나오고, 하나를 골라 예매합니다.
- 02시간이 겹치지 않는 회의실 예약회의실을 시간 단위로 예약하는 기능입니다. 같은 방에 시간이 겹치는 예약이 두 개 들어가면 안 됩니다. 테이블부터 잡아 보세요.
- 03답글이 달리는 댓글댓글에 답글을 달 수 있는 게시판인데, 답글에도 답글이 달립니다. 깊이 제한은 없습니다. 댓글을 어떻게 저장하고, 한 글의 댓글 전체를 어떻게 불러올지 설계해 보세요.
- 04태그로 글 찾기글에 태그를 여러 개 달고, 태그로 글을 검색합니다. 테이블 구조와 검색 쿼리를 설계해 보세요.
- 05주문에 남는 그때 그 가격상품 가격은 자주 바뀌는데, 주문 내역에는 주문한 그 순간의 가격이 영원히 남아야 합니다. 나중에 가격이 바뀌어도요. 설계해 보세요.
3부동시에 들어올 때
- 06딱 100장만, 선착순 쿠폰선착순 100장 쿠폰 발급을 설계해 보세요. 12시 정각에 수천 명이 동시에 누릅니다. 101장이 나가는 일은 절대 없어야 합니다.
- 07좋아요는 한 사람 한 번게시물 좋아요 기능을 설계해 보세요. 한 사람이 한 게시물에 좋아요를 한 번만 누를 수 있고, 취소도 됩니다.
- 08초과 판매 없는 재고 차감재고가 3개 남은 상품에 주문이 동시에 들어옵니다. 재고보다 많이 팔리면 안 되고, 재고가 음수가 되어도 안 됩니다. 설계해 보세요.
- 09나중에 누른 저장이 앞의 수정을 지울 때운영자 둘이 같은 상품 페이지를 열어 각자 고치고 저장했습니다. 먼저 저장한 사람의 수정이 사라집니다. 어떻게 막으시겠어요?
4부많아지면
- 10끝없이 내려가는 무한스크롤게시글 10만 건을 최신순 무한스크롤로 보여 줍니다. 내릴 때마다 다음 20개를 불러옵니다. 새 글도 계속 올라옵니다. API와 쿼리를 설계해 보세요.
- 11좋아요 수로 줄 세우는 인기글게시판에 인기 탭을 만듭니다. 좋아요 수가 많은 순으로 보여 줍니다. 글이 100만 건이고, 좋아요는 likes 테이블에 행으로 쌓여 있습니다. 설계해 보세요.
- 12조건으로 거르는 검색상품 100만 건에서 카테고리, 브랜드, 가격대 조건으로 검색합니다. 인덱스를 어디에 어떻게 걸지 설계해 보세요. 첫 페이지에는 초당 3만 요청이 옵니다. 쿼리가 이미 인덱스를 탄다면, 무엇을 더 하시겠어요?
5부시간과 상태
- 13껐다 켜도 로그인, 세션과 토큰로그인 상태는 어떻게 유지하시겠어요? 서버를 두 대로 늘리면요? 그리고 로그아웃을 누르면 그 표는 어떻게 됩니까?
- 14신청과 확정과 취소, 예약 상태식당 예약을 설계해 보세요. 손님이 신청하면 대기, 가게가 받으면 확정입니다. 양쪽 다 취소할 수 있고, 확정인데 안 오면 노쇼 처리합니다. 상태 관리를 중심으로요.
- 1530분 전에 도착하는 예약 알림예약 30분 전에 알림을 보내야 합니다. 예약은 하루 수만 건이고, 서버는 여러 대가 떠 있고, 배포나 장애로 재시작도 합니다. 설계해 보세요.
- 16두 번 눌러도 한 번, 중복 요청주문 결제 요청이 두 번 도착할 수 있습니다. 버튼을 두 번 누르기도 하고, 네트워크가 끊겨 클라이언트가 재시도하기도 합니다. 같은 결제가 두 번 실행되지 않게 설계해 보세요.
6부손님이 보내는 것을 받을 때
7부무엇을 남길지 우리가 정할 때
8부원본을 그대로 둘 수 없을 때
22문제의 다음 판단은 책에서 이어집니다
시스템 디자인 Vol.1은 22문제를 면접 순서 그대로 풉니다. 범위를 좁히고, 핵심을 짚고, 가장 단순한 답에서 시작해 깨지는 곳마다 한 계단씩 올립니다. 263쪽입니다.
시스템 디자인 Vol.1 보러 가기 →