SWE Julie's life

미국 개발자 FAANG 취업 후기 - 3. System Design 인터뷰 준비 본문

SWE 취업 후기

미국 개발자 FAANG 취업 후기 - 3. System Design 인터뷰 준비

Julie's 2025. 3. 19. 15:33
728x90

 

Onsite 인터뷰 프로세스를 진행하게 되면 최소 1개 이상의 System Design 인터뷰를 준비해야한다. 일반적으로 SWE는 product / infra 중 하나를 골라 인터뷰를 진행하게 되며 내가 지원한 MLE의 경우 Machine Learning System Design 인터뷰를 준비해야한다.

 

Machine Learning System Design의 경우 전반적인 ML 모델 개발 과정을 다루게 된다. 보통 추천시스템, prediction/classification 종류의 문제를 받게 되며 데이터 수집부터 배포 후 모니터링까지 MLOps 전반적인 단계들에 대해 논의한다. 이 인터뷰의 경우 더욱 인터뷰어와 상호소통하며 진행하는 단계이기도 한데 어떤 인터뷰어의 경우 모델 아키텍쳐에 대해 깊이 있게 물어보는 경우도 있고 어떤 인터뷰어는 실제 사례를 들고와서 어떻게 대처할 것인지를 심도있게 물어보기도 한다.

 

만약 처음 준비한다면 유명한 책들을 먼저 접해보는 것을 추천한다. 가장 알려진 자료중 하나는 Chip Huyen의 스탠포드 대학에서의 System Design Interview 강의 자료Alex Xu의 Machine Learning System Design Interview이다. 개인적으로 후자만 읽어도 충분했으며 인터뷰에서 어떻게 대화를 리드해나가야하는지 대략적인 감을 잡기 좋다.

 

이 글에서는 이상적인 인터뷰 답안 구성에 대한 간략한 설명만 남길 예정이니 디테일한 정보는 책에서 구하는 것이 좋다.

 

우선 Clarifying Question으로 인터뷰를 시작해야한다. 첫 5분 정도는 인터뷰어가 자기 소개와 더불어 문제를 던져줄텐데 이 때 문제는 보통 모호한 경우가 많다. 예를 들어 추천시스템을 설계한다고 하더라도 어떤 대상으로 추천할 것인지, 어떤 기준인지, 그 기준에 대한 정의는 무엇인지를 인터뷰어와 소통하면서 구체화해나가야한다. 이 때 가장 중요한 것은 business objective를 먼저 확인하고, 이를 ML objective으로 재표현해야하는 것이다. 만약 user engagement를 극대화하는 문제라고 하면 내가 생각하고 있는 ML 모델이 어떻게 이에 기여할 수 있는지 연결고리를 만들어야한다. 이를 통해 비즈니스 문제를 ML 모델로 해석하는 능력을 본다.

 

그 다음은 보통의 ML 개발 과정과 동일하다. 데이터 수집, 전처리 과정, 모델 학습, 모델 성능 평가(Evaluation), 배포 후 모니터링 방법까지. 단계를 하나씩 마무리할 때마다 다음 단계로 진행하기 전 인터뷰어에게 잘 따라오고 있는지, 질문은 없는지 확인하는 것이 좋다.

 

아무래도 ML system design이다보니 가장 중요한 것은 <모델 학습/Training> 단계에서 어떤 모델을 사용할 것인지를 충분히 논의해야한다는 점이다. 인터뷰어에게 하나의 모델만을 선정해서 알려주는 것이 아니라, 여러 옵션들이 있고 그 중에서 내가 이 모델을 사용하는 이유에 대해 설득해야한다. 예를 들어 prediction 문제의 경우 "간단하게는 logistic regression, decision tree가 있으며 그럼에도 불구하고 neural network로 prediction 문제를 해결하고자 하는 이유는 이 문제를 풀기 위해 모델이 multi modality를 지원할 수 있어야하기 때문이다"와 같이 근거를 들어주어야한다. 각 모델의 장단점을 설명해야하며 이 과정이 없다면 감점이 있을 확률이 크다.

 

이 인터뷰는 simulation을 통해서 연습해보는 것이 좋은데 주변에 MLE친구가 있다면 함께 준비하는 것이 좋겠지만 나는 쑥쓰러움도 많을 뿐더러 효율성을 위해 ChatGPT와 mock interview를 수차례 진행했다. 문제는 내가 냈지만 clarifying question, 전반적인 인터뷰 흐름 등을 내가 대답하며 ChatGPT에게는 following question을 묻도록 시켰다.

 

이렇게 인터뷰 전반적인 흐름에 대한 이해가 생겼다면 다음은 이론적인 background를 보강해야한다. Neural network가 어떤 방식으로 학습되는지 알고 있어야하며 각 모델에 대해서도 특징 정도와 loss function, activation function에 대해 제너럴하게 설명할 수 있어야한다. 어떤 사람들은 수식에 대해서 써보라고도 시킨다하여 나는 수식도 간단하게 암기하고 들어갔다.

 

이쯤 준비하고 보면 대강 template이 생긴다. 아래는 내가 준비하면서 유형화?했던 내용을 그대로 옮겨본다. 일명 Cheatsheet로 볼 수 있다.

 

  • Recommendation System
    • architecture: multi-stage recommendation system
    • strategy: pointwise LTR(Learn to Rank)
    • ML selection
      • traditional recsys - content-based filtering, collabroative filtering
      • nerual network based - two tower, multi-task NN
    • Loss function
      • cross-entropy
      • if class imblanace, focal loss
  • PYMK (Person You May Know)
    • architecture: multi-stage system (candidate generation > ranked list > re-ranking)
    • ML selection
      • GCN(Graph Convolutional Network)
      • GraphSAGE
  • Ads Click Prediction
    • architecture: multi-stage system (candidate generation > ranked list > re-ranking)
    • ML selection
      • logistic regression with feature crossing
      • GBDT(Gradient Boosted Decision Tree) + logistic regression
      • FM(Factorization Machine)
      • DeepFM
      • (만약 여유가 된다면) MoE(Mixture of Experts), PLE(Progressive Layered Extraction)
  • Prediction/Classification Problem
    • ML selection
      • binary - logistic regression
      • Decision Tree - ensemble
        • boosted vs bagging
          • boosted -> GBDT, XGBoost
      • Neural Network

 

그리고 면접하는 회사의 research blog를 보면서 모델 설계과정에 대해 미리 익혀두고 가면 좋다. 뿐만 아니라 유명 테크 회사들의 blog를 보면 좀 더 현실적인 고민들과 모델 선정 과정에 대한 설명이 담겨있어 아래 자료들을 보고 답안을 보강해두면 좋다.

 

<Multi-stage Recommenders>

https://engineering.fb.com/2023/08/09/ml-applications/scaling-instagram-explore-recommendations-system/

<Ranking>

https://medium.com/airbnb-engineering/machine-learning-powered-search-ranking-of-airbnb-experiences-110b4b1a0789

<Recommendations>

https://careersatdoordash.com/blog/homepage-recommendation-with-exploitation-and-exploration/

<Search & Retrieval>

https://eng.snap.com/embedding-based-retrieval

<CTR/CVR prediction>

https://happystrongcoder.substack.com/p/dcn-v2-improved-deep-and-cross-network

<PYMK>

https://www.linkedin.com/blog/engineering/recommendations/building-a-large-scale-recommendation-system-people-you-may-know

 

여기서 더 나아가 여유가 된다면 industry paper를 읽는 것인데, 참고할만한 자료들은 아래와 같다:

  • Deep Neural Networks for Youtube Recommendations
  • Recommending what video to watch next: a multitask ranking system
  • Instagram Explorer recommendation system
  • Pinterest Pixie
  • Real-time Personalization using Embeddings for Search Ranking at Airbnb
  • Behavior Sequence Transformer for E-commerce Recommendation in Alibaba
  • Deep Reinforcement Learning for Online Advertising in Recommender Systems (TikTok)

 

정리하자면

  1. core ML concept에 대한 복습
  2. clarifying questions/requirement gathering 연습
  3. prepare for the flow
  4. repeat 1-3 above

단계로 준비하는 것을 추천한다.