케이스 스터디 면접
샘플 1문제전체 10문제
실제 면접에서 주어지는 비즈니스 케이스를 풀어봅니다. 정답보다 사고 과정과 커뮤니케이션이 중요합니다.
🎯 케이스 면접 접근법
CRISP 프레임워크
- Clarify: 문제 명확히 하기 (질문하기!)
- Reframe: 분석 가능한 형태로 재정의
- Identify: 필요한 데이터와 방법론 식별
- Solve: 분석 수행 (SQL/Python)
- Present: 결과를 비즈니스 언어로 전달
📊 샘플: 매출 하락 분석 (1/10)
중급
제한시간: 30분
상황
“지난 달 매출이 전월 대비 15% 하락했습니다. 원인을 분석하고 개선안을 제시하세요.”
— 마케팅 팀장
제공 데이터
src_orders: 주문 데이터src_order_items: 주문상품 데이터src_users: 고객 데이터src_events: 웹 이벤트 로그
💡 접근 방법
Step 1: 문제 명확화 (Clarify)
- “하락 시작 시점이 특정 날짜인가요, 점진적인가요?”
- “특정 채널/카테고리에서 두드러지나요?”
- “경쟁사 이벤트나 외부 요인이 있었나요?”
Step 2: 분해 (Decompose)
매출 = 방문자 × 전환율 × 객단가
각 요소의 전월 대비 변화 확인✅ 분석 코드
import pandas as pd
import numpy as np
DATA_PATH = '/data/'
orders = pd.read_csv(DATA_PATH + 'src_orders.csv', parse_dates=['created_at'])
order_items = pd.read_csv(DATA_PATH + 'src_order_items.csv')
users = pd.read_csv(DATA_PATH + 'src_users.csv')
# 1. 일별 매출 추이
daily_revenue = order_items.merge(
orders[['order_id', 'created_at', 'status']], on='order_id'
).query("status == 'Complete'")
daily_revenue['date'] = daily_revenue['created_at'].dt.date
daily_summary = daily_revenue.groupby('date').agg(
revenue=('sale_price', 'sum'),
orders=('order_id', 'nunique'),
aov=('sale_price', lambda x: x.sum() / x.count())
).reset_index()
print("=== 일별 매출 추이 ===")
print(daily_summary.tail(60))
# 2. 채널별 분해 (가정: traffic_source로)
df = order_items.merge(orders, on='order_id').merge(users, on='user_id')
channel_comparison = df.groupby([
df['created_at'].dt.to_period('M'),
'traffic_source'
])['sale_price'].sum().unstack()
print("\n=== 채널별 월간 매출 ===")
print(channel_comparison)
# 3. 카테고리별 분해
df_products = df.merge(
pd.read_csv(DATA_PATH + 'src_products.csv')[['product_id', 'category']],
on='product_id'
)
category_comparison = df_products.groupby([
df_products['created_at'].dt.to_period('M'),
'category'
])['sale_price'].sum().unstack()
print("\n=== 카테고리별 월간 매출 ===")
print(category_comparison)
# 4. 신규 vs 기존 고객
df['is_new'] = df.groupby('user_id')['created_at'].transform('min') == df['created_at']
customer_type = df.groupby([
df['created_at'].dt.to_period('M'),
'is_new'
])['sale_price'].sum().unstack()
print("\n=== 신규/기존 고객별 매출 ===")
print(customer_type)📊 결과 해석 예시
발견:
- 전체 방문자는 유지, 전환율 25% 하락
- 모바일 채널에서 특히 하락 (-35%)
- 의류 카테고리 하락이 전체의 80% 기여
가설:
- 모바일 결제 프로세스 문제?
- 의류 재고 품절?
- 계절 전환기 (겨울→봄 컬렉션)?
권장 액션:
- 모바일 퍼널 분석 (장바구니→결제 이탈점)
- 의류 재고 현황 확인
- 전년 동기 대비 분석 추가
🔒 프리미엄 케이스 (9문제)
전체 10개 케이스 구성
| 케이스 | 난이도 | 주제 |
|---|---|---|
| Case 1 | 중급 | 매출 하락 분석 (샘플) |
| Case 2 | 고급 | A/B 테스트 결과 해석 |
| Case 3 | 고급 | 고객 이탈 예측 모델 |
| Case 4 | 고급 | 가격 최적화 |
| Case 5 | 고급 | 마케팅 예산 배분 |
| Case 6 | 중급 | 프로모션 효과 분석 |
| Case 7 | 고급 | 코호트 리텐션 분석 |
| Case 8 | 중급 | 재고 최적화 |
| Case 9 | 고급 | LTV 예측 |
| Case 10 | 고급 | 퍼널 분석 및 최적화 |
프리미엄에서 배우는 내용
- ✅ A/B 테스트 해석: 통계적 유의성 + 비즈니스 임팩트 동시 분석
- ✅ 이탈 예측 모델: 피처 엔지니어링부터 모델 배포까지
- ✅ 가격 탄력성 분석: 최적 가격 도출 방법
- ✅ 예산 배분 최적화: ROAS, CAC 기반 의사결정
- ✅ 면접관 채점 포인트: 실제 면접에서 평가하는 요소
🎯 전체 10개 케이스 + 해설 구매하기
SQL + Pandas + 통계 + 케이스 스터디 번들 할인
📝 케이스 면접 팁
🎯 면접관이 보는 포인트
-
구조화된 사고
- MECE하게 문제 분해
- 가설 → 검증 → 결론 흐름
-
비즈니스 감각
- 숫자를 비즈니스 임팩트로 연결
- “So what?” 질문에 답할 수 있는가
-
커뮤니케이션
- 복잡한 분석을 쉽게 설명
- 불확실성과 한계 인정
-
실행 가능성
- 이론뿐 아니라 구현 방법
- 리소스/시간 고려한 우선순위
🚫 피해야 할 실수
- ❌ 질문 없이 바로 분석 시작
- ❌ 숫자만 나열, 인사이트 없음
- ❌ 가정 없이 결론 도출
- ❌ 반론에 대한 준비 없음
📝 무료로 더 연습하기
케이스 스터디 준비가 더 필요하다면, 다른 면접 섹션을 먼저 완료하세요:
Last updated on