스터디 진행 일시
날짜 : 5월 2일 (금요일) 시간 : 7시 ~ 9시 장소 : 강남(오프라인)


🔧 면접에서의 라이브 코딩 테스트는 어떻게 해야될까 ?
  • 스터디원의 2명 (@KEJdev 와 @yugyeong71)은 현재 회사 면접을 보고 있다. 이 둘은 최근 고민이 빠져 있는데, 바로 라이브 코딩테스트! 아직까지 본적은 없지만, 라이브 코테라니! 떨고 있다. 이들을 위해 라이브 코테는 어떻게 준비해야될지 논의 해보자.
    • 라이브 코딩 테스트는 과연 왜 보는 것일까? 라이브 코딩 테스트는 단순하게 문제의 정답을 풀 수 있는가를 가지고 합격 여부를 정하는 것이 아닐 것이다.(아마도...) 지금 앞에 있는 면접관은 높은 확률로 나의 사수 또는 나와 같이 일하게 될 동료가 될 사람이다. 앞으로 나와 함께 일할 사람의 코딩 스타일이나 피드백 수용력, 협업에 대한 방식을 볼 수 있는 것이 라이브 코딩 테스트라고 생각한다. 편하게 생각하자!! 그냥 페어코딩이라고 생각하면 괜찮지 않을까?
    • 왜 갑자기 라이브 코딩 테스트를 보는 곳이 늘어나게 되었을까? 아마도 온라인 코딩 테스트만으로는 이 사람의 성향을 파악하기 힘들어서가 아닐까 싶다. 또한 GPT의 등장으로 코드를 AI가 대신 풀어주다보니, 더이상 의미가 없어서가 아닐까 싶다.
  • 요즘은 알고리즘을 라이브 코테로 보는 곳도 많지만, 조금 더 면접이 빡센 곳은 시스템 아키텍처를 설계하라고 하거나, Loss 함수나 Active 함수를 직접 손코딩이나 코드를 짜보라고 하기도 한다. 알고리즘 라이브 코테는 내가 부지런하게 많은 알고리즘을 푸는 수 밖에 없겠지만, 그 시스템 아키텍처에 대한 라이브 코테나 질문은 어떻게 준비해야될까?
    • 우리는 보통 문제를 받으면 바로 풀려고 하는 특성을 가지고 있다. 이러한 특성은 이런 면접에서는 굉장히 불리할 수 있다.
    • 어떠한 문제든, 꼭 문제에 대한 정의를 하고 문제를 푸는 습관을 들이자.
  • 예를 들어보자. 면접관이 “도서관에서 빌린 책을 반납하는 시스템을 설계” 해달라는 질문을 받았다. 그럼 어떻게 해야될까?
    • 우리는 면접관과 함께 핑퐁하듯이 질문을 주고 받아야 한다. (면접관이 나의 슈퍼 개발 능력을 바라면서 던진 질문은 아닐 것이다.)
    • 어떤 질문을 해보는 게 좋을까 ?
  • 다양한 질문이 오갈 수 있겠지만, 우선 이 도서 반납 시스템에 대해 상세하게 정의를 하는 것이 좋다. 한번 질문을 해보자.
    • 반납 기한은 몇칠인가요?
    • 반납 기한이 지나거나, 반납일이 다가오면 유저에게 알람이 가나요?
    • 도서관의 휴무일이 있나요?
    • 반납이 지나면 유저에게 가는 패널티가 있나요?
    • 전자책도 있나요?
    • 스타트업에서 사용할 시스템인가요? 대규모 유저대상으로 사용할 시스템인가요?
    • DB나 기존에 사용중인 프레임워크를 신경써야할까요? 한다면 기존 기술스택을 알려주시면 감사합니다.
  • 이제 문제 정의를 했으니 설계를 해야한다. 그럼 설계를 한다는 건 어떤 것일까? 예를 들면 아래와 같을 수 있다고 본다.
    • 인프라까지 같이 한다면 데이터센터의 이중화 여부나, 스타트업 시스템인지 등의 여부를 물어본 뒤 인프라의 설계를 도식화 후 코드로 설계한다.
    • 단순히 코드만 설계하라고 한다면 아래와 같이 할 수 있다.
      • 반납 기한은 며칠인가요?와 같은 문제의 상세 조건은 Given-When-Then 형태로 정의할 것.