티스토리 뷰

반응형

C사에서 어느날(2020-12-15) 링크드인으로 정성담긴 포지션 제안이 왔다. 많은 리쿠르터 분들이 연락을 주셨었지만 보통은 무시했는데, 글의 정성을 보고 한번 진행해봐야겠다고 생각했다. 

전화 통화를 통해서 채용 과정에 대해서 설명을 들었다.

1. 코딩 테스트
2. 면접관과 1:1 코딩 테스트 2회
3. 면접관과 1:1 코딩테스트 1회, 아키텍팅 테스트 1회, 컬쳐핏 면접

다른 리쿠르터에게도 이 설명을 듣고 하기 싫어져서 안 했었지만, 이번에는 가볍게 한번 진행해보기로 했다. 모든 면접은 비대면으로 진행했고 총 한달이 소요되었다.

 

코딩 테스트

프로그래머스에서 진행했다. 난이도는 어렵지 않았다. 자바로 풀라고 해서 그게 좀 귀찮았다.

나의 코딩테스트 스타일에 대해서 간단히 소개하면, 최대한 빨리 간단한 알고리즘으로 실행가능하게 코드를 작성한다. 이러면 보통 성능 요구사항을 만족하지 못하고 엣지 케이스들을 커버하지 못한다. 그래서 남은 시간에 엣지 케이스를 커버하고 성능을 최적화한다. 문제가 어려우면 최적화를 못하고 끝날 수 있다.

다행히 코딩 테스트는 어렵지 않아서 좋은 성적으로 마무리했다.

 

면접관과 코딩 테스트

1:1로 한시간씩 문제를 푸는 코딩테스트를 진행했다. 

리쿠르터분이 문제를 풀면서 면접관과의 커뮤니케이션이 매우 중요하다고 알려주셨다. 전략을 설명하고 말하면서 문제를 풀고, 디버깅하는 것이 중요하다고 알려주셨다. 그리고 최적화와 효율성도 강조하셨다. (시간복잡도 매우 중요!)

3문제중 한 문제를 선택해서 풀고 시간이 남으면 다른 문제를 풀 수 있다. 원래 하던대로 코딩테스트를 했는데 엣지 케이스를 커버하고 성능 최적화 하는데 애를 먹었다. 말하면서 하는 것도 쉽지 않았고 누가 지켜보는데 코딩하는 것이 심리적으로 불편했다. 

나중에 피드백에서 커뮤니케이션은 좋았으나 효율성에 대해서 아쉽다는 평을 받았다. 그리고 한 문제 이상 풀길 기대했던것 같다.

 

면접관과 아키텍팅 테스트

1:1로 한시간 아키텍팅 관련된 테스트를 보았다.

문제는 단순했다. 쇼핑몰에서 트래픽이 피크를 치는 것을 대비하는 아키텍처를 구상해봐라.

나는 REDIS와 DB를 이용한 간단한 CQRS 아키텍처에 대해서 설명했는데, 솔직히 말하면 좀 구체적이 못한 답변을 한 것 같다. 어떻게 보면 스스로 문제를 더 특정지어서(쪼개서) 그 문제에 해당하는 해결책을 제시하면 더 좋았을 거 같은데, 질문을 쪼개지 못한것 같아서 아쉬웠다.아마 그렇게 했으면 실제 상황에 대한 경험이나 기술에 대한 노하우를 더 이야기 할 수 있었을 것이다.

그러나 아직 그정도로 변동이 심한 트래픽을 경험해보지 못해서 할말이 별로 없긴 하다.

 

컬쳐 면접

줌으로 1:1로 한시간 컬쳐 면접을 보았다. 내가 어떻게 성장하고, 어떻게 일하고 있는지를 물어보고 자연스럽게 기술 이야기도 나왔다. 생각보다 한시간이 짧게 느껴졌다. 외국인이 나올까봐 걱정했는데 다행이었다.

 

추가 코딩 테스트

모든 면접을 마쳤는데 코딩 테스트의 역량 검증이 좀 부족하다고 느꼈는지, 코딩 테스트만 한번 더 보자고 했다. 

동일한 방식으로 1시간 문제를 풀었고 어렵지 않았지만 좀 절었다... 차분하게 코딩하고 검증했어야하는데 너무 많은 코드를 작성하고 테스트하려니까 버그가 빵빵 터지고 그거 해결하는데 시간을 많이 썼다. 그렇게 마지막 코딩 테스트도 마쳤다.

 

1:1 코딩테스트 경험에 대해서

1:1로 하는 코딩테스트는 생각보다 피면접자의 많은 것을 확인할 수 있다는 것을 깨달았다. 

- 커뮤니케이션 능력
- 문제 접근 방식
- 문제 해결 능력

아마 앞으로 많은 회사들이 채용 과정에 이 방식을 채택할 것이라는 생각을 하게 되었다. 그리고 C사가 실리콘 밸리의 문화들을 많이 가져왔다고 알고 있는데, 해외 취업에 관심이 있다면 이 방식에 대한 훈련이 많이 필요할 것이다.

이 글을 보는 사람들에게 꼭 해주고 싶은 말은 추천하는 것은 더 자유롭게 이야기하면서 문제를 풀어보라는 것!

 

느낀 점 및 반성한 점?

리쿠르터님이 내 연차 때문인지 시니어 면접 과정을 진행했다고 알려주셨다. 면접을 진행하면서 내가 시니어의 역량을 가졌나에 대해서 많은 생각을 하게 되었다.

특히나 문제를 푸는데 있어서 구현의 속도에만 집착한게 아닌가 라는 생각을 많이 했다. C사 같이 큰 트래픽과 데이터를 다루는 데 있어서는 구현의 속도보다는 솔루션(프로그램)의 효율이 훨씬 더 중요할 수 있겠다라는 생각을 하게 되었다. 예를 들어서 O(n)과 O(log n)의 솔루션이 있을 때, 적은 데이터에서는 그 차이가 드러나지 않지만 많아지면 많아질수록 차이가 극명해진다. 그 부분을 내가 간과했던것 같다고 생각했다. 

그리고 문제를 푸는 과정에서도 체계적인 프레임워크를 보여주지 못한것이 아쉬웠다. 그냥 머리부터 달려들어 푸는 것이 아니고, 문제에 대해서 이해하고 어떻게 풀지 계획하고 차근 차근 검증하는 자신만의 프레임워크를 보여주지 못했다. 어찌보면 준비와 훈련이 부족한 게 여실히 들어난 것으로 보인다. 만약 다시 보게 된다면 침착하게 다음의 순서대로 문제를 풀 것 같다. 

  • 문제를 소리내 읽는다.
  • 문제에 대해서 설명한다.
  • 해결책에 대해서 생각한다.
  • 해결책을 설명한다. 효율성을 높일 포인트(알고리즘)을 설명한다.
    효율적인 솔루션을 생각 못했으면 그냥 효율성이 낮아보여도 그 방식을 설명한다.
  • 엣지 케이스를 포함한 테스트 케이스를 먼저 정리한다.
    (이미 되어있다면 그냥 문제를 풀고 없다면 바로 검증가능하도록 코드를 작성한다.)
  • 케이스 하나하나 커버하도록 문제를 푼다. (구현한다)

이 프레임워크는 일할때도 충분히 적용가능할 것이다. 

이번 채용 과정을 통해서 부족한 점에 대해서 자각할 수 있어서 좋은 경험이었다. 면접관들은 피드백이 마음에 들었다. 에너지가 제법 들었지만 개인적으로 도움이 된것 같다.

그래서 결과는?

비밀!

🤪

반응형
댓글
댓글쓰기 폼