> >
Post

[ML Engineer] 코딩테스트 후기

[ML Engineer] 코딩테스트 회고

[ML Engineer] 코딩테스트 후기

들어가며

ML Engineer 코딩테스트에 대한 후기



ML Engineer


1. Data Scientist vs ML Engineer

Data ScientistML Engineer 의 차이점을 간략하게 설명

DS VS MLE Data Scientist VS ML Engineer

Data Scientist

주요 역할

  • 데이터 수집 및 정리: DS는 여러 소스에서 원시 데이터를 수집하고 이를 정리하여 분석을 위해 준비
  • 탐색적 데이터 분석(EDA): 데이터의 구조, 패턴, 추세를 이해하기 위해 EDA를 수행
  • 통계 분석: 통계적 방법을 사용하여 가설을 검증하고, 상관관계를 파악하고, 데이터 분포를 이해
  • 예측 모델링: 추세 예측이나 데이터 분류와 같은 예측을 수행하기 위해 머신 러닝 모델을 구축하고 검증
  • 데이터 시각화 및 보고: 의사결정권자에게 통찰력을 명확하게 전달하기 위해 시각적 자료와 보고서 작성

ML Engineer

주요 역할

  • 모델 배포: MLE(ML 엔지니어)는 DS(데이터 과학자)가 개발한 머신 러닝 모델을 사용
  • SW 엔지니어링: ML 모델을 애플리케이션에 통합하기 위해 깔끔하고 효율적이며 유지 관리가 쉬운 코드를 작성
  • 최적화: 모델이 성능에 최적화되어 있고 대량의 데이터와 실시간 예측을 처리할 수 있도록 확장이 가능한지 확인
  • 모니터링: 생산 중인 모델을 지속적으로 모니터링하여 성능이 저하되지 않도록 하고 문제가 발생하면 해결
  • 협업: MLEDS와 협력하여 모델 요구 사항을 파악하고 DevOps 팀과 협력하여 인프라 요구 사항을 관리


위 내용처럼 알고 있었지만 최근에는 MLE 에서 MLOps Engineer 등의 직무로 세분화 되면서
DSMLE의 경계선이 점점 없어지고 있는 추세인 듯 하다. (JD를 보면 거의 유사함)
특히, 규모가 작은 스타트업이나 IT 기업이 아닌 조직에서는 두 역할에 구분을 두지않고
MLE두 역할을 동시에 하는 경우가 많은 것 같다. (매우 헷갈렸음..)



2. 코딩테스트

ML Engineer 코딩테스트 후기와 함께 문제 구성을 소개한다.

  • 알고리즘 2문제
  • ML 서술형 1문제
  • ML 모델링 1문제

많은 서류 탈락 끝에 총 2개의 기업에서 서류 합격 연락을 받았다. (역시 꾸준히 많이 지원하는게 좋다)
모두 채용 연계형 인턴십 전형이였고 이 중에서 한 곳은 네임드가 꽤 있는 기업이었다. (A사 라고 칭하겠음)

우선, A사 코딩테스트에서는 알고리즘 2문제, ML 서술형 2문제, 그리고 ML 모델링 1문제가 나왔다.
총 제한 시간은 2시간으로 굉장히 빠듯하다고 느껴졌다. 플랫폼은 Hackerank에서 진행 됐는데
나는 이 플랫폼을 그닥 좋아하지 않는다. 그 이유는 이번 코딩테스트에서는 모든 문제와 설명이 한글로
번역 되서 나왔는데 그 번역된 내용이 모두 직역으로 번역되서 그런지 문맥상 말이 안돼는 문맥으로 나오거나
이해할 수 없는 문장이 많았다. (ex: 이 알고리즘이 좋다. ??! 이런식 이였다…)

알고리즘 문제를 풀때는 내가 친 코드가 자꾸 한글 + 영어로 나오는 경우가 많았다.
아래는 그때 발생한 이상 현상 예시다.

1
2
3
4
5
6
7
8
9
10
11
12
13
# 예시
for col in columns:
    if col == '제발좀;;'
        print(col)
    elif col == '하..'

# 위처럼 작성했다고 가정하면 실제론
~처럼 col 안에 columns:
    만약 col == '제발좀;;'
        출력(col)
    엘리프 col == '히..'

# 이딴식으로 나왔다... 아주 짜증이 났다.

예시 자료

이게 예시에선 코드가 얼마 안돼서 괜찮아 보일 수 있지만, 코드가 조금만 길어져도 내가 방금 작성한 코드가 헷갈리거나 이해하는 데 시간을 쏟아야만 했다. 그래서 알고리즘 문제에서 굉장히 많은 시간을 사용했다. (결국 1문제도 못 품;;)

물론, 시간이 충분했다고 해서 완벽하게 풀 자신이 있던 건 아니지만 긴장 + 당황 + 다음 문제도 빨리 풀어야 한다는 압박 등에 대한 이유로 잘 보지 못했던 거 같다. 알고리즘 문제는 그냥 X나 어려웠다. 이후에 ML 서술형 문제에서는 최대한 침착하게 풀고자 했고, 그 다음 ML 모델링에선 (jupyter 형태) 시간에 쫓겨 모델링을 끝내지도 못했고, 당연히 성능 측정까지는 엄두도 못 냈다. 이렇게 보기좋게 A사 ML Engineer 코딩테스트를 망치게 됐다.ㅎ



3. 과제전형

ML Engineer 과제 전형에 대한 후기

A사 코딩테스트와는 다르게, 다른 한 곳(T사)에서는 과제 전형으로 진행됐다. 설립되지 얼마 되지 않은 스타트업이지만 다루는 도메인이 관심 분야여서 지원했었다. 과제에 대해 자세히 설명할 순 없지만 Change Detection 에 대한 내용을 다루는 과제였다.

Change Detection Change Detection

과제는 총 4일정도의 시간이 주어졌고 인턴십 및 아르바이트를 하느라 시간이 없었지만 최대한 많은 시간을 투자했다. 하지만 이전까지 Object Detection, Segement Detection 등만 알았지 Change Detection에 대해서는 이번 과제를 통해 처음 알게 되었기 때문에 관련 블로그나 자료를 찾아보며 빠르게 학습해야 했다. 결과적으로 완벽하지는 않았지만, 주어진 시간 내에 나름의 접근 방식으로 문제를 해결하며 제출했다.

하지만 그 결과는..불합격ㅎ 아쉽긴 했지만, 짧은 기간 안에 새로운 도메인을 학습하고 과제를 완성한 경험 자체는 값졌다고 생각한다. 특히 Change Detection이라는 새로운 분야를 알게 된 것도 의미가 있다고 생각한다.




회고

ML Engineer 코딩테스트 & 과제전형에 대한 회고


코딩테스트 회고

아쉬웠던 점

  • 플랫폼 이슈로 인한 시간 낭비
  • 알고리즘 문제 해결력 부족
  • 시간 관리 실패

배운 점

  • 예상치 못한 상황에 대한 대응 필요성
  • 기본기의 중요성
  • 플랫폼 사전 체험의 필요성



과제전형 회고

좋았던 점

  • 새로운 도메인(Change Detection) 학습 경험
  • 실무와 유사한 문제 해결 과정
  • 자료 조사 및 빠른 학습 능력 향상

아쉬웠던 점

  • 시간 부족으로 인한 완성도 한계
  • 다양한 도메인 지식 부족



전체적인 느낀 점

준비 부족

  • 기본 알고리즘 연습 필요
  • 다양한 ML 도메인에 대한 이해 필요

앞으로의 계획

  • 꾸준한 코딩테스트 연습
  • ML 전반적인 지식 확장
This post is licensed under CC BY 4.0 by the author.